jclic-0.2.1.0.orig/0000755000175000017500000000000011377161311010614 5ustar jclic-0.2.1.0.orig/xml/0000755000175000017500000000000011377161311011414 5ustar jclic-0.2.1.0.orig/xml/skin.dtd0000644000175000017500000000503411377161311013057 0ustar jclic-0.2.1.0.orig/xml/jclic.xsd0000644000175000017500000010134311377161311013222 0ustar Main element of JClic projects Deprecated attribute. Please use imgAlign and txtAlign instead of hAlign and vAlign Deprecated attribute. Please use imgAlign and txtAlign instead of hAlign and vAlign jclic-0.2.1.0.orig/xml/skin.xml0000644000175000017500000000656311377161311013114 0ustar jclic-0.2.1.0.orig/xml/skin.xsd0000644000175000017500000002366411377161311013113 0ustar jclic-0.2.1.0.orig/project.properties0000644000175000017500000000026711377161311014405 0ustar JCLIC_VERSION=0.2.1.0 JCLIC_DATE=2010-01-25 12\\\:00\\\:00 AUTHOR_VERSION=0.2.1.0 AUTHOR_DATE=2010-01-25 12\\\:00\\\:00 REPORTS_VERSION=0.2.1.0 REPORTS_DATE=2010-01-25 12\\\:00\\\:00 jclic-0.2.1.0.orig/INSTALL.txt0000644000175000017500000000270011377161311012462 0ustar JClic: Authoring and playing system for educational activities ----------------------------------------------------------------------------- Compilation instructions: The current version of JClic compiles with version 1.4 or later of the Java Development Toolkit (JDK) Compilation is done with Apache Ant (http://ant.apache.org/), version 1.6.5 or later. To compile, just open a console, go to the root directory of the JClic source code (where the build.xml file is located) and invoke "ant". The JAR files must be signed to be used in applets. A test certificate key is provided in "keystore/testcert.keystore". Please don't use code signed with this key in production releases: always sign it using your own certificate. For more information, see the document "keystore/readme.txt" At the end of the build process, the resulting JAR files will appear into the "dist" directory. To start the programs, copy all the contents of the "dist" directory to an appropiate place and enter the following commands: - To launch JClic: java -jar jclic.jar - To launch JClic author: java -jar jclicauthor.jar - To launch JClic reports: java -jar jclicreports.jar - To setup the J2EE version of JClic reports, see: http://clic.xtec.cat/es/jclic/reports/ The JClic modules can also be launched as a Java webstart applications. For more information about this option, see: http://clic.xtec.cat/en/jclic/download.htm jclic-0.2.1.0.orig/instal/0000755000175000017500000000000011377161311012106 5ustar jclic-0.2.1.0.orig/instal/build.xml0000644000175000017500000001016011377161311013725 0ustar jclic-0.2.1.0.orig/instal/setup.nsi0000644000175000017500000007166211377161311013775 0ustar ; Product version !ifndef PRODUCT_VERSION !define PRODUCT_VERSION "0.1.1.7" !endif ; Constants and variables for Java version check !define GET_JAVA_URL "http://www.java.com" !define MIN_JAVA_VERSION "1.4" Var JAVA_HOME Var JAVA_VERSION ; Constants for app registry !define SHCNE_ASSOCCHANGED 0x8000000 !define SHCNF_IDLIST 0 ; Define your application name !define APPNAME "JClic (offline)" !define APPNAMEANDVERSION "JClic 0.2" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico" !define MUI_LANGDLL_ALLLANGUAGES ;BGGradient 000000 800000 FFFFFF XPStyle on ; Main Install settings Name "${APPNAMEANDVERSION}" InstallDir "$PROGRAMFILES\JClic" InstallDirRegKey HKLM "Software\${APPNAME}" "" OutFile "jclic-${PRODUCT_VERSION}.exe" ; Modern interface settings !include "MUI.nsh" !insertmacro MUI_PAGE_WELCOME Page custom CheckJavaVersion "" " - Java system check" !insertmacro MUI_PAGE_LICENSE "..\COPYING.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ; Set languages (first is default language) !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Catalan" !insertmacro MUI_LANGUAGE "Spanish" !insertmacro MUI_LANGUAGE "Italian" !insertmacro MUI_LANGUAGE "Greek" !insertmacro MUI_LANGUAGE "Basque" !insertmacro MUI_LANGUAGE "Portuguese" !insertmacro MUI_LANGUAGE "Arabic" !insertmacro MUI_LANGUAGE "French" !insertmacro MUI_LANGUAGE "Russian" !insertmacro MUI_LANGUAGE "German" !insertmacro MUI_LANGUAGE "Galician" !insertmacro MUI_LANGUAGE "Dutch" !insertmacro MUI_LANGUAGE "PortugueseBR" !insertmacro MUI_LANGUAGE "Czech" !insertmacro MUI_LANGUAGE "TradChinese" !insertmacro MUI_RESERVEFILE_LANGDLL ;-------------------------------- ;Version Information VIProductVersion ${PRODUCT_VERSION} VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "JClic" ;VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "A test comment" VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "XTEC - Departament d'Educació" ;VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Test Application is a trademark of Fake company" VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© Francesc Busquets & Departament d'Educació de la Generalitat de Catalunya" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Windows installer of JClic modules" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}" ;-------------------------------- LangString javaNeeded ${LANG_CATALAN} "El JClic necessita un motor Java actualitzat, versió 1.4 o superior. El podeu descarregar gratuïtament des de http://www.java.com" LangString javaNeeded ${LANG_ENGLISH} "JClic needs an updated Java engine, version 1.4 or higher. You can download it from http://www.java.com" LangString javaNeeded ${LANG_SPANISH} "JClic necesita un motor Java actualizado, versión 1.4 o superior. Puede descargarlo gratuitamente desde http://www.java.com" LangString javaNeeded ${LANG_ITALIAN} "JClic richiede un motore Java aggiornato, versione 1.4 o superiore. Puoi scaricarla da http://www.java.com" LangString javaNeeded ${LANG_GREEK} "Το JClic χρειάζεται μια ενημερωμένη μηχανή Java, έκδοση 1.4 ή μεταγενέστερη. Μπορείτε να την κατεβάσετε από τη διεύθυνση http://www.java.com" LangString javaNeeded ${LANG_BASQUE} "JClic-ek Java 1.4 edo aurreragoko bertsioa behar du. Hemen lortu ahal duzu: http://www.java.com" LangString javaNeeded ${LANG_PORTUGUESE} "O Jclic necessita um motor Java actualizado (versão 1.4 ou superior). Pode desacrregá-lo em http://www.java.com" LangString javaNeeded ${LANG_ARABIC} "JClic needs an updated Java engine, version 1.4 or higher. You can download it from http://www.java.com" LangString javaNeeded ${LANG_FRENCH} "JClic requiert une version plus récente de la machine java, ver. 1.4 ou supérieure. Vous pouvez la télécharger sur http://www.java.com" LangString javaNeeded ${LANG_RUSSIAN} "JClic необходима Java машина версии 1.4 или выше. Вы можете загрузить её с сайта http://www.java.com" LangString javaNeeded ${LANG_GERMAN} "JClic benötigt Java Version 1.4 oder höher. Download unter http://www.java.com" LangString javaNeeded ${LANG_GALICIAN} "JClic precisa un motor Java actualizado, na versión 1.4 ou posterior. Pode descargala de http://www.java.com" LangString javaNeeded ${LANG_DUTCH} "JClic heeft een aangepaste Java engine nodig, versie 1.4 of beter. Je kan deze downloaden via http://www.java.com" LangString javaNeeded ${LANG_PORTUGUESEBR} "JClic requer Java atualizado, versão 1.4 ou superior. Você pode obtê-lo em http://www.java.com" LangString javaNeeded ${LANG_CZECH} "JClic vyžaduje novější Java engine, verze 1.4 nebo vyšší. Můžete jej nahrát z: http://www.java.com" LangString javaNeeded ${LANG_TRADCHINESE} "JClic 需要 1.4 以上版本的 Java 引擎, 您可以從 http://www.java.com 網站下載。" LangString oldJavaMsg ${LANG_CATALAN} "El sistema Java d'aquest ordinador és antic." LangString oldJavaMsg ${LANG_ENGLISH} "There is an old version of Java installed on this computer." LangString oldJavaMsg ${LANG_SPANISH} "El sistema Java de este ordenador es antiguo." LangString oldJavaMsg ${LANG_ITALIAN} "C'è una vecchia versione di Java installata in questo computer." LangString oldJavaMsg ${LANG_GREEK} "Υπάρχει μια παλαιότερη έκδοση Java εγκατεστημένη σε αυτόν τον υπολογιστή." LangString oldJavaMsg ${LANG_BASQUE} "Ordenagailu honetan Javaren bertsio zaharra dago instalatuta" LangString oldJavaMsg ${LANG_PORTUGUESE} "Possui uma versão antiga do Java instalada neste computador." LangString oldJavaMsg ${LANG_ARABIC} "يوجد إصدار قديم لنظام Java مثبّت على هذا الحاسوب." LangString oldJavaMsg ${LANG_FRENCH} "Possui uma versão antiga do Java instalada neste computador." LangString oldJavaMsg ${LANG_RUSSIAN} "Предыдущая версия Java установлена на этом компьютере." LangString oldJavaMsg ${LANG_GERMAN} "Es ist keine aktuelle Java Version auf diesem Computer installiert." LangString oldJavaMsg ${LANG_GALICIAN} "Neste ordenador hai instalada unha versión vella de Java." LangString oldJavaMsg ${LANG_DUTCH} "Er is een oudere versie van Java op deze computer geïnstalleerd." LangString oldJavaMsg ${LANG_PORTUGUESEBR} "Há uma versão antiga do Java instalada em seu computador." LangString oldJavaMsg ${LANG_CZECH} "Na vašem pčítači existuje stará verze Javy." LangString oldJavaMsg ${LANG_TRADCHINESE} "有一個舊版本的 Java 已經安裝在您的電腦中。" LangString noJavaMsg ${LANG_CATALAN} "No s'ha pogut trobar cap sistema Java instal·lat a aquest ordinador." LangString noJavaMsg ${LANG_ENGLISH} "It was impossible to find any Java system installed on this computer." LangString noJavaMsg ${LANG_SPANISH} "No se ha encontrado ningún sistema Java instalado en este ordenador." LangString noJavaMsg ${LANG_ITALIAN} "Non è stato possibile trovare una versione di Java installata in questo computer." LangString noJavaMsg ${LANG_GREEK} "Είναι αδύνατον να βρεθεί σύστημα της Java εγκατεστημένο σε αυτόν τον υπολογιστή." LangString noJavaMsg ${LANG_BASQUE} "Ezin izan da Java sistemarik aurkitu instalatuta ordenagailu honetan" LangString noJavaMsg ${LANG_PORTUGUESE} "Não foi possível encontrar uma instalação do Java neste computador." LangString noJavaMsg ${LANG_ARABIC} "يستحيل العثور على نظام Java مثبّت على هذا الحاسوب." LangString noJavaMsg ${LANG_FRENCH} "Aucune machine Java n'a été détectée sur cet ordinateur." LangString noJavaMsg ${LANG_RUSSIAN} "Не удалось найти установленную Java на этом компьютере." LangString noJavaMsg ${LANG_GERMAN} "Auf diesem Computer konnte kein Java-System gefunden werden." LangString noJavaMsg ${LANG_GALICIAN} "Foi imposíbel atopar ningunha versión de Java instalada neste ordenador." LangString noJavaMsg ${LANG_DUTCH} "Het was onmogelijk om een geïnstalleerd Java systeem te vinden op deze computer." LangString noJavaMsg ${LANG_PORTUGUESEBR} "Não foi possível localizar algum sistema de Java em seu computador." LangString noJavaMsg ${LANG_CZECH} "Nemohu najít žádný instalovaný Java systém na tomto počítači." LangString noJavaMsg ${LANG_TRADCHINESE} "在您的電腦找不到任何已經安裝的 Java 系統。" LangString standardType ${LANG_CATALAN} "Estàndard" LangString standardType ${LANG_ENGLISH} "Standard" LangString standardType ${LANG_SPANISH} "Estándar" LangString standardType ${LANG_ITALIAN} "Tipica" LangString standardType ${LANG_GREEK} "Τυπική" LangString standardType ${LANG_BASQUE} "Estandarra" LangString standardType ${LANG_PORTUGUESE} "Padrão" LangString standardType ${LANG_ARABIC} "معياري" LangString standardType ${LANG_FRENCH} "Par défaut" LangString standardType ${LANG_RUSSIAN} "Стандартная" LangString standardType ${LANG_GERMAN} "Standard" LangString standardType ${LANG_GALICIAN} "Estándar" LangString standardType ${LANG_DUTCH} "Standaard" LangString standardType ${LANG_PORTUGUESEBR} "Padrão" LangString standardType ${LANG_CZECH} "Standardní" LangString standardType ${LANG_TRADCHINESE} "標準" LangString fullType ${LANG_CATALAN} "Completa" LangString fullType ${LANG_ENGLISH} "Full" LangString fullType ${LANG_SPANISH} "Completa" LangString fullType ${LANG_ITALIAN} "Completa" LangString fullType ${LANG_GREEK} "Πλήρης" LangString fullType ${LANG_BASQUE} "Osoa" LangString fullType ${LANG_PORTUGUESE} "Completa" LangString fullType ${LANG_ARABIC} "كامل" LangString fullType ${LANG_FRENCH} "Complète" LangString fullType ${LANG_RUSSIAN} "Полная" LangString fullType ${LANG_GERMAN} "Komplett" LangString fullType ${LANG_GALICIAN} "Completa" LangString fullType ${LANG_DUTCH} "Volledig" LangString fullType ${LANG_PORTUGUESEBR} "Completa" LangString fullType ${LANG_CZECH} "Plná" LangString fullType ${LANG_TRADCHINESE} "完全" LangString liteType ${LANG_CATALAN} "Mínima" LangString liteType ${LANG_ENGLISH} "Lite" LangString liteType ${LANG_SPANISH} "Mínima" LangString liteType ${LANG_ITALIAN} "Minima" LangString liteType ${LANG_GREEK} "Ελάχιστη" LangString liteType ${LANG_BASQUE} "Gutxienekoa" LangString liteType ${LANG_PORTUGUESE} "Mínima" LangString liteType ${LANG_ARABIC} "خفيف" LangString liteType ${LANG_FRENCH} "Minimale" LangString liteType ${LANG_RUSSIAN} "Минимальная" LangString liteType ${LANG_GERMAN} "Minimal" LangString liteType ${LANG_GALICIAN} "Mínima" LangString liteType ${LANG_DUTCH} "Licht" LangString liteType ${LANG_PORTUGUESEBR} "Mínima" LangString liteType ${LANG_CZECH} "Minimální" LangString liteType ${LANG_TRADCHINESE} "Lite" InstType "$(standardType)" InstType "$(fullType)" InstType "$(liteType)" LangString captionStr ${LANG_CATALAN} "Instal·lació del JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_ENGLISH} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_SPANISH} "Instalación de JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_ITALIAN} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_GREEK} "JClic ${PRODUCT_VERSION} offline εγκατάσταση" LangString captionStr ${LANG_BASQUE} "JClic-en instalazioa ${PRODUCT_VERSION}" LangString captionStr ${LANG_PORTUGUESE} "JClic ${PRODUCT_VERSION} instalação offline" LangString captionStr ${LANG_ARABIC} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_FRENCH} "Installation hors-ligne de JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_RUSSIAN} "Автономная установка JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_GERMAN} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_GALICIAN} "Instalación de JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_DUTCH} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_PORTUGUESEBR} "Configuração offline JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_CZECH} "JClic ${PRODUCT_VERSION} off-line nastavení" LangString captionStr ${LANG_TRADCHINESE} "JClic ${PRODUCT_VERSION} 離線設定" Caption "$(captionStr)" Section "-JClic core" Section1 SectionIn 1 2 3 ; Set Section properties SetOverwrite ifnewer ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclic.jar" File "..\COPYING.txt" File "..\CREDITS.txt" File "..\CHANGES.txt" File "..\HACKING.txt" File "..\INSTALL.txt" SectionEnd Section "JClic player" Section2 SectionIn 1 2 3 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\icons" File "..\dist\jclic\icons\install.ico" File "..\dist\jclic\icons\jclic.ico" SetOutPath "$INSTDIR\" CreateShortCut "$DESKTOP\JClic.lnk" "javaw" "-jar jclic.jar" "$INSTDIR\icons\jclic.ico" CreateDirectory "$SMPROGRAMS\JClic" CreateShortCut "$SMPROGRAMS\JClic\JClic.lnk" "javaw" "-jar jclic.jar" "$INSTDIR\icons\jclic.ico" ReadRegStr $R0 HKCR ".jclic" "" StrCmp $R0 "JCLICFile" 0 +2 DeleteRegKey HKCR "JCLICFile" ReadRegStr $R0 HKCR ".jclic.zip" "" StrCmp $R0 "JCLIC.ZIPFile" 0 +2 DeleteRegKey HKCR "JCLIC.ZIPFile" WriteRegStr HKCR ".jclic" "" "JClic.project" WriteRegStr HKCR ".jclic.zip" "" "JClic.project" WriteRegStr HKCR "JClic.project" "" "JClic project file" WriteRegStr HKCR "JClic.project\DefaultIcon" "" "$INSTDIR\icons\jclic.ico" ReadRegStr $R0 HKCR "JClic.project\shell\open\command" "" StrCmp $R0 "" 0 no_open WriteRegStr HKCR "JClic.project\shell" "" "open" WriteRegStr HKCR "JClic.project\shell\open\command" "" 'javaw -jar "$INSTDIR\jclic.jar" "%1"' no_open: ReadRegStr $R0 HKCR ".jclic.inst" "" StrCmp $R0 "JCLIC.INSTFile" 0 +2 DeleteRegKey HKCR "JCLIC.INSTFile" WriteRegStr HKCR ".jclic.inst" "" "JClic.installer" WriteRegStr HKCR "JClic.installer" "" "JClic project install script" WriteRegStr HKCR "JClic.installer\DefaultIcon" "" "$INSTDIR\icons\install.ico" ReadRegStr $R0 HKCR "JClic.install\shell\open\command" "" StrCmp $R0 "" 0 no_open_inst WriteRegStr HKCR "JClic.install\shell" "" "open" WriteRegStr HKCR "JClic.install\shell\open\command" "" 'javaw -jar "$INSTDIR\jclic.jar" "%1"' no_open_inst: System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' SectionEnd Section "JClic author" Section3 sectionIn 1 2 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclicauthor.jar" SetOutPath "$INSTDIR\icons" File "..\dist\jclic\icons\author.ico" SetOutPath "$INSTDIR\" CreateShortCut "$DESKTOP\JClic Author.lnk" "javaw" "-Xmx128m -jar jclicauthor.jar" "$INSTDIR\icons\author.ico" CreateDirectory "$SMPROGRAMS\JClic" CreateShortCut "$SMPROGRAMS\JClic\JClic Author.lnk" "javaw" "-Xmx128m -jar jclicauthor.jar" "$INSTDIR\icons\author.ico" ReadRegStr $R0 HKCR ".jclic.zip" "" StrCmp $R0 "JCLIC.ZIPFile" 0 +2 DeleteRegKey HKCR "JCLIC.ZIPFile" WriteRegStr HKCR ".jclic" "" "JClic.project" WriteRegStr HKCR ".jclic.zip" "" "JClic.project" WriteRegStr HKCR "JClic.project" "" "JClic project file" WriteRegStr HKCR "JClic.project\DefaultIcon" "" "$INSTDIR\icons\jclic.ico" ReadRegStr $R0 HKCR "JClic.project\shell\edit\command" "" StrCmp $R0 "" 0 no_edit ;WriteRegStr HKCR "JClic.project\shell" "" "edit" WriteRegStr HKCR "JClic.project\shell\edit\command" "" 'javaw -Xmx128m -jar "$INSTDIR\jclicauthor.jar" "%1"' no_edit: SectionEnd Section /o "JClic applet" Section4 SectionIn 2 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclicplugin.js" File "..\dist\jclic\launchApplet.js" File "..\dist\jclic\author.html" SectionEnd Section "JClic reports" Section5 SectionIn 2 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclicreports.jar" SetOutPath "$INSTDIR\icons" File "..\dist\jclic\icons\reports.ico" SetOutPath "$INSTDIR\" CreateShortCut "$DESKTOP\JClic Reports.lnk" "javaw" "-jar jclicreports.jar" "$INSTDIR\icons\reports.ico" CreateDirectory "$SMPROGRAMS\JClic" CreateShortCut "$SMPROGRAMS\JClic\JClic Reports.lnk" "javaw" "-jar jclicreports.jar" "$INSTDIR\icons\reports.ico" SectionEnd Section -FinishSection WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe" WriteUninstaller "$INSTDIR\uninstall.exe" SectionEnd ; A LangString for the section name LangString JClicPlayerDesc ${LANG_CATALAN} "Aplicació per visualitzar i realitzar activitats JClic." LangString JClicPlayerDesc ${LANG_ENGLISH} "Application to play JClic activities." LangString JClicPlayerDesc ${LANG_SPANISH} "Aplicación para visualizar y realizar actividades JClic." LangString JClicPlayerDesc ${LANG_ITALIAN} "Applicazione per avviare attività JClic." LangString JClicPlayerDesc ${LANG_GREEK} "Εφαρμογή αναπαραγωγής δραστηριοτήτων του JClic" LangString JClicPlayerDesc ${LANG_BASQUE} "JClic jarduerak egiteko aplikazioa" LangString JClicPlayerDesc ${LANG_PORTUGUESE} "Programa para correr actividades Jclic." LangString JClicPlayerDesc ${LANG_ARABIC} "تطبيق للعلب على JClic" LangString JClicPlayerDesc ${LANG_FRENCH} "Programme d'exécution des activités JClic." LangString JClicPlayerDesc ${LANG_RUSSIAN} "Application to play JClic activities." LangString JClicPlayerDesc ${LANG_GERMAN} "Anwendung zum Abspielen von JClic Übungen." LangString JClicPlayerDesc ${LANG_GALICIAN} "Aplicación para reproducir as actividades JClic" LangString JClicPlayerDesc ${LANG_DUTCH} "Toepassing om JClic activiteiten te spelen" LangString JClicPlayerDesc ${LANG_PORTUGUESEBR} "Aplicativo para rodar atividades do JClic" LangString JClicPlayerDesc ${LANG_CZECH} "Aplikace pro přehrávání JClic aktivit." LangString JClicPlayerDesc ${LANG_TRADCHINESE} "Application to play JClic activities." LangString JClicAuthorDesc ${LANG_CATALAN} "Aplicació per crear i modificar activitats JClic." LangString JClicAuthorDesc ${LANG_ENGLISH} "Application to create and edit JClic activities." LangString JClicAuthorDesc ${LANG_SPANISH} "Aplicación para crear y modificar actividades JClic." LangString JClicAuthorDesc ${LANG_ITALIAN} "Applicazione per creare e modificare attività JClic." LangString JClicAuthorDesc ${LANG_GREEK} "Εφαρμογή δημιουργίας και επεξεργασίας του JClic." LangString JClicAuthorDesc ${LANG_BASQUE} "JClic jarduerak sortu eta editatzeko aplikazioa" LangString JClicAuthorDesc ${LANG_PORTUGUESE} "Programa para criar e editar actividades Jclic." LangString JClicAuthorDesc ${LANG_ARABIC} "تطبيق لإنشاء وتحرير ألعاب JClic" LangString JClicAuthorDesc ${LANG_FRENCH} "Application pour créer et modifier des activités JClic." LangString JClicAuthorDesc ${LANG_RUSSIAN} "Application to create and edit JClic activities." LangString JClicAuthorDesc ${LANG_GERMAN} "Anwendung zum Erstellen und Editieren von JClic Übungen." LangString JClicAuthorDesc ${LANG_GALICIAN} "Aplicación para crear e editar actividades JClic" LangString JClicAuthorDesc ${LANG_DUTCH} "Toepassing om JClic activiteiten aan te maken" LangString JClicAuthorDesc ${LANG_PORTUGUESEBR} "Aplicativo para criar e editar atividades do JClic" LangString JClicAuthorDesc ${LANG_CZECH} "Aplikace pro vytváření a úpravu JClic aktivit." LangString JClicAuthorDesc ${LANG_TRADCHINESE} "Application to create and edit JClic activities." LangString JClicAppletDesc ${LANG_CATALAN} "Fitxers que són necessaris només en un servidor que allotgi applets JClic." LangString JClicAppletDesc ${LANG_ENGLISH} "Files needed only in a server with hosted JClic applets." LangString JClicAppletDesc ${LANG_SPANISH} "Archivos que son necesarios únicamente en un servidor que aloje applets JClic." LangString JClicAppletDesc ${LANG_ITALIAN} "Files necessari solo in un server con applets JClic." LangString JClicAppletDesc ${LANG_GREEK} "Αρχεία απαραίτητα μόνο σε διακομιστή που φιλοξενεί μικροεφαρμογές του JClic." LangString JClicAppletDesc ${LANG_BASQUE} "JClic applets-ak ostatzen dituen zerbitzarian bakarrik beharrezko diren fitxategiak" LangString JClicAppletDesc ${LANG_PORTUGUESE} "Ficheiros necessários apenas num servidor com applets JClic." LangString JClicAppletDesc ${LANG_ARABIC} "Files needed only in a server with hosted JClic applets." LangString JClicAppletDesc ${LANG_FRENCH} "Fichiers nécessaires uniquement sur un serveur hébergeant des applets JClic." LangString JClicAppletDesc ${LANG_RUSSIAN} "Файлы требуются только на сервере, хостящем аплеты JClic." LangString JClicAppletDesc ${LANG_GERMAN} "Diese Dateien werden nur auf einem Server gebraucht, der JClic Applets hostet." LangString JClicAppletDesc ${LANG_GALICIAN} "Ficheiros só necesarios nun servidor con applets JClic aloxados" LangString JClicAppletDesc ${LANG_DUTCH} "Bestanden die enkel nodig zijn in een server met JClic applets." LangString JClicAppletDesc ${LANG_PORTUGUESEBR} "Arquivos necessários apenas em um servidor com applets JClic hospedados." LangString JClicAppletDesc ${LANG_CZECH} "Soubory potřebné pouze pro server s hostovanými JClic applety." LangString JClicAppletDesc ${LANG_TRADCHINESE} "Files needed only in a server with hosted JClic applets." LangString JClicReportsDesc ${LANG_CATALAN} "Servidor d'informes." LangString JClicReportsDesc ${LANG_ENGLISH} "Reports server." LangString JClicReportsDesc ${LANG_SPANISH} "Servidor de informes." LangString JClicReportsDesc ${LANG_ITALIAN} "Server dei rapporti." LangString JClicReportsDesc ${LANG_GREEK} "Διακομιστής αναφορών" LangString JClicReportsDesc ${LANG_BASQUE} "Txostenen zerbitzaria." LangString JClicReportsDesc ${LANG_PORTUGUESE} "Servidor de relatórios." LangString JClicReportsDesc ${LANG_ARABIC} "خادوم التقارير." LangString JClicReportsDesc ${LANG_FRENCH} "Serveur de rapports." LangString JClicReportsDesc ${LANG_RUSSIAN} "Сервер отчётов." LangString JClicReportsDesc ${LANG_GERMAN} "Reports server." LangString JClicReportsDesc ${LANG_GALICIAN} "Servidor de informes" LangString JClicReportsDesc ${LANG_DUTCH} "Rapporten server." LangString JClicReportsDesc ${LANG_PORTUGUESEBR} "Servidor de relatórios." LangString JClicReportsDesc ${LANG_CZECH} "Server sestav." LangString JClicReportsDesc ${LANG_TRADCHINESE} "Reports server." ; Modern install component descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "JClic core components" !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(JClicPlayerDesc) !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(JClicAuthorDesc) !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(JClicAppletDesc) !insertmacro MUI_DESCRIPTION_TEXT ${Section5} $(JClicReportsDesc) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;Uninstall section Section Uninstall SetShellVarContext all ;Remove from registry... DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" DeleteRegKey HKLM "SOFTWARE\${APPNAME}" ; Clear registry ReadRegStr $R0 HKCR ".jclic" "" StrCmp $R0 "JClic.project" 0 +2 DeleteRegKey HKCR ".jclic" ReadRegStr $R0 HKCR ".jclic.zip" "" StrCmp $R0 "JClic.project" 0 +2 DeleteRegKey HKCR ".jclic.zip" ReadRegStr $R0 HKCR ".jclic.inst" "" StrCmp $R0 "JClic.installer" 0 +2 DeleteRegKey HKCR ".jclic.inst" DeleteRegKey HKCR "JClic.project" DeleteRegKey HKCR "JClic.installer" System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' ; Delete self Delete "$INSTDIR\uninstall.exe" ; Delete Shortcuts Delete "$DESKTOP\JClic.lnk" Delete "$SMPROGRAMS\JClic\JClic.lnk" Delete "$DESKTOP\JClic Author.lnk" Delete "$SMPROGRAMS\JClic\JClic Author.lnk" Delete "$DESKTOP\JClic Reports.lnk" Delete "$SMPROGRAMS\JClic\JClic Reports.lnk" ; Clean up JClic core Delete "$INSTDIR\activities.jar" Delete "$INSTDIR\dbconn.jar" Delete "$INSTDIR\extra.jar" Delete "$INSTDIR\intl.jar" Delete "$INSTDIR\jclic.jar" Delete "$INSTDIR\jclicxml.jar" Delete "$INSTDIR\jdom.jar" Delete "$INSTDIR\jmfhandlers.jar" Delete "$INSTDIR\player.jar" Delete "$INSTDIR\qt60.jar" Delete "$INSTDIR\qt61.jar" Delete "$INSTDIR\soundspi.jar" Delete "$INSTDIR\utilities.jar" Delete "$INSTDIR\COPYING.txt" Delete "$INSTDIR\CREDITS.txt" Delete "$INSTDIR\CHANGES.txt" Delete "$INSTDIR\HACKING.txt" Delete "$INSTDIR\INSTALL.txt" ; Clean up JClic Delete "$INSTDIR\jclicplayer.jar" Delete "$INSTDIR\icons\install.ico" Delete "$INSTDIR\icons\jclic.ico" ; Clean up JClic author Delete "$INSTDIR\jclicauthor.jar" Delete "$INSTDIR\icons\author.ico" ; Clean up JClic applet Delete "$INSTDIR\jclicapplet.jar" Delete "$INSTDIR\jclicplugin.js" Delete "$INSTDIR\launchApplet.js" Delete "$INSTDIR\author.html" Delete "$INSTDIR\edu\xtec\resources\skins\blue.png" Delete "$INSTDIR\edu\xtec\resources\skins\blue.xml" Delete "$INSTDIR\edu\xtec\resources\skins\listskins.properties" Delete "$INSTDIR\edu\xtec\resources\skins\orange.png" Delete "$INSTDIR\edu\xtec\resources\skins\orange.xml" Delete "$INSTDIR\edu\xtec\resources\skins\simple.png" Delete "$INSTDIR\edu\xtec\resources\skins\simple.xml" Delete "$INSTDIR\edu\xtec\resources\skins\green.xml" Delete "$INSTDIR\edu\xtec\resources\skins\green.png" ; Clean up JClic reports Delete "$INSTDIR\reportServer.jar" Delete "$INSTDIR\jclicreports.jar" ; Remove remaining directories RMDir "$SMPROGRAMS\JClic" RMDir "$INSTDIR\edu\xtec\resources\skins\" RMDir "$INSTDIR\edu\xtec\resources\" RMDir "$INSTDIR\edu\xtec\" RMDir "$INSTDIR\edu\" RMDir "$INSTDIR\icons\" RMDir "$INSTDIR\" SectionEnd ; On initialization Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function CheckJavaVersion ClearErrors ReadRegStr $JAVA_VERSION HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" ReadRegStr $JAVA_HOME HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$JAVA_VERSION" "JavaHome" IfErrors NoJava Push ${MIN_JAVA_VERSION} Push $JAVA_VERSION Call CompareVersions Pop $R0 StrCmp $R0 "1" JavaOk MessageBox MB_OK|MB_ICONSTOP "$(oldJavaMsg) $(javaNeeded)" Goto GetJava NoJava: MessageBox MB_OK|MB_ICONSTOP "$(noJavaMsg) $(javaNeeded)" GetJava: ExecShell "open" ${GET_JAVA_URL} Quit JavaOk: DetailPrint "Found JRE $JAVA_VERSION in path $JAVA_HOME" FunctionEnd ;----------------------------------------------------------------------------- ; CompareVersions ; input: ; top of stack = existing version ; top of stack-1 = needed version ; output: ; top of stack = 1 if current version => neded version, else 0 ; version is a string in format "xx.xx.xx.xx" (number of interger sections ; can be different in needed and existing versions) Function CompareVersions ; stack: existing ver | needed ver Exch $R0 Exch Exch $R1 ; stack: $R1|$R0 Push $R1 Push $R0 ; stack: e|n|$R1|$R0 ClearErrors loop: IfErrors VersionNotFound Strcmp $R0 "" VersionTestEnd Call ParseVersion Pop $R0 Exch Call ParseVersion Pop $R1 Exch IntCmp $R1 $R0 +1 VersionOk VersionNotFound Pop $R0 Push $R0 goto loop VersionTestEnd: Pop $R0 Pop $R1 Push $R1 Push $R0 StrCmp $R0 $R1 VersionOk VersionNotFound VersionNotFound: StrCpy $R0 "0" Goto end VersionOk: StrCpy $R0 "1" end: ; stack: e|n|$R1|$R0 Exch $R0 Pop $R0 Exch $R0 ; stack: res|$R1|$R0 Exch ; stack: $R1|res|$R0 Pop $R1 ; stack: res|$R0 Exch Pop $R0 ; stack: res FunctionEnd ;--------------------------------------------------------------------------------------- ; ParseVersion ; input: ; top of stack = version string ("xx.xx.xx.xx") ; output: ; top of stack = first number in version ("xx") ; top of stack-1 = rest of the version string ("xx.xx.xx") Function ParseVersion Exch $R1 ; version Push $R2 Push $R3 StrCpy $R2 1 loop: StrCpy $R3 $R1 1 $R2 StrCmp $R3 "." loopend StrLen $R3 $R1 IntCmp $R3 $R2 loopend loopend IntOp $R2 $R2 + 1 Goto loop loopend: Push $R1 StrCpy $R1 $R1 $R2 Exch $R1 StrLen $R3 $R1 IntOp $R3 $R3 - $R2 IntOp $R2 $R2 + 1 StrCpy $R1 $R1 $R3 $R2 Push $R1 Exch 2 Pop $R3 Exch 2 Pop $R2 Exch 2 Pop $R1 FunctionEnd ;--------------------------------------------------------------------------------------- ; eof jclic-0.2.1.0.orig/instal/.#setup.nsi.1.110000644000175000017500000005105611377161311014470 0ustar ; Product version !ifndef PRODUCT_VERSION !define PRODUCT_VERSION "0.1.1.7" !endif ; Constants and variables for Java version check !define GET_JAVA_URL "http://www.java.com" !define MIN_JAVA_VERSION "1.4" Var JAVA_HOME Var JAVA_VERSION ; Constants for app registry !define SHCNE_ASSOCCHANGED 0x8000000 !define SHCNF_IDLIST 0 ; Define your application name !define APPNAME "JClic (offline)" !define APPNAMEANDVERSION "JClic 0.2" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\orange-install.ico" !define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\orange-uninstall.ico" !define MUI_LANGDLL_ALLLANGUAGES ;BGGradient 000000 800000 FFFFFF XPStyle on ; Main Install settings Name "${APPNAMEANDVERSION}" InstallDir "$PROGRAMFILES\JClic" InstallDirRegKey HKLM "Software\${APPNAME}" "" OutFile "jclic-${PRODUCT_VERSION}.exe" ; Modern interface settings !include "MUI.nsh" !insertmacro MUI_PAGE_WELCOME Page custom CheckJavaVersion "" " - Java system check" !insertmacro MUI_PAGE_LICENSE "..\COPYING.txt" !insertmacro MUI_PAGE_COMPONENTS !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES ; Set languages (first is default language) !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Catalan" !insertmacro MUI_LANGUAGE "Spanish" !insertmacro MUI_LANGUAGE "Italian" !insertmacro MUI_LANGUAGE "Greek" !insertmacro MUI_LANGUAGE "Basque" !insertmacro MUI_LANGUAGE "Portuguese" !insertmacro MUI_RESERVEFILE_LANGDLL ;-------------------------------- ;Version Information VIProductVersion ${PRODUCT_VERSION} VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductName" "JClic" ;VIAddVersionKey /LANG=${LANG_ENGLISH} "Comments" "A test comment" VIAddVersionKey /LANG=${LANG_ENGLISH} "CompanyName" "XTEC - Departament d'Educació" ;VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalTrademarks" "Test Application is a trademark of Fake company" VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "© Francesc Busquets & Departament d'Educació de la Generalitat de Catalunya" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileDescription" "Windows installer of JClic modules" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "${PRODUCT_VERSION}" ;-------------------------------- LangString javaNeeded ${LANG_CATALAN} "El JClic necessita un motor Java actualitzat, versió 1.4 o superior. El podeu descarregar gratuïtament des de http://www.java.com" LangString javaNeeded ${LANG_ENGLISH} "JClic needs an updated Java engine, version 1.4 or higher. You can download it from http://www.java.com" LangString javaNeeded ${LANG_SPANISH} "JClic necesita un motor Java actualizado, versión 1.4 o superior. Puede descargarlo gratuitamente desde http://www.java.com" LangString javaNeeded ${LANG_ITALIAN} "JClic richiede un motore Java aggiornato, versione 1.4 o superiore. Puoi scaricarla da http://www.java.com" LangString javaNeeded ${LANG_GREEK} "Το JClic χρειάζεται μια ενημερωμένη μηχανή Java, έκδοση 1.4 ή μεταγενέστερη. Μπορείτε να την κατεβάσετε από τη διεύθυνση http://www.java.com" LangString javaNeeded ${LANG_BASQUE} "JClic-ek Java 1.4 edo aurreragoko bertsioa behar du. Hemen lortu ahal duzu: http://www.java.com" LangString javaNeeded ${LANG_PORTUGUESE} "O Jclic necessita um motor Java actualizado (versão 1.4 ou superior). Pode desacrregá-lo em http://www.java.com" LangString oldJavaMsg ${LANG_CATALAN} "El sistema Java d'aquest ordinador és antic." LangString oldJavaMsg ${LANG_ENGLISH} "There is an old version of Java installed on this computer." LangString oldJavaMsg ${LANG_SPANISH} "El sistema Java de este ordenador es antiguo." LangString oldJavaMsg ${LANG_ITALIAN} "C'è una vecchia versione di Java installata in questo computer." LangString oldJavaMsg ${LANG_GREEK} "Υπάρχει μια παλαιότερη έκδοση Java εγκατεστημένη σε αυτόν τον υπολογιστή." LangString oldJavaMsg ${LANG_BASQUE} "Ordenagailu honetan Javaren bertsio zaharra dago instalatuta" LangString oldJavaMsg ${LANG_PORTUGUESE} "Possui uma versão antiga do Java instalada neste computador." LangString noJavaMsg ${LANG_CATALAN} "No s'ha pogut trobar cap sistema Java instal·lat a aquest ordinador." LangString noJavaMsg ${LANG_ENGLISH} "It was impossible to find any Java system installed on this computer." LangString noJavaMsg ${LANG_SPANISH} "No se ha encontrado ningún sistema Java instalado en este ordenador." LangString noJavaMsg ${LANG_ITALIAN} "Non è stato possibile trovare una versione di Java installata in questo computer." LangString noJavaMsg ${LANG_GREEK} "Είναι αδύνατον να βρεθεί σύστημα της Java εγκατεστημένο σε αυτόν τον υπολογιστή." LangString noJavaMsg ${LANG_BASQUE} "Ezin izan da Java sistemarik aurkitu instalatuta ordenagailu honetan" LangString noJavaMsg ${LANG_PORTUGUESE} "Não foi possível encontrar uma instalação do Java neste computador." LangString standardType ${LANG_CATALAN} "Estàndard" LangString standardType ${LANG_ENGLISH} "Standard" LangString standardType ${LANG_SPANISH} "Estándar" LangString standardType ${LANG_ITALIAN} "Tipica" LangString standardType ${LANG_GREEK} "Τυπική" LangString standardType ${LANG_BASQUE} "Standard" LangString standardType ${LANG_PORTUGUESE} "Standard" LangString fullType ${LANG_CATALAN} "Completa" LangString fullType ${LANG_ENGLISH} "Full" LangString fullType ${LANG_SPANISH} "Completa" LangString fullType ${LANG_ITALIAN} "Completa" LangString fullType ${LANG_GREEK} "Πλήρης" LangString fullType ${LANG_BASQUE} "Osoa" LangString fullType ${LANG_PORTUGUESE} "Completa" LangString liteType ${LANG_CATALAN} "Mínima" LangString liteType ${LANG_ENGLISH} "Lite" LangString liteType ${LANG_SPANISH} "Mínima" LangString liteType ${LANG_ITALIAN} "Minima" LangString liteType ${LANG_GREEK} "Ελάχιστη" LangString liteType ${LANG_BASQUE} "Gutxienekoa" LangString liteType ${LANG_PORTUGUESE} "Mínima" InstType "$(standardType)" InstType "$(fullType)" InstType "$(liteType)" LangString captionStr ${LANG_CATALAN} "Instal·lació del JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_ENGLISH} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_SPANISH} "Instalación de JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_ITALIAN} "JClic ${PRODUCT_VERSION} offline setup" LangString captionStr ${LANG_GREEK} "Offline εγκατάσταση του JClic ${PRODUCT_VERSION}" LangString captionStr ${LANG_BASQUE} "JClic-en instalazioa ${PRODUCT_VERSION}" LangString captionStr ${LANG_PORTUGUESE} "JClic ${PRODUCT_VERSION} instalação offline" Caption "$(captionStr)" Section "-JClic core" Section1 SectionIn 1 2 3 ; Set Section properties SetOverwrite ifnewer ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclic.jar" File "..\COPYING.txt" File "..\CREDITS.txt" File "..\CHANGES.txt" File "..\HACKING.txt" File "..\INSTALL.txt" SectionEnd Section "JClic player" Section2 SectionIn 1 2 3 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\icons" File "..\dist\jclic\icons\install.ico" File "..\dist\jclic\icons\jclic.ico" SetOutPath "$INSTDIR\" CreateShortCut "$DESKTOP\JClic.lnk" "javaw" "-jar jclic.jar" "$INSTDIR\icons\jclic.ico" CreateDirectory "$SMPROGRAMS\JClic" CreateShortCut "$SMPROGRAMS\JClic\JClic.lnk" "javaw" "-jar jclic.jar" "$INSTDIR\icons\jclic.ico" ReadRegStr $R0 HKCR ".jclic" "" StrCmp $R0 "JCLICFile" 0 +2 DeleteRegKey HKCR "JCLICFile" ReadRegStr $R0 HKCR ".jclic.zip" "" StrCmp $R0 "JCLIC.ZIPFile" 0 +2 DeleteRegKey HKCR "JCLIC.ZIPFile" WriteRegStr HKCR ".jclic" "" "JClic.project" WriteRegStr HKCR ".jclic.zip" "" "JClic.project" WriteRegStr HKCR "JClic.project" "" "JClic project file" WriteRegStr HKCR "JClic.project\DefaultIcon" "" "$INSTDIR\icons\jclic.ico" ReadRegStr $R0 HKCR "JClic.project\shell\open\command" "" StrCmp $R0 "" 0 no_open WriteRegStr HKCR "JClic.project\shell" "" "open" WriteRegStr HKCR "JClic.project\shell\open\command" "" 'javaw -jar "$INSTDIR\jclic.jar" "%1"' no_open: ReadRegStr $R0 HKCR ".jclic.inst" "" StrCmp $R0 "JCLIC.INSTFile" 0 +2 DeleteRegKey HKCR "JCLIC.INSTFile" WriteRegStr HKCR ".jclic.inst" "" "JClic.installer" WriteRegStr HKCR "JClic.installer" "" "JClic project install script" WriteRegStr HKCR "JClic.installer\DefaultIcon" "" "$INSTDIR\icons\install.ico" ReadRegStr $R0 HKCR "JClic.install\shell\open\command" "" StrCmp $R0 "" 0 no_open_inst WriteRegStr HKCR "JClic.install\shell" "" "open" WriteRegStr HKCR "JClic.install\shell\open\command" "" 'javaw -jar "$INSTDIR\jclic.jar" "%1"' no_open_inst: System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' SectionEnd Section "JClic author" Section3 sectionIn 1 2 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclicauthor.jar" SetOutPath "$INSTDIR\icons" File "..\dist\jclic\icons\author.ico" SetOutPath "$INSTDIR\" CreateShortCut "$DESKTOP\JClic Author.lnk" "javaw" "-jar jclicauthor.jar" "$INSTDIR\icons\author.ico" CreateDirectory "$SMPROGRAMS\JClic" CreateShortCut "$SMPROGRAMS\JClic\JClic Author.lnk" "javaw" "-jar jclicauthor.jar" "$INSTDIR\icons\author.ico" ReadRegStr $R0 HKCR ".jclic.zip" "" StrCmp $R0 "JCLIC.ZIPFile" 0 +2 DeleteRegKey HKCR "JCLIC.ZIPFile" WriteRegStr HKCR ".jclic" "" "JClic.project" WriteRegStr HKCR ".jclic.zip" "" "JClic.project" WriteRegStr HKCR "JClic.project" "" "JClic project file" WriteRegStr HKCR "JClic.project\DefaultIcon" "" "$INSTDIR\icons\jclic.ico" ReadRegStr $R0 HKCR "JClic.project\shell\edit\command" "" StrCmp $R0 "" 0 no_edit ;WriteRegStr HKCR "JClic.project\shell" "" "edit" WriteRegStr HKCR "JClic.project\shell\edit\command" "" 'javaw -jar "$INSTDIR\jclicauthor.jar" "%1"' no_edit: SectionEnd Section /o "JClic applet" Section4 SectionIn 2 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclicplugin.js" File "..\dist\jclic\launchApplet.js" File "..\dist\jclic\author.html" SectionEnd Section "JClic reports" Section5 SectionIn 2 ; Set Section properties SetOverwrite ifnewer SetShellVarContext all ; Set Section Files and Shortcuts SetOutPath "$INSTDIR\" File "..\dist\jclic\jclicreports.jar" SetOutPath "$INSTDIR\icons" File "..\dist\jclic\icons\reports.ico" SetOutPath "$INSTDIR\" CreateShortCut "$DESKTOP\JClic Reports.lnk" "javaw" "-jar jclicreports.jar" "$INSTDIR\icons\reports.ico" CreateDirectory "$SMPROGRAMS\JClic" CreateShortCut "$SMPROGRAMS\JClic\JClic Reports.lnk" "javaw" "-jar jclicreports.jar" "$INSTDIR\icons\reports.ico" SectionEnd Section -FinishSection WriteRegStr HKLM "Software\${APPNAME}" "" "$INSTDIR" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe" WriteUninstaller "$INSTDIR\uninstall.exe" SectionEnd ; A LangString for the section name LangString JClicPlayerDesc ${LANG_CATALAN} "Aplicació per visualitzar i realitzar activitats JClic." LangString JClicPlayerDesc ${LANG_ENGLISH} "Application to play JClic activities." LangString JClicPlayerDesc ${LANG_SPANISH} "Aplicación para visualizar y realizar actividades JClic." LangString JClicPlayerDesc ${LANG_ITALIAN} "Applicazione per avviare attività JClic." LangString JClicPlayerDesc ${LANG_GREEK} "Εφαρμογή αναπαραγωγής δραστηριοτήτων του JClic" LangString JClicPlayerDesc ${LANG_BASQUE} "JClic jarduerak egiteko aplikazioa" LangString JClicPlayerDesc ${LANG_PORTUGUESE} "Programa para correr actividades Jclic." LangString JClicAuthorDesc ${LANG_CATALAN} "Aplicació per crear i modificar activitats JClic." LangString JClicAuthorDesc ${LANG_ENGLISH} "Application to create and edit JClic activities." LangString JClicAuthorDesc ${LANG_SPANISH} "Aplicación para crear y modificar actividades JClic." LangString JClicAuthorDesc ${LANG_ITALIAN} "Applicazione per creare e modificare attività JClic." LangString JClicAuthorDesc ${LANG_GREEK} "Εφαρμογή δημιουργίας και επεξεργασίας του JClic." LangString JClicAuthorDesc ${LANG_BASQUE} "JClic jarduerak sortu eta editatzeko aplikazioa" LangString JClicAuthorDesc ${LANG_PORTUGUESE} "Programa para criar e editar actividades Jclic." LangString JClicAppletDesc ${LANG_CATALAN} "Fitxers que són necessaris només en un servidor que allotgi applets JClic." LangString JClicAppletDesc ${LANG_ENGLISH} "Files needed only in a server with hosted JClic applets." LangString JClicAppletDesc ${LANG_SPANISH} "Archivos que son necesarios únicamente en un servidor que aloje applets JClic." LangString JClicAppletDesc ${LANG_ITALIAN} "Files necessari solo in un server con applets JClic." LangString JClicAppletDesc ${LANG_GREEK} "Αρχεία απαραίτητα μόνο σε διακομιστή που φιλοξενεί μικροεφαρμογές του JClic." LangString JClicAppletDesc ${LANG_BASQUE} "JClic applets-ak ostatzen dituen zerbitzarian bakarrik beharrezko diren fitxategiak" LangString JClicAppletDesc ${LANG_PORTUGUESE} "Ficheiros necessários apenas num servidor com applets JClic." LangString JClicReportsDesc ${LANG_CATALAN} "Servidor d'informes." LangString JClicReportsDesc ${LANG_ENGLISH} "Reports server." LangString JClicReportsDesc ${LANG_SPANISH} "Servidor de informes." LangString JClicReportsDesc ${LANG_ITALIAN} "Server dei rapporti." LangString JClicReportsDesc ${LANG_GREEK} "Διακομιστής αναφορών" LangString JClicReportsDesc ${LANG_BASQUE} "Txostenen zerbitzaria." LangString JClicReportsDesc ${LANG_PORTUGUESE} "Servidor de relatórios." ; Modern install component descriptions !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "JClic core components" !insertmacro MUI_DESCRIPTION_TEXT ${Section2} $(JClicPlayerDesc) !insertmacro MUI_DESCRIPTION_TEXT ${Section3} $(JClicAuthorDesc) !insertmacro MUI_DESCRIPTION_TEXT ${Section4} $(JClicAppletDesc) !insertmacro MUI_DESCRIPTION_TEXT ${Section5} $(JClicReportsDesc) !insertmacro MUI_FUNCTION_DESCRIPTION_END ;Uninstall section Section Uninstall SetShellVarContext all ;Remove from registry... DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" DeleteRegKey HKLM "SOFTWARE\${APPNAME}" ; Clear registry ReadRegStr $R0 HKCR ".jclic" "" StrCmp $R0 "JClic.project" 0 +2 DeleteRegKey HKCR ".jclic" ReadRegStr $R0 HKCR ".jclic.zip" "" StrCmp $R0 "JClic.project" 0 +2 DeleteRegKey HKCR ".jclic.zip" ReadRegStr $R0 HKCR ".jclic.inst" "" StrCmp $R0 "JClic.installer" 0 +2 DeleteRegKey HKCR ".jclic.inst" DeleteRegKey HKCR "JClic.project" DeleteRegKey HKCR "JClic.installer" System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)' ; Delete self Delete "$INSTDIR\uninstall.exe" ; Delete Shortcuts Delete "$DESKTOP\JClic.lnk" Delete "$SMPROGRAMS\JClic\JClic.lnk" Delete "$DESKTOP\JClic Author.lnk" Delete "$SMPROGRAMS\JClic\JClic Author.lnk" Delete "$DESKTOP\JClic Reports.lnk" Delete "$SMPROGRAMS\JClic\JClic Reports.lnk" ; Clean up JClic core Delete "$INSTDIR\activities.jar" Delete "$INSTDIR\dbconn.jar" Delete "$INSTDIR\extra.jar" Delete "$INSTDIR\intl.jar" Delete "$INSTDIR\jclic.jar" Delete "$INSTDIR\jclicxml.jar" Delete "$INSTDIR\jdom.jar" Delete "$INSTDIR\jmfhandlers.jar" Delete "$INSTDIR\player.jar" Delete "$INSTDIR\qt60.jar" Delete "$INSTDIR\qt61.jar" Delete "$INSTDIR\soundspi.jar" Delete "$INSTDIR\utilities.jar" Delete "$INSTDIR\COPYING.txt" Delete "$INSTDIR\CREDITS.txt" Delete "$INSTDIR\CHANGES.txt" Delete "$INSTDIR\HACKING.txt" Delete "$INSTDIR\INSTALL.txt" ; Clean up JClic Delete "$INSTDIR\jclicplayer.jar" Delete "$INSTDIR\icons\install.ico" Delete "$INSTDIR\icons\jclic.ico" ; Clean up JClic author Delete "$INSTDIR\jclicauthor.jar" Delete "$INSTDIR\icons\author.ico" ; Clean up JClic applet Delete "$INSTDIR\jclicapplet.jar" Delete "$INSTDIR\jclicplugin.js" Delete "$INSTDIR\launchApplet.js" Delete "$INSTDIR\author.html" Delete "$INSTDIR\edu\xtec\resources\skins\blue.png" Delete "$INSTDIR\edu\xtec\resources\skins\blue.xml" Delete "$INSTDIR\edu\xtec\resources\skins\listskins.properties" Delete "$INSTDIR\edu\xtec\resources\skins\orange.png" Delete "$INSTDIR\edu\xtec\resources\skins\orange.xml" Delete "$INSTDIR\edu\xtec\resources\skins\simple.png" Delete "$INSTDIR\edu\xtec\resources\skins\simple.xml" Delete "$INSTDIR\edu\xtec\resources\skins\green.xml" Delete "$INSTDIR\edu\xtec\resources\skins\green.png" ; Clean up JClic reports Delete "$INSTDIR\reportServer.jar" Delete "$INSTDIR\jclicreports.jar" ; Remove remaining directories RMDir "$SMPROGRAMS\JClic" RMDir "$INSTDIR\edu\xtec\resources\skins\" RMDir "$INSTDIR\edu\xtec\resources\" RMDir "$INSTDIR\edu\xtec\" RMDir "$INSTDIR\edu\" RMDir "$INSTDIR\icons\" RMDir "$INSTDIR\" SectionEnd ; On initialization Function .onInit !insertmacro MUI_LANGDLL_DISPLAY FunctionEnd Function CheckJavaVersion ClearErrors ReadRegStr $JAVA_VERSION HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" ReadRegStr $JAVA_HOME HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$JAVA_VERSION" "JavaHome" IfErrors NoJava Push ${MIN_JAVA_VERSION} Push $JAVA_VERSION Call CompareVersions Pop $R0 StrCmp $R0 "1" JavaOk MessageBox MB_OK|MB_ICONSTOP "$(oldJavaMsg) $(javaNeeded)" Goto GetJava NoJava: MessageBox MB_OK|MB_ICONSTOP "$(noJavaMsg) $(javaNeeded)" GetJava: ExecShell "open" ${GET_JAVA_URL} Quit JavaOk: DetailPrint "Found JRE $JAVA_VERSION in path $JAVA_HOME" FunctionEnd ;----------------------------------------------------------------------------- ; CompareVersions ; input: ; top of stack = existing version ; top of stack-1 = needed version ; output: ; top of stack = 1 if current version => neded version, else 0 ; version is a string in format "xx.xx.xx.xx" (number of interger sections ; can be different in needed and existing versions) Function CompareVersions ; stack: existing ver | needed ver Exch $R0 Exch Exch $R1 ; stack: $R1|$R0 Push $R1 Push $R0 ; stack: e|n|$R1|$R0 ClearErrors loop: IfErrors VersionNotFound Strcmp $R0 "" VersionTestEnd Call ParseVersion Pop $R0 Exch Call ParseVersion Pop $R1 Exch IntCmp $R1 $R0 +1 VersionOk VersionNotFound Pop $R0 Push $R0 goto loop VersionTestEnd: Pop $R0 Pop $R1 Push $R1 Push $R0 StrCmp $R0 $R1 VersionOk VersionNotFound VersionNotFound: StrCpy $R0 "0" Goto end VersionOk: StrCpy $R0 "1" end: ; stack: e|n|$R1|$R0 Exch $R0 Pop $R0 Exch $R0 ; stack: res|$R1|$R0 Exch ; stack: $R1|res|$R0 Pop $R1 ; stack: res|$R0 Exch Pop $R0 ; stack: res FunctionEnd ;--------------------------------------------------------------------------------------- ; ParseVersion ; input: ; top of stack = version string ("xx.xx.xx.xx") ; output: ; top of stack = first number in version ("xx") ; top of stack-1 = rest of the version string ("xx.xx.xx") Function ParseVersion Exch $R1 ; version Push $R2 Push $R3 StrCpy $R2 1 loop: StrCpy $R3 $R1 1 $R2 StrCmp $R3 "." loopend StrLen $R3 $R1 IntCmp $R3 $R2 loopend loopend IntOp $R2 $R2 + 1 Goto loop loopend: Push $R1 StrCpy $R1 $R1 $R2 Exch $R1 StrLen $R3 $R1 IntOp $R3 $R3 - $R2 IntOp $R2 $R2 + 1 StrCpy $R1 $R1 $R3 $R2 Push $R1 Exch 2 Pop $R3 Exch 2 Pop $R2 Exch 2 Pop $R1 FunctionEnd ;--------------------------------------------------------------------------------------- ; eof jclic-0.2.1.0.orig/build.xml0000644000175000017500000010261311377161311012440 0ustar Copyright © ${year} Francesc Busquets (fbusquets@xtec.net) & Departament d'Educació de la Generalitat de Catalunya (info@xtec.net)
Licensed under the terms of the GNU General Public License

]]>
jclic-0.2.1.0.orig/dist/0000755000175000017500000000000011377161311011557 5ustar jclic-0.2.1.0.orig/dist/jclic/0000755000175000017500000000000011377161311012643 5ustar jclic-0.2.1.0.orig/dist/jclic/readme.txt0000644000175000017500000000056211377161311014644 0ustar Steps to follow in order to install JClic: - Expand the content of this zip file in a folder - Create shorcuts for each application, with the following commands: JClic: java -jar jclic.jar JClic author: java -Xmx256m -jar jclicauthor.jar JClic reports: java -jar jclicreports.jar There are some PNG files, useful for launchers, in the "icons" folder jclic-0.2.1.0.orig/dist/jclic/leeme.txt0000644000175000017500000000064211377161311014475 0ustar Instrucciones para la instalacin de JClic: - Descomprimir el contenido del zip en una carpeta - Crear un acceso directo o lanzador para cada aplicacin, con los comandos: JClic: java -jar jclic.jar JClic author: java -Xmx256m -jar jclicauthor.jar JClic reports: java -jar jclicreports.jar En la carpeta "icons" hay algunos archivos PNG que pueden resultar tiles para crear los accesos directos. jclic-0.2.1.0.orig/dist/jclic/jclic-icons.zip0000644000175000017500000023034011377161311015566 0ustar PK5~1@E#:install_aqua.icoy\/ˌQ$%DBoJ}/GTҞKF*LER !eR:w]3Y~tuZ^Z}Ch %!$$SN_;G('X,0FF}($A3.EV/BːMxipZ7a,fKd!)BK#Ii8R;7G~#iHZ%eekbsl9hp.[4-D=K%_.5&n1orF;HA"e񋦣RhleQƵJs_[F~7-mFIa ZB~9MHpAʭ62Ud&⼁K!{\ƂHM uol;}#5 ͜/-@jǕ D)^I1}Yrd'dC!8yH NaT0Jp2uOQd(HT!'՟{:גGTR6EDy_Ah"_l!e Ƅor,a4ʎP~d+gVfrgKsYɩY1g#WpKOpNq7r  'Nµ<(A"uѿ߆dnIHFxuh/(K8 Gs̕,e/b(b:9utNۘRIR̫E 5XYXeĵܸKі_$F[I݂O@q~ h\++SyP95Vrfu\V[яsճ5_.׌G?2f95" FMbfY*VA';j 7-R6_uz;HoMCHy(=e^vN@E 'ýZʺ_!zR%"|U?_fkfzn{gWm¸/ ̫s˘ʼn27r4 K<1M4-D{m Ih39ֵ(c8[s8O˺Y,Lև3`6`Lg5Oo of[p9Ӧ3.d^/a*_/O^(Nff˳Cfǜ֢@4 })L8Lb#\Jr$Nƽg"_ 7z-98[7q+JĹ 8}[:S8]'j*ŸsZlzPERzAFr<+fv=)Ms71 &MB`(:d%ijsY2z<~>'쪝|wCElM̾Lnt`ݛ)1eȫP4on&r'km}J|j+2h H?mRkdD? dmQ߾PQ^4d=nIvURqFg(o|qGhpR }?Y̆X܆ɤ7OAr*w8=p/%^oCPVMN;i$RUfZ=*KSV1{,@T|p}ڇiI:~`k9s,;#3uEb5G~<"!-t~oEFvN~Rqm|{UnVWa0II):?}-f)S2S) %3O,h(; ^ ?Q5md q?fyLfȋx/5t]mto;u!kA 4#A?y-gaaQ{^hō)1҂ C]?5~ ְ~~w^grJa%~O0С1}.y[7km֪,zz  H|PJćB/H?HPd^ԉo;^78qK$4gG÷~\e֢}4E=n=Λ}tPfzZk~7*LO_pќlHI`wreq8Ht'%>yH x, 1K/̱oi7Z9[t;Z,xn+n;k W35HII|.;'+DA.GQ54ҽ)oJt-|rN/W^zCmᾬ<顯4PȽuYﮧM Ȯ n(l~GXj;7sftWe6hfS0S n 6ۙ>~UVʮeOԊ?{ȋ̵}&A5ݶ0TX-4S_?F/;k2cBuuU-եm5xhBWWs.&Jtwev0QL4 ad轻`xZ0=(dz/d<:wxUՒ%IX[UGϮxJ)]?L~qؤ0ޯS9_? + H} GTɇ4U|]6{Q:ԟju5Wfo㺛Y}:FHVPzr+!oSE&p1PUeMdEG骹r]);olSru{3ٺM E}~=p栜`c zk.Z\4V9Ⱦީy:'; p7Fu^-#Gsmǿn{Oe,bese/GNƯtil? 'Nz`omp[>8Q!j Ve뮵颱\qlT8Ϳ<[Ex? I,^յfղGʊ,(:m)O=&/}l4> 037i+?g'Clx_k lOiR 9 c _] z&~/|xƇ9bKdeeViaJk~ʌ ͜@/.2$<<8ͺ s1EܭZL5]l]>D Y1"4a֛ X|V*jɂVE#Ox+<4 dBzMjxңX5VcXQ +Jay? Z)zt0z(z#e#p'g$y@4xi'-zJȳ,}(7ci9*'vxCqG0 6? M"fS0\wGF##1؍΋rz@A3;@ i,GࠋǾvъ~{]`Ù) 1 %GAQF,Bс>Fue]; Z\,<=>~݌А F fdh +%ΏqK4I~p" c< ; ՖZ6 !!wڿ94"*OP eYp"+Jl،zV, 7p"g_vbD;3..J`O=嘊p C!p*u$A@ة ~#XPr$ gN9 Ug\(+YPY πO1Lc*nAZ44;[q 8.'):I8gD)l}` _m˾PMuvv'kiىBQ_ 5Pw .-Su[EPB'v߇Z^ qlA\s,9#Ɇ2,J3D:\(NCF@P6@|±YҒxͺ pqL6Q?2I,\wOP\ %^$VDNxHIbzԒxHJ1B(3zjIޙ!i5uj)sKr3JDW L]Aܯ}YX']-hO\9&ztQs=^s:|#J瀨Y2Aj̩ΝƺU&JR(5X(=o-f6?>rnDΐ-\{V|"Y˒o`%1|%z3E/nud`EB.f5qycF^H @F4:WJi=,M0R/ڏ 7sƒY :HsUUUkyaaI ^Jcm,(8; 턱Er 遱I CQ$M̉K޻]{ y3o &?[Q7Җ \<<|%Lbo}R5+iszI"r)AByk ^^Gc?'c0_ˈt]___5o9xρ n_֏dƕWl-RXiBcfb k wk]p0XC].+lyw%]/{țvot({ BC6ndWZu cQ ɿ7`G*EccnЂx;,/,N`zȃ'kͳDGW=RrYʲ̉FRyQ/q!lUmşPW>pd`V_q`D^$EFj<H,TVV %q{Ie`c"?ϞvIMk-^!?֯RQj&c ^NN&oujM+JOIw*2Xdڪ,s3Zg }˭PW-Jk ~>~Ρ?V-qm W\ ܭZ=ƿRu;umogV+86Kv~c-TT驨+{| p0j,A.8kd4)D7Ihwyb#U[Ck8n?|`*n-RLw#&p{& ߾)KU#dt4[=aL`IK4ROyt/8T8U= &=a)ໄC] ;&mNG3{=) to9ةlqhdp8jwYe6,vRx đS38#^oEoH7 c[e9l]hdO3J> ~vfq4֓ <6X/` ; r7A. >4Gzj +g`7$-Y>p "C 3lN{]<|`2.0E N`9Md%pRǓhP x_quY0~O$MMMjb\4eBiAgCDiv5+É>x-ņpS"8%܊8 G"ԡp8 )۾u$sx`@@UNV:VWBՙpLĴ^x˃wq^Cxow4þ[!"'{4Okg0jY&\*ɀiLws#*?w &&EC%hj @nO'=nPg/Bp .ֺ3p4ܭ= ͗ʠ_< lq6$ϟH 1I\\\9wn:Bmg;4op4}-I>!xrE)8[trq|VCdD WEt?^cx"1^=^t>ңA57< V4?Hhw=<NщMwj*NB2=HZC'"0 IxLÝؾM҈FhV gpq0G;V9|#@)rA^qZw9Q[ ֖y|-۰=߆d *AHp텾 )q~:BS t"4CE|?a8/)@$P;%$Јb dfs>UIJL m 1&ˇ㯃&G=y&kW2|R|Xea,vR ~gG| ڜnx|h䲡eK-XCNCUH}5h}a6Ok oG[DeɌ~ȎK Op늗 R+2Aug84@n0v{k/gD; oEsH۶QrB^6F}ćWׅ.⼷g70^/QcG^}7xYoN6 #r}];kk\_<::%&7~L ^kibqora٠>%ͯlM[%al@6]٭鼮so¨qB2ʿnW^B9TsDpd sЃ#9s6 `X1 0MFOiV*}T|7h߇dj+O~.a>,Oiݰ,&(Xz3vlZl_Z3aݺu[z.xI)sâI4H+%jd]vZ==(m$vBVHR(/Ʌʒ<(? zhQH sbqv74~wu@K{Bf>x;!+q\"cqqHHHyJxus(+* Zg%pww?Jj슍nggsT^QA:^#>1|B?SB(PK{s~11o#:author_aqua.icowXG5+"bC@EY;HK[tEHWE,"AШQ? `n};ˢDӾs9s]73qhB/άFH!$,,< ݬY#&"NXG! [4/8BhfqXvZNBb88BY< [XmX /C;E#jI38eZۘ4gzZ* ։ +UgqE\3?wb*v%qp\N F^>&G.GKV@RDj[7FۤIu 3zcsN+? -!/r =֘sxf^*Eo%Vu+N 6?TxQQ4Yf1'* #2Bk / 3( 8e%+٤P qd= YG *H9]T6@x|_"MS%6Pi2b.gJ˒Vs8 LqܲinQ,V^QeȎՀP㖫>z0öMl<𵋈 !~\tVJ?fS , 2x9Rĸ k8 E9?d=/4 ~,Yj<'ʺQ ʪ=]|FN19nv^F:Dj2!Ķbl$$$H"ˑ+L |(րKY[xէ$ k9M"eBُ[^zZCPv^l\lb/_$l(Xͪc&mdswjnZ%hBK2րmDirnYI2ËK݋؝ j_-`U?_n5 YU2 1(\ɬe&r6SrJئva-Xqϟ3),Sx@a)K+N疧bWf-e_[Ⱦun>t.?a?8zb6 Ks-sw汚J *'E7}8AUk%4`-Xq tb20k: e89 gӭ q70QS]]4m,Υ33fp˜έ̚Ϋ̚ƫu*1YӉ383D\NYva>@N\L; IfPjɝh J-i8E})T%.sX@㯍GSD"N@V2cT2U>ZIZ#wsl [ 8H :mc9q)6mS>ӎl9e]NfCz~H0G( ć3W:dOI.Μ!=BTa_*l6E#u0n[ё)E87%d \`ɕ/a#_5D$@zw+q̴ Z Q%Qv<5xO_ 999FNqH> G!O ;t:f]_m-:tV=HMHU-aaL4ND}}eB GI_ڭ6ќl!ޏ*i{݊t0M6v\s ե&pg P'2rUo/YCwÂgaZyz250I=U"0XNK{ JU){.UoeRw=辇̦聱X@3>` jjr۔# Ɯ@C4i8#{ꗼ{yfIV_!K'50Mt瀇$^^^TޥӸTT۴//ݩ!/xkkg>okm&L&_Bݧp#/Oc:2X>׿X4kzb\x%m*L:[남3vstt<~FB>'fly;!\xܽ({vX_=׫5<,})><Q>Syg-7:ȃʊz5%-wvlzݭT?HLwK2Ј:PS=5 9yIAD}k<ͤIuE{JwfT,ZwZAs5B] ۺnooin9zmZGԃ'tZo۔. ;ޯ,8럫گ[GEꥍɮn=~>B?n4s2j~5 }tLT9@@Tot3ye.D{rO53R^q̏/Z)|][rewݞ _kuwvO0?\ly2ԕe^Z+8,TflfFs}X@Lلx 5_jeEGP{ܓ`ŇGT0QŜMWU5QPʅ?Ϋ&ѵ:&Q/b-o*2 s[x/ϔ쓕VQ2#[ z*q@&YL/?2=E.= %gf;9+}pk"nW`hL?Gq"|5M_K{W][nSkYG.G,O0ؗgK?]:˛*l*[tmV/Ѿ >(ڛ~_Z{PjÚ24dznzl8l =r?3vm ަ;)9%nnAPynuQΝ_B*XJ/ؐͥ4dt,:@e7URuVv2WypcJ!EコI7 ]K-Oוu7neE}h$r*=NLI{0 b &%GWcGk1WFILdaZU/1'tHP vZ,4?7o6Ͽ1 9n6Om 0B?qO`wy90i e݃xc)Nq-0+ >23qaf=zal[U)xJPd Jx g>?R^BX7:['1yn0ry0ƃq>cY:v^[G9+ $`yyX~wm ncpx!9:2B!x)JʄXd 1XkC?$HM΀[렾2^.PWv/d,Y ʳߴC0c0r rsMy|<6BB(< &`Ν$o3ƹJ'kW&4^WfMܮ.ƪbS]wk JEH #0!?GPQ WB}I~UC*RM G`066A#P 2Ruhm -ͷ~cܿU oVCˍJxxZoVݛp=ȇ7O!!6ͫPUwWͪXs^2CH<߬׫ˠbx5+s#VX,g#'+s½Fhz[4BGmTw•P1TwwyX-^^_@ x]mI+<|v:<𜨣m#Oöi T[r4+Gh慅$EC&x { o{{^ט.xoz^Wv?#|ݟ^1]&:.:TG|V;O`qpqqш?ۄ܌t XL&0 sp FO  27^X'rN; 8? n7\GF.;QK5/;#Zuyyx2;ѺD>D7B}@tC*1?%GBrd0hVh(Xـ7ݩv~hnh*#.Yk FE8ta^B)ė o׾@zS8+Hct5&ǚ\|f ŒV}~'a!#A8߉0W|a&B؟ɯO~0}rϯد}-X~-_wZJ|2 mG$= $FSM僟a|!G=!&{ڣ9HPm2QC {4V ~w8 ߨQ]д=h ᰖ{X,51O8"%ybOZhi8,8|!Q}XwRˌsAIƿ Eɛy%ɲܒYnQ< ^{N^QMH }P?4 GOiግo;674%$*g-`9avS 0XpFU}r-,M},'3ZY3v@S6oB3 sYD^%yY"g-aU,bW-dub&~\̼_yh9*Gd\zpyv\PZ.N'ZD&99I{!+f'dGr/TdP8shx&ǒ;%39OM|7Sz2{(qpzp$+[ᢖF_b|$;AV%; SuӠ*fg(mJ괎* 9T>[ZX5-!`x1P=Urnk)1]uȐ/UnMPTt>=PhC{2z5,(omn@TqY>M! 3ݨ~wl[Z^^89.",!j FdSKiр~`.@^D>_I&]y;H) zRѨ[x22t?j]"En.Zp0=Z,+m%b>.@VI{S{RtT->&ƞbIó#0{ͦCމЩ6 |\mHf,$AES5˺;lb?q{`#e+-dr *{%J&^P,(&wL7+]PVVC#띙VVV@w$:[َ6u>6}ӣ T-ShFg8XIjXki%YzI1&)\AGG'3-:4[cTبJMh~:qX4Cf}xC]lbc]ʛJ?-zUvI?3U~eo"Ď poiDH <ϊ$>+zC;*uy ;.Ȗ^;#VXl8p6c[nԲ7ϚdqovmyiEGG1 Fz2jokuL[7m|aеi_&9-ﰿdUM"BN#t 7{r;d^o{tU_1!@3-`KQTizr=𝆹𝅥𝅮:E^ru!'Lb8h0@'c>g.yd!4QS44F{=FGlUāϊp6}OscسņU0ufŒ0=xG&z܆rz,ܺa $u%K#ݻw  I`-C,Mst0N=Yl6X%@YKuGA83ϊ Oĵڽ(` It‚J=!tGnafa۰:(،ᵃ|~ rrIe([-y0ת3aI|l$0|h 7}BJ %p3-WA]:oy1Nϛ4cKUp,| G )2wK50r-6EHHt$*|"\PU uYp˲!v ! ^!!.y7$' rNBH-8wd&5 a666p  ]{ ԖCs]96_} ك r߃ܖp._-Epʯ\UPs~yke %9?7 =lh{ m-v_tg!x MwoB˝xHoS46j ==4Y/~Sb(&>} ^ꂞz]ϟ@> >]U@wd& l=5,"ɎA3Sz]5l`X|1\,؃@2~L"qZ<6suNNĠ@}= H8\s4\p6;OpxiiiFۗbng͖-[]\\r}=y4v+݅z.W[#OnsB4RD=Mx7z#wĜ$L-BF>1kN"-.m)j' |,!>S(As 4=?Ș"Wfh aȄi&k]=,}͂Sbvlܝ;D|#(L7:Sq:_lXIɾ2vyU8h|^nrlE$O/p=7p'@lGj&?Txcg!Dt);6/(`NMԏL+/ Ȥa'^;){p|}\qodBQr,ݡCUbԴKN8 `!3l-9?hoHw愔Pˀq^-ܤv{!_:]-ఇK9="H 8 O' u֫m}>k.0OOev eX%yZ4Vt] Mn@}%TuRކk5ARC5ė߆*p3gϝ;W}oE%F5vnzΧO$_>P`{>5WN|]x?=\( %%% yt\ N+qX,/Dgv'>FPK{n~1O ݖ!:jclic_aqua.icow\G4j5vP),4Eޑ.RH/",,"UHEcD%zby,{E9=);Yr\s͊4[xBH !lufkBt2*2 8I~&ˣoTU,e4{$Jb;ypϖ\|Y8]-EkGJ˖ 5IQ#% #ipZe"Z|uL=}'-_d$IMđ} ]-1!NFjB >cgLZJKˑ΃2pYL\61I{4}(Z$#`X#6o&M #avbeP2 aIO0yI2.߼ElY)j9ځeqϪ ")/Ds%ŐeHM%51OgRP jr͡hA-KDjp&TfhAyg{- %FiJ . )iYV "D~,D&%HiRMFE.+rK8Mpنesxլ8A_ȫ`V0grT8WЖ֊춊e3Rck8{y? !<kZϪ ~h9;{p4k?_Z ƽ{r_qo˭YFd=U:I|e a3xExd[p;Z+pګF~.9~pNNf^z!5xZ&u ѷff)!0w\ qp=Jcbp56UQLQz(:P-q,ọ@Q`/Nw,w6y*ё$Jʳ3UFG5:kǚ6#-8*r=*ۀhV)Λl(ić .0wLm?g" W TglglJ`G.HmBSϩY$ZZK 2 /sd'yId2#KŇo7-j^N\8Df"{7]\4x#L79 *`pomn%l٬,2LMM~JGYGҥΗ.EYT{_]@+jbM7X!"c}_nz`8Un@;?$5~5N7$k @8ɻ i[V_lj;:VXb`u>CD񾂔/㷾J zۃ2 a ׯBk7Bx搨޽|^N&죇CN~Bc@I7'J5JaG C~d@Xr]_Г7!H/̃2 p1k3㟱Vf}""ݜlf+s/ą@5/{0]nWu1?(K zVQG-P_?O };w4I*ԌT|ŊyH2ㆺmʿI-MZLy3qG-wG;`n0τ2畫ͲAT_wQ{ rf8胿)HJJzuk¼/9vzA17QuhkQ2Ot={ߡNz ʢ^S=nWg`×.hv10=5 =ymhHȱ,HK t6تmt[םK}я)"ĕ6inP6Jg~R?'`6ж逩1Y;7$ceBj|9CZeR/x|wC "nu{F) /wVuVє\ㅷk?{;-n&6sXP ̌Y4gR.bӰPGŇvO&m+~ܚ & hl~1]mXO1ȽQkm͊[u^h}Y]XtHNKmboxg"oNkqʨ'<[1yOL9H]{=c)t\47 bGP"'triJk^jms2U Ql+up4ӹ??##㞠 ~f>}׽PZkaMOՏ+Isk/)lYxe3tO}4hg!#9AyٕotT T|,T96R|T޸/X22^?4Wu6?|G lxibH{]ܸi?%4=m$?F\ZDOjsTt!/C!waV?jM%![D` 4e f:Wƭ??::` Qnj ![fg(7DHGdsq WӼEB8Cw 1J9RUIGHX6U^c!6Q?S5Q/sU079 7ΐ4WupT9\:ӔC2h!(,5a6`4 ^Ä+.[7pr߼ ϡ *BPu*.3 gspp n7 'p.V}q2N5AiNvXPӗ|Oc#-eoRH *C#rRc ;% #!Vj H6BZv ݅F?f*((ܳ'Γܐ'ѻ;!126Ň :ķ?*4jL]8+,c"k&ǚ^B ;iͣBFZGd%8n!+± 1BcX / xʇ?q8V|1־߶{?g#a;e$'RLYTP4M Y44%Ͷ7DZhhT03~ipZȏ냦;Zhs4f9 L~za +)3_qFGi;h8-΃8}5ٟTst+ڒoZV2 ohs2Qc)k%{Ո}&F⼸ѱ" 85ZKV+`<:` И+G*Xk.^m.)4,*\9'ũ^-OWjLy+p_Am)!P)˕Ss@#ZJ%xmgJֱqYKeqfs*9S}H|]L4iPIeIKdtMqfQ)O*Q6/لhsm`Y;p{Bȑ4(e-]ʹ8[ߋ=S(oS# ӹ .l?O h;~.~dISSŐn-_4ٍ_gń?i&Ctv)cѻUvR|\XXq:9a5$|׍&I2%&% ~S_O"Pꖲ}{d^$R{Cш'4z{ٌP9kY+_{Ov`{ɝ`A eLܳn?g6j){[#B}]j ZNny90NKx:{C6JШ3ɉHJmf0{沶G34ʧ-&0_7;_=)}T3u6}011{wM4Wkp1sѕZ|+X^cXeEhO55EF;-\omE6(s%‰"3D5^׫ab#b~kdG <|U$S?~%P cBHejZjY=?!\`&g{(:ƙ'b5K?r;>щFqo?=iZwz[(p@P;+ ?47[p1izHX $_#P7!yzZp/#c90us NlJUo=Y?xy;pՖ7MI@{b~8߂Yp[L03Ώ\˺{;&Lo2Gk$͝|-+QK,zKwV' ,U$^[-)c(Xcao+lS P.l !\^P*!(%#00<|Z l6K"ؚ l2JBf D@(?UD3̛`^$vDpMӚ:)!ON'Ƅ@IAv/0c}UxZj /bcb.MIƚ 8\Ȅ4u0O CMtω*He$g˲\:Q АG'm̊2r2{kcbS({SgN5ٓGd]dmW.$g~ Օg,?^a~Q8Nj8U\ThB܎|(+~ۃڽJpa)[Tr8Y٨@Z00:-LZjUօHx璚zӭc }[{wg: riy9i1<3/5;Lth/E'5WZ__{3 "MyM +8D:KB(éXP[lD[[6/ ?r"ftw0/иM)`dddhh薝=la;N&&tO2KLHOHK-j)c[in?++c8,6 טkC2`M N Y VtU7`Wz?{t=S%p)#2wF%Hτȸx92b</8R]nrɽ'.`v\f?\'kKd!8A^l2&p2KϋmO\ 7y%^{&wjWj6%xmfG%Se5kZ#Mে'{ @O;O ?#;W~CO5ȣUM`"1F,$}ȑ#Wh~R@n x_7?\s,kl؇f]TNo{~|O 8 d'w&u;aϞ=w^ݽwm}Ƙ.py~qx4 wYgl`7u#o|3gKV|y`L7WTo t2|'g~/?~ޅYg"ЮN0bݝ]"\_~dO~ktfu[7:I;?pm  fS)T7فh(O_|N˿Lj[l ??/>{YZ]gR_i{sם`,@~^!KׯXR,M$C1{ GA'fnVci ~X%)Χ82I;?՗a}}z.M >я~UƤثH{ қ_o>7WVۈw%6\"H]Z<5[7 g .^Y\Bb?ӧO M޻ʺf\Ls'sė;0׍Sz%J㝴16!Krsi4&Fljzhe)mJl,W\]1FcUje _#0I'^"^:c-&/791TU3qMb!ozW3rgKvcu"m2/'Z$Ç?/^JOe>MKYםMG|{)#Gɧo\ .x\dzl̊J' =vbUݵnW3Q/^ӘݥŰyjBQhs? /63bqq6mj#m`H๿ w]F +|<\:˫꾻/ܻjz5[>ҬŚ^1HNB"ќ4(vѢ#Z$H P5` !`E{ۿ&Rss gZ]. w2r{J=Ҋ;4t,J-o^TQSs nȋ^IEtPֻ붹Z[yG'U|Kgfl8;M{ecvv66tѥE,Xt5Hq!tHLz&$ D3b f1F'K|^i23\w6NM]\-|\6~5}`=MU'ϧ!v EhUD̄(BD!iApM/qkAR1hEJ/}1mF&=맯>ц q>K-Kgu>MO674L4JTũXK (NDG/( ѢJ'E˲@я /\׏/8?Mj7Χ$q0,Ld\$3U!(fT0  `@lܩT9^fCfFx.Q?v!8 @&'SQM# '3ڦdZ5|Ny% \o \(I xgW!f$4$$y/*qGMRBARDs.J0S'1ќSq"N;D=wd^q^!q\bf0`\^KQBSDm;EKYmL(ט^TAհ bPeZCR|I8RHOD\ۢ^Ϸ٤)YiDVTTQ \L2$6>VCyo+'FIN4OŷeR.fY.!-4Qn/>k$JbZZqJ$iƗO8qb@fX9 _O"{<MgibS蜻 i]*Jt朶4*❲q׀Q*g}PeEB_He%^^M3S|!"j+h83yUgu )@ A鯮ѣ*^˼S9 gB6 P[[K$o/E\y5TbJ6nuu]2Á.ǼOџź^AO '`c+P4:& xtvcҼz@}df_oMQLLj[gթM3g_CiAnjڪ4k ǯٕW)npziF{K* ~>j"hbQYgpn*c9u@b 񛿵] q!xq?˙9ހ.6ZX4ͅ4C |mU y4C DLʉxt}d#fuETJM-N8OQO\঺ЭQ=_}СŠHk"AD0AD$MoڟAsp303 Ez}$ q$M,IRK9RR PqnK}|fr/ `@iInG }{Ů#!DE'h Y\^ YaZL4L#7¼KMY$K@^O$oj7sx?^9/?Q?>o/||3-@⹅V"lq!"SSuY[]AĜ.M&eI:ސ\dj1'kW=iԯR7{;@Y6 { #QC<6 iDmkiЪFj\YV%17HFk$[_bDu={,3n2gn_4`@jV^:-g vОd:go&& o/,ps{P0g;w^ر;yo8 шS=Lb[գեKחV/D"]t86v-7܈RBNo y8Y 0#HjY$D1ֆMuB\[&e7-3RI&h'DaW@ v=ơO{4VXN 4BiC#%L1=ɘQ͝;x;@©S쾔yV@GcKuZr'h.s]\IENDB`PK ς~1SRjclic_aqua.pngPNG  IHDR00WHIDATx՚Y]u>ӝnII$%jn'p? AF@!h-ǝİaw rlE+"$RSS,\ugܫ-(SK/kswo2 (rtwHl}h04/?\!{,Nt6 (z'? :Y /h4ZMU8? `EV%> 9Yf`F|nmv9F_W:RwNWR屧NO?s/Ј._W\l4a>?NްJ_e}C {W2AayuƷxn7/ٗmqU◾q/>|xTUN镲?<$ sy$[|xEN?/|ObSGgVEYT,><$"«5(#*t`xEz_A _pqzA^TdEEf P}( G1e% ZĘ!WgHա SUsf7` y&gz(,\'i hOصGM XZn%yUQy^P#Kb(>=YV2becn>:774x_:(S 66ܓPZa'\k++-W5kjX HQ2R/Q_`bzzs7ˣ0 A\֡B/P_=S^&⯸tA8w6`]˄zƢq".AU:/+ mr}|;se(] wyo )~FgCZf\'Ba~^X]h/;̚HY].ں &l$ƅ8ރzf+bȥW|ӟ>&ou 2K'BQYMJyPVW`c^1U=T]Y!+U9vR%\LXI2qHQA.J&>~ᇿ(t{$M Y&:j:wUU~6Ξ geZ )LXh)+ /qcYY6:g4{y>SVղTuh6 ~Dx*.(ˋ/[,LaԾ뢲 r+%-OR¨&bAM0ywzEfѣGK)RUtKM0ϐԯyweXXIoo_M~;UA*yaۨ+ΉXx7 EEQQe𾬌jߞ<{(?wjN`b`jƛwbg "f_@_zHpJ%-+`Q6 16 qYQkWĀs Wx|rW Z &h76<>z`X^-/M0>+s_,6Fo _[(ABFZU1F1g>KA V"F %Ip~ЎCphaYO̯\{Yi8a-RbèRZ? k@(; 5ƩZOzCLݞ\iQOomsr=Ϥ 6N*gxc^1yF~3(638g`8RMR66b{Mw` [+i6zjuHbQ@(baRvG}59a[[nМ¾Vt4YmV[o IMP+F`N=ΰe:;;{&M0taN'bSjݦ?(ˁBN[W+%cƌ2hgBnTbPL;N:3( Ç!/̝0 X(CC='n},7lߝu3xv.FRF60F@+h9 C?Cazb8V>Llھ8[gXG0>i5a޴5㍱ pqCHd~ꩧ-qDDAd5V]`V,><xJ{;1i9.ĉ-"օb`ǟՎ2\$ IZ-( c͟-zbW Tݬiqca נּ1IH.2Z^ X?4J='9c") !\Wc?,vWQ=> BߕemQjc|F?0|.ۛ-HhӜ8Db%,y.~i\"JcEAmy߉X"**J2czmNa-u8!4ƻ$lS2qoӌemHg{5dbZpaxׯ}ƛ*auEϢa7WTyl-Rŗk0.D ZBgY_$iόэ/??/N1X_ኖBP*tN~2lԣ}{9cRėb =+ufchGӸz nhPkD1s!D@޶I]:Z@fꛉ+!Dz0gW>S,w:[fffƒV[JlUb+'Pqƨ3'Y"{0QJ$6gƪO|'.U=B{23p$fw~pדZRqji,XG-:A1U)0U.aUJ"_`[ |G<=M\BRTn 5 6wc>,7 wsÁS!)*T UVHhI͕ͥK*?/⣋ mNz wcc⪅\ؽ;]o;xA%0AU]fݭ*l-Ο?_u:(%D%Y&[l^o"&&bjP"tPich 4061}r(T}6鐗kn_f}}G5opŐIhh uMH@1vZeF!BӣuJpd_αcn^;Ƒ#EͭNTOE$s 畭}Aαc%*73IENDB`PK ~1-aainstall_aqua.pngPNG  IHDR00W(IDATxݙk]Wuk}9O;886@Qx6"PTUUjORUK!B- ("7P qpG&όg뜳^ı-ݫ}=gk׃7 5ݣ@{лs ^{cя/>C (!y яۻwI*wqǟ7@<2qb-4AvGÒ00*yjA~qM?)VƉXf| jqL9_9!8Rrt5@uoqۮf244믹 ;%gE _q>r$=6EV?UTuZǻox'V\EЮx*gY>ڛX* .I~KY]b u>r5Ć^C"(} f3 D8#xh B!)èp`]:/ą/}\xuBTB69Y"/"`{3+5193tOPU[Y}.ٟ>+f3|w[|ݵBA(\@<02j6A։TP1 ꁀڥBwPHE၇~m~&s:@`;tRbH2#VOcbkSȁv X#t: "4)ڭdy l#G c@lμ@׬T@}״Bwèҽ>o5'\Xs@oee7<lvz,,6=: g5.:+"f%5I$ {<6 H?'=3'^`>~J@cvNhgAZsb~eDIYL11@LB8 0"BPqP/zS{A ݲe;`aG+rGHӰ=_כM5d14NalWx%K&&cKIJx=,C;,Q򱉉>|}z뭷vq(`{[;9_"L[+_<>wC\GTP2Q0\xq Dd*+w^{Ç>@~mYQKfcpqǁz.rˤi)1 'I*"@O-40;=mS ,@z 7lKEC2q @ J94\73ǀM-]Y޼Ih,"2R ru\ә3e€X Ĕ7ڵk۳>; 믿ydEqF ݗv|&cS4=i@W--hi䘍z/FM;l!&b1"^DNc+<R?*n{A>^ 9Q~p`ʬذDD{0A xŪpm\˶PV@EXCCZ5J(g*eA!@""TWo a:W^> v]R,"C#U@LB 3aBsRB@AP @7NV 'j6ʓ tvUTNA1 -`6ZR&"e p2„r%* 83*Da@, &[|vJ +UW94bxnj^] ټR@/z%NlF5$Pq0޳vl 06.p.d-ITI@ę&"뜵i}5<2^5ҊQ9Y߆F.JPDqbXG&8Z` $ d-[x0QI/h*jjyJEl\R&OzxQ:k Gkb"-N\NTB).*HB*jPf583"J .CReV'MLڰU-(wEǘzB ӸҤed< P8PU!UeV]^ '8l2albV"cZ)W F~hA-C(8 |0YG `LRXPWϩ$ 0}uUk6 cPhRP#T+اYث鐺s\kΒz(@XŹԞq(A4Њ]'D`2)IȦ!YtlfffrE&20I ؔRP2`|WVlb㒁䝿|(}jR`M[*3[f'X5 Q5́E ;Xy'xn|Ǔ(BİQA "*Kee\>)%V;oaǰqB/oIJNLw6a )0I ^ɰ0 j<^}ՃLGqM#$eR#I$B\BblZ56D~.,og{^)w̍AFHʬ6EȵgHoyfSSYh^Wj*U2k5 qdH}:/㡁ꥭW^awaqUtxiX"v 6ѢxG{1Yc/fo7i$ R$EHR80 l`=DgSXNcy4WVqmhy5פ611y0Qֱzvzgp L<w$萡 m D15;%PYM0:09񏿅Uix&^| Q(VPrF+VjR҄YdiKh]P)9T>ԑW\qx`pb4xBtxBP<AYʪ 뾷}Lk[1(Alƪ"K\n7̠xӯ7 l$v/ k5A6<#C kW#;v`_()2e`|HqS6jjA8~GnԩYt}7EGWZS['֯6T(O 2EEN(`Llց3,u(dm*uZ\4Z.KWy=pe~hWxkd Jvid|rk\j*, ^e d$xC*)`:ܱɽOǏPIűl?x9o*%cÆyTCc0v- u޵jĖت2 0tg VX" >y|kcOh(?G').&nh00jVxexp;vn_9<220i^:ƒh.οpjzi !Bf1-[J=NQahkj*9R*D"B;,2&/,a`+X|ƍóϾe%}_SצOIENDB`PK ~1jRRauthor_aqua.pngPNG  IHDR00WIDATxieuᆳWe992#RX,j !Dr+`8R@bFXAÈ$ ȋٖHjDI6əjD6o3={.Uu὞}hҷo~WuNթS-&J;z. @ GHl{YF?XTuEo H;HDWLP?ݧ~_ۂy°wS#Z EY3jڝn!jD=`EVH%Վvf?z@p~l`Fۏ7nd pzn7}Wfػa$V{Ox;~ݓܳe wnބ#0@>Ez.U8x0,ro|+_yc {~jݽ.6nU%HfuBDQ]ը fUtEP;u?c9p_◀eqE7X?/?|7sA Q 4YGSB9הcur4bv*S4}KN *~_/ۤFJ+`&:i6kRkGQeF]gDF``SV3׿E0_Oq%>y0==ɮW~ϻn9={pn"}Cܻ/5tڵ,, zeM H#UP:P@p2@)iA0~Uuǖ9~,("eYSϰ&X/e1( 20=vwΉMr4>ԅSklOsD`v,MͰi򠢬$??wR`]w+AA_WPFcAXD#D|iu$.|ܳCVfFn0 ܿ>Wz eY~p+ |~ykAY&{XVh d|O6/|}Ta-}_#)@or1kNpLso_OHWٶmǫS5fnvOs&X4$R4Xڙ\>;=` LmqAY8PVS]idc!H"ǁL*@ tS5=UGNLlV5$ 3u8x.KAUW_0XIuwJ:c1%.ɉ <t Oc۶mLWՀ>DbVnzj)Ī:ޞG:%I|H\29Se]Jb>~fYm2bQ iLoٲeݻO}p|S8J zu*-DffFe=wsO;Og*L{fuk)A#JX>70}U@5ѠHԥkE%Y{{ Y6:uG|C$* }0@Z[H,Taԑse}d]/X7Ս,u؛oǮ 0YAv5-c J&P*Q:8p5nOOU 1PUE48l#hjːB>{NJj|o\oؿV~W!% 7́E4hHLlZh$@4HP 1ƠX ֊M;H\͆F(<i JC,JuH׾_ {^- P F u_TD Fb FŃ aF8uTh '˼fY ֲ2UkV+))]jg^;k|ӣuc4(υ1"(VԈDgHTDdu( X#aD$&, Vun'e%eF'Y%g7>qPGxjGMrd⭯"h$+"("UD0f5¬(ˢ4;9`EP(b4Qۑ86nxZumӲٖ:mP+(kwM^퇧g󏜺/$1uU#&@V ր졍݉w9+8k0Vj 1V[b{̆DZMەٖ:ko׷[-$eYQ{ݏīnH/'Z9 oR &(.bŊJjpk!FKKǝ38g`E\ķ;6vSj6q[vW[y2G\Om?[2>I+&Ԅ4Әhn(q_ fPرc59a&&4r['UUy'F o>x'7{/axDԆLdb2'o2j4VKMHSxcQ#F`;a e133( i4!I N5Lh6Mjwy4^wO>vk.v[`҆`b4D11&&IJH U@LXػww`(壇߫4MH$&$[m4MhzH>2<.r}Hʟ-i\Ws*tNߢmjCj0 `8$BX9A\۷oŦFF&)j+6UNcDbBQػ?&򝞋}w i`a8*p䯂DcLZ5aBlb8xpH@,K6ړ7j% $Aho%./ZUAb@M,Kv޽s={ꩧ˳v16S &I#`Dq"&p#3i`S_ ??~~v6z0_)d)$qJ̪;pll|ak3;2XFZI;#MsQ1"1!h^Y#)Jfm??8.`vuqVO sY&'?hXdq ]~͝ɫECT*GZ \1T)|u,®'U˘/k31zn-d|Y c"zp"Fwbz!z[Rz їgE7Ы%$0 Tb0 >9|hג#9VV@=*wsj%طNb6f^b.ddln<֧wXM[=f̮AFG Mbb<9+L^(J+O[GϏglc%A7WK"74ɷΚHsC\KKi/f KyrE"ZA+X/eTa?g^yq󶎟~j~Ks/j^ ^cZ%ȸ}f&OV*BˋYEO H/ÌQR4G}`n''|5P)ןybg\Tφ~ qS|/fφ+y|sn!u簪NeLȊ,%EyobmgyjzisC3Xh'c&qJSjr3~)]bt6,`Jpv2NN\2N Aa̴L#d7TMe, A.O}PRJ'ɏr;?|6LI 'NU"(Iz1IAqTо@w+9\}2PpTY0"SifABn)8b8*>"KwVe'YrCpˊ̣^i@i;)h#/4 1-.q-h3@؁r+`2Qf}rDVcO n n9< Fd˘#$6+3rRbX:+3\v6ePI痄{n 0oN&3`m+Ռ?^Wi'0e'<H4L:谇eΦ0Qht177/JԸ YhɉSo1q@}/ {<чbQe z؊R%]w~9HQRazUn(w PIN>y<%} ̇ (]W#ן:ꅾ`|Rk&ZZtES U^qBaf{;1QΘt+׬YR ) 1Tbp1㹹?'t]oegD{^\Y>qCgWjj ?SV8nc2aLr<`ժU.(wmʀ1avXc ?CS6~(_Y}O]^Alc2~4Ο +fӘ9_=5yC\/EwseXn *٘(w~RײS /k5֒b\ŻB^~{D߬A=y]ƟM@h4m ^m+rwzzXj:0Qd_fC <̕C`_XNH\a}*ϘI0M- d ?ߠ4d?;tdyobFRHf{5_bΣIO s67S%&UY׌>E1mOrceLr_zC/aỹF-]d2|y>iҚj [;4?y yfzɃ._ <D-MsOi\KUpݷ|eo{niu+z[k}F^|Q&XQc{e'?WΤ$KetRJʈ(hHqDm$0N{eH&Ca<#B\YN#*b,T73P~J+}=BVd_=+ ^i?)~96u ~FI 0ܼi'e9ZrT=4_],_'Nz`0x;>p7!rc-@kILimmw ;d8-s,L”/M:sNC \9M2b4v$aw_}xHpܻt4Տqb'9>؃F]X֯g_bPnIGK㭙 ֲWW.-O=NWxe-xK`k@ګe"vԔO#@ђ'=@"tѸg''@w XA|6ly$'@bğ\TG'{N_j{AcBD۱9- 6P(gۑU9~z` pRmSlCwE~~~Ӹs(؋ wX?(˂=ڸ ]cpsN>> A=qa2"zN$F|L ;G6l? _- =Ǟ agpT Վ\o߿→Wޚ}"s(%!8ǂCЃНQh[fݪ8n?C_cN F jcHx Hq`4) -_|+,$hs,> `tXOX߻񡌢hqs gs6 `}L [0) ~ !%2| /[5bs^.W9IqcK)Si쫧R9R8W 8TRA *HH08"OS 17cx?lPu5pUwa cvAX y"^J,΀Yp\.ܪȃUp:nW׹p6 Ʉ+bq Ta@ea2T@Eq:{d; ymLpQ0...xZ$߿sJ߄א! ; ܅曐tԜPWY %p)]#R͵Sp)L1ܪ.B(k "p&\LTҌ9Ă?'''UgÓGioSAiS(m}…:v"ܺVwa7aC5 =cx׍\~zhO5½Zr5GKu{D⤤ğ2­zxm_BgS  EG_޶>p m'ij}L҂G /3 <ϟS/|CO7tA_/q| >w\|n'z txAR[>Dޜ3᷷JNLhhw :04.Q }81<4M.@|ฎY+BD<}>аϱ &&#8ƕjx v W+OC{!x;Zvz{zD~7*45*]4ߓ= ף5@iq{@~mcXlf,1wެѲμQiqJ(7?BSyh8AiNݣߎ8JBIt6Nc??f1 h1e~5mCh*ip͂klnqI}%Dw)%>撕 E@ɑUR)>.p$74݅(!)Wu.z&3ɽƐdy~19r. –Z9dy$߅yyI ừAYnPFfzi 7OgCqe8s9oJfӏ˙f?+3+%5ykgE ۙ*C:7B:ۊ-0\BMsp:Sfpe)f> |Sfb! \2sik?H0 ݺ pj,6mBsRNe%t;!˼ `w⡓M\::n,`]Hwv RΊ#hɇdQ:݊r~f!Ō]ɦp*Y}QEyK-GsNofsUsr"fY -'zHRІ(9z7Sf~/xyb9qm 0*fZgt4vR`E:̰<L>H?6jto H$C쇇ڀeK'V|yqy+i|o[m?$EX&ѳQ򈧽1l޼σyIӣ˒V>XIY6_I3Q?q0Ӗۑi#Ti\mjlxbޅ= 7+]pB)+lcgme3O'b9ș_L)OQO=9n-b-NR@VUfؘ͈ _7p2+#䍽[ޞLz~>k]t,zPh? rH / `LԿ4FoY#Jkؘ~h`ϐXwտ)#5 <P̕iZ>SIW;_;=w}IW4+ؤh*s-#{cWKtV葟O?M'jXnd;YK=E_+˰בgYo{Y*I{R wfh*]”,`bų׎JKtz)rCm)>l:q{CPiBC,Altm@ʤ3zE@Ay/9>~2m '-jʀp$柮* vt$L؏{x s h>K,?/J22fۖN7m4 xz fyfD2Hk%TmثnBC4>?pPm`* saP3VX=Ucg PN>kT'ʯ^nG^.-j =A$@C6VβVqP`u .##c|4| ԁvvndG _:uńt$Dž'ńtEdJ6t TR >u00Cb`M-_P ߮}hb({\#!L>1p23KIF@@J>C+ 4OF#0/Hv`.XK),|#1Pw 3\ p3t'[Kd3~Hb^*Jbeq\ nKa87Y9G!+8}߳gX_$_+!U~Q 8L\~QO .qoW|Y pq.Nʢ8fz5l2ȎkWP; އ[Pt.UAp9xt49hvՖ3x.bm&V8Uu޽Ϡ}%~#>h$q<#^=lWDw5x ;qh3?pXxJHP ]-tw/yh:^BYA:SEc|tRyoO XW ?rcjtmE'G2Bqq>?Y=B:}{DZdSY/KN/yauT mwv$ѮtNqjOn7i:~V+R_ʲ4/[h Y\~B;mٔgY7N5.)[0bϥ ,<)ڟC x(7^Oqp&̩/Y?Fe0O[9kY:ltcO5N嬲qSm?i4s&ZPP!= |OsΠGz `)?9i/U_^^F?ۣ0/$; sA\K raA"9V*/;S7 o7i~B|#a#JwښQE_N`{9T~9OO gDܶ飩Ұc"gCN)G<9F7z^*5aV$CFbݐ0hߛ47?}0$rbي.a^1N6T&j&[#/ ZיuV^(3iK|6}#YGB'.Sja_rx9 HIIw5<,/lǐB2)*狡*@R8ԕ#Y&}s%jGx /}xp&9;6ߞO⹸.VUߜEtw3Wgb@fnf $%h 3PՍAuAH]oQ`!2._.>4?u)7#7+| _|!_0ϯ0䫷P4&~|GYgշ_a_2:^pk9M8LEEUd:g 9\ K? z*g@鐦(3QP@GS#`$(++$e@Hf2LR#JԷ3=gґC d74[OgvQ}O /(Hʀ⠂Z(Hʌ+C&oB CZ2K2lҚY p`HtiH F*@N8|%BI4li0!: N%r+p%VE3 ޜ4}=+xc>7+3IH6JLާ&<o?ɫLTҪfTZ]SםEfBBPb) $@:Fe&';7 uAuguGZuz};AzD3V!hUX_cѷV CK\_p/aj l:]g):`FT)!RT)v"v{GIїW;kd}I9zn\.!h ]2qnJ٧jߏˑ99xr$@ nyWBK.#\l`]E.S0=E.)v#KP9˃KzU\kQ)>M`mWcEY)W,ӬcwP)Iӫ`7;`.eS0c SP~LkV!_@0.PU{A ˰F(k H .Ft!z6/9]4SH+;}iM}t#N$;CSN}4JzLIIkv-<~ thTb_uaaTI<Y 9F,9c74D1e0ݾv[>Kxj< }em C%'yu1,t x 0 k!k=ncM5`#/ /܇1pݑ1|;kғz b۝bv/ XOo0zuhVA< cu>v-_RneL-߮M91+-wUb?csO4>u/} 1̰*lw?&Ș:색b cy&Zs}؎lK|2Va.3N3y6,<7~d0B~9_/=Y| }~Ÿq-[v!nZ:ǔ^y,N⧹Cu+lY|/nyr3 reW8tm 瀯nbNZ_i2<<NhH߾o_$!{#FNYK˞_#'!#wÒ`CKB8r6r;,=Us|~)`-E3CNv_A>| 6x?s߀Mo2p[|== JoYm9MÚF 62"f-'7=3.FcRgpC>e|2 ݂tXVyq !Nϱ8?bbf-1xs>Eg:^|.1p8k[:dd)Nn=϶3Xm'Ȟa̯`:? ܟ V|??lȞp-p-t6_ {>rMx Zq~nȞn}|M iblڐ]sZsU]8ހu#] !]+co3@EwGȞ_)bx8(%׶(~?|Y4vZ=&dzXp{qq-t csc Ӹ;s /dYXWװ&=?wgȞѸo {m ѿim]2,ͣ~r9[d{Gjœ*ަG9gº~\Vs(m(wP{MkMX}bqn5Q| 9ݬ {򑇐-}L#&r" ~@N ;!CסM;UfBz ~+)~JpyFHd}o!w9VRNhȮogw;xާE[ 3cm7G"w^iLkvp˽[Q mW{ 6|eY(YWtZ^u-}zϾK1ž( ~Vn-~ȅ FP -퇸ͼ͝rwLI܇D[%1CtirrLX?ó})?W2/ï#'!3䞈3ބT_7[vk-3w3_pm{\܏4߁om{Ñ3ۡ|>_1\]Δߛ}r3dm)gd3#flNd%?wrBgH 8W{ T~?oNӹV,x?qZ^V˱[2 n3Nw|S |ޑDo61~f?KEItFV˦3oov?3UѼGy| ۾(^Wݽېʼ|}-7O"D *gS`9"Jd^_lfzg(0 0~cb֓K-j=tۓ:o^G$~cVP}eƲmI5ήU7G/k=ɪs' u}#KѱԼQ7S~.㴳/v.~`]iL圄P}VVP;c!PK}16ma[ ~b reports.ico\kl><$j+FŭTUrHuPM+UQTU"^mxE!J/ulC@`6cylo0cHM`sٝ>lL3={ Bjp 0= RRD)uÇ8|(dv0 $E$ud(@cscm#nuz6ZOZ^s/Vwu #k ii~Hf%{w"Q"0;r N%:Ș .\:Qǫ6֯]{Gbnoc{\IN%N5[)jnouf`@H{9g "Á@?=;h1< p )^rb rcKǶw!]:[=s+u{@VTϛS]p.y,|)|}ɷyX9M>-:2*_KM~q vڷ+$?M22Ci:%N:T\އ-0R8. eiQ \pc x7Fi'% ЈH'yP`J'҉79Dcw(8[p{{8ad !7 _ADPVfm nX HP6)dr/[m+lwa;V08U3xl;ʠrq'ֱ>>l6+gpSN0>o~`J>vTr(wNmq8׊^>a;b0c5U|E,lp`]a_+rLX:Y)5i9#_sm<f/bgp2)%-|_T1>*xю4'ނcU5g"J{DD;'+8@hyEֈ>z8M_-X!69>vE19`#=yr/32kMI/ٝ*w':yGZp-ugˌ <9qm=Kٟ<^cpOMh#>)l}鑡ăx2|Gɶ([|%v\h/v4oW,5T+N`=5|] (r}`[ yy\i{X+׭WО݅\E~ii>"Fr\K ֔ԟOИB":rȨ?3(rnG^c",AF94tE ^3q0t.k0P)cɺJPBv 8q' SfeNkzeG#MY+i8nMpb!3䓎,4i~(g׺& Tߒ{燂>DuhObYK ?ҿ"gO{Z=>^]>8b<h]:3- Z~C Ή3}OuMZ^%Mp4/}wy3/jo?6}|W\f:z@Ng\s}ٙxE8OkrS6^pV;Nou]_G F8-ym°_Zx4"[ܨQ4 \̙z/8ΒdYPC:pzΞ`-<*7[3;w?7  X >HgP2rwK0v(ȮsLقkv^-w{Nр+P1;!^n|'I?&T6pf-Vc"2!zzm< -o_I]V[F~7:.?\R}N˓OsY5b.OqSNoXM4?g̖Z^_VåFB(?PKR}1DTZ~b author.ico\ p>ɟPYDBNS3e&`ۙtF:]ZQD7kBB E*YA1$XH98ssϹ??1Qn  )IhA]bH8+{J;; /ң'1WI0*14a/Srt AHn0i3P(d+ՒMb@ lPKJ@/ zaP"Vd^e@h>g* tz@G[i^/akrZx+=P+WN!`c#L_ǯKvFz45cqR*zަ'QzI:25㍴ɠ! 7qz^E6+E't+ңz!酾\6C.[ K! qYI\zEyX-d> {l"[HOT"{Of(򐐩= ]ݩB jgg>`Bζg$P|t@VxZҤ P"Vn&@2׋4 VJs*4i1UZٝO+s4uMNy~Vŧ%MRTNSY%A:E3U hy$ C\bTJWb}$MX$'ed7gЦDyӀ<8q7NX|S:# &'\l"GBKBp% d!p96`&t/Ɇ|ŏϯYR𹳻PPbe^/F(E)JA)R<Ć%ޒo o @24!^m` 1PM&xcxCPx#xxA ^kpxAX <^Hā/qSH# x4..Nm`WAH|>.ZBAG[ѿFP _@| xn`:xd;xI }cJ e,QkD'إ{+{+9U~D gWA(5!g&i PÑ4~:3 Q`&v0A}5Ȕ%Hx|YKY䫅I"B@S|A~3N *sJ*@FBjb\/U`(}fǫtp57BC!l8kBO7hgQ_iBIŸVP\Jܧ[@y 7|k Z{҉?}o×Nw3·Ph ~ouQR]\\  C\ /bš1^߇+d1ofG.aX+~"|r֡쟯+Xzm9gs`8%CgC9aCfw3u^N}DVtuKŵL S\٥`Ḣuؗeg /_!ax:;`G?XVX:cv0[ooa ,7<Y :WsЈuh2;.~" r!zݼˢ[~ ͤ.?\,uYWʰVR?K?]մ9=2Д9PҸO@ 4 mCgOdR-|N|s%:V;7~"1DqW~XAu؉6ojmmҮ>98Z[UszpV5<]"~"uۼqm^gxq.?bm9ϭ }\49|YvFe</fyab d̙ ckzM;sǏ|/g X4 z,O# o|o4Yν|]~D7' l2cGx˵ˏt?y3vE??:+Ɏ nfYt:́g:e,kN@k9j83l=@ޔ~_ jhk[pmk!{[|o獂iɎRda!!8Ɏ؎g`[.u v5hy7L Av Crb;d?q 8\>k1L|K:dG(,' o%;}$l>&-QҭHL"})~a?]~CQ} g8oF"NYkOdo~̠.,Gص":o?sHR^K^ش"j!9#1gFwm.'a{ԊFX_/;Cs+ضOd1Y.\.ߊ>n>zš{.{sI|X j?D;d5A>>eރװ7>SL9Ö н]ց`_vLS*gz.?ePs!wkᝪ(o~ؽBj9 B;ovy\x*Nˁ[ؔ{Ysˎ`gO;qϋ }tS0mx⟨`gqw?\'kkٿj)z;|IQԍV abY{B*~/m3;\Pdgkox M˦~{KvNQdہxMstvroiN1c%q?֫Vgu8w.i@x6 ;^ { ߽GbNdwoyI>Vb^7^հ'M<;an13b"d-}ҩU&{ٷ 3{m\yVCaެ{wE60K.gnx=Xc&X'uht=#5U5{ΞZ4=]_L`WԚ=ܨXP0PK}1)~b jclic.ico\yxEa"*$ފu>gwq7ק6(2*:inEp'r &" ABE&&R^ULLtLodz_{U]UuivFL>egi5. y-}H^dFρ]6^ct{\6`zT,HAU%?cse?ɒwFƬp8W'P$sM>X'S~D Q!?*nȜP"Cu{#o\߮qY\VSWMq~aKȯ7qz6܀M442凢nG6t̞a#^B4 xo|+'Y.ȗe ֹ 2Β>!M:ī5^Й 3iϗCfDžx侓I^Mi DҚ@H:1-+ptMge)BȐ{wSkt՛My(bMa-]v" HMi2-fFfh &[ &6YmѭG@V]dUZ(mXGHш@4γAHFYB>"s#o7 " . 8ʧ))D oFL/RЀ iXZ) JxU;O-BPwYJJJ%ǦǾ@l<>H7 XF?yya|9Ks}v}zTznǭ*0h lg?` bpk2$znECHB qT|'…w-NI3hu%]wq(=_58 ɑq~ z+ _Z3i dZL2j/{/jm؞rdn#.?L BALB,DEl@C,ELG F\a "QЫ};^b.xg_q״Qq(C.B DCޜChga=s@®C½3kw9Sq]w.g).C0+>9|`S}a_j.R&Hn#|{F٘$Haǹc;) ID@諦$] oqxfkjcO/8/B]w9{07eO7 n?#.q6%)l,aخo{gV{ sA Xn^ j%bҸMwxx+~ZZ~0m5fXvG9@ cwZ~/<25޴N+_P >i9YIQF& rh== 9ژ@?z_)B +Ii]-nrߣPJśJNcF\̷zy\ PR*矊xл\& Ίcm:zw6Ԇu7:inM}T_ =|h +-\{wPL,)wؗHp4.@3LFF\/q +};_vYM^@ ^7y:lJ'>w@{?9m \{魉ŁrpX E޻OPg DqGĸb;l1#s`>$pë("(q6@,O?oǷ+}.qLsy8Ns P~()P|࠘hG>0f?}.vkĹVY{p/Puw6:h=ZYػλ_, bbc;O'5_a yV ч,nN`p_{HOg'3 r6ЁXvÕ$| >@>Ă=}NaCc''0Z=#ztV Ă//fa*3 ?1V݊K}ʼnXpݚzLmMsX970]%Y {bS!T/!OLn@<ۀ=qs-HO~mcbMyU B %s1 qJ;b:;x}8(1xgeitN#T;K>,%7n @͆ԉbIy@LZ"N ,hA@UΕy 2 9-gtL>(: BS!6a0-6h@罩:w#afa9${BaEn'f;+!6H1.uIa=NE'7;+5¦4wA槰RYh*tLa|Ra?g,M[Cs18U4/tooJM :sV"Um{H AMbγ*OZtΈ>Eq=? t)Й,'OiF!&Y_ Ig:@;ꘜP AS;2zP7"Zލ~K~ݎXw-%FX"pϭ 2W6%;:!z! I³9|{>ҿZS̈́/ wT\Yao}R 6orn9pXsgisƊtMփ;Js,u_xwU3HgeAG̎Vr_ׁ9rg%j`N?A k^H \3F&&yp1n-jR|ѼG%:wU!0jRJ=X,|U r^\ADD B-9>fWVt6 ˈl< Y P}R> Bj(uʓ vsMݭi iIB/^Ol|} ܕW)z|tu}8=7Vc7ic?vZ>vH{)RMpے/񣡢>m6\C+Oywŏ=WǾbSD zWve{1~_PK ւ~1UgTnn reports.pngPNG  IHDR00W5IDATxoU?3v؉,*jSDBM)RiE9ȡs7B$ĉ".! [ԦJU%i6ql̛8!Mbv|3o~t7 +3G&EڢO57T ( %d \gR,Pl0|O14ׁr5lˤb *¤" -`IaXNW@Qa(ao,aQrlS^&i&hpP 6CmC_ Qʓ40)u!X\,_eRzi`BՈ &[4R 1ӀR=^*0e0fJH<2t <ct$0n5Az ~@kgwhd  M' Dֿ!O9) +P5V~7 X*s`ۙlV ~myϮ>l@^ U#>8Ա́-e@:!I栮Nwߡ-G%kKJ,=}żR)5pZU b[a2@:K8j%Ga1A }y[N$axL ,r͵y"Jn\1pN Hw.wW8 |]+M/w3抁Sp\MroYLP%mrS Uj6 8r 8$G`pB^j¢} C glfoaU c5 2"wt"0ahͧXel˿nEul p)eT `UUF DЯ EcHfqPK<?ͤeBP&,Er@ zcp41M/G_4/gmfz2) ts9l3 NV+/W\$9{~f4Dy֒Ia7t\ /ҶdRԀ_eh@<6`5&/=:y񰆪7ieP $N ̇5O5_@ iFĀ-xA"M$.JXC)-:/yuI2]|'=߻p8]Hkt<.Ot< [.{vNFBf7` !@Ewf|Q쁾P-Nw,,{uT PX6X6KUeXx,]\j XIENDB`PK ~1ʧ8< jclic.pngPNG  IHDR00WIDATxMlgwk!65q&5@Ji "E(dnB˕>UH\APBTJBB8|֍~;a6N/Ka}}ws|x$R/3?s{Z8!dg}DŽwMy) ]rޅ3xJՈLNI*3Zas\K~)e_ [{K1|`fUG.IU GMa)&ppi9z~KYR3=iǁzVV,R-* rM Ljbw6PHO"j-f&xNQ$D"`MMCq BQTXEpuzzkL_PUWK43]@@Jog39{$5Ucl(w::4b*/Wm:"Α[nxBPۜ~UDzC0'\b9(<ʾzv;%pXQIP)1;>cgQda h28DDK-M9vvEnndr8 ,e9 ITUb\GPO2#h<p MbC0+\].?; EhQE%xw:P#T}jhhf| eSi_2MEEI ¦4XFӉpf̌$6%0% 0>qY"SFc(6qir=G7*У1Har }Jpe'mAl5b`ZrR"~&)EEӓ0& Df> @x>,g z)LGmZDD`Ha#P Vb٠6kw"pgxXSƙkm,3*l^p$B4hiYb,Կ$J HʱN\!?r  6DŽ7&"Ed灯2 *K?;P7Ax Ja0ɖ ]Z/;[gX#?FŚ`j^UeFO|ʠT"txnl b: eA\#1+[@Ve?'LLJ\ ~h2Lj"oIW MY ;$1S& GͮD4CW"0LIdl@|:q<]:pA$$ M q5`v٬&3GwClkl{D|JfAb"ϵLm\Fzڂer7x'Y|f,D@TF˂Ky[leNu: yr@.~$I p(1"'={~Pzm(4b@ML[@I<$q,*3D,w{>c.5Rr}.29M.r8< L) &={nIENDB`PK ~1w=x install.pngPNG  IHDR00WIDATxKlcW۱Lf:3̃XDTeH,X.0`%DD@.BtTu[JH00̸ti8;\NL8'M|^sH 29~ |MmhэUSm󩡳,׀߀OimdrdO2u$kP]C0MjiRu {y`)Fo߿Dc IӀ|%|U0t4`ʲex0MS}T Cx#x Р\"@`m:'Lq)ˤbY,dr^ΦddrӪ|xX.ԪHtehk+&34>}Lx<9$6ڱS [(b މ淧*p<&Z lLLyB^NSpU`ٿ4m&G8DGw^ˌD|n%<jr*$G0\V(*h5(gCĕ@k[˰3 C29dIE%8Ы, —mW밮c60p 6fr \Fw< ϩeAL9E!Ռek H$M8;-/] ڠva6hOxl96+wo(K@$FOi هB35_Xǡ2sUPq{bI`P[3l&̈́Ͷ;4s/29FL)dƪ$ʋ ߺADQQ#1HC5ojXڽ;ml%F&QC眡$yUJ\/L Gձ=?{lmwCYKN 8UxHJ&"PŋGPluw29$ a[Lg7 Vْl'۹~( |w}5= p1!K$\fx*`Buo~qHyd&}^,Iz!ρ.ّ0T5勒+ r0lp0V<+K0t, t{d!6:>bͼoZոYn oZe;"twyar&B(Ǔ0h"~P{H!ۭ60_A0yuy( ߓ%sv| x{N6ޅ <ofS|f90+.ӆKwan /!x)VP(b\| is$XzrVxW^^/[pNqMњNByn52c sA~fa@ E¥f:L >/r4ԎFy!9FH @8)>.p@ڋؚWЫ:y^& ()0mNmJCD3l.ά xӴ@"| is|N o[ضE!1J:? rho,j\Y׃S)~:lQ(bL \lĺΰsa_Y 4. +fW<|+t4wi1+\~߳آPĞNqYȆg&-5B]=lA L^O1<~aPN6IENDB`PK ~1RU author.pngPNG  IHDR00WIDATx]W{|w7l+i즁J/H< Y'^"C UP^Jm’$m>M6z㏙0^uYgmCe4s#0# k@v.ˍA%«!DXw*CIJo+%k#JT]⺔]u&\_߾,X( ?4lHauP.AJӱ?:Kx>eitceHdP>W0 E詴"@4ՂjPRd*pq84K,m~ TZsaA*f@$ ēt\BY!]\%]0S.4Ĥ5HS!`.,ГJ{Rn~ge824$mQnK|BaTJ˛cex ^O c} f!*6,0x/L$1OBr7aџFp b;_ >7œ H~|&O7P MMJ- 310y!`f_C5**肧I< m~"0W@L07fbvK xF 7LPU^*a {i-y'bo ufcNDQw+؝Зa`Z c|(A6ouQ;}`<2:NTA9lޟ~SuK(!3c04.Jиu@{Wwpynp ėaxL:ã`n/Ct8><,.,.Xafα* S"~&pql*9;f{߷-mqal܆" f={o݄eBfs# ^|mhC{ &0&w&l[p9ObsNn-q2|a 4ڙۂ<:HOB>+c cqHy o9)M ZH ~ L^J8 WJuޖ_۷v~;&x>mt&Y\QY_f{} h_}|86N37Rk[l[@`u1sR4tFR%q{:ۂ /7Xt^m^ӆ7i䡃+~G;;{<*']1ɴ*G" JK͋vN; n5 pIs.:)IENDB`PK5~1@E#: install_aqua.icoPK{s~11o#: *$author_aqua.icoPK{n~1O ݖ!: 'Hjclic_aqua.icoPK ݂~1i6 jreports_aqua.pngPK ς~1SR {jclic_aqua.pngPK ~1-aa linstall_aqua.pngPK ~1jRR author_aqua.pngPKM~1Z#: zreports_aqua.icoPK}1Я"~b install.icoPK}16ma[ ~b reports.icoPKR}1DTZ~b _author.icoPK}1)~b jclic.icoPK ւ~1UgTnn 1reports.pngPK ~1ʧ8< jclic.pngPK ~1w=x install.pngPK ~1RU &author.pngPK-jclic-0.2.1.0.orig/dist/jclic/icons/0000755000175000017500000000000011377161311013756 5ustar jclic-0.2.1.0.orig/dist/jclic/icons/author_aqua.png0000644000175000017500000001112211377161311016772 0ustar PNG  IHDR00WIDATxieuᆳWe992#RX,j !Dr+`8R@bFXAÈ$ ȋٖHjDI6əjD6o3={.Uu὞}hҷo~WuNթS-&J;z. @ GHl{YF?XTuEo H;HDWLP?ݧ~_ۂy°wS#Z EY3jڝn!jD=`EVH%Վvf?z@p~l`Fۏ7nd pzn7}Wfػa$V{Ox;~ݓܳe wnބ#0@>Ez.U8x0,ro|+_yc {~jݽ.6nU%HfuBDQ]ը fUtEP;u?c9p_◀eqE7X?/?|7sA Q 4YGSB9הcur4bv*S4}KN *~_/ۤFJ+`&:i6kRkGQeF]gDF``SV3׿E0_Oq%>y0==ɮW~ϻn9={pn"}Cܻ/5tڵ,, zeM H#UP:P@p2@)iA0~Uuǖ9~,("eYSϰ&X/e1( 20=vwΉMr4>ԅSklOsD`v,MͰi򠢬$??wR`]w+AA_WPFcAXD#D|iu$.|ܳCVfFn0 ܿ>Wz eY~p+ |~ykAY&{XVh d|O6/|}Ta-}_#)@or1kNpLso_OHWٶmǫS5fnvOs&X4$R4Xڙ\>;=` LmqAY8PVS]idc!H"ǁL*@ tS5=UGNLlV5$ 3u8x.KAUW_0XIuwJ:c1%.ɉ <t Oc۶mLWՀ>DbVnzj)Ī:ޞG:%I|H\29Se]Jb>~fYm2bQ iLoٲeݻO}p|S8J zu*-DffFe=wsO;Og*L{fuk)A#JX>70}U@5ѠHԥkE%Y{{ Y6:uG|C$* }0@Z[H,Taԑse}d]/X7Ս,u؛oǮ 0YAv5-c J&P*Q:8p5nOOU 1PUE48l#hjːB>{NJj|o\oؿV~W!% 7́E4hHLlZh$@4HP 1ƠX ֊M;H\͆F(<i JC,JuH׾_ {^- P F u_TD Fb FŃ aF8uTh '˼fY ֲ2UkV+))]jg^;k|ӣuc4(υ1"(VԈDgHTDdu( X#aD$&, Vun'e%eF'Y%g7>qPGxjGMrd⭯"h$+"("UD0f5¬(ˢ4;9`EP(b4Qۑ86nxZumӲٖ:mP+(kwM^퇧g󏜺/$1uU#&@V ր졍݉w9+8k0Vj 1V[b{̆DZMەٖ:ko׷[-$eYQ{ݏīnH/'Z9 oR &(.bŊJjpk!FKKǝ38g`E\ķ;6vSj6q[vW[y2G\Om?[2>I+&Ԅ4Әhn(q_ fPرc59a&&4r['UUy'F o>x'7{/axDԆLdb2'o2j4VKMHSxcQ#F`;a e133( i4!I N5Lh6Mjwy4^wO>vk.v[`҆`b4D11&&IJH U@LXػww`(壇߫4MH$&$[m4MhzH>2<.r}Hʟ-i\Ws*tNߢmjCj0 `8$BX9A\۷oŦFF&)j+6UNcDbBQػ?&򝞋}w i`a8*p䯂DcLZ5aBlb8xpH@,K6ړ7j% $Aho%./ZUAb@M,Kv޽s={ꩧ˳v16S &I#`Dq"&p#3i`S_ ??~~v6z0_)d)$qJ̪;pll|ak3;2XFZI;#MsQ1"1!h^Y#)Jfm??8.`vuqVO sY&'?hXdq ]~͝ɫECT*I|JTL$( e ?""3  "D"pskDj\J9.ŧ'ͭ"ӲطܺݻڹӴή"ŧ%*/6AJha:#mC"  @pcڭnWD2'Ǩ!ϯ׵ܺ޼ضѲȪ!$*1:~IwmIoA  8ig٬pW?,#äʫЯԳֵطععڹڹڹعط׶մѲͮħ $+w5vFpgHj 8 + ]}eϩw]B- x!q)}m4qFg`F[+ JZWDgI(^k ]o#^j"]h \fZf Zf [f [f [f [f [f [f [f [f [f [f [f [f [f [f ZgXeWfVgSiAY=xfwf(yh8~nKPM9I5,* }sX;>g[Rswwwwwwwwwwwwwwwwwwwwwwf*MDk[sc"wf1wg@wjO+){5"P{ڢgG3#RtL[m$FB`Sn^ td-wh;xhHf_QO"5CCAvX@,!ʫVxHVmCAZNl\wg-yg9wgDwiS=;75Km}N9*!ӰѳTwHUmB@XLk[xg-yg7ufApcJc[QJ +555}exH{4(!մ`DZXSUVWWYYYomB@VKiZ xg3xhm2})$Ȩ"ڹݾX{G]f LsOMp^t gy3 `m?CNF`U&oc7tfBq`Dn\En\KfZNG"&&&izmxhPtb>~f3s,륈)统%ϰ#޾^}DVk NucV n i|4^m=DIAZP*j^:paDo_FnZEo[In^O$$$i" *eeeuhsbMo\5WMBgVFnYDrW=oV>jT@\PF2 /ٙwyk]s^IlP8jJ0jM0lR6pZ=wfD{kHȁrI|GD=5-'yR[V]Wm 3M0,&C<4XK?hUCqXAuX=nS:kT?[OE/ *̛z{m`t^KlQ8kM2iJ.kO3mU:nZBrbHuhKxoN~tMxHwDt9yo2sg*i]#GW' Z]u~zsm 2M0+&D:3XJmM1lK.lL0oR8nV@mZEn_LneQnfQjfLf^DUY=3_DoUiqϩݵm1L1*%C:0[G7kR:wYoO3nL,nM-oO2nT:oYCr`MqeUWjZ2tcs zϬm3K1*"F8+^G4nQ5tT6oO2iM5gR>PLH777SvlueSqXBsR5qM-tO.}Z=fKkUnYn_:o v7P4) I9)`G0pP5pO0lM0fL4gR@111S +떑|swiZq[FpS7dEoOpRoUtZu^webo' Ͱ/NdOC7R@,eH-nM/nL-iI.eL5_PA+ |{nbq^Lt]{a{]y[}_}b}gjm;...---,,,,,,*u+***)>ZmcTFtaNnR7jH+jI,fH/eO9VNHQQQ[ulzkzpljjkmqsU>>==<<<;;;:;Dp:9988OiypaS~kWs[pQ3hF*eJ2gR>FCC["Ӗ~w{wwywyzPϹMMLLLKKJJJJï]}s[wKHHG_v~o`ud|gkRdF-dL6]PD"eeegf]]]\\\[[[ZZdwnm[XXq~mqtwaaG1gR@OOOgŖ©ê|òonnnmmmlllkn~mi}~ndM8^UK KKKDľ²ıƲɴʴʴò~~~}}}}ɼ|{iVbPB???D vvvrÿɾ˽̼ϽѾѽĵǽĴ²aN>UUStɽǻǹɹɻɿ·Ƽɼ̾Ϳ̿ɽƽraR]YTĻyiYbYTq_Og`Y{zjjZNige{jjjJ͏ɿ}oo_Pmf\```Jx猆|ſwgWrbTrg]rppx v~wwo}qf~r~|{}m]teTufWviZyl_sohvvtv 444'gͅ}x}u{rwowm}sk|to~yvyyvg444'  ??( @  mqcZK"SC1VH8\J:\J:VH8SC1ZK"qcmj \U!RE;pd'mPXۚU䚌Q嚌P喋R䓉UۊLmd%mRE;\U!j fQO>=O\짗TF?74468?KO}IO>=fQUU C<&si7w_䨘S@.'ħ#ɫ ͮ ή ̭"Ũ$',4CNqi5wC<&UU ?71)}S^F."ǨѲڹݼ޼ۻӴʬ")6~H{sH71)?#$}yVa?$¤ȪˬͭήϮήˬȪĦ"x.sCpjH#$pjUm|~O>`PEdCFd>Fd]Ckh(|k.|mFgfJ##G{UgqCQbiiiiiiiiiiiiii\*OIrc"wg5xlQ$$FzȒl}@%}-I|l$IDn_sf3sfFlg[ 666U{[u5"}- Zy|{z{{{l!FDk]sd0ob@qfU666U ||zvxkKk0$ɪع+O}sG Ip Jr NrOrM~~l EEi\rd4l_@k\L_]Y-}tjm^Cwb.~($غ޼*TydJ\aX r ZfwlDF_V"l_9hYBfWEk^T-HHHbtk`eT=lU-q+ꮒ,ͯ$ܾ턋+U~aJexj Zgwl@JVM(f[=fVDeUCl]OCCCb]]]oeYbN:eO.{b1薀4߳1ͱ(۽ۻބ*Hz_N\mcTiwl4è*]n4K{[DyZl7RA;3WL@cO=fN8fSBWTPxxw}l`TaM9^C(gI-lT;tbF}oMŅxMF;y.rg +K=Z_jl5R>83WI;dL8hO8fR@XTQ]]]mbW_L9`D*fE*mP5pYCrcMofQccL}3NOէMաL2lZ;pf??ZK"t3}U簞A/**.;G~r3{WH#??7,wl5||^jt=jq.px*u|)w|(t{*lt0fl6}q8bX+$>7Jp M{QWVVVVVN(FDh_=30Ota6Yupfefkh>CWP.idT-~U*&O{m[ Ei(F7N}hAAAb-wog|kZpZC/е-,,+*)G\;0$QD8-`]\\ҿ[Xh~ZOFFB>AĽŽhbYPEEEg)))|HHHc}@@@g $FFFeoomnmklihggeDDDe$ jclic-0.2.1.0.orig/dist/jclic/icons/reports_aqua.png0000644000175000017500000001060211377161311017170 0ustar PNG  IHDR00WIIDATxݙ[ufsoDJk˖)*%H 0Q!C<4}ɋAip N4>j6%xmfG%Se5kZ#Mে'{ @O;O ?#;W~CO5ȣUM`"1F,$}ȑ#Wh~R@n x_7?\s,kl؇f]TNo{~|O 8 d'w&u;aϞ=w^ݽwm}Ƙ.py~qx4 wYgl`7u#o|3gKV|y`L7WTo t2|'g~/?~ޅYg"ЮN0bݝ]"\_~dO~ktfu[7:I;?pm  fS)T7فh(O_|N˿Lj[l ??/>{YZ]gR_i{sם`,@~^!KׯXR,M$C1{ GA'fnVci ~X%)Χ82I;?՗a}}z.M >я~UƤثH{ қ_o>7WVۈw%6\"H]Z<5[7 g .^Y\Bb?ӧO M޻ʺf\Ls'sė;0׍Sz%J㝴16!Krsi4&Fljzhe)mJl,W\]1FcUje _#0I'^"^:c-&/791TU3qMb!ozW3rgKvcu"m2/'Z$Ç?/^JOe>MKYםMG|{)#Gɧo\ .x\dzl̊J' =vbUݵnW3Q/^ӘݥŰyjBQhs? /63bqq6mj#m`H๿ w]F +|<\:˫꾻/ܻjz5[>ҬŚ^1HNB"ќ4(vѢ#Z$H P5` !`E{ۿ&Rss gZ]. w2r{J=Ҋ;4t,J-o^TQSs nȋ^IEtPֻ붹Z[yG'U|Kgfl8;M{ecvv66tѥE,Xt5Hq!tHLz&$ D3b f1F'K|^i23\w6NM]\-|\6~5}`=MU'ϧ!v EhUD̄(BD!iApM/qkAR1hEJ/}1mF&=맯>ц q>K-Kgu>MO674L4JTũXK (NDG/( ѢJ'E˲@я /\׏/8?Mj7Χ$q0,Ld\$3U!(fT0  `@lܩT9^fCfFx.Q?v!8 @&'SQM# '3ڦdZ5|Ny% \o \(I xgW!f$4$$y/*qGMRBARDs.J0S'1ќSq"N;D=wd^q^!q\bf0`\^KQBSDm;EKYmL(ט^TAհ bPeZCR|I8RHOD\ۢ^Ϸ٤)YiDVTTQ \L2$6>VCyo+'FIN4OŷeR.fY.!-4Qn/>k$JbZZqJ$iƗO8qb@fX9 _O"{<MgibS蜻 i]*Jt朶4*❲q׀Q*g}PeEB_He%^^M3S|!"j+h83yUgu )@ A鯮ѣ*^˼S9 gB6 P[[K$o/E\y5TbJ6nuu]2Á.ǼOџź^AO '`c+P4:& xtvcҼz@}df_oMQLLj[gթM3g_CiAnjڪ4k ǯٕW)npziF{K* ~>j"hbQYgpn*c9u@b 񛿵] q!xq?˙9ހ.6ZX4ͅ4C |mU y4C DLʉxt}d#fuETJM-N8OQO\঺ЭQ=_}СŠHk"AD0AD$MoڟAsp303 Ez}$ q$M,IRK9RR PqnK}|fr/ `@iInG }{Ů#!DE'h Y\^ YaZL4L#7¼KMY$K@^O$oj7sx?^9/?Q?>o/||3-@⹅V"lq!"SSuY[]AĜ.M&eI:ސ\dj1'kW=iԯR7{;@Y6 { #QC<6 iDmkiЪFj\YV%17HFk$[_bDu={,3n2gn_4`@jV^:-g vОd:go&& o/,ps{P0g;w^ر;yo8 шS=Lb[գեKחV/D"]t86v-7܈RBNo y8Y 0#HjY$D1ֆMuB\[&e7-3RI&h'DaW@ v=ơO{4VXN 4BiC#%L1=ɘQ͝;x;@©S쾔yV@GcKuZr'h.s]\IENDB`jclic-0.2.1.0.orig/dist/jclic/icons/author.png0000644000175000017500000000333711377161311015774 0ustar PNG  IHDR00WIDATx]W{|w7l+i즁J/H< Y'^"C UP^Jm’$m>M6z㏙0^uYgmCe4s#0# k@v.ˍA%«!DXw*CIJo+%k#JT]⺔]u&\_߾,X( ?4lHauP.AJӱ?:Kx>eitceHdP>W0 E詴"@4ՂjPRd*pq84K,m~ TZsaA*f@$ ēt\BY!]\%]0S.4Ĥ5HS!`.,ГJ{Rn~ge824$mQnK|BaTJ˛cex ^O c} f!*6,0x/L$1OBr7aџFp b;_ >7œ H~|&O7P MMJ- 310y!`f_C5**肧I< m~"0W@L07fbvK xF 7LPU^*a {i-y'bo ufcNDQw+؝Зa`Z c|(A6ouQ;}`<2:NTA9lޟ~SuK(!3c04.Jиu@{Wwpynp ėaxL:ã`n/Ct8><,.,.Xafα* S"~&pql*9;f{߷-mqal܆" f={o݄eBfs# ^|mhC{ &0&w&l[p9ObsNn-q2|a 4ڙۂ<:HOB>+c cqHy o9)M ZH ~ L^J8 WJuޖ_۷v~;&x>mt&Y\QY_f{} h_}|86N37Rk[l[@`u1sR4tFR%q{:ۂ /7Xt^m^ӆ7i䡃+~G;;{<*']1ɴ*G" JK͋vN; n5 pIs.:)IENDB`jclic-0.2.1.0.orig/dist/jclic/icons/reports_aqua.ico0000644000175000017500000003535611377161311017173 0ustar 00 %6  % h6(0` %3333 35*1'4+4+1'5*333 33  "")#3"H}MUM$'"h#A    F&r{rJƮo[I9.ħ'ͭ"Ӳ׶ۺ޼޼ܺطӴή"Ħ%*/6@Mph>&p F D!scڮnWE3æ(ή!ֵݻ׷ϯ"å&+3;JzpI!qD >okୡoV@/Ǩ$Ѱڹطί"(.~8|GxmJm = 3ejתtZB/Ȫ$մܻ޼۹׶ֶڹܺݻڹ׶عܻݽݻԵʬ$},u6sElfJd2 % Uwsaħ}bG3Ħ%Գݻа¤ ĦˬаˬĦ å ʫˬ¤~y#r-m9pJc]I T% @IHkYI?=zpvgVnXDiM5iK1kO2pY9wc=~kB΂s@ǁt:}p1uh#j^bU_RfX q_ _k_CK>5 Vm\=X3/'F@5ZODhWFp[FqX?pTiZ>f]9bY4QV.6[3kEqMMGYM\k_?O3,Um\;X1.(E>6ZMBiVCqXBrV:oS9hQ:iVE:4{rwiYr\FlP5hJ.eF+bG/\G1SH5tW9nP6hP:cRB4 ,ؘ~uyk\s]InR6fI.ML30W?rYm{رL:.+Uk_>Y+)Tm\:W2,&F<2]K:mT>>Chb]slgzs퍅|딊ꙍ뚏얉~@:9998TpsdUnYu\|^BkI*gI1eO:UOM %%%7zqhQPPPOOONNMMOotm~wnx򥖉󦖈OIIHHHf}rayf~i}efF+bK5bPB 7 ~ea```___^^^_ͼtx`ZYYXXwpsvybH.eO;[UP $铎vƸrrrqqpppooo}|{zaK6cSD$ iiicʾ̿ðDzʵ˶ʴDzįqgTDUUUcɾĶʸϼѾҾӿҿѽϼ͹ʸǶĴ²jXF]ZUøǿöĶŷƷɸɸʸɷɷǷƶŵĵ²̿ʿøwgUd[TŽ|l[g]Ur`Pib[sn_PkhddddLڌɿ}oo_PmdZfffK x狆|ü~wgWrbTrg]rppx  vwwo~rh{m`}queTueVugXwi[yl_tojvvtv 555&ğ{چ~v{rypwo{to}xs{yvyyvg555&  ??( @   xiUE!SC1SB=UFERDGUFESB=SC1UE!ximjUND4l`(jPXۙUWSSN쒅Qۈ~Ll`(jND4jUm_OU?0uj3|[ۧXH?51/037@LOvk3{U?0_O\EZPO\Ʃ[E2(Ħ#ɫ ίϯί̬!ŧ$'.9FN[UN\EU<TKUi꩙R6'˭طۺϰ &/=OOISU<--B?PkꨗQ3¥"Ӳۺ޼޽ͯ!*:yNC=O--51Cu衒Y4"ִۺаŧ å ̭ӴѱʬǩˬӲа¤|*s=}rU62Bqi?%Ӳ"p ^ _Zay9;tf\]Yd|:o;\ _Z+fjro0|mFnjY EEEgU0 ݻ bi{S?eFg|`zXBgGMrHZzd\|yhp)yj>wjUFFFf !ҊnrD}* aqV6ZEbzh]8^FFjF_kYzo`~n+wh;o`Hf_Z!333T~t`wf;w)!ܺݼ bqV5ZFbzh^8]EFjF_kX{k\{m/ug=j\EpdW111SpnnthVnZ5k*%в!ֵ `qV5ZFbzh^8]EDhD_kW}bUrg3pcAfYDi[LYWVҀ{tm^OeR2y`-,罡)Ū _qV2WD`xh^4ZD?fF_k U~VM"j_:k^EeUCfUF_ZR'|tmhXJ^K1nU,p2⦏4۱(]lU4[F`zh^-UD8`I_k RJD'`X@gZFcSAeRB`WN'-wogeTE[E.eL-yf8x>՗6VOSL3]K_}h^'PG/YL_kPC=,YPBeVFdP>fR?k[M-/umfeRD^E._D*lU6tc?ykAti3h[!ZQCYcU ]g^HN!PU_kN=80ULCfRDfO:dN:iYI/-wogbRC\C,[A']E.[H5GQ=']E sZik/Y3 Wh^BTG\_kM:5/UH=fO=fM4aL7iXG-'{sldTF\F.6N5fNgņE3Rb|[C_Hg_kM;4,UE6fM8hL3bK6\PD'ҀzsgXJOG3l˦ Ѱm]^]b]*Xy,Zz lp N=3'WC0kM3dG-`K6XRJpnn~k`USG5n &%%$##&SPNa_\khfqmkqnjHp {*iWH9_E-eF+`E,bN9ROM666TtkbgXIU;;::998:bke{tm舁z咊㑈~c554@xteSjTdG+_F.gTD333T!Ҁysy{UʶRRQQPPQ˷i~x󦙊򧗉zLKJYuf}i}fO_I4YRJ! KKKfp´lkkjjiitjjiy{}lhTDAAAf zyyʾµðʵ˵Ʋ®teZTP=¿ɾžͿòIJIJðѿͽʻŸĸj_V= Di^WD  F~|{浱nfZD  ?rpo~pba]Y= KKKfzywҁ{sureXgb\FFFf !666Tkjjwspuqm~ul{pgzpgmf^lhfcbb333T! '-/-'?(  @xifP#dU3YL9dU3fP#xiuN aQ/}o'nMSݧO楙NܜHr(kfU-uN fUVE>SP7Ŭ+ɯ)ǭ)4CK\J:fU;28fٷEè&Ū˭вȪ"3zJ<37eU§)Hk[^u7\Z,ecW$`mkb.smL BB6UBĪ *tO}Lx<9$6ڱS [(b މ淧*p<&Z lLLyB^NSpU`ٿ4m&G8DGw^ˌD|n%<jr*$G0\V(*h5(gCĕ@k[˰3 C29dIE%8Ы, —mW밮c60p 6fr \Fw< ϩeAL9E!Ռek H$M8;-/] ڠva6hOxl96+wo(K@$FOi هB35_Xǡ2sUPq{bI`P[3l&̈́Ͷ;4s/29FL)dƪ$ʋ ߺADQQ#1HC5ojXڽ;ml%F&QC眡$yUJ\/L Gձ=?{lmwCYKN 8UxHJ&"PŋGPluw29$ a[Lg7 Vْl'۹~( |w}5= p1!K$\fx*`Buo~qHyd&}^,Iz!ρ.ّ0T5勒+ r0lp0V<+K0t, t{d!6:>bͼoZոYn oZe;"twyar&B(Ǔ0h"~P{H!ۭ60_A0yuy( ߓ%sv| x{N6ޅ <ofS|f90+.ӆKwan /!x)VP(b\| is$XzrVxW^^/[pNqMњNByn52c sA~fa@ E¥f:L >/r4ԎFy!9FH @8)>.p@ڋؚWЫ:y^& ()0mNmJCD3l.ά xӴ@"| is|N o[ضE!1J:? rho,j\Y׃S)~:lQ(bL \lĺΰsa_Y 4. +fW<|+t4wi1+\~߳آPĞNqYȆg&-5B]=lA L^O1<~aPN6IENDB`jclic-0.2.1.0.orig/dist/jclic/icons/install_aqua.ico0000644000175000017500000003535611377161311017143 0ustar 00 %6  % h6(0` %3333 35*1'4+4+1'5*333 33  "")#3"H}MUM$'"h#A    F&r{rJƮo[I9.ħ'ͭ"Ӳ׶ۺ޼޼ۺִϯȫĦ $)/6@Mph>&p F D!scڮnWE3æ(ή!ֵݻ׶ήŧåħħ %+3;JzpI!qD >okୡoV@/Ǩ$Ӳݻγ\jz:Ǫ˭ǧ#)0:IyoKl = 3ejתtZB/Ȫ$ֵ R}aZssq ͭϰǪ$*2}:xHohKc2 % Uwsaħ}bG3Ħ%Գ]yppL|fbw ͭίæ&-4w=tMc]I T% @IHxfBn^FqaPGFF6F瘓ssUo?w0("Գ"Jvs KtDO%m^wi'zl4yi>tbBm[Do^LeZQF#&&&j}m{kO|g;p1($̬"ܼ%`wutLx@N2g[%m`4ob>n^CmZDkYGo_P$$$j# ,bbbvgwfKwc;g0w,ꪌ)罠&ѳ"0Kemmmm{vmmmnbHDR>f[8k]AlZCkYDkWDn]MKGF, 4zzz|~qdq_HqZ9x_0l.蛀.㮕+æ(Ӷ#匙5W{HZzDQqAKl@Fg=1[JVP@D!D?&IC,OE*ON*OUATJg]>i[EkZFjWCmWDlZHTNI4:ݗv|m]o[EnU9pY3}f0t3ߠ3۳/ê)Զ#ݽܻӲȪ }$ZR4=TI gYsf"wk/sj;pfCmbIm`JkZGlYCmVBmYF\QK:=|swiZmYDkR9mU0tZ3j4ސy8֞6Ѯ3-̱%չܾۺֶұɫ }'ZQ1:QGg[vk/}r?|rKukQpeRobOn\HmVAoXBkVCfUH=?zpwiYlWBjO6kP2nU2w`8ނl=Տ{=Λ<ǧ5ñ.( ¥ pw$[P)4"IB`W)sj>}tP}tXwnZsiWpaPp]InW@pV?iT>kYI?=zpvgVnXDiM5iK1kO2pY9wc={jA΂r@džw<Š{4~-$~{Rz,%}E{YWP$0$@:VQ2jeGtnUxn\ujZsfWr`Or]GqX?pThYzX8rQ3jM3hP:ULF#qqq~rgsaNqV?tS5pL+;cG`0>>===<=zN--51Cu衒Y4"۹YndY:]B ˮ$0{A~uV62Bqi?%Ӳ˴,ebjP8Y? Ī(7qInjY EEEgU0 ݻ͵ZmfY>Z9 %4~nAwjUFFFf !ҊnrD}*ɲ*bde~O3U?{"2{l=n`Hf_Z!333T~t`wf;w)!ܺݻ"^ieP7U:{k}o0se=i[DpdW111SpnnthVnZ5k*%в!ʶ#`ke|S3QGi^0i\=cVCi[LYWVҀ{tm^OeR2y`-,罡)ָ!*b`O} U R~ QnSL}NNF}YW:cW@`R@fUF_ZR'|tmhXJ^K1nU,p2⦏4+Զ"˴޽⮛枋6\DfJ~FG_Zfc.icբ9̳/Ƚ#Ǽȷʫ 5[CgI~EDk_'wn@wmPmdPhWIcO=fR?k[M-/umfeRD^E.`E*lT8tc?{m@ˀq8Áu+rt&Aw6~MxdgG;<"_X9pkRwm]ofVjWGfO:dN:iYI/-wogbRC]D-_D)dI1^M6=XCkUgi̧qjG24)TPCfcVof[l]NjTAfM4aL7iXG-'{sldTF`H0_@$mTj|ܴpF+30NJCc[TnaSnYFlRSP7Ŭ+Ǯ)(.>K\J:fU;28fٷEȭ'ܽ'ZrAgKw4UK<3eU§)²[wlH:M,t@{V BB6UBĪ Wzl}P;J+nf,ypR>>2Qrrot};"ꎕ3 Ty^seG8F7e\F^^Yщoyg;}*t<*ZX(RJVi =Y@OCK>`WHc[X"܁yniW=^X.Ki7&uFfgi3DHD,b[IfXK^WQс{s6ePi}šƤ~k3IC@5]REfTEVPJrrrVk]./.-,,+=\qdZS`N>[H8OLJ777Se^]\\_cuws]N=444SyxxROJ(qmh((~~~ffb(777SmmmwtpҌ㊇bb_444Sjclic-0.2.1.0.orig/dist/jclic/icons/favicon.ico0000644000175000017500000000047611377161311016106 0ustar (( frL%քMߠf3wwwwwwwwzz%jz""+z""""z""""z""""ڧz""&zj̲"+z8b"%z33m"/z33NVz33z8Fzwwwwwwwwjclic-0.2.1.0.orig/dist/jclic/icons/author.ico0000644000175000017500000006117611377161311015767 0ustar  00h ( 00 h^"00 %'  nM h^(0`3333333333333333333333333333333333333333333;3333;3333;3333333;333333333;33;3;3330;33;3;3330;33;3;3330;33;3;3330;33;3;3333;33;3;333;33;3;3333333333333;3;33333;3333;33;;33;33;3;3;333;33;333333303;33033303;33;333;333;333;33333333330333330333030?` ( @3333333333333;;;3333;0;;;0;;;0;;;0;;;;333;;;30;;0;;;;;03030;303?( ;33;338s3838x(0` ~Y?` ( @_?( fM0ѠZypLߟ&փ py                  (0` %Y{YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY]^dgggggggggggggggggggggggggggggggggg_YY"Y`mgYY#Y`rgYYY`mgYY!Y`ogYYYaogYY"Y`m}sssssssssssswgYYY`rj[\]]]]]]]]]]_vgYY!Y`mzaZYY]Y]Y]Y]Y]Y]Y]Y]Y]qgYYY`qzd[YSYYQ^qgYY)Yaq|d[Y^YQ^qgYY&Y`pzc[YCYQ^qgYY,Yas|d[Y^YYQ^qgYY'Y`mzb[YSYQ^qgYY)Y`tzd[YVYYQ^qgYY$Yan|d[YZYQ^qgYY&Y`qzd[YMYT^qgYY+Yap|d[Y]qgYY'Y`ozbZ\qgYY+Yas{aZigYY$Y`nsangYh-iugY~~!~X~~gY~~~I~z~ӳgY~~1~k~~ϰԴgY~!ǩ߽gY~/׶gY~~ƨgY~ڹܻrgY~uƨhtgY~=q`ogY~ ~ɫY`ugY~Ѳ߾~d2Y`ogY~b~/Y*Y`tgY~(~`Y2YbqgY~~Ѳ~Y,Y`qfY~ϰ~~ Y4Ya_Y~]Ҳ~Y*Y\Y~"~ٸƨ~~m~ Y(YY~~߾ܻȪ~~~b~*~YY~ί~~~t~<~~O~~{~B~~ ~~~~T~@@ ( @ YYYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYvYY7_s|||||||||||||||||||||||nYvY?]|YvY'`|YvY8d|YvY,\rwwwwwwww|YvY(c`\YkYkYkYkYkYkYy|YvY-\h_fYY{z|YvYbb`bY{z|YvY*cj_jY{z|YvY]e]Y{z|YvY bi^vY{z|YvY\{j^~Y~z|YvY^}g[z|YvY]vm||Yv~ s|Yv~UҲɫ|Yv~F~ͮ}YoĦ|Ytۺ||Yt~VԴw|Yt~_s|Yt~'\o|Yt~yԴŧ~aY \o|Yt~AڹY \o{Yt~ \dYxƨY \Y~lĦƨ~q~0~#~~{~8~~~@?(  @MMMM0Ѡ&փfffy pffffpMߠffffffffZyLߟjclic-0.2.1.0.orig/dist/jclic/icons/jclic_aqua.ico0000644000175000017500000003535611377161311016561 0ustar 00 %6  % h6(0` %33. <<7,334+33334+337,<<. 3333  #+!6 ?$F%"K$M$M%"K$F ?!6#+  33%",$?("R)!c)#t)#,%,%.&.&,%,%*$*#s'!b("R$?",%* '%0%"J(#e+%|;2 jb4TߕW젓]][YXUN|Kha3=5 -%{(!d%"J%0'* $$3$*( F(#f.&tl?W媝dYQJFCA@@BCFKR~Iog:.&(#f$!E+)3$$3 '%6(Y,$}tm@e_SH@62.,**+,.24:CJMme9-%{%X%6'3 3 "" ?$hTN%cꯠeSF80*ħ&ǧ#ɪ!ǨǨǧĥĦä"#'*/5>I|JTL$( e ?""3  "D"pskDj\J9.ŧ'ˬ"έа̫ͭǧ夥å $)/6AJha:#mC"  @pcڮoXF4¦)ͭ"ӳֵӳέ¤" æĦ %+3sCxeDo]FqdS111|+ :xxx›yu[pCu3)#ﰞ#XNRNqbv!~2{>qEweDn\Fo_PUPM:Gs|nU|i>m2})$~5\`(D5^Ssf"r3tB}nGtcGn\En\KfZNG"&&&izmxhPtb>~f3s,룇(\rDduGrND`V qf4xlDyiIqbHnZEo[In^O$$$i" *eeeuhsbMo\bTDmXDoW@pWAlVC]QH42ژvzk]p[GkP9kM2lN3nV7[XCMygPDFu@C0@$MBTGQKJG!*.63+KC9]O@jUAqVjT@\PF2 /ٙwyk]s^IlP8jJ0jM0kR6hU: K{GI|B[#9583<54=K)\= eDG? FkuZ.B3-'F<3ZJ:jR-89(#B0R?lUy_tß~g)7:G^s>l-)#B6,WD4gN6oS7mQ8hRmM1lK.iJ.bL4CN;"RB iUs]rٱ<+*(KE*& >3%UA-iN5lO4kN6hQoO3nL,?T: r[pرϬ eS))#LO*1<.!Q<'bG-hJ.hL4gR>PLH777SvlueSqXBsR5qM-MS6r~l652Nr~ j6P@.R<'^C(dG,eK3gR@111S +떑|swiZq[FpS7dEmO-y"""!! :OJ6PamL~H5!U<$]A&`D+bJ4_PA+ |{nbq^Lt]{ay\Lu1ؼ000//...---Ī%^B&_E,dN8VNHQQQ[ulzkzpkwtE@???>>>==<<@c^ZAw;::::;yDuSm~gll{n^q]r\s\kN1aC'aG0fQ=FCC["Ӗ~wzzTOONNNMMMLLLMnmh^yKKN_}p{zo|mmoonlkmTaF,bK6]PD"eeegf`__^^^]]]\\]s|}t~}~~}{{y|ebH1gR@OOOgŖqqppooonnnmm{qfO:^UK KKKDľ~ïŰƱƱǰƯî¬mZdRC???D vvvrÿĽĹ²ƶ̹ϼѽѼмм͹ʷƶôhSBYYWrǾ¸ƾ˿Ϳ´ĵŵƶǶǶƶŵĴô²Ϳ˿øzgVc]XƼ|l\f]Vr`Pib[{zjjZNige{jjjJ͎ɿ}oo_Pmf\```Jx猆|ſwgWrbTrg]rppx v~wwo}qf~r~|{}m]teTufWviZyl_sohvvtv 444'gͅ}x}u{rwowm}sk|to~yvyyvg444'  ??( @  mqcZK"SC1VH8\J:\J:VH8SC1ZK"qcmj \U!RE;pd'mPXۚU䚌Q嚌P喋R䓉UۊLmd%mRE;\U!j fQO>=O\짗TF?74468?KO}IO>=fQUU C<&si7w_䨘S@.&!!%+4CNqi5wC<&UU ?71)}S`G0#ħæ")8J}uJ93(?#$}yVeD*ȨήVsAWwPS RVu:^E{(5}HwoK$#pjUnI*ȪԳ)Ibz{d U~Zf%*8wLjdM##G{V1Ѳw4 [{wO7Y? #0w=|oU$$FzȒl}@'Ǩ" X|UR_%-y;xjIlg[ 666U{[u5#å&^bly Nyp -y:ufCqfU666U ||zvxkKk0$#L[@S-w,v?qdCk\L_]Y-}tjm^Cwb.{'er<[u Jpm_~q.}oBl^DfWEk^T-HHHbtk`eT=lU-m*EaKeJGI$g^0odCiYDeUCl]OCCCb]]]oeYbN:eO.w_/7WRiW s76668z}3NOէMաL2lZ;pf??ZK"w3|X涣D.%$)6Gވ{5x\U!??7,wl5|[4m~<XuP~P}QXgg!&E{p6v7,>7Jp<[yHTzi Ksf]|+퐄TB>Eta7 UiG[i\~sDxq_-~UPhGcGDCf_C (!y яۻwI*wqǟ7@<2qb-4AvGÒ00*yjA~qM?)VƉXf| jqL9_9!8Rrt5@uoqۮf244믹 ;%gE _q>r$=6EV?UTuZǻox'V\EЮx*gY>ڛX* .I~KY]b u>r5Ć^C"(} f3 D8#xh B!)èp`]:/ą/}\xuBTB69Y"/"`{3+5193tOPU[Y}.ٟ>+f3|w[|ݵBA(\@<02j6A։TP1 ꁀڥBwPHE၇~m~&s:@`;tRbH2#VOcbkSȁv X#t: "4)ڭdy l#G c@lμ@׬T@}״Bwèҽ>o5'\Xs@oee7<lvz,,6=: g5.:+"f%5I$ {<6 H?'=3'^`>~J@cvNhgAZsb~eDIYL11@LB8 0"BPqP/zS{A ݲe;`aG+rGHӰ=_כM5d14NalWx%K&&cKIJx=,C;,Q򱉉>|}z뭷vq(`{[;9_"L[+_<>wC\GTP2Q0\xq Dd*+w^{Ç>@~mYQKfcpqǁz.rˤi)1 'I*"@O-40;=mS ,@z 7lKEC2q @ J94\73ǀM-]Y޼Ih,"2R ru\ә3e€X Ĕ7ڵk۳>; 믿ydEqF ݗv|&cS4=i@W--hi䘍z/FM;l!&b1"^DNc+<R?*n{A>^ 9Q~p`ʬذDD{0A xŪpm\˶PV@EXCCZ5J(g*eA!@""TWo a:W^> v]R,"C#U@LB 3aBsRB@AP @7NV 'j6ʓ tvUTNA1 -`6ZR&"e p2„r%* 83*Da@, &[|vJ +UW94bxnj^] ټR@/z%NlF5$Pq0޳vl 06.p.d-ITI@ę&"뜵i}5<2^5ҊQ9Y߆F.JPDqbXG&8Z` $ d-[x0QI/h*jjyJEl\R&OzxQ:k Gkb"-N\NTB).*HB*jPf583"J .CReV'MLڰU-(wEǘzB ӸҤed< P8PU!UeV]^ '8l2albV"cZ)W F~hA-C(8 |0YG `LRXPWϩ$ 0}uUk6 cPhRP#T+اYث鐺s\kΒz(@XŹԞq(A4Њ]'D`2)IȦ!YtlfffrE&20I ؔRP2`|WVlb㒁䝿|(}jR`M[*3[f'X5 Q5́E ;Xy'xn|Ǔ(BİQA "*Kee\>)%V;oaǰqB/oIJNLw6a )0I ^ɰ0 j<^}ՃLGqM#$eR#I$B\BblZ56D~.,og{^)w̍AFHʬ6EȵgHoyfSSYh^Wj*U2k5 qdH}:/㡁ꥭW^awaqUtxiX"v 6ѢxG{1Yc/fo7i$ R$EHR80 l`=DgSXNcy4WVqmhy5פ611y0Qֱzvzgp L<w$萡 m D15;%PYM0:09񏿅Uix&^| Q(VPrF+VjR҄YdiKh]P)9T>ԑW\qx`pb4xBtxBP<AYʪ 뾷}Lk[1(Alƪ"K\n7̠xӯ7 l$v/ k5A6<#C kW#;v`_()2e`|HqS6jjA8~GnԩYt}7EGWZS['֯6T(O 2EEN(`Llց3,u(dm*uZ\4Z.KWy=pe~hWxkd Jvid|rk\j*, ^e d$xC*)`:ܱɽOǏPIűl?x9o*%cÆyTCc0v- u޵jĖت2 0tg VX" >y|kcOh(?G').&nh00jVxexp;vn_9<220i^:ƒh.οpjzi !Bf1-[J=NQahkj*9R*D"B;,2&/,a`+X|ƍóϾe%}_SצOIENDB`jclic-0.2.1.0.orig/dist/jclic/icons/reports.png0000644000175000017500000000255611377161311016172 0ustar PNG  IHDR00W5IDATxoU?3v؉,*jSDBM)RiE9ȡs7B$ĉ".! [ԦJU%i6ql̛8!Mbv|3o~t7 +3G&EڢO57T ( %d \gR,Pl0|O14ׁr5lˤb *¤" -`IaXNW@Qa(ao,aQrlS^&i&hpP 6CmC_ Qʓ40)u!X\,_eRzi`BՈ &[4R 1ӀR=^*0e0fJH<2t <ct$0n5Az ~@kgwhd  M' Dֿ!O9) +P5V~7 X*s`ۙlV ~myϮ>l@^ U#>8Ա́-e@:!I栮Nwߡ-G%kKJ,=}żR)5pZU b[a2@:K8j%Ga1A }y[N$axL ,r͵y"Jn\1pN Hw.wW8 |]+M/w3抁Sp\MroYLP%mrS Uj6 8r 8$G`pB^j¢} C glfoaU c5 2"wt"0ahͧXel˿nEul p)eT `UUF DЯ EcHfqPK<?ͤeBP&,Er@ zcp41M/G_4/gmfz2) ts9l3 NV+/W\$9{~f4Dy֒Ia7t\ /ҶdRԀ_eh@<6`5&/=:y񰆪7ieP $N ̇5O5_@ iFĀ-xA"M$.JXC)-:/yuI2]|'=߻p8]Hkt<.Ot< [.{vNFBf7` !@Ewf|Q쁾P-Nw,,{uT PX6X6KUeXx,]\j XIENDB`jclic-0.2.1.0.orig/dist/jclic/icons/jclic.png0000644000175000017500000000400511377161311015547 0ustar PNG  IHDR00WIDATxMlgwk!65q&5@Ji "E(dnB˕>UH\APBTJBB8|֍~;a6N/Ka}}ws|x$R/3?s{Z8!dg}DŽwMy) ]rޅ3xJՈLNI*3Zas\K~)e_ [{K1|`fUG.IU GMa)&ppi9z~KYR3=iǁzVV,R-* rM Ljbw6PHO"j-f&xNQ$D"`MMCq BQTXEpuzzkL_PUWK43]@@Jog39{$5Ucl(w::4b*/Wm:"Α[nxBPۜ~UDzC0'\b9(<ʾzv;%pXQIP)1;>cgQda h28DDK-M9vvEnndr8 ,e9 ITUb\GPO2#h<p MbC0+\].?; EhQE%xw:P#T}jhhf| eSi_2MEEI ¦4XFӉpf̌$6%0% 0>qY"SFc(6qir=G7*У1Har }Jpe'mAl5b`ZrR"~&)EEӓ0& Df> @x>,g z)LGmZDD`Ha#P Vb٠6kw"pgxXSƙkm,3*l^p$B4hiYb,Կ$J HʱN\!?r  6DŽ7&"Ed灯2 *K?;P7Ax Ja0ɖ ]Z/;[gX#?FŚ`j^UeFO|ʠT"txnl b: eA\#1+[@Ve?'LLJ\ ~h2Lj"oIW MY ;$1S& GͮD4CW"0LIdl@|:q<]:pA$$ M q5`v٬&3GwClkl{D|JfAb"ϵLm\Fzڂer7x'Y|f,D@TF˂Ky[leNu: yr@.~$I p(1"'={~Pzm(4b@ML[@I<$q,*3D,w{>c.5Rr}.29M.r8< L) &={nIENDB`jclic-0.2.1.0.orig/dist/jclic/icons/jclic_aqua.png0000644000175000017500000001060111377161311016555 0ustar PNG  IHDR00WHIDATx՚Y]u>ӝnII$%jn'p? AF@!h-ǝİaw rlE+"$RSS,\ugܫ-(SK/kswo2 (rtwHl}h04/?\!{,Nt6 (z'? :Y /h4ZMU8? `EV%> 9Yf`F|nmv9F_W:RwNWR屧NO?s/Ј._W\l4a>?NްJ_e}C {W2AayuƷxn7/ٗmqU◾q/>|xTUN镲?<$ sy$[|xEN?/|ObSGgVEYT,><$"«5(#*t`xEz_A _pqzA^TdEEf P}( G1e% ZĘ!WgHա SUsf7` y&gz(,\'i hOصGM XZn%yUQy^P#Kb(>=YV2becn>:774x_:(S 66ܓPZa'\k++-W5kjX HQ2R/Q_`bzzs7ˣ0 A\֡B/P_=S^&⯸tA8w6`]˄zƢq".AU:/+ mr}|;se(] wyo )~FgCZf\'Ba~^X]h/;̚HY].ں &l$ƅ8ރzf+bȥW|ӟ>&ou 2K'BQYMJyPVW`c^1U=T]Y!+U9vR%\LXI2qHQA.J&>~ᇿ(t{$M Y&:j:wUU~6Ξ geZ )LXh)+ /qcYY6:g4{y>SVղTuh6 ~Dx*.(ˋ/[,LaԾ뢲 r+%-OR¨&bAM0ywzEfѣGK)RUtKM0ϐԯyweXXIoo_M~;UA*yaۨ+ΉXx7 EEQQe𾬌jߞ<{(?wjN`b`jƛwbg "f_@_zHpJ%-+`Q6 16 qYQkWĀs Wx|rW Z &h76<>z`X^-/M0>+s_,6Fo _[(ABFZU1F1g>KA V"F %Ip~ЎCphaYO̯\{Yi8a-RbèRZ? k@(; 5ƩZOzCLݞ\iQOomsr=Ϥ 6N*gxc^1yF~3(638g`8RMR66b{Mw` [+i6zjuHbQ@(baRvG}59a[[nМ¾Vt4YmV[o IMP+F`N=ΰe:;;{&M0taN'bSjݦ?(ˁBN[W+%cƌ2hgBnTbPL;N:3( Ç!/̝0 X(CC='n},7lߝu3xv.FRF60F@+h9 C?Cazb8V>Llھ8[gXG0>i5a޴5㍱ pqCHd~ꩧ-qDDAd5V]`V,><xJ{;1i9.ĉ-"օb`ǟՎ2\$ IZ-( c͟-zbW Tݬiqca נּ1IH.2Z^ X?4J='9c") !\Wc?,vWQ=> BߕemQjc|F?0|.ۛ-HhӜ8Db%,y.~i\"JcEAmy߉X"**J2czmNa-u8!4ƻ$lS2qoӌemHg{5dbZpaxׯ}ƛ*auEϢa7WTyl-Rŗk0.D ZBgY_$iόэ/??/N1X_ኖBP*tN~2lԣ}{9cRėb =+ufchGӸz nhPkD1s!D@޶I]:Z@fꛉ+!Dz0gW>S,w:[fffƒV[JlUb+'Pqƨ3'Y"{0QJ$6gƪO|'.U=B{23p$fw~pדZRqji,XG-:A1U)0U.aUJ"_`[ |G<=M\BRTn 5 6wc>,7 wsÁS!)*T UVHhI͕ͥK*?/⣋ mNz wcc⪅\ؽ;]o;xA%0AU]fݭ*l-Ο?_u:(%D%Y&[l^o"&&bjP"tPich 4061}r(T}6鐗kn_f}}G5opŐIhh uMH@1vZeF!BӣuJpd_αcn^;Ƒ#EͭNTOE$s 畭}Aαc%*73IENDB`jclic-0.2.1.0.orig/dist/jclic/icons/jclic.ico0000644000175000017500000006117611377161311015551 0ustar  00h ( 00 h^"00 %'  nM h^(0`333033333333333033303;33333;3033;3;303;3333333330;0;0;3;333;33333;3333333303333330333303033330303333303;33333;3;3333;3;33;3;33;3330;3330;3033330;0333303033333030333303333;3;3;333;333333333333030????????@@@`?c????( @3330;0;30;00;;;;0;0;0;3;330333;3;3;0;;0000;00;30;;30;30030;303???( 333333333(0` ~Y????????@@@`?c????( @_???( fsL3ٌsMߠy3 pfZ @f                              (0` %YYYYYYYYYYYrY4YYY3Y[_begggec_[YYNYYYk[`go{ti`[YY Y"Y\fv{h_YY>YY'Y]ir`[YOYY`qsa[Y3Y Y]nwbYYYK[gq_YY Y Ya{h[YSY=[k~cYYYayn]Y]YYgcYY Y7]mj[Y=Yb`tv`Y}Ya{eYY YeiZY,Yeq^Y`Ye}bYYeeYY Ycxmb`wj[Y2Ya{}rje`\Y[lr_YdYf_txmgc_[YYYBYYgbYY:\frkea\YYY^Y(~8~<~YceYY Y Y_^[YYYAY~~R~~xYm_ui[Y8YHYyY`Y'~6~k~~~Y9[ms^Yp~~#~X~~˭~%YgaY~%~p~~ڹ~QYccYY~̭ˬ~Yh_ti[YC~ŧ~Y2[lu^Yy~˭~'YfbY~P~SYc~p`Y~ͮ~Yb_sxlfb^ZY~ݼ~Y,[k~rje`\YYYjY'Y~ɫ'Yd{xmgc^[YYYFY~I~ZY_a`\YYYbY(Y~~ͮ~YDYYY{YAY~ۺ~~~|Ȫ~%~?ٸŧ~N~~ϰ~~3~ںط¥~~~u~6~ ~˭~~~T~~Q~~~j~5~ ~ ~~~~H~???????( @ YY"Y+Y YY YHYYlrkkYYkYYY>YpwjY~YYk`pYY YbpyYYY?e|YY YqY`YMl`YqYxYYYYY!ljY>YAr}YYJtYYYEshY$Y2pxgYYvYZYY}pYYYvY(YYYYolYYwYLYl,lll YcyYYY?YIYl$lclllY$llY,ll[ll׷lYyYallӳlYYlllTYTvnYlԴlYinYCly¥lYvmYYY*l<l*Y{|{lYYY^Y l llmY?kYYYnY,lֶԴlYYDY lhlll'ϰl<llֶlllTlllll[llNllpl3l ????(  @3@ fZff2f3ssf3ٌffy@3ٌffff ?sffffsfLffffMߠ pyrjclic-0.2.1.0.orig/dist/jclic/jclicplugin.js0000644000175000017500000002175611377161311015517 0ustar var player_files = "jclic.jar" /* + ",jmfhandlers.jar" */; var player_versions = "0.2.1.0" /* + ", 1.0.1.6" */; var author_files = "jclicauthor.jar"; var author_versions = "0.2.1.0"; var jar_cache_files = player_files; var jar_cache_versions = player_versions; var mainClass="JClicApplet"; var _info = navigator.userAgent; var _ns = false; var _mac = false; var _ie = (_info.indexOf("MSIE") > 0 && _info.indexOf("Win") > 0 && _info.indexOf("Windows 3.1") < 0); if(_info.indexOf("Opera")>=0){ _ie=false; _ns=true; } else if(_ie==false){ _ns = (navigator.appName.indexOf("Netscape") >= 0 && ((_info.indexOf("Win") > 0 && _info.indexOf("Win16") < 0) || (_info.indexOf("Sun") > 0) || (_info.indexOf("Linux") > 0) || (_info.indexOf("AIX") > 0) || (_info.indexOf("OS/2") > 0))); _mac = _info.indexOf("Mac_PowerPC") > 0; } var jarBase='http://clic.xtec.cat/dist/jclic'; function setJarBase(base){ jarBase=base; } var useLanguage=false; var language=''; var country=''; var variant=''; function setLanguage(l, c, v){ if(l!=null){ language=l.toString(); if(c!=null) country=c.toString(); if(v!=null) variant=v.toString(); useLanguage=true; } } var useReporter=false; var reporterClass=''; var reporterParams=''; function setReporter(rClass, rParams){ if(rClass!=null){ reporterClass=rClass.toString(); if(rParams!=null) reporterParams=rParams.toString(); useReporter=true; } } var useSkin=false; var skinName=''; function setSkin(skName){ if(skName!=null){ skinName=skName.toString(); useSkin=true; } } var useCookie=false; var cookie=''; function setCookie(text){ if(text!=null){ cookie=text.toString(); useCookie=true; } } var useExitUrl=false; var exitUrl=''; function setExitUrl(text){ if(text!=null){ exitUrl=text.toString(); useExitUrl=true; } } var useInfoUrlFrame=false; var infoUrlFrame=''; function setInfoUrlFrame(text){ if(text!=null){ infoUrlFrame=text.toString(); useInfoUrlFrame=true; } } var useSequence=false; var sequence=''; function setSequence(text){ if(text!=null){ sequence=text.toString(); useSequence=true; } } var useSystemSounds=false; var systemSounds=false; function setSystemSounds(value){ if(value!=null){ systemSounds=value.toString(); useSystemSounds=true; } } var useCompressImages=false; var compressImages=true; function setCompressImages(value){ if(value!=null){ compressImages=value.toString(); useCompressImages=true; } } var useTrace=false; var trace=false; function setTrace(value){ if(value!=null){ trace=value.toString(); useTrace=true; } } var authorApplet=false; function setAuthorApplet(value){ if(value!=null){ authorApplet=value; if(authorApplet==true){ jar_cache_files = player_files+","+author_files; jar_cache_versions = player_versions+","+author_versions; mainClass="JClicAuthorApplet"; } else { jar_cache_files = player_files; jar_cache_versions = player_versions; mainClass="JClicApplet"; } } } function writePlugin(project, width, height, rWidth, rHeight){ var w=width.toString(); var h=height.toString(); var nsw=w; var nsh=h; if(rWidth!=null) w=rWidth.toString(); if(rHeight!=null) h=rHeight.toString(); if (_ie == true){ document.writeln( ''); document.writeln(''); document.writeln(''); writeCacheInfo(true); document.writeln(''); document.writeln(''); writeParams(project, true); writeDownloadPageInfo(); document.writeln(''); } else if (_ns == true){ document.write( ''); document.writeln(''); writeDownloadPageInfo(); document.writeln(''); document.writeln(""); } else{ document.write(''); document.writeln(''); document.writeln(''); writeParams(project, true); document.writeln(''); } } function writeCacheInfo(p){ if(p){ document.writeln(''); document.writeln(''); document.writeln(''); }else{ document.write(' cache_option="Plugin"'); document.write(' cache_archive="' +jar_cache_files+ '"'); document.write(' cache_version="' +jar_cache_versions+ '"'); } } function writeDownloadPageInfo(){ var pluginBase="http://clic.xtec.cat/"; var pluginCat=pluginBase+"ca/jclic/instjava.htm"; var pluginEsp=pluginBase+"es/jclic/instjava.htm"; var pluginEng=pluginBase+"en/jclic/instjava.htm"; document.writeln( ''+ 'Per utilitzar aquesta aplicació cal instal·lar un plug-in Java™ actualitzat
Feu clic aquí per descarregar-lo
 
'+ 'Para utilizar esta aplicación es necesario un plug-in Java™ actualizado
Haga clic aquí para descargarlo
 
'+ 'In order to run this program you need an updated Java™ plug-in
Click here to download it
'+ '
'); } function writeParams(project, p){ if(p) document.writeln(''); else document.write(' activityPack="' +project+ '"'); if(useSequence){ if(p) document.writeln(''); else document.write(' sequence="' +sequence+ '" '); } if(useLanguage){ if(p){ document.writeln(''); document.writeln(''); document.writeln(''); } else document.write(' language="' +language+ '" country="' +country+ '" variant="' +variant+ '" '); } if(useSkin){ if(p) document.writeln(''); else document.write(' skin="' +skinName+ '" '); } if(useExitUrl){ if(p) document.writeln(''); else document.write(' exitUrl="' +exitUrl+ '" '); } if(useInfoUrlFrame){ if(p) document.writeln(''); else document.write(' infoUrlFrame="' +infoUrlFrame+ '" '); } if(useReporter){ if(p){ document.writeln(''); document.writeln(''); } else document.write(' reporter="' +reporterClass+ '" reporterParams="' +reporterParams+ '" '); } if(useCookie){ if(p) document.writeln(''); else document.write(' cookie="' +cookie+ '" '); } if(useSystemSounds){ if(p) document.writeln(''); else document.write(' systemSounds="' +systemSounds+ '" '); } if(useCompressImages){ if(p) document.writeln(''); else document.write(' compressImages="' +compressImages+ '" '); } if(useTrace){ if(p) document.writeln(''); else document.write(' trace="' +trace+ '" '); } } function writeTable(w, h, nsw, nsh, s){ document.write(''); } jclic-0.2.1.0.orig/dist/jclic/jclic-aqua-icons.sit0000644000175000017500000000011711377161311016505 0ustar StuffIt (c)1997-2002 Aladdin Systems, Inc., http://www.aladdinsys.com/StuffIt/ jclic-0.2.1.0.orig/dist/jclic/author.html0000644000175000017500000000105511377161311015034 0ustar JClic Author jclic-0.2.1.0.orig/dist/jclic/launchApplet.js0000644000175000017500000000120011377161311015612 0ustar function launchApplet(url){ launchAppletWH(url, 788, 540); } function launchAppletWH(url, popW, popH){ var w = 800, h = 600, x0=0, y0=0; if (document.all || document.layers) { w = screen.availWidth; h = screen.availHeight; } if(popW>(w-12)) popW=w-12; if(popH>(h-28)) popH=h-28; var leftPos = 0, topPos = 0; if(w>800 && h>600){ leftPos = (w-popW)/2; topPos = (h-popH)/2; } window.open(url,'JClicAppletWindow','scrollbars=no,resizable=yes,width=' + popW + ',height=' + popH + ',top=' + topPos + ',left=' + leftPos+ ',screenY=' + topPos + ',screenX=' + leftPos); } jclic-0.2.1.0.orig/dist/jclic/llegiume.txt0000644000175000017500000000064211377161311015211 0ustar Instruccions per a la installaci del JClic: - Descomprimir el contingut del zip en una carpeta - Crear un accs directe o una llenadora per a cada aplicaci, amb les lnies d'ordre: JClic: java -jar jclic.jar JClic author: java -Xmx256m -jar jclicauthor.jar JClic reports: java -jar jclicreports.jar A la carpeta "icons" hi ha alguns fitxers PNG que poden resultar tils per a crear les dreceres jclic-0.2.1.0.orig/dist/jnlp/0000755000175000017500000000000011377161311012522 5ustar jclic-0.2.1.0.orig/dist/jnlp/splash_author.gif0000644000175000017500000002052411377161311016070 0ustar GIF89aZ33fzcĕ3ff{0v?omaʸ΢o)KbrdڵcD]֜ޅKyukާbǠC\s֓ {؂dɵmϘխV|4ЅŭvkӿLu' ߼_ٚfa vDz|輥K~3ըgԍ’ ߻)YkςᬗǬZeHrטϥοpǰz$6ݣϿxI1|ѓ㯛9QS}+$Ds޶۝lƗm i˷SkΌ8kRmr#ǚ±}BזRŵBs̙eZ|qB!,H*\ȰÇ#JHŋ3jx1Ǐ CIɓ(S\ɲ˗0cʜI͛0ɳϟ@ J4΢H*]ʴӧ&BJիXJʵׯ`n KٳhSM˶۷PK]rn޾ 7kBnj̸W 9ϙE` Er̹WUAiDlɘ͞c^ JMÆ 0Tqȓ=G.Ú @Aqûd %*O:0e,2UhEwZҝ Qj1C߃T)-|&"xg(r&!Su '# t]ܙ␁T$3L}0 F#Q0a ctTa")w8HsT!2lpa <)oXwZj 2&R` @42OƝeRoUKq*g&Twi@jSFчb:`vd:SJG P@W^Z {ց I ;Q2N[ݟ- PYHCv`.p}j܉;EzoP*LO& )喸^B C F?Bܱ negQLXъ$ ˜">Q @``M`hR$|Z`!6X}&=]≅0H؄<"qLp렀T+lM$<2'4Ygo)/݊"W 4 Ϥ}0b` 쳇`(~S)xlݨϙ.&AćkZHO}r rF}o;'YvTv%YNEg (K1,&wzW. L%60" A9LLp_.#0/%` `px(SUI.WB%|xu(X1Xbwb+g`X8OrNQ}E9FV =. ~&PQÐyd+Б"L@; ђh Rk4$4(h`qD#b1A, `2x\IJ]4e#)Uf8s*LV8C@:EH̃< Sr36lx5rgit2r&" yӞL>YҢ~$\#f)#A;І恞l&H`s]F5fH˅ԡTi7!96MN3 e T)PM6)IԢT-aPN?xJUUxQU`j8 Iz֩t*"Sp;(Yr*ȥ5a9;j־4`" 0Z@@ü%+ZYZ+A{.Y61OQچ^K[MR/jZf3wPFi>uLmoe$t<ꜙB4(Rַi.[7˔R`^.0E8L#yZ#.:[Bʶ^-{ԋM RpINxM2a@4H)tP6X~l`O{e!4qZ'FJEQ! =4aPBLn_(+I;?lLb2*?Y,Z#JnŬc;C!f9}5SJXe=:.=[aFO:FlLJҘFtPkXzN~\R~Kq}1fQNεU S<@.p嫧`[A<6Ǭ캘ش9聯Vm(fD9٫)*Ph|u@QG dD77ђ:ʃ{FQG]R]c$IrM-xAci^tbc<^9JQ07_*Wz<1* ixCБ Gy0F`]],3a V8ח<0ݻ}>'k@9{Wz|؂=@PЈ}(wu W_w 0؀n4`D,?Sr p E-c Uz Xp?dX}a^xçK1pF˗*NzwG{3q }RHWhXqp X@- |wz7'ufA{S{D w0~3P x|G&z{w/6 ا}3P58:g ~CXy|'}J17F&5XV`z`#b ȂeBWkx6|nx @ kxX\c} {)#\n PHlxWXW?#xyH~$7xwt-Yg x$ad L4 Gx؋x x#~Q~'RhTh(qe@n%%(OȎoG@ UPxmȏHXh 0  L[ YMcH"p M p0 D\2"9f7(FYH` 2鉣 [PW98c`?JYP`DI N_7dUiZaq)AAٖ gU%`;^94Ȑ!_[iyiscoBQ?A@p=P9ɘ\uCwy%W=p7`sɕuigƛ {yȩƜ͹i99]W *)ɩayI oz"C빜ɋI)c yty"bٟ  9Zy7NP ع:i)n Z9 : %jf@B*4ʟJ )K1zLơGڥ6row*u{zl~ʥ5_:3&4ӣWij&^*}KpKpOjCIT!*J4*PpȚZ*0A :*)*"=qʚp1*-a ʮ;uJg*[*H.kbh9עj : [[۱|afY :Bd6[Z/<;Փ*xc(IګC$1`t{ &ڵ0d\٭j&IڲD#Pu@y !i|;۶ +K k d:c+bek'Q >{ۺ#|ʹ #*JR`۳'(0K~:z+ỼzO&[?u"k {%IՋJkKAѽ\[K@"1Azj\ھU֫۴l[#UK lK@6éd3Q :-l#A󊭎;6{ѝKi)/;ę;#@[TRL#Ϲ; I{˲{Ldl4K VR@:&̾{xz 2 .q5UܷsdtŢ 1%8>5+!n¢ /Z\*p$䫁T9S_lc<:(̼Q<οK?ʬklu\ 06ʬq%*6[S!4ʽ7 a/Z "q MŹ`zJ}Ϧ+ͯLͅE ]<`?MKm5aѪ6C/kWB Qmӿ#PI=[ qM|\%[+5M7~lLN1Yv}L4rvԼ{RMJ V}t3 ZJ1\c-j=8јȬ"ӪA;H\lۄ։yɦݸ 5;Jګhyֵ}VT] ,=ߜ-m-Hڱm~|6P3⽷q'\;(&̂ ~/Ͼ]F{܁޳ ,%]՘ڍچ\8LmCN<>  ^`b>d amԬHJ,"5n{ 0YiZh|lF'@,JxY>^Ny=nx=$ įN_ B>^~p.,]o^f}:NU`%p~>.pMJ1 b )C?k~n3ON@yMw=!N nj02?4_62_ MG'O*+?QPR?T_R/> ZC?Ȩs;ͮh/Y/0`ogx?k]2A$0وL;~}y0Lv~ˬI.-._-#ML~ 7N(+S(F2ą30"\ @Ƞ1SOD/X"AA"|-p*24 SPNܵڳVZme$XUd+t\/NhMRZŷD <фH ~]pݔڥhSljCz'F^=8r̸Z(w2Tavt7%8f -n)[2Q3o><x$kU^e2u9NeZ8[ڹhH%+Nh6:aWNa$ J n离n;oo!b//.oƺ/?v5G{l>"0 H!tG'tOG=uWgu_]*?dUAl]V_Rz1 A9<z>{{1pα?xE_/| _6>>i@͟`8@ЀD`@ 8EgpjU} BvU$r߉TPjwpY`ya e8CІ7auCP O8   TA@>`\qPhex0F ьgDcոF6эoc85>(FtND-nB/ "Pt$,"B !$D9JRҔDe*UJVҕ)pBH!H&3K^V%TRbDf2Lf6әτf49MjVlA!nLnvӛ$9NrӜDgęNvӝOzӞ\wh@$@P&1hBņVԢKB"bԣE4."!EiJ:} UiLeN /=LuSժV*inJ_$>Q)L6թ) WA:v  A0"3%c%aY)rU}+(0:׹BQ][;<@/K售ZU2O]V EUy Qȸ"-"dUS"DY4A h#v;2I~@-U 0]mtZ5 $[!Gk]V!HrF<7! m:VTc.u[wBJ Rr3EBHu0~+6% @xGĥ+ tsF *ա%Dɶ {|/ zї~7}zշ>w} {׾}1{}QG~|7χ~?}W~}g? ;jclic-0.2.1.0.orig/dist/jnlp/splash_player.gif0000644000175000017500000002301411377161311016057 0ustar GIF89an33fy\ӿ3ffraZ{0>om>խq"bzԜadޅDžucƱDJxtĬtʸ|({o̺կiތ]rk_M߻ǚQvܫ֭:mrɵV|0qܷ~͐Yulma yu'WkcأưyϥkfAkĕťxٳ؂L~3x֖Għy,8ῢ[ŀ$W˟¨nDz|ÔۨCx֟Ime{!νSޯkȲv֔|6C^[˷ŌД2c!,H*\ȰÇ#JHŋ3jx1Ǐ CIɓ(S\ɲ˗0cʜI͛0ɳϟ@ J4΢H*]ʴӧ&BJիXJʵׯ`n KٳhSM˶۷PK]rn޾ wÈͥK,$Lh*3ƏC%WM:,*M8QT ҸsGRO‰ZǶЇ ώO"Bq@CӜSу#GkT6lr {;p p|W{h!r&2T0| oug}`aA%YጸixZ\xxb5t "&8E1~G㓔h{lVXqE" pp|q_~m(R!p&%M,\|ot|Q \bx&w\TҜqF ל3]™PC}v'tPʈ))y1Jj[D :Ae@1dї1ۛ&koJ9 |p V`jžƃʰ*kU„@{Z+xƨDrljǪsT/}0)86%?eꛢkI.dwHZ̧0`"zk&׼.YJ)HK@kIl}><\P3K) npB-kwXpIh4Jyp 3~*fZd<%l+t'޵j-GaW~(x'oZ#zKPn"a~(1 hSgFn߬WI8#߮<p&( _Vb`\;)4!SoH,,yrJ`rv/%ξ"80"BuBrJ y6܁K gARAw'((4:zd]VÓF2 չ00&: P*dA! G2#ҭygځ *'EബH/;CD1] #`vd :Ca<I"`LB HH()Ap4+|AA ڃ,A'r@#4c$\XYG-$HX^f`Y8€80!p.st ` a^z3UHatR2AUc4%@%$ fӟe$@R:'Y W,ND >k^n׹g5[c 0ofh033cͯ~] &! 8gqC؛3xnX XkGo0s~D`b4!y{۴d@$I7)֫Rъa'dE1^ckڎ B!rX{;)k F=6v(hQ%@ 7]:9Y x޽;\ d4`'X +6CbNMHxDzh\Z6$}k]Ly mA$ ϊwm鎡zĎ^{>&,`k>.GC,L}{>1u7?'χIgWDz{pR_3͟_(#24z 6KF Kp>e7trG~/3{iF2f^eYpwQp(ruPl1-gF-}J5`xqh'O>q ~T>P~0Nؑp83EQTkrd@zFmpЄN(T ,@P&xqPedSm9ئmVg3@Ȇ>9,`0sQ o`xP  yȇ44MXooڕwmi,0xny;!@Tn9HF9q7r@iQUpb`~,  Jl8sxPW#ssK=wXc،Q7P=p@ Erz艉Cusu SGv|JtnAp X;9e0Ac}Xww(t,xW"y^@ {(؋ThH xKtbAX>iψGD8xhd06xR9oPw{5X[zssLp8C$h`0E,9& D] q]E| crC-'#K ZOyu Wi-u}}wR~4KKh:iJٍHɛ@`U)WA7*sƌi`yj6.h0wP+ syZ⇵dWy`83!0 ْhnUfpf ]i䊭 X[Lpf)qIɍMQYR8P `O?q66RPl82 ,9\^北(AmpQ9 ҅`X*`Xxq/+3V3@P^H_,yIɟB*cu J9azZCsZZFjt0s%h.$Y)Uo֓@ٜ1FfRYcՙKJutp^0XxXD5Rç-Br)WY9\0\J5yJwysbhj AwGlFn^q^P-A2"yHbu]܊`Vt;CQ%`aePtaDwvwKt˄%xC0U&l c;>2x7y۞7,N6Ǣ%GgH Nd '0NjX0fgMjPd)|Zt,r7C+ʶs6r3frf[TaRڇMHr׳>*V lVVc[g\`aCIw+zkȸY)ofƷYKM dMր ]+ri[K pNa[g.ڂFK B`uUW6PUa(}˭:{A! ߇hg 믖% HP+@Fi ۷LP6tڱة" i uHrxwtk5@`$g qciU @1ħï Up5<@A}'g<ǗenP\ J%M0g9t~ܸ@UȹZtCIik,k{3@,?a<˜.m?˴<9%w˨̻!,|X[j|<@,FKĽ٬ͯ y͹ [݌Θ y"P!L!P"@V" 3p?p/="!=]QE$} ~ǫ !:P;; ]qHJғ,0y;M.#`'HMf-d}CfUM,8H+q_|}?(A`ֆ@,` >u xDז}`!!;MMق@8nj v-ԓm= = %:g%,M@L|>̖7yzW\ p>-R~B,N.3L>R{z `w=@=@}!D;)Ĭrڜ~"PH%@nCa;]GS*,b-!@k"pN.00^Bp?mi3~MH4 * <o(DpANBwyE !Q^==n%!Nc.TMV֜ =`0aB@%7W۰]DpAD`0/J LBpVO>" ]utNgOgF^K/w2`cś[RvW`=퐿S np+?0?}` s&[H@ɿӪ4 Dgoڟ|l|C:iTDPB >Q"D - \T=~RȎ!D$*]$SL^-_1 7 a ' haD??* [^P jQ#=)GHJR,1(5؅6`KCe$B[aE@VRcJ3 $>aM C+3TUP 0v .k54+3\p7I PBTT7%vx GE[8uWN=8M 3 ֆQbº$bW>Uʷ$I"1>ϳDIZ`W$Zi]BMDKNkATZ3ۭh[ I:W8N;l@AE:ң #;&;ir2ol3d{Hf "nM +ry_IqZ4uSF'ʢˀR\̫ 0pݘ`IS&;wNb F<8`ɮBNٛJGw1<.)dV&hiO}N霑amJ+r"a44e<HnRh-</Ы' D r@ ۟G()P; apŨ0([`Ƞ(2)%`v7< QĈlpT|:L拉rz i1 xB> p%?!)UmAk i lTHÙksdr:yYbdȻY0RIWS([QHID еk%Br1@Pϙ"VG+vrHȓ\Jbh"jɠ.7yb!8Hh@$$#]4. 0ΐ$9G-t)إB"ҠOdyBvw,@B!>FNX؂i!".0#@'#vđI$eb@0QFGu$$=Q>L'p̓~(B9F5sڑ%||N9ƅ褨c)Į봖;ô$!za=Oa% L;d*Q>(,5(t Q!i/8&. . W+p@ t DL@K\ Qhr؀H ²nvZF0b֚׹.vg۩ڰ#,fB;C}Rg>3YBXS%xXm.Եs :w,Vg!["hA  0vO(J7ф:$ 4 ?"9w6Ek]i9#3JΉ˒B8^'CY RnB F7Hq9N4yֳSeiP8Ԭ泑F`O ,f=l) t陁!$'43{l㑭3G!:Hm-c 0?L ,=# DBb')0 =ԳJ9 !%Bj. (늮+0 pñpAK{9¾7YABӉoK0AHmÚXj\ZA?"kT#*iF"*4Akǫ*ZY@ ?o©xDH9s0(|C>xD8k Ac̘I8I >BL$F* AH(dɛLPdE~,'I,Wtɛb ( /= 򒨜ƧKI <RD z[ʮ,pʱDH .P!v2J.EL\AB !,bË HlJjTЬ;K4lL<%?LMMHD dXKr"ŝH5:lSUS ΞcDEMGTaJKLMGTO=AP%DN5jDU?R}Ÿ<2[<+H轓$UWe@_eggi9jVk m[QoW q5htUuevuwxyz{|}~؀׀;jclic-0.2.1.0.orig/dist/jnlp/splash_installer.gif0000644000175000017500000001740111377161311016563 0ustar GIF89aZ33fy~ʵ3ffӿ>om)canAϘʸraǕbDgԍJxtdbז\ٳkl{0ŭu]BwtmON բV|ǚ{d輄Ɨ; 9ݣlxe֮߅،)~3ςS~srېfƯx۝ܷKu'Kǖc淦$kZÔZ͢4u֒a xɳئٚˋ{Ѕ߻BޘLƵcmuD|+/{1l䳔hZiϾA֘ŔrQ΄ׂߧr#dž~itExź~ !,H*\ȰÇ#JHŋ3jx1Ǐ CIɓ(S\ɲ˗0cʜI͛0ɳϟ@ J4΢H*]ʴӧ&BJիXJʵׯ`n KٳhSM˶۷PK]rn޾ wÈN̸cKLdʘ3;<^hM*g^Dsf .M6/@"IR>eJqv'EСߺES1QwYzTȇdեKB;J=_)eTYz]dtZl`mD ]h b(yuQpArv=h"f ]Da8QD^$ّx⏍x",Т {PAmA@3jz" \ &IvQzESd!GcRrH `|eIzQ,28q&Gf2L9o֍"}f֟$Ey2aHN@\~HIQ~ũH?LGtEEĚ*@< sĕ"f_VkHvpp fmkap9m*u-H1 PyA9[uohí& ԻAʑ@Ʀڤ, p7v),N  WDRrǶ,١d{K%B r.' :jvx.Q }*-6t^!)aX ^(zH1ވj14,u r'8Iɘ*w䊢&2j|b/ӄJ.3x :+)*GĿR)+.*l̓m61'l93@pW/zP7Ov)K>GYG)֮ube-0(ɂ"@ǸM{2(H!C>B7Av]]~2P« *x"1"\'XÑ?D`)=p`MXN=:'g?d  ]kض8f)HXŘHƀ68 #kbqk{tY'Rd@P!8H@ 㔧lL F1V򕰌+HD4=bYc0 L2W8r#.li<4pb 8Ir3B$)?KMŢ>O~.bn;'P*ϓ D'Jш60P%?@XP|1xJ VҖ0uiDct4HeRp"hze2HMRԤV(-pS|I)L-7fj(XJֲd-V59Uv=!v4\ᯀ `Krlu[#$Am@$^'fPEa7Y6T]atEBn$κeTC+Z/UEP[ Axp֖=D#xW(n[i{ܾ(L tHH !uz7&$O;^4Q_mz^W/)%€R0_+0UsUi`:{5i)p3C¸DXn!/Iމzx ^E00~v$tx!x{ AH8ƒ9~rH.EI]0T&uRŭZثn-c] ]jH{ܖ8[Vnyc&N~1-揔67VVK{6~: \SUY Y83WY(A \_k,)Fp* @ *۰n6['CExQ`<;DO*tSYhY!H@h%.E}o|;^8G@&pk}'561lp2b@8,z0t4%nQ^ Pg4Mp=K~rsEH? 3 |E/|s ^OM~(Lq E.s ;C=@'l»wӨ%R0 1xk3(m3~oi/"owWZW> NڧwJFiӈn'24zj|=_}L27=~3=/xϣN>̾y xgVsҶqmz'y|'tKt05R}7|-D{V|dgvhGxG}RpxP&x'~A|W ;PWxnp" (`$x|9OQ7yH"52%ǀ 6&Nx<W{*0 )O'zVp]XxO8LI ׂk >oL8tHv|Gv@(M pOK}XqSw~Px_؄P7o hxbrHC1SQ(}kH(8F_qXȍ^hkH7QOȎ=Nd8Ѹ؏\)I CYѐ )y:(yC)/U` `wP%^ C0!䩣)?HDzFoNPs,P:*\PtYJPU -ꟹaމ&BYqjsjK}'PDzOЫWjwj%uO@e)=:lZ#qwpb`zOšUDVQO}ڝ:j G ڙuJP n@*抮ڰŮ*[Jj[I ⚰O -Qy $ J˳![Z(ʰ*+0!IlJ0:Pk"ѱɭE]ኰD{G+,ɴM{#kJIٳ^!%[F{; &ᴞ -z;k{iJB,vZ{ C;Vk[1II j"+k}zc+K6!)p @>k@w'K_+{@{v+0< ꥺK.3Q"乾4a9\ g9D(Hݩw+0Z̶7a A\.ÛI(l%;phUY2<q0Be,7Hp^&!5 溨sJf Vr|IU3< P; $`LLoɥO@g;X!ͼ<-ݝ/M<$۬EǷC%]'J p!q5}-[KzS\zL:qIK`H ָh| ZEIiHQfpvU؏ .<`m%Gٕ-RmY}H  `HMڥ}4ׅK-Fv=T}ۿ=AǮmܮ]M`ԣ%mjݲɽذgzށM `jf;L1ކ=w- ==:16gn>|9߅+m%.lpL,m0mު ]-0WnH\q-jUӻm&Q{ a䱚d8¼|6qʜ[1γ_n[! >ś0k<Թ..6al a稽V|s}.6ީ)eAzޛ]Aޙ+!EG]̙޵:,'ke}(1 ".ࣵ͠ᾷN 0(½7Q>ΙF9޸:~}*N뙎~iݿҩ>N  ?v)zЎ3޹\#+ٯ[U/ߍ] /Dzl;a\\.AD !n(_#M$!}i̎.}*o=։#? 0tO+oy`d+L*] &ۮ l>C?a_׵8akߙT/ytkߝp<aۤ%"@@B >萄 D\E4tC %IdJ-],(@L5my4ذ@P8"%҂-P>&BU#*#FFUt0ESfZmݺgPF$}I٧mRK6Ƒ]B< 0J>d5 nR/_^+NС1*CÅ+6pgi߾}ȢEF Re^ظ謪]\p6l}]{ޝn6Ť+/W0&bpc,]`pz_J8@3 $ӄh.-3NZ8"\&B$"AQk1$k S_0% z)\qŖFH#],h2xH,)njv& ~j&tH0th" Z ."[ʅ= OAo2sN5!gRQG[H&.?1u%M%?;}ILROE5UUW]UW_5#MV[DV!1^/[%0X0/feXi\K [6\q[<&n-q}wcu]xWz]h%)`6a=C'ӥM߇/I-Xv%(] 8 ,؊& T(.dQKc]`!dahP0dDq#"H4AW ij1gtK#A[or;TD ˂> lR{$*ŗs#b(#9l{!4Oo,J2 (/: ͢"'R\Ax uAJoF`+& j}->'CF||B(ЛIN.,\#7I>7ܘ NVT#@ɤ_NOp|/0%_-H/@7M ,;$?P @ނ%٤@v_4 l'.[`;kTG/U6f4A6ӲvDӕl67J,@_cNLMO%O[NZT$y H'j 3@coJ~vf` Ҝ@Ig =; G`V@l'=-50ll'O?Z|hfp0:>>Ȅÿ };y x1'^wowioab{wpxz޳h`BvϿo&w Ի*PʗTMKv-}'iOBëa'c?~g@&B[I>?N`( ]w;ۉ恐|8BJcV,e'Co|?b%qɤ|$_$t.5>"d- zboC2xe&%f'#A/C@\XJðg/@TR%2ZHR5 }܁_x ,/={o$M(ɺjXK-d'G%I3 W' dewgM~k)0/#ALv+CZvN%M(,-.m_j,i?=!JUDL4S$7G;G.aytoB$b?_>ET-J~-6Rs`-U-tϠ/B&onn.y[9(ѽW[H۩쫍7 p_d-O5M-Cm_D:Pv24${|%?0b|rvq57@BNCu0^LNϿ|ET {oK:H*]| vSd]OG.$tG@Q*oA{.{Hu*.c'LK+],S4y A^P:U'ˢ{"o! p}h;Y[-> Cԩja؇DF6 ;tpB#TMGo*hgbٹh Q Įh'[iPև9_UsB6@$i'k bo!} qCqC,R D,)`|ڔaƏINN ; 6eӺ$yBvu-:9'zԔڔxQCSTF:DTJ:VǞ˄W'Nxbn~lcB)s}i*U1[ڔuEW'NƢ:JC0NֲSY&;Ae~Gb*׮NNY8.@8/d'P7>}v1Ր~Ɏ0S S?3j0 [Sx`&Z5 das*d|D 誓^o!l(F~tk';k4xHsur#;9,PAY&^;mIəg~zK2ɓ^;98V'˖Մr1K N χ NZ?#/V2*$L~OB-Ҧ#vIʨ0Rvr(zyD9o!RpO?'u\MmȕO+Ddy6S~伅 s "JFB^66h@nbG{gEv{Ru sȗ,nb/m<+!\N&PԆ(XKϋBa@Nuȯr{vB|VgTu.&~-:|:W"+H,;(bY,1.O$9yuČ H/Į鱸%N~V3Rdvo6{nwkό|quNČ(U&("Hc31yn'$8_x:/("B2j.ެW>9%|JP:_jm*BCnbSN=EЕBr?CJ_3:jFב+ONki*˓)=НaO4)1X.7.#~Uy탢'\a8O~*?VǴWpaHӒ_V䇺E R3xi5V9%v J;3p#z˓Og!JU|.QM}gKօ/.\ӶkmgG4V'{E2Sh.3+zTv$S{]J?U|d F[쏉N=dgskd2ُ̥Il~oG[{}ؒȧɧLRx/2\it3Kr|3ʨɧL&زMCS҅5b/26:X/5p )A+.O^ kn30s39T7>/`tJs+ Cv : H ϰd{x_x|UX(mt;v Z]?n)'E;{ !l3%b)鷟/ $=8lxJ@,PjCN wjx-v|w hOnw1NTZu_掂:cYAz{qe{(ϱ]ْV-;t(PO珘L< 9'¸=_GDKo)ϩ_:$F;J=O6@7zG O_7u4ăaXy/~ZD8@q+Xӷ1y{'= sr @<0LW66pK7wȱJH's;8ÒZ 1)}#.ͳs3eB*D⤸S\ ;ߋwWpewFىv䷕?P?mb( 6I#%6Щ@#U+ Y,`ߞ+ߵ-VJPŠjs^3mO~ -*A>)rdQGz0*⃩Ӿ,tRA%z94_& eJ-3y,qP3*!;1&?@r#_]_ l69 )es_ 3Ke:Yl 6 <]p?0;gj?%u"E%%*GQD_̄aw_Cyп:;]16Pqdy0<^ؔ*grT1o׻8=w@}|&*V٤[}ouH܆qЏʏ=3{\ڼߒOV^IAZ~xwZ)R o&2s4ɆP!;1M< 煂'v+S a3akH'|Ngπ;1 ?1,ďG1E.p4wĠχVp#<$=2- _;^9z!jnFƦVWU!"S3QrUF7t' ټ=3s KKZmeeV[ZZy%Pm2ޮW&ZbTxgx]J߮RFz)Ae>"0^Y(?fgt?8j w.   ?ZUv|b aEɘ˹y#T!3E_^҉X踯w]45@-OnUp=7ō ӂ+x+n- I&n6UŌG>~y "5Vk I"Bp `𜅻Q ` ;ֳtǝ9qI%uQ? pm7&Nr)uP`\Tua!U2 IM_m|47C:RFd@HW!ҁ! Vu0EOw1li!L CRhET|r/1ݿ IvB;ATzK`H* ^U^| "=/1:38Ǫ6BHp4, N"#|nB bȹi ZQ0zJD[ U^We=\G~U~C|OYcA=) n [l *6)@N]Jh{k_|4 {&q%4؄?%_ 9]-?/D>C)?y{#H1&ɶsB-KURpRu˂KUw'JcaA~C.ڱtg R v\MfTu0{uA$9x1C6mq*Y6҉.vAI^o6ΒRT$, ^g(kRh;ޚO "f0_*3JӠnJ~XHhv+6Fs ,u$X'IENDB`jclic-0.2.1.0.orig/dist/jnlp/splash_reports.png0000644000175000017500000001122211377161311016276 0ustar PNG  IHDRm#sBITOPLTE~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ff~Y3ffׁ݄~~{wurlifc_\Y3ffVtRNS"""333DDDUUUfffwwwo pHYs  ~ tEXtSoftwareMacromedia Fireworks MX*$tEXtCreation Time09/05/04wIDATxkC8@!)C ` B–]:4̴䇞L |1+]Krc̔Ϩ @›R 6w7W@Jxyx!NF7D ^#ejulCH~ vRC-VC(%l6W %b=\]\=tc)A!e̬量׷U);هk B H~:}q^!%oVpwk4TPF6fsEz7}q,{J9zBSF\kw4s~[ɿ{UȔ>3jG!D) 1J's.`!?2czWr|IBq$ow)? ! $i& $Y.i& $#RMJ $RӛTyI iCQCf_ zOB@LR); $q{jR DR"e;"6oR!JHdN"Bl" I%d`yK71O#@,R7$ DHR"'H7H7eBdzO9e1Y >oR! `yyQz R"%{B {E/!-.!22L-[AꝚXy[峷6 d`(N|hE-z&{EQ[J H ~C!EQd  !$;;h ί($o|qn/zB~$,Io7Wg_H {xA&}x7!C@R=; ) dxv^E2\d!e !0AhC&8 z-!e{}ZBF ¾  R0@H! EQdQɟd62*kE dkptHY4ys":( R!C =W'2DoqR9.2.iYu31(+!6]̶%xNU8/&%MWBRmu tiAHBM $O!嶁FSs~G@H~BzK $S!ݖmۮ愽_K(fԛ*7AHNB^;&[x!_`0G(DGH,bi⃯QīIf<| " Y8惐\4"iJ-Vwql?efˉjuK;}hqJ+ ]HլDǶS 28Rny]%ܴ5:]̅Hu 3BS;l*=2B:!S ԒDfP\H)tT˘ a~ms!̑Nn"DH\JpY $$eɘL,"dF\}@YuSd&IHʄV<(5'*2B<9z!li_f㟔p4o3EyEf-ړ2z%BB;Ğk7 E'ľ?!j!P Q aH(0a;뤮1t>3km a粘BdB0,1yK a msO@HBgvhedRxQm%@]'^:ATeN&&{ ?4j BҗMK1DZTBA?eFeG"gMFC_h!|F"{ʪlY! Ixj2 Bޗ|ƶYE cłH܌NHS!egNqZ$'i0JPźP8!LU'7tiR|Z!̕Hᄰ;6jɅbη-UwI0A_T Os71qM`_\| IP*gT-@6 nɅF 2M膮;dЍDU:Ydr6/@U=ֲ'1)BJι1y]>WfBCJ\P@!|LK BLV#d[A(Ĥ% 1T/d9ѐHZ oDOPvBJhK-'M:vDmPk: Iӏ yS}G-e>np5F2A~Tp#~%1d~lmCXE#_4].@07DBBHHeLij {aPW=/Vx%9ZvtiRpUl\x.wMf52%ポ`fpЍZ In(QdurIx"e3:N'T[F>?6cwp. %$b5 `Gg'5x%j&wp#Ewb;wҧ,G*wbvq1lCڬ5>DKmaP'ݵVF,^v_3>C1Ƈg' D)HH\dB,<N0*zeǁb@BJOp ~> r/g"lv? \RB(q| AO}f5'ꈠD!%ҭXH+Es&20DǨR"u“K,,x/ɧ ObR!@ ia(/e53ߧn_q1JA/ ]$2>n^ }n[޷&~+B/K -<9'ޡ"/l7+^ᕂG^6iuBo@2v)i{>LaZJr)&H|B+j&׳︜n]pq}vxbcLido~Z"<n83U&3?"O|~m}8|~$`7˺xμ@ Ԧ׽ο5-PPSEГ  jclic-0.2.1.0.orig/dist/jnlp/reportServer.jnlp0000644000175000017500000000222011377161311016105 0ustar JClic reports XTEC JClic report server Application that collects, manages and provides statistical information on the results of JClic activities made by users. JClic report server jclic-0.2.1.0.orig/dist/jnlp/jclic_32x32.gif0000644000175000017500000000032111377161311015132 0ustar GIF89a eyYm~n!, h0Ɋ%4/-TtX**ˀ1 -cG񭀂drH|KHTجHѩ \:%YY1a>%h;}ZC~x~ywcBS ;/; {C ;jclic-0.2.1.0.orig/dist/jnlp/splash_author.png0000644000175000017500000001210711377161311016105 0ustar PNG  IHDR~j,sBITOPLTE~Z3ff~Z3ff~kZ3ff~Z3ff~Z3ff~Z3ff~kZ3ff~Z3ff~Z3ff~Z3ff~Z3ff~Z3ff~qZ3ff~eZ3ffטϘ̙Ɨޅ؂~{}xvroykqimqfkce_\Z3ffqqtRNS""""3333DDDUUUUffffwwww, pHYs  ~ tEXtSoftwareMacromedia Fireworks MX*$tEXtCreation Time09/05/04|IDATxǝ83 b8 88q66I$|IʚҲPv[iҬk>Ntgd}*[&~?sr @ $՘Q oƦϝ>9Ʀ.\:wB&.-,z!+=7W.Lӳ~:عy{JGٽ.H)hj~zg|(E!o]qcqڽlfCwvo --^!!Tkq RIdoޠ` 0*0y N+kw!$ w,TCB[b]Rx [r~VT;*ȯ8hX?]>Raд~Ot]/o0{ly./CVEDbo{]yqv~%+CY҆k ;;Xf%ݼyI [_bsn=jscސDyonݎkHyܶZWl{6pTA˅ybv/`fJkyB_"Tqh $:jb3Sq`.C,h_mZZ'+a'l_mJw; GU:֏+:SPqQY~]mBn W,ɺ_*mE{Z]\qD&+'}/byX(Bf?9>ȷ~._e12Vlȶ~e҆SDb(6޷D}/m{@:Rw<ïmK-*6GsK-ov/b38q?'cWG}/}##fX8:H06~Nm/wVu}[y]BG78t^~7ff0!PO^šyw&N>wif>|Tq :9} T^|*͝OUC8PF(?lR8t^>Q~)߇ ć"PƈT@@ nnbWU$!a*X֯Pq]*x+]y=_GnT+81"pS-CGRT*^q+ ]J~t\6:ٵ~5(M{~/_ !jf?_?8::zɧ@CNECȧ?㧟#$P?BsC gO)[;Ͽz&Ypu~ GOg*t蕄}Z[?{~sҥt\" GrtD}Lߔ'l69'ҿ>wN1?u"~yoHYS9oHsf< )8R_Fmb}__ǧ,ݬ;O0>SUSQ;%q2(yBf$T[ r [kq!:~-ݓ8&<{J*ɡ~<JYh;Eb}J U ß+wUo9J *}Pa駄_~~J#yMY?XV*Zն?PSoq+N?+κH)7Xb_뙢ʀ{JMmq2nHÓe$Su1+bȺH(е]E+<~K̻Pf,~J=%\E 6bqjǶoT+rɥٷTO"n2s{\er`Lj8}%CS i ]KbFRA?qD4Ȣ.O:~!|O 2K?qTu3TU"y c8 7+i '$1?LT ??)EjY)atM*ᏥkccP 㧮4 ~'PMiTT59Yeh㧊N3 R}"JLGTKETknS5a/?O?fU4wE]_!oD7Q4wE]6^b*t~|qO *jdhfVm9w%כ2r]V.O(Oi^>&tHp=݊¿ʃ?d4U0tR!] /Uq?:L,egrlOWO<~\ShaxpxzTD~vB[4> M=x91^5_KNG%; yEs? zmߴLW< ?ZMo?cfEF_y2_y u Јgm?m͂vY~ѦQ}9~˲Jwe+V mU˨-Q} ~rb-Zf18&mQ Xofg^>nJy_0s55z侯o3RV.;i:BLWޞ5}tU"ƧܵjAȂGqн* PoO=1ܘC%{j2M_r\˩+ :I3djOJMkЗt<)PSoB4g̟]N=զl?RI/;ltPEv iW:PezUs|K'D-ڿ ~ ܉5mbQC\{21Qqgc EnDku6(ώSs{x9zEGϝuɉsʫSm2rK @ ]6hWdjk./?uyMJeh)''OdOj[@ -\ ШQ**Tvѩ#HSbՔo񵇂c VB' ʗjݟq_G-eo5l?9x@I?*Ud<\_Xp&(w#/#'³nƜЁ+DZ;φ_.m>b։L h=7o+jm-]"PD76M|Mi|PXw!  E3W--CuL:Q[8H t㯼]&j{p=jZ/D)㷘W=zW#H Ω/2{H xȹN̩߳g_1 VB/_[ղOO~? U96憋`N~9=jL_- 𳝜zL? ˷bu+{f-[#bw0'_ ނ-]qB#.odG׽{~XVAl  㠉Š:_"OџͲzߌO"^,SwWWsEbҲU^IH zAa|.oګK{Z(Bmbbh+,G)l 5fXIENDB`jclic-0.2.1.0.orig/dist/jnlp/splash_reports.gif0000644000175000017500000002163311377161311016266 0ustar GIF89aZ33fzǚr3ffa9kjFr#ӿ_Μ1˷cSbׁbsխd|1]Kyuiٚ޺ᬚ\֟A{mҋkLΤÔ_y,mʸP|xŵlܷߧ$:{ זQa kJμmu'輨9淀ν~)˟jς\اP Dz|ݣٳcrֲu){0ΐ֓[DĬt۝fj5ʳIЅfek݄yABR?omV|ԍƯxɵ!,H*\ȰÇ#JHŋ3ja CIɓ(S\ɲ˗0cʜI͛8sϟ@ Jѣ!y"]ʴӧPJ)`իXj U)ׯ`Ê +ٳhӪ];,۷p-[g6V˷߿Il;Lde/ǐ#su;&*J!#BLiepk#F@eJ 9Zͻ70h"ڀװ(rtN}:lc8]@F 5*1v\]~2wg6GwgjR!8wxAGr#wԐDn!(W)Rj8W1D Z,wAP@*Ak5qELaF385p!qDz? 9"Ufe֨F !ǀ- uic3RhcxeƆwhtvGd6@e0jf1^x7b\$d%i&PJIsl}gfk $%ÃzVyҊm)"+湐 )shÐw 3$ l>UΉy-+(%1H_\@,!p,;;@"#ٝ8"EЛi]837mxЁ"BXFQd?!_ |poetvcqx37 IVM`3ތWDI9AA!SF3 C0>9хo:R+[bMlx#PQE1o'g"ʛw~ #U P},FFD/=u+!+1+%8 EYD@8P 'H F8'"W@ҙ RB 0 gHX ;(JE9JȸV#"‚P H*ZX"H$A\s,"{`$0B ZH:" /Hb⟸8ҪPD$'IJZzG?_)ԡEHƙ)H,gIZڲ8M@tғJČoWh0<4@jZؼft^!KbeC&t4IzRs$8)Ε s^:g:̊"JӞ&>}⯟).!c{HќfDW:QoҢLȅ,^Ї-(LcQXi@7aLO#o/܃@'P CHa"T`ғTSgU_zU E@dQʱ;#pRy5\k[UTTbأ)t_Mnt)V`"J,fZX DTW?pue5kd}ZZVLFE̋zf.Ŵ=k #9\rs?c!+U6յnİ+$$;+dwU dH$S;YVeFEj+rwe+"3{^N-4' KjU|=k!L/VbF ߱`X#1_4uNj Ha8JV`a4PNSԕp"~Gafc@x-"A j* +2g>H?\Jh8IܫF;h&>KhƂ!}ʙCOH-|=KhCҹv3jWD$FH*Ы4Yf_5q L1$E ppn{9WtiBww~sDJ~@$ٝ "M sAI~Ah{$@w G0RVp>ӆ89 Ї0,VwSp r9;"Nu*j4h4*Ptr*Tu(phDA1QvaW8,DRp!;<0C\ɿ_k@4`fx+{pě -gOlD3odX͝[kݝab|t ]=:@Aw+I"ܧ )B_+UTB 5}V3137]81++t3~tl`:tgև}Mwk(_Nsr 耦GHFD\w HY"8]]E5]+-.~ɷ|;j4^{{Em_ 0noc-)P%T__bǁ޷yGeVPT@M8FOh.uЀxhB #3\ȃхcY/x-L0@Ȃ€T8vj6؅=y{8FEjxphŲ |ds[H}`g!wH[rPlpg~CxPYSh^瘊{X"x j@o8 01$E戊5 8xs32f>&Y(i* (>lX1.-H~CThop@CIE)]IȔM!8Pt(N0Vs^HHBj91E i@N1+/Ȁb\W%h8CR>I@Hר8XpDٗ蘐ak AiH`TrH'k('\a S:KJYM:>1>ۆb:dZfzc H`BSuߩi\ڥIJV~:~q:s u:N @wG%x)I*Mq}vssRnVpS^@&E?phSzr3R'wZGQdǪʠْ4+CxGG:*m2@P{+; 9ݩXʙ11"D*Y@4\pdа˭˨R۱85D @A D19 HX$k*˲z?!B; 2p dB{ D .l[!!lk!)1;p);c+;E-;[ۡۨDb;t`;@+!dc|W+Y;0k2 Z>Ѹs*!@0+Dp빜+{z[b밥S5[{-j[)Akk.y.ڠEa;[/@;?{ F{ %۷;[K\뭢66ϻ;/ ; ۽ ?'`;/k۵꫸ۺLl%LL;L*_'0LK4Л :l@t ,| K Bku{ƅK"%\-z\ǕL]l|K|`˵ #&5ǫ Bŝ[L*ԛh O@@%a?"?0 _OaϤ??2]oOZ=L։ҋcҽ짮}O|f}/oz|ïV;"@DP 6C .)ĘQc  ^EB !4I0b)@SL53 `SgYvpaa  EE$ .\x(!%RLR]@"H~ΉB⪋#:EZX@$`͉.'(`dʕ\e•-WyY?ZSP"jVp%k Z&غmU.]4[ﴃR;5b=M>N4>MjBF;B˂@.R )̰0 iC`MH29g9\;F]e-I|WWӹSU/!ș v71(c@[&h oD*#ZNixYjGGK3f2ٙ(gμsrڱ $(Chl=pEXŅ%a4reP=;8sA'i vGf{a\]zƮiZP cU xnSdi_qE,~/M5(b-O޷<="2Xqh^W@.kN@LOM BÀR"of@mՈ߽GfE4"#'+qc+|t#4'7qx?v$^A=~Ao60hWGoq+\ 7u  ^MD!L2XwOo@#6oZ}`# -cwWpW)+@&VCfb*u|H@[o4 iHk>VwBPR%`rdϤ=xst'ȁKGH({oWT?HE?}gޥs?#@*:˿ Σ;C k@9@S 4C?S A& ;8 ivI@3( @t<3kÈ ,B@ q |3(D@ T8J9pˈk/l<;IPBeCA܌ aHȀS; Qlj,Dx5,2oȌ4E$2ȏ@*Hpܱ$ɉ4ICɔǕ̱tIdə,8SȘHI.ɟ ʡ4JÉTʥdʦtʧʨʩʪʫʬʭʮʯ˰K ;jclic-0.2.1.0.orig/dist/jnlp/splash_player.png0000644000175000017500000001363211377161311016103 0ustar PNG  IHDR|isBITOPLTEmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffޅ؂{|xxuurrmlifc_\Y3fftńZtRNS"""333DDDUUUfffwwwCD pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$oIDATx]kCHE(((R ֶֶZZXG6H2$3@fΧ-{̽L9` ?"]\|a /xjyqal?yq3#ċ?4FFW,LCչq`c((06a}}5 #w8}) ߾}/}MIBh^~}bH2I0hKͯ+ЍQab|[ m|y*IBc? c Ѽ}ϓ(Ю@āH?@&@,`'& ~/T a:;n[mn }9i؏-I>->'CF||B(ЛIN.,\#7I>7ܘ NVT#@ɤ_NOp|/0%_-H/@7M ,;$?P @ނ%٤@v_4 l'.[`;kTG/U6f4A6ӲvDӕl67J,@_cNLMO%O[NZT$y H'j 3@coJ~vf` Ҝ@Ig =; G`V@l'=-50ll'O?Z|hfp0:>>Ȅÿ };y x1'^wowioab{wpxz޳h`BvϿo&w Ի*PʗTMKv-}'iOBëa'c?~g@&B[I>?N`( ]w;ۉ恐|8BJcV,e'Co|?b%qɤ|$_$t.5>"d- zboC2xe&%f'#A/C@\XJðg/@TR%2ZHR5 }܁_x ,/={o$M(ɺjXK-d'G%I3 W' dewgM~k)0/#ALv+CZvN%M(,-.m_j,i?=!JUDL4S$7G;G.aytoB$b?_>ET-J~-6Rs`-U-tϠ/B&onn.y[9(ѽW[H۩쫍7 p_d-O5M-Cm_D:Pv24${|%?0b|rvq57@BNCu0^LNϿ|ET {oK:H*]| vSd]OG.$tG@Q*oA{.{Hu*.c'LK+],S4y A^P:U'ˢ{"o! p}h;Y[-> Cԩja؇DF6 ;tpB#TMGo*hgbٹh Q Įh'[iPև9_UsB6@$i'k bo!} qCqC,R D,)`|ڔaƏINN ; 6eӺ$yBvu-:9'zԔڔxQCSTF:DTJ:VǞ˄W'Nxbn~lcB)s}i*U1[ڔuEW'NƢ:JC0NֲSY&;Ae~Gb*׮NNY8.@8/d'P7>}v1Ր~Ɏ0S S?3j0 [Sx`&Z5 das*d|D 誓^o!l(F~tk';k4xHsur#;9,PAY&^;mIəg~zK2ɓ^;98V'˖Մr1K N χ NZ?#/V2*$L~OB-Ҧ#vIʨ0Rvr(zyD9o!RpO?'u\MmȕO+Ddy6S~伅 s "JFB^66h@nbG{gEv{Ru sȗ,nb/m<+!\N&PԆ(XKϋBa@Nuȯr{vB|VgTu.&~-:|:W"+H,;(bY,1.O$9yuČ H/Į鱸%N~V3Rdvo6{nwkό|quNČ(U&("Hc31yn'$8_x:/("B2j.ެW>9%|JP:_jm*BCnbSN=EЕBr?CJ_3:jFב+ONki*˓)=НaO4)1X.7.#~Uy탢'\a8O~*?VǴWpaHӒ_V䇺E R3xi5V9%v J;3p#z˓Og!JU|.QM}gKօ/.\ӶkmgG4V'{E2Sh.3+zTv$S{]J?U|d F[쏉N=dgskd2ُ̥Il~oG[{}ؒȧɧLRx/2\it3Kr|3ʨɧL&زMCS҅5b/26:X/5p )A+.O^ kn30s39T7>/`tJs+ Cv : H ϰd{x_x|UX(mt;v Z]?n)'E;{ !l3%b)鷟/ $=8lxJ@,PjCN wjx-v|w hOnw1NTZu_掂:cYAz{qe{(ϱ]ْV-;t(PO珘L< 9'¸=_GDKo)ϩ_:$F;J=O6@7zG O_7u4ăaXy/~ZD8@q+Xӷ1y{'= sr @<0LW66pK7wȱJH's;8ÒZ 1)}#.ͳs3eB*D⤸S\ ;ߋwWpewFىv䷕?P?mb( 6I#%6Щ@#U+ Y,`ߞ+ߵ-VJPŠjs^3mO~ -*A>)rdQGz0*⃩Ӿ,tRA%z94_& eJ-3y,qP3*!;1&?@r#_]_ l69 )es_ 3Ke:Yl 6 <]p?0;gj?%u"E%%*GQD_̄aw_Cyп:;]16Pqdy0<^ؔ*grT1o׻8=w@}|&*V٤[}ouH܆qЏʏ=3{\ڼߒOV^IAZ~xwZ)R o&2s4ɆP!;1M< 煂'v+S a3akH'|Ngπ;1 ?1,ďG1E.p4wĠχVp#<$=2- _;^9z!jnFƦVWU!"S3QrUF7t' ټ=3s KKZmeeV[ZZy%Pm2ޮW&ZbTxgx]J߮RFz)Ae>"0^Y(?fgt?8j w.   ?ZUv|b aEɘ˹y#T!3E_^҉X踯w]45@-OnUp=7ō ӂ+x+n- I&n6UŌG>~y "5Vk I"Bp `𜅻Q ` ;ֳtǝ9qI%uQ? pm7&Nr)uP`\Tua!U2 IM_m|47C:RFd@HW!ҁ! Vu0EOw1li!L CRhET|r/1ݿ IvB;ATzK`H* ^U^| "=/1:38Ǫ6BHp4, N"#|nB bȹi ZQ0zJD[ U^We=\G~U~C|OYcA=) n [l *6)@N]Jh{k_|4 {&q%4؄?%_ 9]-?/D>C)?y{#H1&ɶsB-KURpRu˂KUw'JcaA~C.ڱtg R v\MfTu0{uA$9x1C6mq*Y6҉.vAI^o6ΒRT$, ^g(kRh;ޚO "f0_*3JӠnJ~XHhv+6Fs ,u$X'IENDB`jclic-0.2.1.0.orig/dist/jnlp/jclic_64x64.gif0000644000175000017500000000366111377161311015156 0ustar GIF89a@@aˍc{2oӹ1YpJánڦό"{dZ u(Cɬվғm8bC=lG\zL rرZN `"P Rр#!d^gj3@D  71J Ah)`hj |PTpK!D~A{s|NRFr[ 0 QGK= PF(Xp3D2@ƒ@;X+h!^ a@%y@0q-{~1H``>1`3 4 o 1B]谄X 12nT!Qj_m,ZH4+Hy Kn5yȜgxL^+|/y=;D6 u!܊OjRŻYQ (4ls$C!S[(=nS$DOkr]>8 J>_zJY_ \%)~ 0`1ay+_Վ&_B3`N%Qxf@م``TX<HX|˂l0aC G*@p7PAd#cpfc,?!A XAlDt` Gx PE!mxR. DL2 X Yȣ PP6<aR: p( ІF  Br\;hОK ;jclic-0.2.1.0.orig/dist/jnlp/jclic_32x32.png0000644000175000017500000000143311377161311015156 0ustar PNG  IHDR DsBITOPLTElYlYlYlYlYlYlYlYlYlYlYlYlYޅق{wvrllhe``3?tRNS""33DDUUffwwm@ pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$\IDATx[0'(80%**[Vc5#&POO˽lC_2a0Y9&QvػpP.t! EurRƩ-|DuvCm{Ǿ?ygC|IJ"cj,SI&KΕVէb4Z2k\t-ԜiA T'>r3F[lq2E%)v)gS{%Lg\wIENDB`jclic-0.2.1.0.orig/dist/jnlp/install_32x32.png0000644000175000017500000000143311377161311015540 0ustar PNG  IHDR DsBITOPLTElYlYlYlYlYlYlYlYlYlYlYlYlYޅق{wvrllhe``3?tRNS""33DDUUffwwm@ pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$\IDATx[0'(80%**[Vc5#&POO˽lC_2a0Y9&QvػpP.t! EurRƩ-|DuvCm{Ǿ?ygC|IJ"cj,SI&KΕVէb4Z2k\t-ԜiA T'>r3F[lq2E%)v)gS{%Lg\wIENDB`jclic-0.2.1.0.orig/dist/jnlp/author_64x64.gif0000644000175000017500000000345511377161311015375 0ustar GIF89a@@^͓Y8l&϶Bs؂̯d\tӖCr'uҺgܫ{4ތŸl:Rȩ{͖mÛδji <ݭе{r#oRij)ϋ+dp݄ؐKõR٣ťt¤L}8ӹb ߳rcε`Bphjv)x͆mRƨޙy֜ԫx,@n.1ŵ{fԽˁ׵ZḔ!_֘nǨkёc!,@@{H*\ȰÇȐ:3j$x# J2 iƓ ҆̕ZeE8 a!O($Tq !vs%D~JR "X0JM!^`b(X"\Ph+4%\"l3`Z097 Y Q#`c؝CqIF`#cbl$j GBCpEu2y uS3ͷAu[;!E%`@XСyS Z@K7;E<{4b33k½o p MU !"w$8ȰzTaOx#=!$D!E"+FNW4b5l 9T2F Ad:b20NQd-8*e:fT #$ gnidF3ı-\AF`AhQgiIid-@ L)V AA).AkZ>0!Đ0UuLYX=0+N E9xCl)w<!#;s(wh/001erAsQqAL`M amc ͲysS!47 d7M2BÊ}f B}IÍC 5Fg>: >/CDκokNFST0|scB7|FoqkCM/ICTٟ9CeP2<rQ! 7)o<]BwE< .'^,A c@0 gBLdL <@@l HF"9 ;jclic-0.2.1.0.orig/dist/jnlp/reports_64x64.gif0000644000175000017500000000342311377161311015564 0ustar GIF89a@@]Ǐg|/l2βkӲ<z"E֝gáns}8i v(ϋ]ݭWëfŦ=}Ǩy@z,r)MR9smڥγcޢӕ māťtq!GBhTBl٣ξӹbܽkpѭs!w=R2_cL\Δvťk!ޥj!,@@mH*\ȰÇ#JHŅGDŏ CHptr`- (0$;J iyQ0-Z#-r&0SψG| j 18Yr4i `?^eB.m9Gp ҏ9ܾ71 @'l0 S5N!=xg:n1-N厜"ћx5&P}7ηPAL Jd~tS[jkIENDB`jclic-0.2.1.0.orig/dist/jnlp/install_64x64.gif0000644000175000017500000000316411377161311015536 0ustar GIF89a@@cܟn@m[Ÿlѹv(ӻ~?ޘiҺёĤ\{/j1ϴi ݭ͆`×nr̯ˆz,{ޅ(Rʮ9⺙~kh9Ep֜aƨөε3!؂Hwyat~9o eȹӖΙɬf*όeӼֵmվ2BJܵsR٤ ɨqp ӕ甥cϘ޵O}ε!,@@UH*\ȰÇ#Jp_81 4đS&IdPcd +LTT!$I< aL?4aLq6J5!DR 1U:DBLճI(ya$Q$j*v !h&qH;xE8A†@zA g3Uqb0q@6 ˉEl0s32+Dv:*`G@m6@J{HxI gӠ myJ!S@ӻNJ1;64CIyߟA )}@9gvs&@ P(1H!+Xef`"G"GjhuТ~|pAGKB8QYlP"!%D"E'2 gDef8K2l%at1*` 9H@YB bwY'|a%DdI0GF'd 8e () H!hTr jP Gzc -[챳{@Т*T;bP+ +",X"n!I:t@^Сǽk7iL t4B d 7̰9 ; h4X)r~`4A 5A#GirMХ%`%xάNDgrmr 7)s4=Ho7,M8[U{rq2@l]{Q mao=s(}1xv~ѷ)=~yB.CX'r|G Ѵ;jclic-0.2.1.0.orig/dist/jnlp/install_32x32.gif0000644000175000017500000000034311377161311015520 0ustar GIF89a eyYm~pzniv!, IxM@ ng"ykt."Bҍ`HSJf3L.OXymD(P.Ob>ɡ>w~zvqiBJB{'LvL rЀ/ yL6U ޟ&^bO$:4X*,L轒C5`Uh6hs^J 8$X_S 3(0+R> H =l' Le&ms YHu fc* x^C=ry-!`tF @wh9ߎA|h|g:}!khB<:㠧vntWA0.g'`)23DL,$1S$GzxH!'0t9%<8mb:z!aҬt+:kL_#v5E-bЎkW[~MY ا$J-% A፫ZYU.^XUX > k2s o(?H{`dA S96BkK݄kU02Sxȋ{%/5U ESǗ߆fZ370ݙ| o<ղ9 I8Iǭ6Pj3y g?yj[5q~(BB>##{GN W<eϸJ4#;[+yo;Ƿo^T֝v{zdquG} h]}PS96n37eon}c`]),VKK8,eϸo $q{臺݄ /Yq~?L0##E^ܓ ~Rh-WԊ58!ͽKs1cix. 0.+@z|qzgFFLc ǧR$ ѥ몘ZQ%T۠B$b+#= 02bp*p"ygnB!0vКS1LĽ.nLC{#2(+ '&Gf 姁}*ڼS8ּ#]vO6 ; v1p2y; aS 򵦃U7/~:hI;T{v|1#/?TJGIENDB`jclic-0.2.1.0.orig/dist/jnlp/install_48x48.png0000644000175000017500000000353311377161311015561 0ustar PNG  IHDR00WsBIT|d pHYs  ~ tEXtSoftwareMacromedia Fireworks MX*$tEXtCreation Time09/05/04IDATxKl\Wgycm'iI[%#S,5+%$@BW]E7aU Q*QnTbTX hFBj%AIӔ$vIc=}+I3y"fQ& m_n36f m#Q&cqsDZ)>K4piP> H ⏽L>7lxKQIs@>c(-oF"$S}06"k+9JEpl,axsM!p1Ta tz+D08Ri9Ek<:>x.b73tMFF;JS 6D'kF]ce`cH4F4ۜ3!+Yi Kw=סm{6!aol']}9p0׾۴)=Br`}y7!@*/?5j>-aX-׊HY93QFh Z駞:]l"Xᣏwҫ\ 0j?H"\ r%sRUe1;%Zk9z\> yÿĬTTbp:G-: T#: 5u+S(ȡہUvFX-%*,I nk r.-?+:i&-00ػ+2rE Lm,k\ `ZDߝG ICڙ%wp@TMx^$G `Zj'\c 髐ijz~^]|S>%Mxx9`vn/߃ p p&o:Ң0KDD6NB}#a~.O܂IENDB`jclic-0.2.1.0.orig/dist/jnlp/install.jnlp0000644000175000017500000000174211377161311015061 0ustar JClic project installer XTEC JClic project installer Application that downloads and installs JClic projects JClic project installer $$argument jclic-0.2.1.0.orig/dist/jnlp/install_64x64.png0000644000175000017500000000251711377161311015556 0ustar PNG  IHDR@@sBITOPLTE~Y~Y~Y~Y~Y~Y~Y~Y~Y~Y~\Y~\Y`\fc`\݄؂{xurlifc`٠PtRNS""33DDUUffwwM pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$LIDATxݖi{@q#F R2*h uI4j (ʒSh sQL}瞙!LjJ Wmch&Ij.K'BҠVSUDX<hRo"OTvT'"w![U#'"vqa.De &ub<U;# }!}٤!xD8Dgɳ&17xvEs3mYQ! 5HUf-A(xfC#E'u, )J}A曽<h!21+DaACcL̀=<vB! @ L1Ƞ {Q("#z@嚤 OHfACr 7w%.i7+9pyL!4hN!N7Q"`a#(WY'oKN!@@xc{'b{A`C,`S,zR )~jqP"iy{ț{z05ObڂOj/"H槯T)ؗ˝ lf i(4t9+ ! T rXeo;D\`PnqMͰ(#hfp1&α.0iځ&ԕw_O0( p$R 󣰰80GGD\sC(ő^a J#Yu'3Q$r> : JClic XTEC JClic player End-user application that runs JClic projects JClic player jclic-0.2.1.0.orig/dist/jnlp/jclic_48x48.png0000644000175000017500000000421411377161311015174 0ustar PNG  IHDR00WsBIT|d pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$IDATx՚Kl\Ws{'TDr<|rl\zR62 |LHO^-m֧tl什o׀LkY3Pb{b  i-ˡ]\G^nfr^w?)%!(VoGUcSh!QiC[0/l>յxF8]bd xx#{8jRpTJ L ek|UюO@CtN"2oX7-ߙbv1rx3p#K!IⰦX*pxLS26$Ql(-66O ~8j$c0A =uxHώ^hoװ[&ZF?j$FS }m0mL% *H`Ph׉U,/wmW**f4Aoj&w˂~ӊ3c~(uҕ6f9Z6߰lIb2MR,V~&dht5_aroe Mb&36TX7%NnP0"Iz (Üs;g!`ut/UZ`Z&ޫo49Te>29շ_j6 *@[Aɴ hYxomg03^*CϸB&DE`垊]w<^;zޚ;6-9 czm|~xuRZ/-g2-CU[ zs/dc^ \'ɜk̾ϿկIOʸڸ]m H ;jclic-0.2.1.0.orig/dist/jnlp/jclic_48x48.gif0000644000175000017500000000046711377161311015163 0ustar GIF89a00~Y!,000I m\|$(n٠yJ*/ Ր."[Ѩ 8%3>O>) @z !V+EܕZ9vsuw yy{6tRdxj-m\oz`-bnh( 4_i `U_´֮ͧqޚ!½AA_9+ vL!\VS%ŋ ;jclic-0.2.1.0.orig/dist/jnlp/author.jnlp0000644000175000017500000000210611377161311014710 0ustar JClic author XTEC JClic author JClic authoring and editing tool JClic authoring and editing tool jclic-0.2.1.0.orig/dist/jnlp/jclic_64x64.png0000644000175000017500000000251711377161311015174 0ustar PNG  IHDR@@sBITOPLTE~Y~Y~Y~Y~Y~Y~Y~Y~Y~Y~\Y~\Y`\fc`\݄؂{xurlifc`٠PtRNS""33DDUUffwwM pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$LIDATxݖi{@q#F R2*h uI4j (ʒSh sQL}瞙!LjJ Wmch&Ij.K'BҠVSUDX<hRo"OTvT'"w![U#'"vqa.De &ub<U;# }!}٤!xD8Dgɳ&17xvEs3mYQ! 5HUf-A(xfC#E'u, )J}A曽<h!21+DaACcL̀=<vB! @ L1Ƞ {Q("#z@嚤 OHfACr 7w%.i7+9pyL!4hN!N7Q"`a#(WY'oKN!@@xc{'b{A`C,`S,zR )~jqP"iy{ț{z05ObڂOj/"H槯T)ؗ˝ lf i(4t9+ ! T rXeo;D\`PnqMͰ(#hfp1&α.0iځ&ԕw_O0( p$R 󣰰80GGD\sC(ő^a J#Yu'3Q$r> :eQ2 VqkCK3s\/f717^Z54 O^ϗRö@W_DVm3ޢĽ tKӔ —zP,yN +mpGmJQ0ri/'(+gGo24gogC>]kE32}rƝI IWwnKsaltBECA207BBBCBBA94maclen20 alias-listtestcertmac HMAC-SHA-1Rkeylen16salt35E2C56C7159FA3EcipherAES alias-listtestcertmodeOFBp}fj6$t4#!)C!H.HhM{5A RlUJA' IBSS[n2%{5L[_cnTd֧ Ӝɬf^!r9 w9+|?<xx*?D*seƠ+5u4\KcО5k/D_agغ$&e'ԲጽE)qR$)Yzf32/OBø=KumK xIϰZZ^&[8*XȊ>}e #:9;7+{k`,Hn  r'8E,$(mP`h/ YuN\"h'z]1|A()= PkQ|WjO!"6=e3A9sm" uRp1 85_K +W)%i}Kn0  *H S Q[&_26=a[*&Es*E.&.00f~ tpx욹 ]p3IBuǶ:pqұ̐rnT,4U\M21`/9ݲ5p~YNb,ոtZpi'AA>M0ekX.509j0f0GW0  *H 0z1 0 UAQ10U Test state10U Test city10U Test organization10U  Test unit10U Test name0 071206102527Z 171203102527Z0z1 0 UAQ10U Test state10U Test city10U Test organization10U  Test unit10U Test name00  *H 0Ő٨S;H3{ۈEwn?0%F/Oz+D, _ |M>=e3A9sm" uRp1 85_K +W)%i}Kn0  *H S Q JClic reports jclicreports.war /reports jclic-0.2.1.0.orig/i18n/0000755000175000017500000000000011377161311011373 5ustar jclic-0.2.1.0.orig/i18n/README0000644000175000017500000000565711377161311012270 0ustar JClic internationalization README INTRODUCTION JClic, as many Java apps, uses the Java Internationalization API [1] to display text expressions in different languages. This API uses files with extension ".properties" to store the messages. Due to its modular design, JClic makes use of 10 different ".properties" files, located in deep path levels on the "src" directory, like: "src/core/edu/xtec/resources/messages/JClicMessages.properties". This makes complicated to start a new translation and maintain it in successive releases. Launchpad Translations [2] (formerly known as Rosetta) is a web-base translation system integrated in the Launchpad free software development platform. It's very useful and easy to use for translators, because tracks all changes and allows to reuse expressions already translated in other projects. Launchpad Translations are based on the GNU gettext system [3]. This system makes use of files with extension ".po" to store messages. ".po" files have different format and coding conventions than ".properties". The utilities in this section allow to convert the original ".properties" files located in the src directory of JClic into ".po" files, in order to make possible the use of Lanunchpad Translations, and implement also the inverse path converting the ".po" files returned by Launchpad to ".properties". SYSTEM REQUIREMENTS - Apache Ant 1.6 or later - tar command available - po2prop and prop2po utilities from Translate toolkit (http://translate.sourceforge.net/wiki/toolkit/index) PREPARING THE APACHE ANT EXTENSIONS Start compiling the Ant extensions located in i18n/customAntTasks. Go to this directory and call "ant" without parameters. This will generate a file named "transToolsAntTasks.jar" Register this file as an Ant extension. See Apache Ant documentation for more information about how to achieve: http://ant.apache.org/manual/using.html#external-tasks PREPARING .po FILES FROM .properties Go to i18n/toLaunchpad and call "ant". This will generate the "po" directory with subdirectories for all JClic modules. The .po and.pot files will be placed into this directories. RECOVERING .po FILES FROM LAUNCHPAD Request the JClic translations in Launchpad. It will give you a file called "launchpad-export.tar,gz". Place this file into the directory i18n/fromLaunchpad, go to this directory and launch "ant". This will extract the returned ".po" files and, if they are different from the existing ones, they will be converted to .properties and copyied into the "src" directory. You can also place individual .po files into i18n/fromLaunchpad/po and call "ant" to complete the conversion process. Pleaase note that .po file returned from Launchpad can have different names than the expected by JClic. For example, jclicmessages-ca.po must be translated to JClicMessages_ca.po. 1: http://java.sun.com/javase/technologies/core/basic/intl/ 2: https://launchpad.net/rosetta 3: http://www.gnu.org/software/gettext/ jclic-0.2.1.0.orig/i18n/customAntTasks/0000755000175000017500000000000011377161311014356 5ustar jclic-0.2.1.0.orig/i18n/customAntTasks/build.xml0000644000175000017500000001060211377161311016176 0ustar Copyright © ${year} Francesc Busquets (fbusquets@xtec.net) & Departament d'Educació de la Generalitat de Catalunya (info@xtec.net)
Licensed under the terms of the GNU General Public License

]]>
jclic-0.2.1.0.orig/i18n/customAntTasks/src/0000755000175000017500000000000011377161311015145 5ustar jclic-0.2.1.0.orig/i18n/customAntTasks/src/edu/0000755000175000017500000000000011377161311015722 5ustar jclic-0.2.1.0.orig/i18n/customAntTasks/src/edu/xtec/0000755000175000017500000000000011377161311016665 5ustar jclic-0.2.1.0.orig/i18n/customAntTasks/src/edu/xtec/ant/0000755000175000017500000000000011377161311017447 5ustar jclic-0.2.1.0.orig/i18n/customAntTasks/src/edu/xtec/ant/Po2Prop.java0000644000175000017500000001445611377161311021625 0ustar /* * Po2Prop.java * */ package edu.xtec.ant; import org.apache.tools.ant.*; import org.apache.tools.ant.types.*; import org.apache.tools.ant.util.FileUtils; import java.io.File; import java.util.Vector; import org.apache.tools.ant.util.JavaEnvUtils; import org.apache.tools.ant.taskdefs.ExecTask; import java.util.Enumeration; import java.io.IOException; /** * @author fbusquet */ public class Po2Prop extends Task { // Original source code /** * The name of the po file. */ protected File inputFile; protected File checkAgainstFile; protected File checkAgainstDir; /** * The template file. */ protected File templateFile; protected File outputFile; protected File destDir; protected boolean verbose; protected boolean preserveTimestamps; /** * the filesets of the .po to convert */ protected Vector filesets = new Vector(); protected FileUtils fileUtils = FileUtils.newFileUtils(); /** * the .po file to convert; required */ public void setInputFile(final File inputFile) { this.inputFile = inputFile; } /** * set the preserveTimestamps value */ public void setPreserveTimestamps(boolean preserveTimestamps) { this.preserveTimestamps = preserveTimestamps; } /** * the .po file to check against; optional */ public void setCheckAgainstFile(final File checkAgainstFile) { this.checkAgainstFile = checkAgainstFile; } /** * the .directory containing .po files to check against */ public void setCheckAgainstDir(final File checkAgainstDir) { this.checkAgainstDir = checkAgainstDir; } /** * template location; required */ public void setTemplateFile(final File templateFile) { this.templateFile = templateFile; } /** * name of exported .properties file; optional */ public void setOutputFile(final File outputFile) { this.outputFile = outputFile; } /** * Sets the destination directory. * @param destDir the destination directory */ public void setDestDir(File destDir) { this.destDir = destDir; } /** * Adds a set of files to convert */ public void addFileset(final FileSet set) { filesets.addElement(set); } /** * Convert the files */ public void execute() throws BuildException { if (null == inputFile && null == filesets) { throw new BuildException("a .po file must be set through inputFile attribute " + "or nested filesets"); } if (null != inputFile) { doOneFile(inputFile, outputFile, checkAgainstFile); return; } else { //Assume null != filesets // deal with the filesets for (int i = 0; i < filesets.size(); i++) { FileSet fs = (FileSet) filesets.elementAt(i); DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] inputFiles = ds.getIncludedFiles(); for (int j = 0; j < inputFiles.length; j++) { doOneFile(new File(fs.getDir(getProject()), inputFiles[j]), null, null); } } } } /** * convert one file */ private void doOneFile(File inputFile, File outputFile, File checkAgainstFile) throws BuildException { if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) { throw new BuildException("The Po2Prop task is only available on " + "JDK versions 1.2 or greater"); } if(outputFile==null){ if(destDir==null){ destDir=inputFile.getParentFile(); } String justFName=inputFile.getName(); int lastDot=justFName.lastIndexOf('.'); if(lastDot>0) justFName=justFName.substring(0, lastDot); outputFile=new File(destDir, justFName+".properties"); } if(checkAgainstFile==null && checkAgainstDir!=null && inputFile!=null){ checkAgainstFile=new File(checkAgainstDir, inputFile.getName()); } if (isUpToDate(inputFile, outputFile, checkAgainstFile)) { return; } final ExecTask cmd = (ExecTask) getProject().createTask("exec"); cmd.setExecutable("po2prop"); if (null != templateFile) { cmd.createArg().setValue("--template="+templateFile.toString()); } if (null != inputFile) { cmd.createArg().setValue("--input="+inputFile.toString()); } if (null != outputFile) { cmd.createArg().setValue("--output="+outputFile.toString()); } log("Converting properties: " + inputFile.getAbsolutePath()); cmd.setFailonerror(true); cmd.setTaskName(getTaskName()); cmd.execute(); if(preserveTimestamps){ outputFile.setLastModified(inputFile.lastModified()); } } protected boolean isUpToDate(File inputFile, File outputFile, File checkAgainstFile) throws BuildException { if (null == inputFile) { return false; } if (null != outputFile) { if (!inputFile.exists()) { return false; } if (null!=checkAgainstFile && checkAgainstFile.exists()){ if(checkAgainstFile.lastModified() >= inputFile.lastModified()){ return true; } else{ try { if(fileUtils.contentEquals(inputFile, checkAgainstFile, true)) return true; } catch(Exception ex){ throw new BuildException(ex); } } } if (!outputFile.exists()) { return false; } if (inputFile.equals(outputFile)) { return false; } if (outputFile.lastModified() >= inputFile.lastModified()) { return true; } } return false; } } jclic-0.2.1.0.orig/i18n/customAntTasks/src/edu/xtec/ant/Prop2Po.java0000644000175000017500000001463311377161311021622 0ustar /* * Prop2Po.java * */ package edu.xtec.ant; import org.apache.tools.ant.*; import org.apache.tools.ant.types.*; import org.apache.tools.ant.util.FileUtils; import java.io.File; import java.util.Vector; import org.apache.tools.ant.util.JavaEnvUtils; import org.apache.tools.ant.taskdefs.ExecTask; import java.util.Enumeration; import java.io.IOException; /** * @author fbusquet */ public class Prop2Po extends Task { // Original source code /** * The name of the properties file. */ protected File inputFile; /** * The .properties template file. */ protected File templateFile; protected File outputFile; protected File backupFile; protected File destDir; protected File backupDir; protected boolean verbose; protected boolean makePot; protected boolean preserveTimestamps; /** * the filesets of the .properties to convert */ protected Vector filesets = new Vector(); protected FileUtils fileUtils = FileUtils.newFileUtils(); /** * set the preserveTimestamps value */ public void setPreserveTimestamps(boolean preserveTimestamps) { this.preserveTimestamps = preserveTimestamps; } /** * the .properties file to convert; required */ public void setInputFile(final File inputFile) { this.inputFile = inputFile; } /** * template location; required */ public void setTemplateFile(final File templateFile) { this.templateFile = templateFile; } /** * name of exported PO file; optional */ public void setOutputFile(final File outputFile) { this.outputFile = outputFile; } /** * name of the backup file; optional */ public void setBackupFile(final File backupFile) { this.backupFile = backupFile; } /** * Sets the destination directory. * @param destDir the destination directory */ public void setDestDir(File destDir) { this.destDir = destDir; } /** * Sets the backup directory. * @param backupDir the backup directory */ public void setBackupDir(File backupDir) { this.backupDir = backupDir; } /** * export a POT template * ; optional: default false */ public void setMakePot(final boolean makePot) { this.makePot = makePot; } /** * Adds a set of files to convert */ public void addFileset(final FileSet set) { filesets.addElement(set); } // Completely rewrited /** * Convert the files */ public void execute() throws BuildException { if (null == inputFile && null == filesets) { throw new BuildException("a properties file must be set through inputFile attribute " + "or nested filesets"); } if (null != inputFile) { doOneFile(inputFile, outputFile, backupFile); return; } else { //Assume null != filesets // deal with the filesets for (int i = 0; i < filesets.size(); i++) { FileSet fs = (FileSet) filesets.elementAt(i); DirectoryScanner ds = fs.getDirectoryScanner(getProject()); String[] inputFiles = ds.getIncludedFiles(); for (int j = 0; j < inputFiles.length; j++) { doOneFile(new File(fs.getDir(getProject()), inputFiles[j]), null, null); } } } } /** * convert one file */ private void doOneFile(File inputFile, File outputFile, File backupFile) throws BuildException { if (JavaEnvUtils.isJavaVersion(JavaEnvUtils.JAVA_1_1)) { throw new BuildException("The Prop2Po task is only available on " + "JDK versions 1.2 or greater"); } if(outputFile==null){ if(destDir==null){ destDir=inputFile.getParentFile(); } String justFName=inputFile.getName(); int lastDot=justFName.lastIndexOf('.'); if(lastDot>0) justFName=justFName.substring(0, lastDot); String ext=makePot ? ".pot" : ".po"; outputFile=new File(destDir, justFName+ext); } if(backupFile==null && backupDir!=null){ backupFile=new File(backupDir, outputFile.getName()); if(backupFile.equals(outputFile)) backupFile=null; } if (isUpToDate(inputFile, outputFile)) { return; } final ExecTask cmd = (ExecTask) getProject().createTask("exec"); cmd.setExecutable("prop2po"); if (makePot) { cmd.createArg().setValue("-P"); } if (null != templateFile) { cmd.createArg().setValue("--template="+templateFile.toString()); } if (null != inputFile) { cmd.createArg().setValue(inputFile.toString()); } if (null != outputFile) { cmd.createArg().setValue(outputFile.toString()); } log("Converting properties: " + inputFile.getAbsolutePath()); cmd.setFailonerror(true); cmd.setTaskName(getTaskName()); cmd.execute(); if(preserveTimestamps){ outputFile.setLastModified(inputFile.lastModified()); } if(backupFile!=null) { log("Creating backup of "+outputFile.getName()+" in "+backupFile.getParent().toString()); try{ fileUtils.copyFile(outputFile, backupFile, null, true, true); } catch(Exception ex){ throw new BuildException(ex); } } } protected boolean isUpToDate(File inputFile, File outputFile) { if (null == inputFile) { return false; } if (null != outputFile) { if (!inputFile.exists()) { return false; } if (!outputFile.exists()) { return false; } if (inputFile.equals(outputFile)) { return false; } if (outputFile.lastModified() >= inputFile.lastModified()) { return true; } } return false; } } jclic-0.2.1.0.orig/i18n/fromLaunchpad/0000755000175000017500000000000011377161311014156 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/build.xml0000644000175000017500000003176411377161311016012 0ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/0000755000175000017500000000000011377161311014574 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/0000755000175000017500000000000011377161311017653 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_ar.po0000644000175000017500000000424211377161311022674 0ustar # Arabic translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-07-18 13:54+0000\n" "Last-Translator: صقر بن عبدالله \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "العربيّة" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "يوجد إصدار قديم لنظام Java مثبّت على هذا الحاسوب." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "يستحيل العثور على نظام Java مثبّت على هذا الحاسوب." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "معياري" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "كامل" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "خفيف" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "تطبيق للعلب على JClic" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "تطبيق لإنشاء وتحرير ألعاب JClic" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "خادوم التقارير." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_it.po0000644000175000017500000000412511377161311022706 0ustar msgid "" msgstr "" "Project-Id-Version: JClic installer 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-06-09 13:36+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Español" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic richiede un motore Java aggiornato, versione 1.4 o superiore. Puoi " "scaricarla da http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "C'è una vecchia versione di Java installata in questo computer." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "" "Non è stato possibile trovare una versione di Java installata in questo " "computer." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Tipica" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Minima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} offline setup" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Applicazione per avviare attività JClic." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Applicazione per creare e modificare attività JClic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "Files necessari solo in un server con applets JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Server dei rapporti." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_ast.po0000644000175000017500000000447611377161311023072 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-10-01 10:40+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Asturianu" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic necesita un motor Java anováu, versión 1.4 o superior. Pues descargalu " "de baldre dende http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "El sistema Java d'esti ordenador ye mui vieyu." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Nun s'atopó sistema Java dengún instaláu nel ordenador." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Estándar" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Mínima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "Instalación offline de JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Aplicación pa xugar a les xeres de JClic" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Aplicación pa criar y camudar xeres de JClic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Ficheros que son necesarios namás nun sirvidor qu'agospie applets de JClic" #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Sirvidor d'informes" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_de.po0000644000175000017500000000447011377161311022665 0ustar # German translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-11-21 17:37+0000\n" "Last-Translator: Keruskerfuerst \n" "Language-Team: German \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Englisch" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic benötigt Java Version 1.4 oder höher. Download unter " "http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Es ist keine aktuelle Java Version auf diesem Computer installiert." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Auf diesem Computer konnte kein Java-System gefunden werden." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Standard" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Komplett" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Minimal" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} offline setup" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Anwendung zum Abspielen von JClic Übungen." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Anwendung zum Erstellen und Editieren von JClic Übungen." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Diese Dateien werden nur auf einem Server gebraucht, der JClic Applets " "hostet." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Reports Server" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_nl.po0000644000175000017500000000450711377161311022707 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-08-11 13:15+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Nederlands" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic heeft een aangepaste Java engine nodig, versie 1.4 of beter. Je kan " "deze downloaden via http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Er is een oudere versie van Java op deze computer geïnstalleerd." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "" "Het was onmogelijk om een geïnstalleerd Java systeem te vinden op deze " "computer." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Standaard" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Volledig" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Licht" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} offline setup" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Toepassing om JClic activiteiten te spelen" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Toepassing om JClic activiteiten aan te maken" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "Bestanden die enkel nodig zijn in een server met JClic applets." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Rapporten server." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_el.po0000644000175000017500000000544711377161311022702 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-07-03 12:18+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Αγγλικά" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "Το JClic χρειάζεται μια ενημερωμένη μηχανή Java, έκδοση 1.4 ή μεταγενέστερη. " "Μπορείτε να την κατεβάσετε από τη διεύθυνση http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "" "Υπάρχει μια παλαιότερη έκδοση Java εγκατεστημένη σε αυτόν τον υπολογιστή." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "" "Είναι αδύνατον να βρεθεί σύστημα της Java εγκατεστημένο σε αυτόν τον " "υπολογιστή." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Τυπική" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Πλήρης" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Ελάχιστη" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} offline εγκατάσταση" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Εφαρμογή αναπαραγωγής δραστηριοτήτων του JClic" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Εφαρμογή δημιουργίας και επεξεργασίας του JClic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Αρχεία απαραίτητα μόνο σε διακομιστή που φιλοξενεί μικροεφαρμογές του JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Διακομιστής αναφορών" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_cs.po0000644000175000017500000000445611377161311022706 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-07-24 22:05+0000\n" "Last-Translator: Martin Slavík \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Angličtina" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic vyžaduje novější Java engine, verze 1.4 nebo vyšší. Můžete jej nahrát " "z: http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Na vašem pčítači existuje stará verze Javy." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Nemohu najít žádný instalovaný Java systém na tomto počítači." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Standardní" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Plná" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Minimální" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} off-line nastavení" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Aplikace pro přehrávání JClic aktivit." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Aplikace pro vytváření a úpravu JClic aktivit." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "Soubory potřebné pouze pro server s hostovanými JClic applety." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Server sestav." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_oc.po0000644000175000017500000000362611377161311022700 0ustar # Occitan (post 1500) translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-04-12 13:13+0000\n" "Last-Translator: Yannig MARCHEGAY (Kokoyaya) \n" "Language-Team: Occitan (post 1500) \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Anglés" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "" #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "" #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Estandard" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Complet" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_es.po0000644000175000017500000000417111377161311022702 0ustar msgid "" msgstr "" "Project-Id-Version: JClic installer 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-06-02 10:10+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Español" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic necesita un motor Java actualizado, versión 1.4 o superior. Puede " "descargarlo gratuitamente desde http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "El sistema Java de este ordenador es antiguo." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "No se ha encontrado ningún sistema Java instalado en este ordenador." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Estándar" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Mínima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "Instalación de JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Aplicación para visualizar y realizar actividades JClic." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Aplicación para crear y modificar actividades JClic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Archivos que son necesarios únicamente en un servidor que aloje applets " "JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Servidor de informes." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_zh_TW.po0000644000175000017500000000417311377161311023330 0ustar # Traditional Chinese translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-10-01 15:44+0000\n" "Last-Translator: tclin \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "JClic 需要 1.4 以上版本的 Java 引擎, 您可以從 http://www.java.com 網站下載。" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "有一個舊版本的 Java 已經安裝在您的電腦中。" #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "在您的電腦找不到任何已經安裝的 Java 系統。" #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "標準" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "完全" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} 離線設定" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_eu.po0000644000175000017500000000450611377161311022706 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-02-18 11:21+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Ingelesa" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic-ek Java 1.4 edo aurreragoko bertsioa behar du. Hemen lortu ahal duzu: " "http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Ordenagailu honetan Javaren bertsio zaharra dago instalatuta" #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Ezin izan da Java sistemarik aurkitu instalatuta ordenagailu honetan" #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Estandarra" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Osoa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Gutxienekoa" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic-en instalazioa ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "JClic jarduerak egiteko aplikazioa" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "JClic jarduerak sortu eta editatzeko aplikazioa" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "JClic applets-ak ostatzen dituen zerbitzarian bakarrik beharrezko diren " "fitxategiak" #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Txostenen zerbitzaria." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_pt.po0000644000175000017500000000451611377161311022721 0ustar # Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-06-03 11:21+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Português" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "O Jclic necessita um motor Java actualizado (versão 1.4 ou superior). Pode " "desacrregá-lo em http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Possui uma versão antiga do Java instalada neste computador." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Não foi possível encontrar uma instalação do Java neste computador." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Padrão" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Mínima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "JClic ${PRODUCT_VERSION} instalação offline" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Programa para correr actividades Jclic." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Programa para criar e editar actividades Jclic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "Ficheiros necessários apenas num servidor com applets JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Servidor de relatórios." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_pt_BR.po0000644000175000017500000000454311377161311023304 0ustar # Brazilian Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-11-30 23:36+0000\n" "Last-Translator: Alexandre R Soares \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Português" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "jClic requer Java atualizado, versão 1.4 ou superior. Você pode obtê-lo em " "http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Há uma versão antiga do Java instalada em seu computador." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Não foi possível localizar algum sistema de Java em seu computador." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Padrão" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Mínima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "configuração offline JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Aplicativo para rodar atividades do JClic" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Aplicativo para criar e editar atividades do JClic" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Arquivos necessários apenas em um servidor com applets JClic hospedados." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Servidor de relatórios." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_fr.po0000644000175000017500000000457311377161311022710 0ustar # French translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-01-17 16:42+0000\n" "Last-Translator: Renaud de Colombel \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Anglais" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic requiert une version plus récente de la machine java, ver. 1.4 ou " "supérieure. Vous pouvez la télécharger sur http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Une version obsolète de Java est installée sur cet ordinateur." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Aucune machine Java n'a été détectée sur cet ordinateur." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Par défaut" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Complète" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Minimale" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "Installation hors-ligne de JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Programme d'exécution des activités JClic." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Application pour créer et modifier des activités JClic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Fichiers nécessaires uniquement sur un serveur hébergeant des applets JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Serveur de rapports." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_ru.po0000644000175000017500000000516511377161311022725 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2009-10-05 00:42+0000\n" "Last-Translator: vsink \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Английский" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic необходима Java машина версии 1.4 или выше. Вы можете загрузить её с " "сайта http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Предыдущая версия Java установлена на этом компьютере." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "Не удалось найти установленную Java на этом компьютере." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Стандартная" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Полная" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Минимальная" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "Автономная установка JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Приложение для воспроизведения JClic активностей." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Приложение для создания и редактирования JClic активностей." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "Файлы требуются только на сервере, хостящем аплеты JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Сервер отчётов." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_gl.po0000644000175000017500000000451211377161311022674 0ustar # Galician translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-06-24 17:46+0000\n" "Last-Translator: Susana Sotelo Docío \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Galego" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "JClic precisa un motor Java actualizado, na versión 1.4 ou posterior. Pode " "descargala de http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "Neste ordenador hai instalada unha versión vella de Java." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "" "Foi imposíbel atopar ningunha versión de Java instalada neste ordenador." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Estándar" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Mínima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "Instalación de JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Aplicación para reproducir as actividades JClic" #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Aplicación para crear e editar actividades JClic" #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "Ficheiros só necesarios nun servidor con applets JClic aloxados" #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Servidor de informes" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-installer/installer_ca.po0000644000175000017500000000417011377161311022655 0ustar msgid "" msgstr "" "Project-Id-Version: JClic installer 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-05-30 16:00+0000\n" "PO-Revision-Date: 2008-06-02 10:11+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #Translation language name msgid "English" msgstr "Català" #: javaNeeded msgid "" "JClic needs an updated Java engine, version 1.4 or higher. You can download " "it from http://www.java.com" msgstr "" "El JClic necessita un motor Java actualitzat, versió 1.4 o superior. El " "podeu descarregar gratuïtament des de http://www.java.com" #: oldJavaMsg msgid "There is an old version of Java installed on this computer." msgstr "El sistema Java d'aquest ordinador és antic." #: noJavaMsg msgid "It was impossible to find any Java system installed on this computer." msgstr "No s'ha pogut trobar cap sistema Java instal·lat a aquest ordinador." #. #Type of installation (standard, full, minimal) #: standardType msgid "Standard" msgstr "Estàndard" #. #Type of installation (standard, full, minimal) #: fullType msgid "Full" msgstr "Completa" #. #Type of installation (standard, full, minimal) #: liteType msgid "Lite" msgstr "Mínima" #: captionStr msgid "JClic ${PRODUCT_VERSION} offline setup" msgstr "Instal·lació del JClic ${PRODUCT_VERSION}" #. #Description of JClic Player #: JClicPlayerDesc msgid "Application to play JClic activities." msgstr "Aplicació per visualitzar i realitzar activitats JClic." #. #Description of JClic Author #: JClicAuthorDesc msgid "Application to create and edit JClic activities." msgstr "Aplicació per crear i modificar activitats JClic." #. #Description of JClic Applet components #: JClicAppletDesc msgid "Files needed only in a server with hosted JClic applets." msgstr "" "Fitxers que són necessaris només en un servidor que allotgi applets JClic." #. #Description of JClic Reports #: JClicReportsDesc msgid "Reports server." msgstr "Servidor d'informes." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/0000755000175000017500000000000011377161311017152 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_es.po0000644000175000017500000004462111377161311023134 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:51+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Archivo" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Para efectuar esta operación hay que introducir la contraseña de " "administración de JClic." #: m_Help msgid "Help" msgstr "Ayuda" #: m_Skin msgid "Skin" msgstr "Apariencia" #: action_helpAbout_caption msgid "About..." msgstr "Acerca de..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Biblioteca principal" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Este archivo JClic no es del tipo \"biblioteca de proyectos\".\n" "Las bibliotecas son un tipo especial de archivos JClic." #: library_mainMenu msgid "Main menu" msgstr "Menú principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nueva biblioteca de proyectos" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "¿Desea crear una nueva biblioteca o conectarse a una biblioteca existente?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Conectarse" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nueva" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Crear o conectarse a una nueva biblioteca" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nueva" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Imagen que se muestra en el botón" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Texto flotante que aparecerá cuando se deje el puntero quieto sobre el botón." #: menuElement_dlg_description msgid "Description:" msgstr "Descripción:" #: edit_find_image msgid "Find image..." msgstr "Buscar imagen..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Icono:" #: edit_find_file msgid "Find file..." msgstr "Buscar archivo..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Ubicación del proyecto JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Proyecto:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Texto del botón" #: edit_text msgid "Text:" msgstr "Texto:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nombre de la carpeta" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nombre de la biblioteca" #: edit_name msgid "Name:" msgstr "Nombre:" #: edit_title msgid "Title:" msgstr "Título:" #: library_dlg_title msgid "Library properties" msgstr "Propiedades de la biblioteca" #: menu_dlg_title msgid "Folder properties" msgstr "Propiedades de la carpeta" #: menuElement_dlg_title msgid "Button properties" msgstr "Propiedades del botón" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Eliminar el menú seleccionado" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Eliminar" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Eliminar el elemento de menú seleccionado" #: action_libraries_caption msgid "Libraries..." msgstr "Bibliotecas..." #: dlg_save_title msgid "Save file..." msgstr "Guardar archivo..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Error al abrir \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Se utilizaran los valores por defecto." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Eliminar" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Crear un nuevo botón de proyecto" #: menu_newMenuName msgid "New folder" msgstr "Nueva carpeta" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Crear una nueva carpeta de botones de proyecto" #: menu_newMenu_caption msgid "New button's folder" msgstr "Nueva carpeta de iconos" #: menu_newMenuElement_caption msgid "New project button" msgstr "Nuevo botón de proyecto" #: menu_newMenuElementName msgid "New button" msgstr "Nuevo botón" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Cancelar las modificaciones" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editar la biblioteca seleccionada" #: libraryManager_edit_caption msgid "Edit" msgstr "Editar" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Guardar los cambios" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Elegir la carpeta seleccionada" #: library_select_caption_ok msgid "Ok" msgstr "Aceptar" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Seleccionar" #: library_caption msgid "JClic projects library" msgstr "Biblioteca de proyectos JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Abrir la biblioteca seleccionada" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Cancelar" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Seleccionar" #: libraryManager_caption msgid "Select library" msgstr "Selección de la biblioteca de proyectos" #: library_error_reading msgid "Error reading project library!" msgstr "¡Error al leer la biblioteca de proyectos!" #: wizard_next msgid "Next >" msgstr "Siguiente >" #: wizard_prev msgid "< Previous" msgstr "< Anterior" #: wizard_finish msgid "Finish" msgstr "Finalizar" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "¡Error al crear el icono en la biblioteca!" #: install_title msgid "Installation of JClic projects" msgstr "Instalación de proyectos JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instalación de un nuevo proyecto JClic" #: install_info_from msgid "From:" msgstr "Desde:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Cancelar" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Cancelar la operación" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Finalizar la operación" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Siguiente paso de la operación" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Paso anterior de la operación" #: install_select_library msgid "Select the library where to install the project:" msgstr "Seleccione la biblioteca en la que se instalará el proyecto:" #: install_copy_files msgid "File copy" msgstr "Copia de archivos" #: install_source msgid "Source:" msgstr "Origen:" #: install_dest msgid "Destination:" msgstr "Destino:" #: install_status msgid "Status:" msgstr "Estado:" #: install_start msgid "Start the installation" msgstr "Iniciar la instalación" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Iniciar la copia de archivos a su ordenador" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Progreso de la instalación" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Esperando confirmación." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Creando carpetas" #: install_msg_copying msgid "Copying file" msgstr "Copiando el archivo" #: install_msg_end msgid "Finished!" msgstr "¡Acabado!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Limpiando..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "¡Instalación cancelada!" #: install_error msgid "Install error!" msgstr "¡Se produjo un error durante la instalación!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Seleccione la carpeta en la que se crearán los iconos del proyecto:" #: install_library_folders msgid "Library folders:" msgstr "Carpetas de la biblioteca:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "El proyecto se instaló correctamente!" #: install_success_2 msgid "In order to run it, select its" msgstr "Para ponerlo en marcha seleccione su" #: install_success_3 msgid "icon on the project library." msgstr "icono en la biblioteca de proyectos." #: wizard_info msgid "Press \"Next\" to start." msgstr "Haga clic en \"Siguiente\" para empezar." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Selección de la biblioteca" #: install_step_2 msgid "2. Download files" msgstr "2. Descarga de archivos" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Creación de iconos" #: install_step_4 msgid "Installation finished!" msgstr "¡Instalación acabada!" #: install_info_info msgid "You request to install the project:" msgstr "Ha solicitado instalar el proyecto:" #: settings_title msgid "Settings" msgstr "Configuración" #: library_error_clone msgid "Unable to clone library!" msgstr "¡No se ha podido clonar la biblioteca!" #: settings_security msgid "Security" msgstr "Seguridad" #: settings_password_protect msgid "Protect settings with password" msgstr "Proteger los cambios de configuración con contraseña" #: settings_new_password msgid "New password:" msgstr "Nueva contraseña:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Confirmar nueva contraseña:" #: settings_general msgid "General" msgstr "General" #: settings_look msgid "Look & Feel:" msgstr "Aspecto:" #: settings_skin msgid "Skin:" msgstr "Piel:" #: settings_language msgid "Language:" msgstr "Idioma:" #: settings_reports msgid "Reports" msgstr "Informes" #: settings_report_use msgid "Write scores to a database" msgstr "Guardar los resultados de las actividades en una base de datos" #: settings_report_engine msgid "Reporter class:" msgstr "Clase:" #: settings_report_params msgid "Parameters:" msgstr "Parámetros:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimedia activado" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimedia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Sonidos de evento activados" #: settings_library msgid "Libraries" msgstr "Bibliotecas" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Mostrar automáticamente la biblioteca al inicio" #: m_Tools msgid "Tools" msgstr "Herramientas" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "H" #: m_Help_Mnemonic msgid "H" msgstr "Y" #: m_Activity msgid "Activity" msgstr "Actividad" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Abrir el archivo..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Abrir un archivo de proyecto JClic" #: action_openFile_keys msgid "OO" msgstr "AO" #: action_openUrl_caption msgid "Open URL..." msgstr "Abrir una ubicación web..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Abrir un proyecto JClic directamente desde Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Salir" #: action_exit_tooltip msgid "Close JClic" msgstr "Cerrar el JClic" #: action_exit_keys msgid "XX" msgstr "LX" #: action_settings_caption msgid "Settings..." msgstr "Configuración..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Ajustar las opciones globales del programa" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "C" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Abrir o modificar una biblioteca JClic" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Información sobre el JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "¡Esta imagen es demasiado grande para ser utilizada como icono!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Conectarse a un servidor de informes JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Conexión directa a una base de datos JDBC:" #: settings_report_other msgid "Other:" msgstr "Otros:" #: settings_report_address msgid "Host:" msgstr "Servidor:" #: settings_report_port msgid "Port:" msgstr "Puerto:" #: settings_report_driver msgid "Driver:" msgstr "Controlador:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Usuario:" #: settings_report_pwd msgid "Password:" msgstr "Contraseña:" #: settings_report_options msgid "Reporter params::" msgstr "Parámetros:" #: settings_report_err_server msgid "Bad report server name!" msgstr "¡El nombre del servidor de informes es incorrecto!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Valor incorrecto del puerto en el sistema de informes. Por favor, indique un " "valor entre 1000 y 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "¡Datos incorrectos para el sistema de informes!" #: settings_report_type msgid "Reporting engine:" msgstr "Reporter type:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Detección automática" #: settings_security_tooltip msgid "Security settings" msgstr "Opciones de seguridad" #: settings_report_tooltip msgid "Report system settings" msgstr "Configuración del sistema de informes" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configuración del sistema multimedia" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Opciones de idioma y aspecto" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Configuración y edición de bibliotecas" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspecto del interfaz de usuario" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Selección del diseño gráfico de JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Selección del idioma" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Activa o desactiva a conexión a una base de datos de informes JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motor de informes basado en una conexión TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motor de informes basado en una conexión directa a una base de datos" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Otros motores de informes..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nombre o dirección IP del servidor de informes" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Puerto usado para la conexión (por defecto: 5510)" #: edit_file msgid "File:" msgstr "Archivo:" #: error_launchLibrary msgid "Error launching library" msgstr "Error al abrir la biblioteca" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "¡Instalando en la carpeta origen!" #: edit_find_media msgid "Find media file..." msgstr "Buscar recurso..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Suprimir" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Suprimir la referencia a la biblioteca seleccionada" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" "¿Realmente desea suprimir la referencia a la biblioteca seleccionada?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "¡Esta biblioteca se encuentra ya conectada al sistema!" #: edit_find_image_keys msgid "F*" msgstr "B*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Crear una nueva biblioteca de proyectos" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Añadir un enlace a una biblioteca ya existente" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Archivo o URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nueva biblioteca de proyectos" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Por favor, escriba el URL o nombre de archivo de la biblioteca de proyectos " "a la que desea acceder." #: install_launchProject msgid "Open the project now" msgstr "Abrir ahora el proyecto" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferido\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Orden utilizada para lanzar el navegador (firefox, iexplore, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Código de país\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Código opcional de dos letras correspondiente a la variante dialectal de un " "territorio (ej.\\: BR para portugués del Brasil)" #: settings_variant msgid "Variant\\:" msgstr "Variante\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Código opcional de variante del idioma" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_ru.po0000644000175000017500000005170411377161311023153 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-12-18 17:43+0000\n" "Last-Translator: Artem Karimov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Файл" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "Для выполнения этого действия требуется пароль администратора JClic." #: m_Help msgid "Help" msgstr "Справка" #: m_Skin msgid "Skin" msgstr "Скин" #: action_helpAbout_caption msgid "About..." msgstr "О программе..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Основная библиотека" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Этот файл JClic не библиотека проекта!\n" "Бибилотеки - это специальный тип проектов JClic." #: library_mainMenu msgid "Main menu" msgstr "Главное меню" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Новая библиотека проекта" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "Вы хотите создать новую библиотеку или подключить существующую?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Подключить" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Создать" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Создать или подключить новую библиотеку" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Создать" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Значок кнопки" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "Описание кнопки, используемое как текст подсказки" #: menuElement_dlg_description msgid "Description:" msgstr "Описание:" #: edit_find_image msgid "Find image..." msgstr "Найти изображение..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Значок:" #: edit_find_file msgid "Find file..." msgstr "Найти файл..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Путь к JClic проекту" #: menuElement_dlg_project msgid "Project:" msgstr "Проект:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Текст кнопки" #: edit_text msgid "Text:" msgstr "Текст:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Имя папки" #: library_dlg_name_tooltip msgid "Library name" msgstr "Название библиотеки" #: edit_name msgid "Name:" msgstr "Название:" #: edit_title msgid "Title:" msgstr "Заголовок:" #: library_dlg_title msgid "Library properties" msgstr "Свойства библиотеки" #: menu_dlg_title msgid "Folder properties" msgstr "Свойства папки" #: menuElement_dlg_title msgid "Button properties" msgstr "Свойства кнопки" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Удалить текущее меню" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Удалить" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Удалить элемент текущего меню" #: action_libraries_caption msgid "Libraries..." msgstr "Библиотеки..." #: dlg_save_title msgid "Save file..." msgstr "Сохранить файл..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Ошибка открытия \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Будет использован стандартный." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Удалить" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Создать новый ярлык проекта" #: menu_newMenuName msgid "New folder" msgstr "Новая папка" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Создать новую папку для кнопок проекта" #: menu_newMenu_caption msgid "New button's folder" msgstr "Новая папка кнопок" #: menu_newMenuElement_caption msgid "New project button" msgstr "Новая кнопка проекта" #: menu_newMenuElementName msgid "New button" msgstr "Новая кнопка" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Отменить изменения" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Отмена" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Изменить выбранную библиотеку" #: libraryManager_edit_caption msgid "Edit" msgstr "Изменить" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Сохранить изменения" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Выбрать выделенную папку" #: library_select_caption_ok msgid "Ok" msgstr "Ok" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Выбрать" #: library_caption msgid "JClic projects library" msgstr "Библиотека проектов JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Открыть выбранную библиотеку" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Отмена" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Отмена" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Выбрать" #: libraryManager_caption msgid "Select library" msgstr "Выбрать библиотеку" #: library_error_reading msgid "Error reading project library!" msgstr "Ошибка чтения библиотеки проекта!" #: wizard_next msgid "Next >" msgstr "Далее >" #: wizard_prev msgid "< Previous" msgstr "< Назад" #: wizard_finish msgid "Finish" msgstr "Закончить" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Ошибка создания значка библиотеки!" #: install_title msgid "Installation of JClic projects" msgstr "Установка проектов JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Установка нового проекта JClic" #: install_info_from msgid "From:" msgstr "От:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Отмена" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Отменить операцию" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Завершить операцию" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Следующий шаг" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Предыдущий шаг" #: install_select_library msgid "Select the library where to install the project:" msgstr "Выберите библиотеку, куда установить проект:" #: install_copy_files msgid "File copy" msgstr "Копирование файла" #: install_source msgid "Source:" msgstr "Источник:" #: install_dest msgid "Destination:" msgstr "Назначение:" #: install_status msgid "Status:" msgstr "Состояние:" #: install_start msgid "Start the installation" msgstr "Начало установки" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Начало копирования файлов на ваш компьютер" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Состояние установки" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Ожидание подтверждения." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Создание папок" #: install_msg_copying msgid "Copying file" msgstr "Копирование файла" #: install_msg_end msgid "Finished!" msgstr "Завершено!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Подготовка очистки..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Установка отменена!" #: install_error msgid "Install error!" msgstr "Ошибка установки!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Выберите папку для размещения значков проекта:" #: install_library_folders msgid "Library folders:" msgstr "Папки библиотек:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Проект установлен на вашем компьютере!" #: install_success_2 msgid "In order to run it, select its" msgstr "Для его запуска, выберите его" #: install_success_3 msgid "icon on the project library." msgstr "значок в библиотеке проекта." #: wizard_info msgid "Press \"Next\" to start." msgstr "Нажмите \"Далее\" для начала." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Выбор библиотеки JClic" #: install_step_2 msgid "2. Download files" msgstr "2. Загрузка файлов" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Создание значков" #: install_step_4 msgid "Installation finished!" msgstr "Установка завершена!" #: install_info_info msgid "You request to install the project:" msgstr "Вы просите установить проект" #: settings_title msgid "Settings" msgstr "Настройки" #: library_error_clone msgid "Unable to clone library!" msgstr "Невозможно клонировать библиотеку!" #: settings_security msgid "Security" msgstr "Безопасность" #: settings_password_protect msgid "Protect settings with password" msgstr "Защита настроек паролем" #: settings_new_password msgid "New password:" msgstr "Новый пароль:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Повторите новый пароль:" #: settings_general msgid "General" msgstr "Общие" #: settings_look msgid "Look & Feel:" msgstr "Смотри и Чувствуй (дизайн):" #: settings_skin msgid "Skin:" msgstr "Скин:" #: settings_language msgid "Language:" msgstr "Язык:" #: settings_reports msgid "Reports" msgstr "Отчёты" #: settings_report_use msgid "Write scores to a database" msgstr "Запись результатов в базу данных" #: settings_report_engine msgid "Reporter class:" msgstr "Класс отчитывающегося:" #: settings_report_params msgid "Parameters:" msgstr "Параметры:" #: settings_media msgid "Multimedia" msgstr "Мультимедиа" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Мультимедиа включена" #: settings_media_system msgid "Multimedia system:" msgstr "Мультимедийная система:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Звуки событий включены" #: settings_library msgid "Libraries" msgstr "Библиотеки" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Автоматически переходить к библиотекам при запуске JClic" #: m_Tools msgid "Tools" msgstr "Сервис" #: m_File_Mnemonic msgid "F" msgstr "Ф" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "Е" #: m_Help_Mnemonic msgid "H" msgstr "С" #: m_Activity msgid "Activity" msgstr "Активность" #: m_Activity_Mnemonic msgid "A" msgstr "А" #: action_openFile_caption msgid "Open file..." msgstr "Открыть файл..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Открыть файл проекта JClic" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Открыть URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Открыть файл проекта JClic из интернета" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Выход" #: action_exit_tooltip msgid "Close JClic" msgstr "Закрыть JClic" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Настройки..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Настройка общих параметров программы" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "Н" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Открыть или редактировать библиотеку JClic." #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Информация о JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Это изображение слишком велико для использования, как значок!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Подключить к серверу отчётов JClic" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Прямое JDBC соединение:" #: settings_report_other msgid "Other:" msgstr "Другое:" #: settings_report_address msgid "Host:" msgstr "Узел:" #: settings_report_port msgid "Port:" msgstr "Порт:" #: settings_report_driver msgid "Driver:" msgstr "Драйвер:" #: settings_report_url msgid "URL:" msgstr "Адрес(URL):" #: settings_report_user msgid "User:" msgstr "Пользователь:" #: settings_report_pwd msgid "Password:" msgstr "Пароль:" #: settings_report_options msgid "Reporter params::" msgstr "Параметры отчитывающегося::" #: settings_report_err_server msgid "Bad report server name!" msgstr "Неверное имя сервера отчётов!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Неверный номер порта! Пожалуйста, введите значение между 1000 и 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Неверные данные системы отчётов!" #: settings_report_type msgid "Reporting engine:" msgstr "Система отчётов:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Автоопределение" #: settings_security_tooltip msgid "Security settings" msgstr "Настройки безопасности" #: settings_report_tooltip msgid "Report system settings" msgstr "Настройки системы отчётов" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Параметры системы мультимедиа" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Настройки языка и вида" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Настройки библиотеки и редактор" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Дизайн интерфейса пользователя" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Выбор графического аспекта JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Выбор языка" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Включить/выключить подключение к базе данных отчётов JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Механизм отчётов базируется на TCP/IP соединении" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Механизм отчётов базируется на прямом подключении к базе данных" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Прочие механизмы отчётов..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Имя или IP адрес сервера отчётов" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Порт для подключения (по умолчанию 5510)" #: edit_file msgid "File:" msgstr "Файл:" #: error_launchLibrary msgid "Error launching library" msgstr "Ошибка запуска библиотеки" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Установка в папку источника!" #: edit_find_media msgid "Find media file..." msgstr "Найти медиа файл..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Удалить" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Удалить ссылку на выделенную библиотеку" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Вы действительно хотите удалить ссылку на выделенную библиотеку?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Эта библиотека уже подключена к системе." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Создать новую библиотеку проекта" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Добавить ссылку на существующую библиотеку проекта" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Файл или URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Новая библиотека проекта" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "Пожалуйста, введите URL или имя файла библиотеки проекта\\!" #: install_launchProject msgid "Open the project now" msgstr "Открыть проект сейчас" #: settings_browser msgid "Preferred browser\\:" msgstr "Предпочитаемый браузер\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "Команда для запуска браузера (firefox, iexplore, mozilla, opera...)" #: settings_country msgid "Country code\\:" msgstr "Код страны\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Дополнительный двухсимвольный код, соответствующий варианту языка, " "специфичному для страны (напр.\\: BR для Brazilian Portuguese)" #: settings_variant msgid "Variant\\:" msgstr "Вариант\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Дополнительный вариант кода языка" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_pt_BR.po0000644000175000017500000004417111377161311023533 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-05 17:51+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Arquivo" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Para efetuar esta operação introduza a senha de administrador do JClic." #: m_Help msgid "Help" msgstr "Ajuda" #: m_Skin msgid "Skin" msgstr "Aparência" #: action_helpAbout_caption msgid "About..." msgstr "Sobre..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Biblioteca principal" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Este arquivo JClic não é do tipo \"biblioteca de projetos\".\n" "As bibliotecas são um tipo especial de arquivos JClic." #: library_mainMenu msgid "Main menu" msgstr "Menu principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nova biblioteca de projetos" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "¿Deseja criar uma nova biblioteca ou conectar-se a uma biblioteca existente?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Conectar-se" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nova" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Criar ou conectar-se a uma nova biblioteca" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nova" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "imagem a ser exibida no botão" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Texto flutuante que aparecerá quando se deixa o cursor parado sobre o botão." #: menuElement_dlg_description msgid "Description:" msgstr "Descrição:" #: edit_find_image msgid "Find image..." msgstr "Buscar imagem..." #: menuElement_dlg_icon msgid "Icon:" msgstr "ícone:" #: edit_find_file msgid "Find file..." msgstr "Buscar arquivo..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Local do projeto JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Projeto:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Texto do botão" #: edit_text msgid "Text:" msgstr "Texto:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nome da pasta" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nome da biblioteca" #: edit_name msgid "Name:" msgstr "Nome:" #: edit_title msgid "Title:" msgstr "Título:" #: library_dlg_title msgid "Library properties" msgstr "Propriedades da biblioteca" #: menu_dlg_title msgid "Folder properties" msgstr "Propriedades da pasta" #: menuElement_dlg_title msgid "Button properties" msgstr "Propriedades do botão" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Eliminar o menu selecionado" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Eliminar" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Eliminar o elemento de menu selecionado" #: action_libraries_caption msgid "Libraries..." msgstr "Bibliotecas..." #: dlg_save_title msgid "Save file..." msgstr "Salvar arquivo..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Erro ao abrir \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\".Valores padrão foram utilizados." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Excluir" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Criar um novo botão de projeto" #: menu_newMenuName msgid "New folder" msgstr "Nova pasta" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Criar uma nova pasta de botões de projeto" #: menu_newMenu_caption msgid "New button's folder" msgstr "Nova pasta de ícones" #: menu_newMenuElement_caption msgid "New project button" msgstr "Novo botão de projeto" #: menu_newMenuElementName msgid "New button" msgstr "Novo botão" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Cancelar as modificações" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editar a biblioteca selecionada" #: libraryManager_edit_caption msgid "Edit" msgstr "Editar" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Salvar alterações" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Escolher a pasta selecionada" #: library_select_caption_ok msgid "Ok" msgstr "Aceitar" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Selecionar" #: library_caption msgid "JClic projects library" msgstr "Biblioteca de projetos JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Abrir a biblioteca selecionada" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Cancelar" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Selecionar" #: libraryManager_caption msgid "Select library" msgstr "Selecção da biblioteca de projetos" #: library_error_reading msgid "Error reading project library!" msgstr "¡Erro ao ler a biblioteca de projetos!" #: wizard_next msgid "Next >" msgstr "Próximo >" #: wizard_prev msgid "< Previous" msgstr "< Anterior" #: wizard_finish msgid "Finish" msgstr "Finalizar" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "¡Erro ao criar o ícone na biblioteca!" #: install_title msgid "Installation of JClic projects" msgstr "Instalacãoo de projetos JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instalar um novo projeto JClic" #: install_info_from msgid "From:" msgstr "De:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Cancelar" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Cancelar a operação" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Finalizar a operação" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Passo seguinte da operação" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Passo anterior da operação" #: install_select_library msgid "Select the library where to install the project:" msgstr "Selecione a biblioteca em que se instalará o projeto:" #: install_copy_files msgid "File copy" msgstr "Cópia de arquivos" #: install_source msgid "Source:" msgstr "Origem:" #: install_dest msgid "Destination:" msgstr "Destino:" #: install_status msgid "Status:" msgstr "Estado:" #: install_start msgid "Start the installation" msgstr "Iniciar a instalação" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Iniciar a cópia de arquivos no computador" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Progresso da instalação" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Esperando confirmação." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Criando camadas" #: install_msg_copying msgid "Copying file" msgstr "Copiando o arquivo" #: install_msg_end msgid "Finished!" msgstr "¡Feito!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Limpando..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "¡Instalação cancelada!" #: install_error msgid "Install error!" msgstr "¡Houve um erro durante a instalação!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Selecione a pasta em que se criarão os ícones do projeto:" #: install_library_folders msgid "Library folders:" msgstr "Pastas da biblioteca:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "O projeto foi instalado corretamente!" #: install_success_2 msgid "In order to run it, select its" msgstr "Para executar selecione seu" #: install_success_3 msgid "icon on the project library." msgstr "Ícone na biblioteca de projetos." #: wizard_info msgid "Press \"Next\" to start." msgstr "Clique em \"Próximo\" para continuar." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Selecção da biblioteca" #: install_step_2 msgid "2. Download files" msgstr "2. Cópia de arquivos" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Criação de ícones" #: install_step_4 msgid "Installation finished!" msgstr "¡Instalação concluída!" #: install_info_info msgid "You request to install the project:" msgstr "Solicitada instalação do projeto:" #: settings_title msgid "Settings" msgstr "Configuração" #: library_error_clone msgid "Unable to clone library!" msgstr "¡Não foi possível clonar a biblioteca!" #: settings_security msgid "Security" msgstr "Segurança" #: settings_password_protect msgid "Protect settings with password" msgstr "Proteger alterações de configuração com senha" #: settings_new_password msgid "New password:" msgstr "Nova senha:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Confirmar nova senha:" #: settings_general msgid "General" msgstr "Geral" #: settings_look msgid "Look & Feel:" msgstr "Aspecto:" #: settings_skin msgid "Skin:" msgstr "Camada:" #: settings_language msgid "Language:" msgstr "Idioma:" #: settings_reports msgid "Reports" msgstr "Relatórios" #: settings_report_use msgid "Write scores to a database" msgstr "Salvar os resultados das atividades em uma base de dados" #: settings_report_engine msgid "Reporter class:" msgstr "Classe:" #: settings_report_params msgid "Parameters:" msgstr "Parâmetros:" #: settings_media msgid "Multimedia" msgstr "Multimídia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimídia ativada" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimídia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Sons eventuais ativados" #: settings_library msgid "Libraries" msgstr "Bibliotecas" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Mostrar automáticamente a biblioteca no início" #: m_Tools msgid "Tools" msgstr "Ferramentas" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "H" #: m_Help_Mnemonic msgid "H" msgstr "Y" #: m_Activity msgid "Activity" msgstr "Atividade" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Abrir o arquivo..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Abrir um arquivo de projeto JClic" #: action_openFile_keys msgid "OO" msgstr "AO" #: action_openUrl_caption msgid "Open URL..." msgstr "Abrir local web..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Abrir um projeto JClic diretamente da Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Sair" #: action_exit_tooltip msgid "Close JClic" msgstr "Fechar o JClic" #: action_exit_keys msgid "XX" msgstr "LX" #: action_settings_caption msgid "Settings..." msgstr "Configuração..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Ajustar as opçoes globais do programa" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "C" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Abrir ou modificar uma biblioteca JClic" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Informação sobre o JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "¡Esta imagem é muito grande para ser utilizada como ícone!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Conectar-se a um servidor de relatório JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Conexão direta a uma base de dados JDBC:" #: settings_report_other msgid "Other:" msgstr "Outros:" #: settings_report_address msgid "Host:" msgstr "Servidor:" #: settings_report_port msgid "Port:" msgstr "Porta:" #: settings_report_driver msgid "Driver:" msgstr "Controlador:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Usuário:" #: settings_report_pwd msgid "Password:" msgstr "Senha:" #: settings_report_options msgid "Reporter params::" msgstr "Parâmetros:" #: settings_report_err_server msgid "Bad report server name!" msgstr "¡Nome do servidor de relatórios incorreto!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Valor incorreto da porta no sistema de relatórios. Por favor, indique um " "valor entre 1000 e 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "¡Dados incorretos para o sistema de relatórios!" #: settings_report_type msgid "Reporting engine:" msgstr "Tipo de relatório:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Detecção automática" #: settings_security_tooltip msgid "Security settings" msgstr "Opç\\oes de segurança" #: settings_report_tooltip msgid "Report system settings" msgstr "Configuração do sistema de relatórios" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configuração do sistema multimeios" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Opçoes de idioma e aparência" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Configuração e edição de bibliotecas" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspecto da interface de usuário" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Selecção do estilo gráfico do JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Selecção do idioma" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Ativa ou desativa a conexão a uma base de dados de relatórios JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motor de relatórios baseado numa conexão TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motor de relatórios baseado numa conexão direta a uma base de dados" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Outros motores de relatórios..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nome ou direcção IP do servidor de relatórios" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Porta usada para a conexão (padrão: 5510)" #: edit_file msgid "File:" msgstr "Arquivo:" #: error_launchLibrary msgid "Error launching library" msgstr "Erro ao abrir a biblioteca" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "¡Instalando na pasta origem!" #: edit_find_media msgid "Find media file..." msgstr "Buscar recurso..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Apagar" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Suprimir a referência a biblioteca selecionada" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "¿Realmente deseja eliminar a referência à biblioteca selecionada?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "¡Esta biblioteca já está conectada ao sistema!" #: edit_find_image_keys msgid "F*" msgstr "B*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Criar uma nova biblioteca de projetos" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Acrescentar um link a uma biblioteca já existente" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Arquivo ou URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nova biblioteca de projetos" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Por favor, escreva a URL ou nome de arquivo da biblioteca de projetos a qual " "deseja acessar." #: install_launchProject msgid "Open the project now" msgstr "Abrir agora o projeto" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador proferido\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comando usado para iniciar o navegador (firefox, iexplorer, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Country code\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" #: settings_variant msgid "Variant\\:" msgstr "Variant\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Optional variant code of the language" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_cs.po0000644000175000017500000004333211377161311023130 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-07-26 18:37+0000\n" "Last-Translator: Martin Slavík \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Soubor" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "Por vykonání operace je třeba heslo JClic administrátora." #: m_Help msgid "Help" msgstr "Nápověda" #: m_Skin msgid "Skin" msgstr "Motiv" #: action_helpAbout_caption msgid "About..." msgstr "O aplikaci..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Hlavní knihovna" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Tento JClic soubor není knihovna projektů!\n" "Knihovny jsou speciálním typem JClic projektů." #: library_mainMenu msgid "Main menu" msgstr "Hlavní menu" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nová knihovna prohjektu" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "Chcete vytvořit novou knihovnu nebo propojit s existující?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Připojit" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nová" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Vytvořit nebo propojit s novou knihovnou" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nový" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "ikona tlačítka" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "Popis tlačítka, použitý jako tooltip" #: menuElement_dlg_description msgid "Description:" msgstr "Popis:" #: edit_find_image msgid "Find image..." msgstr "Najdi obrázek..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Ikona:" #: edit_find_file msgid "Find file..." msgstr "Najdi soubor..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Cesta k projektu JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Projekt:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Text tlačítka" #: edit_text msgid "Text:" msgstr "Text:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Název složky" #: library_dlg_name_tooltip msgid "Library name" msgstr "Jméno knihovny" #: edit_name msgid "Name:" msgstr "Název:" #: edit_title msgid "Title:" msgstr "Titulek:" #: library_dlg_title msgid "Library properties" msgstr "Vlastnosti knihovny" #: menu_dlg_title msgid "Folder properties" msgstr "Vlastnosti složky" #: menuElement_dlg_title msgid "Button properties" msgstr "Vlastnosti tlačítka" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Smazat aktuální nabídku" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Smazat" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Smazat současnou položku nabídky" #: action_libraries_caption msgid "Libraries..." msgstr "Knihovny..." #: dlg_save_title msgid "Save file..." msgstr "Uložit soubor..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Chyba při otevírání \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Budou použity standardní předvolby." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Smazat" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Vytvořte nového zástupce projektu" #: menu_newMenuName msgid "New folder" msgstr "Nová složka" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Vytvořte novou složku pro tlačítka projektu" #: menu_newMenu_caption msgid "New button's folder" msgstr "Nová složka pro tlačítka" #: menu_newMenuElement_caption msgid "New project button" msgstr "Nové tlačítko projektu" #: menu_newMenuElementName msgid "New button" msgstr "Nová tlačítko" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Zruš změny" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Zrušit" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Upravit vybranou knihovnu" #: libraryManager_edit_caption msgid "Edit" msgstr "Upravit" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Uložit změny" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Vybrat zvolenou složku" #: library_select_caption_ok msgid "Ok" msgstr "Ok" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Vybrat" #: library_caption msgid "JClic projects library" msgstr "Knihovna projektů JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Otevřít vybranou knihovnu" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Zrušit" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Zrušit" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Vybrat" #: libraryManager_caption msgid "Select library" msgstr "Vybrat knihovnu" #: library_error_reading msgid "Error reading project library!" msgstr "Chyba při čtení knihovny projektu!" #: wizard_next msgid "Next >" msgstr "Další >" #: wizard_prev msgid "< Previous" msgstr "< Předchozí" #: wizard_finish msgid "Finish" msgstr "Dokončit" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Chyba při vytváření ikon knihovny!" #: install_title msgid "Installation of JClic projects" msgstr "Instalace JClic projektů" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instalace nových JClic projektů" #: install_info_from msgid "From:" msgstr "Z:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Zrušit" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Zrušit operaci" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Dokončit operaci" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Následující krok činnosti" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Předchozí krok činnosti" #: install_select_library msgid "Select the library where to install the project:" msgstr "Vybrat knihovnu pro instalaci projektu:" #: install_copy_files msgid "File copy" msgstr "Kopíruj soubor" #: install_source msgid "Source:" msgstr "Zdroj:" #: install_dest msgid "Destination:" msgstr "Cíl:" #: install_status msgid "Status:" msgstr "Stav:" #: install_start msgid "Start the installation" msgstr "Start instalace" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Začínám kopírovat soubory na váš počítač" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Průběh instalace" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Čekám na potvrzení" #: install_msg_creating_dirs msgid "Creating directories" msgstr "Vytvářím složky" #: install_msg_copying msgid "Copying file" msgstr "Kopíruji soubor" #: install_msg_end msgid "Finished!" msgstr "Hotovo!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Čistím..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Instalace zrušena!" #: install_error msgid "Install error!" msgstr "Chyba instalace" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Vyberte složku pro umístění ikon projektu:" #: install_library_folders msgid "Library folders:" msgstr "Složka knihoven:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Projekt je nainstalován na vašem systému!" #: install_success_2 msgid "In order to run it, select its" msgstr "Pro spuštění ho vyberte" #: install_success_3 msgid "icon on the project library." msgstr "ikona knihovny projektu" #: wizard_info msgid "Press \"Next\" to start." msgstr "Stiskněte \"Další\" pro start." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Výběr JClic knihovny" #: install_step_2 msgid "2. Download files" msgstr "2. Stažení souborů" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Vytvoření ikon" #: install_step_4 msgid "Installation finished!" msgstr "Instalace dokončena!" #: install_info_info msgid "You request to install the project:" msgstr "požadujete vytvořit projekt:" #: settings_title msgid "Settings" msgstr "Nastavení" #: library_error_clone msgid "Unable to clone library!" msgstr "Nemohu naklonovat knihovnu!" #: settings_security msgid "Security" msgstr "Zabezpečení" #: settings_password_protect msgid "Protect settings with password" msgstr "Chránit nastavení heslem" #: settings_new_password msgid "New password:" msgstr "Nové heslo:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Potvrďte nové heslo:" #: settings_general msgid "General" msgstr "Obecné" #: settings_look msgid "Look & Feel:" msgstr "Vzhled:" #: settings_skin msgid "Skin:" msgstr "Motiv:" #: settings_language msgid "Language:" msgstr "Jazyk:" #: settings_reports msgid "Reports" msgstr "Sestavy" #: settings_report_use msgid "Write scores to a database" msgstr "Zapiš skóre do databáze" #: settings_report_engine msgid "Reporter class:" msgstr "Třída reportéra:" #: settings_report_params msgid "Parameters:" msgstr "Parametry:" #: settings_media msgid "Multimedia" msgstr "Multimédia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimédia povolena" #: settings_media_system msgid "Multimedia system:" msgstr "Systém multimédií:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Zvuky událostí povoleny" #: settings_library msgid "Libraries" msgstr "Knihovny" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Automaticky jdi ke knihovnám při startu JClicu" #: m_Tools msgid "Tools" msgstr "Nástroje" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Aktivita" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Otevřít soubor..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Otevřít soubor JClic projektue" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Otevřít URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Otevřít JClic projekt přímo z internetu" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Ukončit" #: action_exit_tooltip msgid "Close JClic" msgstr "Uzavřít JClic" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Nastavení..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Upravit celkové nastavení programu" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "T" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Otevřít nebo upravit JClic knihovnu." #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Informace o software JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Tento obrázek je příliš velký na ikonu!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Připojit k JClic serveru sestav:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Příme JDBC spojení:" #: settings_report_other msgid "Other:" msgstr "Jiný:" #: settings_report_address msgid "Host:" msgstr "Hostitel:" #: settings_report_port msgid "Port:" msgstr "Port:" #: settings_report_driver msgid "Driver:" msgstr "Ovladač:" #: settings_report_url msgid "URL:" msgstr "URL :" #: settings_report_user msgid "User:" msgstr "Uživatel:" #: settings_report_pwd msgid "Password:" msgstr "Heslo:" #: settings_report_options msgid "Reporter params::" msgstr "Parametry reportéra:" #: settings_report_err_server msgid "Bad report server name!" msgstr "Špatné jméno serveru sestav!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "Špatné číslo portu! Vložte rposím hodnotu mezi 1000 a 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Nesprávná systémová data reportéra!" #: settings_report_type msgid "Reporting engine:" msgstr "Reportovací stroj:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Autodetekce" #: settings_security_tooltip msgid "Security settings" msgstr "Bezpečnostní nastavení" #: settings_report_tooltip msgid "Report system settings" msgstr "Systémové nastavení reportéra" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Nastavení multimediálního systému" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Nastavení jazyka a vzhledu" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Nastavení knihpvny a editoru" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Vzhled uživatelského rozhraní" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Výběr grafického vzhledu JClicu" #: settings_language_tooltip msgid "Language selection" msgstr "Výběr jazyka" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Zapne/vypne spojení do databáze JClic sestav" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Stroj sestav založený na TCP/IP spojení" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Stroj sestav založený na přímém propojení s databází" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Ostatní stroje sestav..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Jméno serveru sestav nebo IP adresa" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Port použitý pro spojení (standardně 5510)" #: edit_file msgid "File:" msgstr "Soubor:" #: error_launchLibrary msgid "Error launching library" msgstr "Chyba při spouštění knihovny" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Instaluji do zdrojové složky!" #: edit_find_media msgid "Find media file..." msgstr "Najít spoubor s médii..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Smazat" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Smazat odkaz na vybranou knihovnu" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Opravdu chcete smazat odkaz na vybranou knihovnu?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Tato knIhovn je už porpojena se systémem." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Vytvořit novou knihovnu projektů" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Přidat odkaz na existující knihovnu projektů" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Soubor nebo URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nová knihovna projektu" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "Zadejte prosím URL nebo jméno souboru knihovny projektů\\!" #: install_launchProject msgid "Open the project now" msgstr "Otevřít projekt nyní" #: settings_browser msgid "Preferred browser\\:" msgstr "Upřednostňovaný prohlížeč\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Příkaz pro spuštění prohlížeče (firefox, iexplore, mozilla, opera...)" #: settings_country msgid "Country code\\:" msgstr "Kod země\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Volitelný dvoupísmenný kód odpovídající variantě jazyka specifické pro danou " "zemi (např.\\: BR pro Brazilskou portugalštinu)" #: settings_variant msgid "Variant\\:" msgstr "Varianta\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Volitelná varianta kódu jazyka" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_pt.po0000644000175000017500000004423411377161311023150 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-10-01 00:49+0000\n" "Last-Translator: Tiago Silva \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Ficheiro" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Para efectuar esta operação introduza a senha de administrador do JClic." #: m_Help msgid "Help" msgstr "Ajuda" #: m_Skin msgid "Skin" msgstr "Aspecto" #: action_helpAbout_caption msgid "About..." msgstr "Sobre..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Biblioteca principal" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Este ficheiro JClic não é do tipo \"biblioteca de projectos\".\n" "As bibliotecas são um tipo especial de ficheiro JClic." #: library_mainMenu msgid "Main menu" msgstr "Menu principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nova biblioteca de projectos" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Deseja criar uma nova biblioteca ou ligar a uma biblioteca existente?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Ligar" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nova" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Criar ou conectar-se a uma nova biblioteca" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nova" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Ícone do botão" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Descrição do botão (mostrada quando mantém o ponteiro do rato sobre o botão)." #: menuElement_dlg_description msgid "Description:" msgstr "Descrição:" #: edit_find_image msgid "Find image..." msgstr "Procurar imagem..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Ícone:" #: edit_find_file msgid "Find file..." msgstr "Procurar ficheiro..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Localização do projecto JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Projecto:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Texto do botão" #: edit_text msgid "Text:" msgstr "Texto:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nome da pasta" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nome da biblioteca" #: edit_name msgid "Name:" msgstr "Nome:" #: edit_title msgid "Title:" msgstr "Título:" #: library_dlg_title msgid "Library properties" msgstr "Propriedades da biblioteca" #: menu_dlg_title msgid "Folder properties" msgstr "Propriedades da pasta" #: menuElement_dlg_title msgid "Button properties" msgstr "Propriedades do botão" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Eliminar o menu seleccionado" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Eliminar" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Eliminar o elemento de menu seleccionado" #: action_libraries_caption msgid "Libraries..." msgstr "Bibliotecas..." #: dlg_save_title msgid "Save file..." msgstr "Guardar ficheiro..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Erro ao abrir \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\".Serão utilizadas as definições padrão." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Eliminar" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Criar um novo botão de projecto" #: menu_newMenuName msgid "New folder" msgstr "Nova pasta" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Criar uma nova pasta de botões de projecto" #: menu_newMenu_caption msgid "New button's folder" msgstr "Nova pasta de ícones" #: menu_newMenuElement_caption msgid "New project button" msgstr "Novo botão de projecto" #: menu_newMenuElementName msgid "New button" msgstr "Novo botão" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Cancelar as modificações" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editar a biblioteca seleccionada" #: libraryManager_edit_caption msgid "Edit" msgstr "Editar" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Guardar alterações" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Escolher a pasta seleccionada" #: library_select_caption_ok msgid "Ok" msgstr "OK" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Seleccionar" #: library_caption msgid "JClic projects library" msgstr "Biblioteca de projectos JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Abrir a biblioteca seleccionada" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Cancelar" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Seleccionar" #: libraryManager_caption msgid "Select library" msgstr "Selecção da biblioteca de projectos" #: library_error_reading msgid "Error reading project library!" msgstr "Erro de leitura da biblioteca de projectos!" #: wizard_next msgid "Next >" msgstr "Seguinte >" #: wizard_prev msgid "< Previous" msgstr "< Anterior" #: wizard_finish msgid "Finish" msgstr "Terminar" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Erro ao criar o ícone na biblioteca!" #: install_title msgid "Installation of JClic projects" msgstr "Instalacãoo de projectos JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instalar um novo projecto JClic" #: install_info_from msgid "From:" msgstr "De:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Cancelar" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Cancelar a operação" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Terminar a operação" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Passo seguinte da operação" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Passo anterior da operação" #: install_select_library msgid "Select the library where to install the project:" msgstr "Seleccione a biblioteca em que se instalará o projecto:" #: install_copy_files msgid "File copy" msgstr "Cópia de ficheiros" #: install_source msgid "Source:" msgstr "Origem:" #: install_dest msgid "Destination:" msgstr "Destino:" #: install_status msgid "Status:" msgstr "Estado:" #: install_start msgid "Start the installation" msgstr "Iniciar a instalação" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Iniciar a cópia de ficheiros no computador" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Progresso da instalação" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "A aguardar confirmação." #: install_msg_creating_dirs msgid "Creating directories" msgstr "A criar camadas" #: install_msg_copying msgid "Copying file" msgstr "A copiar o ficheiro" #: install_msg_end msgid "Finished!" msgstr "Terminado!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "A limpar..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Instalação cancelada!" #: install_error msgid "Install error!" msgstr "Ocorreu um erro durante a instalação!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Seleccione a pasta em que se criarão os ícones do projecto:" #: install_library_folders msgid "Library folders:" msgstr "Pastas da biblioteca:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "O projecto foi instalado correctamente!" #: install_success_2 msgid "In order to run it, select its" msgstr "Para executar, seleccione o" #: install_success_3 msgid "icon on the project library." msgstr "ícone na biblioteca de projectos." #: wizard_info msgid "Press \"Next\" to start." msgstr "Clique em \"Seguinte\" para continuar." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Selecção da biblioteca Jclic" #: install_step_2 msgid "2. Download files" msgstr "2. Cópia de ficheiros" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Criação de ícones" #: install_step_4 msgid "Installation finished!" msgstr "Instalação concluída!" #: install_info_info msgid "You request to install the project:" msgstr "Solicitada instalação do projecto:" #: settings_title msgid "Settings" msgstr "Definições" #: library_error_clone msgid "Unable to clone library!" msgstr "Não foi possível copiar a biblioteca!" #: settings_security msgid "Security" msgstr "Segurança" #: settings_password_protect msgid "Protect settings with password" msgstr "Proteger configurações com palavra-chave" #: settings_new_password msgid "New password:" msgstr "Nova palavra-chave:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Confirmar nova palavra-chave:" #: settings_general msgid "General" msgstr "Geral" #: settings_look msgid "Look & Feel:" msgstr "Aspecto:" #: settings_skin msgid "Skin:" msgstr "Camada:" #: settings_language msgid "Language:" msgstr "Idioma:" #: settings_reports msgid "Reports" msgstr "Relatórios" #: settings_report_use msgid "Write scores to a database" msgstr "Guardar os resultados das actividades numa base de dados" #: settings_report_engine msgid "Reporter class:" msgstr "Classe:" #: settings_report_params msgid "Parameters:" msgstr "Parâmetros:" #: settings_media msgid "Multimedia" msgstr "Multimédia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimédia activado" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimédia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Sons de evento activados" #: settings_library msgid "Libraries" msgstr "Bibliotecas" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Mostrar automaticamente a biblioteca no início" #: m_Tools msgid "Tools" msgstr "Ferramentas" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "F" #: m_Help_Mnemonic msgid "H" msgstr "Y" #: m_Activity msgid "Activity" msgstr "Actividade" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Abrir ficheiro..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Abrir um ficheiro de projecto JClic" #: action_openFile_keys msgid "OO" msgstr "AO" #: action_openUrl_caption msgid "Open URL..." msgstr "Abrir URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Abrir um projecto JClic directamente da Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Sair" #: action_exit_tooltip msgid "Close JClic" msgstr "Fechar JClic" #: action_exit_keys msgid "XX" msgstr "LX" #: action_settings_caption msgid "Settings..." msgstr "Definições..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Ajustar as opções globais do programa" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "C" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Abrir ou modificar uma biblioteca JClic" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Informação sobre o JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Esta imagem é muito grande para ser utilizada como ícone!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Conectar-se a um servidor de relatórios JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Conexão directa a uma base de dados JDBC:" #: settings_report_other msgid "Other:" msgstr "Outros:" #: settings_report_address msgid "Host:" msgstr "Servidor:" #: settings_report_port msgid "Port:" msgstr "Porta:" #: settings_report_driver msgid "Driver:" msgstr "Controlador:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Utilizador:" #: settings_report_pwd msgid "Password:" msgstr "Palavra-chave:" #: settings_report_options msgid "Reporter params::" msgstr "Parâmetros:" #: settings_report_err_server msgid "Bad report server name!" msgstr "Nome do servidor de relatórios incorrecto!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Valor incorrecto da porta no sistema de relatórios. Por favor, indique um " "valor entre 1000 e 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Dados incorrectos para o sistema de relatórios!" #: settings_report_type msgid "Reporting engine:" msgstr "Tipo de relatório:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Detectar automaticamente" #: settings_security_tooltip msgid "Security settings" msgstr "Opções de segurança" #: settings_report_tooltip msgid "Report system settings" msgstr "Configuração do sistema de relatórios" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configuração do sistema multimédia" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Opções de idioma e aparência" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Configuração e edição de bibliotecas" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspecto da interface de utilizador" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Selecção do estilo gráfico do JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Selecção do idioma" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "" "Activa ou desactiva a conexão a uma base de dados de relatórios JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motor de relatórios baseado numa conexão TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motor de relatórios baseado numa conexão directa a uma base de dados" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Outros motores de relatórios..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nome ou endereço IP do servidor de relatórios" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Porta usada para a conexão (padrão: 5510)" #: edit_file msgid "File:" msgstr "Ficheiro:" #: error_launchLibrary msgid "Error launching library" msgstr "Erro ao abrir a biblioteca" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "A instalar na pasta de origem!" #: edit_find_media msgid "Find media file..." msgstr "Procurar recurso..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Eliminar" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Eliminar a referência à biblioteca seleccionada" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Deseja eliminar a referência à biblioteca seleccionada?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Esta biblioteca já está conectada ao sistema!" #: edit_find_image_keys msgid "F*" msgstr "B*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Criar uma nova biblioteca de projectos" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Adicionar hiperligação a uma biblioteca já existente" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Ficheiro ou URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nova biblioteca de projectos" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Por favor, escreva a URL ou nome de ficheiro da biblioteca de projectos a " "que deseja aceder." #: install_launchProject msgid "Open the project now" msgstr "Abrir agora o projecto" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador web preferido\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comando usado para iniciar o navegador web (firefox, iexplore, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Código do país\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Código opcional de duas letras correspondente à variante do idioma (ex.\\: " "BR para Português do Brasil)" #: settings_variant msgid "Variant\\:" msgstr "Variante\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Código opcional da variante do idioma" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_de.po0000644000175000017500000004350211377161311023112 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-09-20 21:52+0000\n" "Last-Translator: Martina \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Datei" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Zum Ausführen dieser Aktion sind nur JClick Administratoren berechtigt." #: m_Help msgid "Help" msgstr "Hilfe" #: m_Skin msgid "Skin" msgstr "Skin" #: action_helpAbout_caption msgid "About..." msgstr "Über..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Hauptbibliothek" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Diese JClic-Datei ist keine Projektbibliothek.\n" "Bibliotheken sind eine spezielle Art von JClick-Projekten." #: library_mainMenu msgid "Main menu" msgstr "Hauptmenü" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Neue Projektbibliothek" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Möchten Sie eine neue Bibliothek erstellen oder Verbindung zu einer bereits\n" "vorhandenen Bibliothek herstellen" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Verbinden" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Neu" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Neue Bibliothek anlegen oder mit neuer Bibliothek verbinden" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Neu" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Symbol für Button:" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "Beschreibung des Buttons beim Darüberfahren mit der Maus" #: menuElement_dlg_description msgid "Description:" msgstr "Beschreibung:" #: edit_find_image msgid "Find image..." msgstr "Grafik suchen..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Symbol:" #: edit_find_file msgid "Find file..." msgstr "Datei suchen..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Verzeichnis des JClic-Projekts" #: menuElement_dlg_project msgid "Project:" msgstr "Projekt:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Text für Button" #: edit_text msgid "Text:" msgstr "Text:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Ordnername" #: library_dlg_name_tooltip msgid "Library name" msgstr "Name der Bibliothek" #: edit_name msgid "Name:" msgstr "Name:" #: edit_title msgid "Title:" msgstr "Titel:" #: library_dlg_title msgid "Library properties" msgstr "Eigenschaften der Bibliothek" #: menu_dlg_title msgid "Folder properties" msgstr "Ordnereigenschaften" #: menuElement_dlg_title msgid "Button properties" msgstr "Eigenschaften des Buttons" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Aktuelle Zusammenstellung löschen" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Löschen" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Aktuellen Menüpunkt löschen" #: action_libraries_caption msgid "Libraries..." msgstr "Bibliotheken..." #: dlg_save_title msgid "Save file..." msgstr "Datei speichern..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Fehler beim Öffnen \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Standardeinstellungen werden verwendet." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Löschen" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Neuen Shortcut zu Projekt anlegen" #: menu_newMenuName msgid "New folder" msgstr "Neuer Ordner" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Neuen Ordner für Projekt-Buttons anlegen" #: menu_newMenu_caption msgid "New button's folder" msgstr "Zu neuem Button gehörender Ordner" #: menu_newMenuElement_caption msgid "New project button" msgstr "Neuer Projektbutton" #: menu_newMenuElementName msgid "New button" msgstr "Neuer Button" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Änderungen nicht speichern" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Abbrechen" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Ausgewählte Bibliothek bearbeiten" #: libraryManager_edit_caption msgid "Edit" msgstr "Bearbeiten" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Änderungen speichern" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Ausgewählten Ordner öffnen" #: library_select_caption_ok msgid "Ok" msgstr "OK" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Auswählen" #: library_caption msgid "JClic projects library" msgstr "JClic Projektbibliothek" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Ausgewählte Bibliothek öffnen" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Abbrechen" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Abbrechen" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Auswählen" #: libraryManager_caption msgid "Select library" msgstr "Bibliothek auswählen" #: library_error_reading msgid "Error reading project library!" msgstr "Fehler beim Öffnen der Projektbibliothek!" #: wizard_next msgid "Next >" msgstr "Weiter >" #: wizard_prev msgid "< Previous" msgstr "< Zurück" #: wizard_finish msgid "Finish" msgstr "Beenden" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Fehler beim Erstellen der Symbole für Bibliothekt!" #: install_title msgid "Installation of JClic projects" msgstr "Installation von JClic-Projekten" #: install_info_description msgid "Installation of a new JClic project" msgstr "Neues JClic-Projekt installieren" #: install_info_from msgid "From:" msgstr "Quellordner:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Löschen" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Aktion löschen" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Aktion beenden" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Schritt weiter" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Schritt zurück" #: install_select_library msgid "Select the library where to install the project:" msgstr "Bibliothek auswählen, in der das Projekt installiert werden soll:" #: install_copy_files msgid "File copy" msgstr "Dateien kopieren" #: install_source msgid "Source:" msgstr "Quelle:" #: install_dest msgid "Destination:" msgstr "Zielordner:" #: install_status msgid "Status:" msgstr "Status:" #: install_start msgid "Start the installation" msgstr "Mit Installation beginnen" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Mit dem Kopieren der Dateien auf den Computer beginnen" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Installationsstatus" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Bestätigung abwarten." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Ordner werden angelegt" #: install_msg_copying msgid "Copying file" msgstr "Datei wird kopiert" #: install_msg_end msgid "Finished!" msgstr "Beendet!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Dateien werden gelöscht..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Installation abgebrochen!" #: install_error msgid "Install error!" msgstr "Installationsfehler!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Ordner für Projekt-Icons auswählen:" #: install_library_folders msgid "Library folders:" msgstr "Bibliotheksordner:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Projekt wurde erfolgreich auf Ihrem Computer installiert!" #: install_success_2 msgid "In order to run it, select its" msgstr "Zum Starten der Anwendung entsprechendes" #: install_success_3 msgid "icon on the project library." msgstr "Symbol aus Projektbibilothek auswählen" #: wizard_info msgid "Press \"Next\" to start." msgstr "Zum Starten \"Weiter\" anklicken." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. JClic-Bibliothek auswählen" #: install_step_2 msgid "2. Download files" msgstr "2. Dateien downloaden" #: install_step_3 msgid "3. Creation of icons" msgstr "4. Icons anlegen" #: install_step_4 msgid "Installation finished!" msgstr "Installation beendet!" #: install_info_info msgid "You request to install the project:" msgstr "Sie möchten folgendes Projekt installieren:" #: settings_title msgid "Settings" msgstr "Einstellungen" #: library_error_clone msgid "Unable to clone library!" msgstr "Bibliothek kann nicht geclont werden!" #: settings_security msgid "Security" msgstr "Sicherheit" #: settings_password_protect msgid "Protect settings with password" msgstr "Einstellungen durch Passwort schützen" #: settings_new_password msgid "New password:" msgstr "Neues Passwort:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Neues Passwort bestätigen:" #: settings_general msgid "General" msgstr "Allgemein" #: settings_look msgid "Look & Feel:" msgstr "Look & feel-Einstellungen:" #: settings_skin msgid "Skin:" msgstr "Skin:" #: settings_language msgid "Language:" msgstr "Sprache:" #: settings_reports msgid "Reports" msgstr "Reports" #: settings_report_use msgid "Write scores to a database" msgstr "Ergebnisse in Datenbank eintragen" #: settings_report_engine msgid "Reporter class:" msgstr "Class:" #: settings_report_params msgid "Parameters:" msgstr "Parameter:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimediaeinstellungen aktiviert" #: settings_media_system msgid "Multimedia system:" msgstr "Multimediasystem:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Ereignissounds aktiviert" #: settings_library msgid "Libraries" msgstr "Bibliotheken" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Beim Starten von JClick automatisch zu den Bibliotheken gehen" #: m_Tools msgid "Tools" msgstr "Werkzeuge" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Übung" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Datei öffnen..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "JClick Projekt öffnen" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "URL öffnen..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "JClick Projekt direkt im Internet öffnen" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Exit" #: action_exit_tooltip msgid "Close JClic" msgstr "JClic schließen" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Einstellungen..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Standardeinstellungen bearbeiten" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "T" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "JClic Bibliothek öffnen oder bearbeiten" #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Über JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Grafik für Verwendung als Symbol zu groß!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Mit JClic-Reportserver verbinden:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Direktverbindung zu JDBC:" #: settings_report_other msgid "Other:" msgstr "Andere:" #: settings_report_address msgid "Host:" msgstr "Host:" #: settings_report_port msgid "Port:" msgstr "Port:" #: settings_report_driver msgid "Driver:" msgstr "Treiber:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "User:" #: settings_report_pwd msgid "Password:" msgstr "Passwort:" #: settings_report_options msgid "Reporter params::" msgstr "Parameter für Report System:" #: settings_report_err_server msgid "Bad report server name!" msgstr "Falscher name für Reportserver." #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "Falscher Port. Bitte Wert zwischen 1000 und 65000 eingeben." #: settings_report_err msgid "Incorrect report system data!" msgstr "Falsche Eingabe für Reportsystem" #: settings_report_type msgid "Reporting engine:" msgstr "Reportsystem:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Auto-detect" #: settings_security_tooltip msgid "Security settings" msgstr "Sicherheitseinstellungen" #: settings_report_tooltip msgid "Report system settings" msgstr "Einstellungen für Reportsystem" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Multimedia-Optionen" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Spracheinstellungen und Erscheinungsbild" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Bibliothekseinstellungen und -editor" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Look & feel - Pannel starten" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "JClick-Design auswählen" #: settings_language_tooltip msgid "Language selection" msgstr "Sprachauswahl" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Verbindung zu JClic-Report-Datenbank aktivieren/deaktivieren" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Reportserver basiert auf TCP/IP-Verbindung" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Reporterstellung über Direktverbingung zu Datenbank" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Andere Reportmaschinen..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Servername oder IP-Adresse eingeben" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Port für Verbindung (Default-Einstellung: 5510)" #: edit_file msgid "File:" msgstr "Datei:" #: error_launchLibrary msgid "Error launching library" msgstr "Fehler beim Öffnen der Bibliothek" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "In den Quellordner installieren!" #: edit_find_media msgid "Find media file..." msgstr "Multimediadatei suchen..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Löschen" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Link auf die ausgewählte Bibliothek löschen" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" "Möchten Sie den Link auf die ausgewählte Bibliothek wirklich löschen?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Bibliothek bereits ins System integriert." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Neue Projektbibliothek anlegen" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Link auf eine bereits vorhandene Projektbibliothek legen" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Datei oder URL:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Neue Projektbibliothek" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "URL oder Namen der Projektbibliothek angeben!" #: install_launchProject msgid "Open the project now" msgstr "Projekt jetzt öffnen" #: settings_browser msgid "Preferred browser\\:" msgstr "Bevorzugter Browser\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "Befehl zum Starten des Browsers (Firefox, IE, Mozilla, Opera,...)" #: settings_country msgid "Country code\\:" msgstr "Country code\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" #: settings_variant msgid "Variant\\:" msgstr "Variant\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Optional variant code of the language" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_ca.po0000644000175000017500000004442311377161311023110 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-22 18:02+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Fitxers" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Per a efectuar aquesta operació cal introduir la contrassenya " "d'administració del JClic." #: m_Help msgid "Help" msgstr "Ajuda" #: m_Skin msgid "Skin" msgstr "Aparença" #: action_helpAbout_caption msgid "About..." msgstr "Quant a..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Biblioteca principal" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Aquest fitxer JClic no és del tipus \"biblioteca de projectes\".\n" "Les biblioteques són un tipus especial de fitxers JClic." #: library_mainMenu msgid "Main menu" msgstr "Menú principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nova biblioteca de projectes" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Voleu crear una nova biblioteca de projectes o connectar-vos a una llibreria " "existent?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Connectar-se a..." #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nova" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Crea una nova biblioteca o connecta't a una existent" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nova" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Imatge que es mostra al botó" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Text flotant que apareixerà quan es deixi el punter quiet sobre el botó." #: menuElement_dlg_description msgid "Description:" msgstr "Descripció:" #: edit_find_image msgid "Find image..." msgstr "Cerca imatge..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Icona:" #: edit_find_file msgid "Find file..." msgstr "Cerca fitxer..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Ubicació del projecte JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Projecte:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Text del botó" #: edit_text msgid "Text:" msgstr "Text:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nom de la carpeta" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nom de la biblioteca" #: edit_name msgid "Name:" msgstr "Nom:" #: edit_title msgid "Title:" msgstr "Títol:" #: library_dlg_title msgid "Library properties" msgstr "Propietats de la biblioteca" #: menu_dlg_title msgid "Folder properties" msgstr "Propietats de la carpeta" #: menuElement_dlg_title msgid "Button properties" msgstr "Propietats del botó" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Elimina el menú seleccionat" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Elimina" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Elimina l'element de menú seleccionat" #: action_libraries_caption msgid "Libraries..." msgstr "Biblioteques..." #: dlg_save_title msgid "Save file..." msgstr "Desa el fitxer..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Error en obrir \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". S'utilitzaran els valors per defecte." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Elimina" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Crea un nou botó de projecte" #: menu_newMenuName msgid "New folder" msgstr "Nova carpeta" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Crea una nova carpeta de botons de projecte" #: menu_newMenu_caption msgid "New button's folder" msgstr "Nova carpeta d'icones" #: menu_newMenuElement_caption msgid "New project button" msgstr "Nou botó de projecte" #: menu_newMenuElementName msgid "New button" msgstr "Nou botó" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Cancel·la les modificacions" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Cancel·la" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Edita la biblioteca seleccionada" #: libraryManager_edit_caption msgid "Edit" msgstr "Edita" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Desa els canvis" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Escull la carpeta seleccionada" #: library_select_caption_ok msgid "Ok" msgstr "D'acord" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Selecciona" #: library_caption msgid "JClic projects library" msgstr "Biblioteca de projectes JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Obre la biblioteca seleccionada" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Cancel·la" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Cancel·la" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Selecciona" #: libraryManager_caption msgid "Select library" msgstr "Selecció de la biblioteca de projectes" #: library_error_reading msgid "Error reading project library!" msgstr "Error en llegir la biblioteca de projectes!" #: wizard_next msgid "Next >" msgstr "Endavant >" #: wizard_prev msgid "< Previous" msgstr "< Enrera" #: wizard_finish msgid "Finish" msgstr "Finalitza" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Error en crear la icona a la biblioteca!" #: install_title msgid "Installation of JClic projects" msgstr "Instal·lació de projectes JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instal·lació d'un nou projecte JClic" #: install_info_from msgid "From:" msgstr "Des de:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Cancel·la" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Cancel·la l'operació" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Finalitza l'operació" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Pas següent de l'operació" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Pas anterior de l'operació" #: install_select_library msgid "Select the library where to install the project:" msgstr "Seleccioneu la biblioteca on s'instal·larà el projecte:" #: install_copy_files msgid "File copy" msgstr "Còpia de fitxers" #: install_source msgid "Source:" msgstr "Origen:" #: install_dest msgid "Destination:" msgstr "Destí:" #: install_status msgid "Status:" msgstr "Estat:" #: install_start msgid "Start the installation" msgstr "Inicia la instal·lació" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Inicia la còpia de fitxers al vostre ordinador" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Progrés de la instal·lació" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Esperant confirmació" #: install_msg_creating_dirs msgid "Creating directories" msgstr "Creant carpetes" #: install_msg_copying msgid "Copying file" msgstr "Copiant el fitxer" #: install_msg_end msgid "Finished!" msgstr "Acabat!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Fent neteja..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Instal·lació cancel·lada!" #: install_error msgid "Install error!" msgstr "S'ha produït un error durant la instal·lació!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Seleccioneu la carpeta on es crearan les icones del projecte:" #: install_library_folders msgid "Library folders:" msgstr "Carpetes de la biblioteca:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "El projecte s'ha instal·lat correctament!" #: install_success_2 msgid "In order to run it, select its" msgstr "Per a posar-lo en marxa seleccioneu la seva" #: install_success_3 msgid "icon on the project library." msgstr "icona a la biblioteca de projectes." #: wizard_info msgid "Press \"Next\" to start." msgstr "Feu clic a \"Endavant\" per començar." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Selecció de la biblioteca" #: install_step_2 msgid "2. Download files" msgstr "2. Descàrrega de fitxers" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Creació d'icones" #: install_step_4 msgid "Installation finished!" msgstr "Instal·lació acabada!" #: install_info_info msgid "You request to install the project:" msgstr "Heu sol·licitat instal·lar el projecte:" #: settings_title msgid "Settings" msgstr "Configuració" #: library_error_clone msgid "Unable to clone library!" msgstr "No s'ha pogut clonar la biblioteca!" #: settings_security msgid "Security" msgstr "Seguretat" #: settings_password_protect msgid "Protect settings with password" msgstr "Protegeix els canvis de configuració amb contrasenya" #: settings_new_password msgid "New password:" msgstr "Nova contrasenya:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Confirmació de la nova contrasenya:" #: settings_general msgid "General" msgstr "General" #: settings_look msgid "Look & Feel:" msgstr "Aspecte:" #: settings_skin msgid "Skin:" msgstr "Pell:" #: settings_language msgid "Language:" msgstr "Idioma:" #: settings_reports msgid "Reports" msgstr "Informes" #: settings_report_use msgid "Write scores to a database" msgstr "Enregistra els resultats de les activitats en una base de dades" #: settings_report_engine msgid "Reporter class:" msgstr "Classe:" #: settings_report_params msgid "Parameters:" msgstr "Paràmetres:" #: settings_media msgid "Multimedia" msgstr "Multimèdia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimèdia activat" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimèdia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Sons d'event activats" #: settings_library msgid "Libraries" msgstr "Biblioteques" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Mostra automàticament la biblioteca a l'inici" #: m_Tools msgid "Tools" msgstr "Eines" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "E" #: m_Help_Mnemonic msgid "H" msgstr "J" #: m_Activity msgid "Activity" msgstr "Activitat" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Obre el fitxer..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Obre un fitxer de projecte JClic" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Obre una ubicació web..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Obre un projecte JClic directament des d'Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Surt" #: action_exit_tooltip msgid "Close JClic" msgstr "Tanca el JClic" #: action_exit_keys msgid "XX" msgstr "RX" #: action_settings_caption msgid "Settings..." msgstr "Configuració..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Ajusta les opcions globals del programa" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "C" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Obre o modifica una biblioteca JClic" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Informació sobre el JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Aquesta imatge és massa gran per fer-la servir com a icona!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Connecta't a un servidor d'informes JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Connecta't directament a una base de dades JDBC:" #: settings_report_other msgid "Other:" msgstr "Altres:" #: settings_report_address msgid "Host:" msgstr "Servidor:" #: settings_report_port msgid "Port:" msgstr "Port:" #: settings_report_driver msgid "Driver:" msgstr "Controlador:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Usuari:" #: settings_report_pwd msgid "Password:" msgstr "Contrasenya:" #: settings_report_options msgid "Reporter params::" msgstr "Paràmetres:" #: settings_report_err_server msgid "Bad report server name!" msgstr "El nom del servidor d'informes és incorrecte!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Valor incorrecte del port en el sistema d'informes! Si us plau, indiqueu un " "valor entre 1000 i 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Dades incorrectes per al sistema d'informes!" #: settings_report_type msgid "Reporting engine:" msgstr "Sistema d'informes:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Detecció automàtica" #: settings_security_tooltip msgid "Security settings" msgstr "Opcions de seguretat" #: settings_report_tooltip msgid "Report system settings" msgstr "Configuració del sistema d'informes" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configuració del sistema multimèdia" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Opcions d'idioma i aspecte" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Configuració i edició de biblioteques" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspecte de la interfície d'usuari" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Selecció del disseny gràfic del JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Selecció d'idioma" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Activa o descativa la connexió a una base de dades d'informes JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motor d'informes basat en una connexió TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motor d'informes basat en una connexió directa a una base de dades" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Altres motors d'informes..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nom o adreça IP del servidor d'informes" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Port utilitzat en la connexió (per defecte: 5510)" #: edit_file msgid "File:" msgstr "Fitxer:" #: error_launchLibrary msgid "Error launching library" msgstr "Error en obrir la biblioteca" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Instal·lant a la carpeta d'origen!" #: edit_find_media msgid "Find media file..." msgstr "Cerca recurs..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Suprimeix" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Suprimeix la referència a la biblioteca seleccionada" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Realment voleu suprimir la referència a la biblioteca seleccionada?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Aquesta biblioteca ja està connectada al sistema!" #: edit_find_image_keys msgid "F*" msgstr "C*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Crea una nova biblioteca de projectes" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Afegeix un enllaç a una biblioteca ja existent" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Fitxer o URL:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nova biblioteca de projectes:" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Si us plau, escriviu l'URL o el nom de fitxer de la biblioteca de projectes " "a la què voleu accedir\\!" #: install_launchProject msgid "Open the project now" msgstr "Obre ara el projecte" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferit:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Ordre emprada per a engegar el navegador (firefox, iexplore, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Codi de país:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Codi opcional de dues lletres corresponent a la variant dialectal d'un " "territori (ex.: BR per a portuguès del Brasil)" #: settings_variant msgid "Variant\\:" msgstr "Variant:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Codi opcional de variant de l'idioma" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_el.po0000644000175000017500000005423711377161311023131 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-10-17 18:31+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Αρχείο" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Ο κωδικός πρόσβασης του διαχειριστή του JClic είναι απαραίτητος για να " "ολοκληρωθεί αυτή η λειτουργία." #: m_Help msgid "Help" msgstr "Βοήθεια" #: m_Skin msgid "Skin" msgstr "Θέμα" #: action_helpAbout_caption msgid "About..." msgstr "Σχετικά..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Κύρια βιβλιοθήκη" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "Αυτό το αρχείο του JClic δεν είναι μια βιβλιοθήκη του έργου!" #: library_mainMenu msgid "Main menu" msgstr "Κύριο Μενού" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Νέα βιβλιοθήκη του έργου" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Θέλετε να δημιουργήσετε μια νέα βιβλιοθήκη ή να συνδεθείτε σε μια υπάρχουσα;" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Σύνδεση" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Νέο" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Δημιουργία ή σύνδεση με μια νέα βιβλιοθήκη" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Νέο" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Εικονίδιο πλήκτρου" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Περιγραφή του πλήκτρου που χρησιμοποιείται ως επεξηγηματικό κείμενο ." #: menuElement_dlg_description msgid "Description:" msgstr "Περιγραφή:" #: edit_find_image msgid "Find image..." msgstr "Αναζήτηση εικόνας..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Εικονίδιο:" #: edit_find_file msgid "Find file..." msgstr "Αναζήτηση αρχείου..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Διαδρομή για έργο του JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Έργο:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Πλήκτρο κειμένου" #: edit_text msgid "Text:" msgstr "Κείμενο:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Όνομα φακέλου" #: library_dlg_name_tooltip msgid "Library name" msgstr "Όνομα βιβλιοθήκης" #: edit_name msgid "Name:" msgstr "Όνομα:" #: edit_title msgid "Title:" msgstr "Τίτλος:" #: library_dlg_title msgid "Library properties" msgstr "Ιδιότητες βιβλιοθήκης" #: menu_dlg_title msgid "Folder properties" msgstr "Ιδιότητες φακέλου" #: menuElement_dlg_title msgid "Button properties" msgstr "Ιδιότητες πλήκτρου" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Διαγραφή τρέχοντος μενού" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Διαγραφή" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Διαγραφή στοιχείου τρέχοντος μενού" #: action_libraries_caption msgid "Libraries..." msgstr "Βιβλιοθήκες..." #: dlg_save_title msgid "Save file..." msgstr "Αποθήκευση αρχείου..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Σφάλμα ανοίγματος \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Θα χρησιμοποιηθούν τα προκαθορισμένα" #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Διαγραφή" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Δημιουργία νέας συντόμευσης για το έργο" #: menu_newMenuName msgid "New folder" msgstr "Νέος φάκελος" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Δημιουργία νέου φακέλου για τα πλήκτρα του έργου" #: menu_newMenu_caption msgid "New button's folder" msgstr "Νέος φάκελος πλήκτρων" #: menu_newMenuElement_caption msgid "New project button" msgstr "Νέο πλήκτρο έργου" #: menu_newMenuElementName msgid "New button" msgstr "Νέο πλήκτρο" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Ακύρωση αλλαγών" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Άκυρο" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Επεξεργασία επιλεγμένης βιβλιοθήκης" #: libraryManager_edit_caption msgid "Edit" msgstr "Επεξεργασία" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Αποθήκευση αλλαγών" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Διάλεξε τον επιλεγμένο φάκελο" #: library_select_caption_ok msgid "Ok" msgstr "Εντάξει" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Επιλογή" #: library_caption msgid "JClic projects library" msgstr "Βιβλιοθήκη έργου του JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Άνοιγμα της επιλεγμένης δραστηριότητας" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Άκυρο" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Άκυρο" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Επιλογή" #: libraryManager_caption msgid "Select library" msgstr "Επιλογή βιβλιοθήκης" #: library_error_reading msgid "Error reading project library!" msgstr "Σφάλμα ανάγνωσης της βιβλιοθήκης του έργου!" #: wizard_next msgid "Next >" msgstr "Επόμενο >" #: wizard_prev msgid "< Previous" msgstr "<Προηγούμενο" #: wizard_finish msgid "Finish" msgstr "Τέλος" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Σφάλμα κατά τη δημιουργία εικονιδίων βιβλιοθήκης!" #: install_title msgid "Installation of JClic projects" msgstr "Εγκατάσταση έργων του JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Εγκατάσταση νέου έργου του JClic" #: install_info_from msgid "From:" msgstr "Από:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Άκυρο" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Ακύρωση της ενέργειας" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Ολοκλήρωση της ενέργειας" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Επόμενο βήμα της ενέργειας" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Προηγούμενο βήμα της ενέργειας" #: install_select_library msgid "Select the library where to install the project:" msgstr "Επιλογή βιβλιοθήκης για εγκατάσταση του έργου:" #: install_copy_files msgid "File copy" msgstr "Αντιγραφή αρχείου" #: install_source msgid "Source:" msgstr "Πηγή:" #: install_dest msgid "Destination:" msgstr "Προορισμός:" #: install_status msgid "Status:" msgstr "Κατάσταση:" #: install_start msgid "Start the installation" msgstr "Έναρξη εγκατάστασης" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Έναρξη αντιγραφής αρχείων στον υπολογιστή σας" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Πρόοδος της εγκατάστασης" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Αναμονή για επιβεβαίωση" #: install_msg_creating_dirs msgid "Creating directories" msgstr "Δημιουργία φακέλων" #: install_msg_copying msgid "Copying file" msgstr "Αντιγραφή αρχείου" #: install_msg_end msgid "Finished!" msgstr "Ολοκληρώθηκε!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Εκτέλεση καθαρισμού..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Η εγκατάσταση ακυρώθηκε!" #: install_error msgid "Install error!" msgstr "Σφάλμα εγκατάστασης" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Επιλογή φακέλου για τοποθέτηση των εικονιδίων του έργου:" #: install_library_folders msgid "Library folders:" msgstr "Φάκελοι βιβλιοθήκης:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Το έργο είναι τώρα εγκατεστημένο στον υπολογιστή σας!" #: install_success_2 msgid "In order to run it, select its" msgstr "Για να το εκτελέσετε, επιλέξτε" #: install_success_3 msgid "icon on the project library." msgstr "εικονίδιο στη βιβλιοθήκη του έργου" #: wizard_info msgid "Press \"Next\" to start." msgstr "Πατήστε \"Επόμενο\" για να ξεκινήσετε." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Επιλογή βιβλιοθήκης του JClic" #: install_step_2 msgid "2. Download files" msgstr "2. Μεταφόρτωση αρχείων" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Δημιουργία εικονιδίων" #: install_step_4 msgid "Installation finished!" msgstr "Η εγκατάσταση ολοκληρώθηκε!" #: install_info_info msgid "You request to install the project:" msgstr "Ζητήσατε να εγκατασταθεί το έργο:" #: settings_title msgid "Settings" msgstr "Ρυθμίσεις" #: library_error_clone msgid "Unable to clone library!" msgstr "Αδυναμία κλωνοποίησης της βιβλιοθήκης!" #: settings_security msgid "Security" msgstr "Ασφάλεια" #: settings_password_protect msgid "Protect settings with password" msgstr "Προστασία ρυθμίσεων με κωδικό πρόσβασης" #: settings_new_password msgid "New password:" msgstr "Νέος κωδικός πρόσβασης:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Επιβεβαίωση νέου κωδικού πρόσβασης:" #: settings_general msgid "General" msgstr "Γενικά" #: settings_look msgid "Look & Feel:" msgstr "Εμφάνιση & Αίσθηση:" #: settings_skin msgid "Skin:" msgstr "Θέμα:" #: settings_language msgid "Language:" msgstr "Γλώσσα:" #: settings_reports msgid "Reports" msgstr "Αναφορές" #: settings_report_use msgid "Write scores to a database" msgstr "Εγγραφή βαθμολογίας σε μια βάση δεδομένων" #: settings_report_engine msgid "Reporter class:" msgstr "Είδος δημιουργού αναφορών:" #: settings_report_params msgid "Parameters:" msgstr "Παράμετροι:" #: settings_media msgid "Multimedia" msgstr "Πολυμέσα" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Ενεργοποίηση πολυμέσων" #: settings_media_system msgid "Multimedia system:" msgstr "Σύστημα πολυμέσων:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Ενεργοποίηση ήχων συμβάντων" #: settings_library msgid "Libraries" msgstr "Βιβλιοθήκες" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Αυτόματη μετάβαση στις βιβλιοθήκες όταν ξεκινά το JClic" #: m_Tools msgid "Tools" msgstr "Εργαλεία" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Δραστηριότητα" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Άνοιγμα αρχείου..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Άνοιγμα αρχείου έργου του JClic" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Άνοιγμα URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Άνοιγμα έργου του JClic κατευθείαν από το Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Έξοδος" #: action_exit_tooltip msgid "Close JClic" msgstr "Κλείσιμο του JClic" #: action_exit_keys msgid "XX" msgstr "ΧΧ" #: action_settings_caption msgid "Settings..." msgstr "Ρυθμίσεις..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Διευθέτηση καθολικών ρυθμίσεων του προγράμματος" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "T" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Άνοιγμα ή επεξεργασία μιας βιβλιοθήκης του JClic." #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Πληροφορίες για το JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Αυτή η εικόνα είναι πολύ μεγάλη για να χρησιμοποιηθεί ως εικονίδιο!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Σύνδεση στο διακομιστή αναφορών του JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Απευθείας σύνδεση στη JDBC:" #: settings_report_other msgid "Other:" msgstr "Άλλο:" #: settings_report_address msgid "Host:" msgstr "Διακομιστής:" #: settings_report_port msgid "Port:" msgstr "Θύρα:" #: settings_report_driver msgid "Driver:" msgstr "Οδηγός:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Χρήστης:" #: settings_report_pwd msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: settings_report_options msgid "Reporter params::" msgstr "Παράμετροι εργαλείου αναφορών" #: settings_report_err_server msgid "Bad report server name!" msgstr "Λανθασμένο όνομα διακομιστή αναφορών!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Λανθασμένος αριθμός θύρας! Παρακαλώ εισάγετε μια τιμή μεταξύ 1000 και 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Λανθασμένα δεδομένα αναφοράς συστήματος" #: settings_report_type msgid "Reporting engine:" msgstr "Μηχανή αναφορών:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Αυτόματη αναγνώριση" #: settings_security_tooltip msgid "Security settings" msgstr "Ρυθμίσεις ασφάλειας" #: settings_report_tooltip msgid "Report system settings" msgstr "Ρυθμίσεις συστήματος αναφορών" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Επιλογές συστήματος πολυμέσων" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Ρυθμίσεις γλώσσας και αναλογιών" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Ρυθμίσεις βιβλιοθήκης και επεξεργαστής" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Διεπαφή χρήστη Εμφάνιση & Αίσθηση" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Επιλογή αναλογίας γραφικών για το JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Επιλογή γλώσσας" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Ενεργοποίηση/Απενεργοποίηση σύνδεσης σε μια βάση δεδομένων του JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Μηχανή αναφορών βασιζόμενη σε μια σύνδεση TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "" "Μηχανή αναφορών βασιζόμενη σε απευθείας σύνδεση με μια βάση δεδομένων" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Άλλες μηχανές αναφορών..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Όνομα διακομιστή αναφορών ή διεύθυνση IP" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "" "Θύρα που χρησιμοποιείται για τη σύνδεση (η προεπιλεγμένη είναι η 5510)" #: edit_file msgid "File:" msgstr "Αρχείο:" #: error_launchLibrary msgid "Error launching library" msgstr "Σφάλμα φόρτωσης βιβλιοθήκης" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Εγκατάσταση στον πηγαίο φάκελο!" #: edit_find_media msgid "Find media file..." msgstr "Εύρεση αρχείου πολυμέσων..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Διαγραφή" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Διαγραφή παραπομπής στην επιλεγμένη βιβλιοθήκη" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" "Θέλετε πραγματικά να διαγράψετε την παραπομπή στην επιλεγμένη βιβλιοθήκη;" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Αυτή η βιβλιοθήκη είναι ακόμη συνδεδεμένη με το σύστημα..." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Δημιουργία νέας βιβλιοθήκης έργου" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Προσθήκη υπερσυνδέσμου σε μια υπάρχουσα βιβλιοθήκη του έργου" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Αρχείο ή URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Νέα βιβλιοθήκη έργου" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Παρακαλώ εισάγετε το URL ή το όνομα αρχείου της βιβλιοθήκης του έργου\\:" #: install_launchProject msgid "Open the project now" msgstr "Άνοιγμα του έργου τώρα" #: settings_browser msgid "Preferred browser\\:" msgstr "Προτιμώμενος φυλλομετρητής\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Εντολή που χρησιμοποιείται για τη φόρτωση φυλλομετρητή (firefox, mozilla, " "opera, iexplore...)" #: settings_country msgid "Country code\\:" msgstr "Κωδικός χώρας\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Προαιρετικός διγράμματος κωδικός που αντιστοιχεί σε συγκεκριμένη εκδοχή μιας " "γλώσσας (π.χ.\\: BR για τα Πορτογαλικά της Βραζιλίας)" #: settings_variant msgid "Variant\\:" msgstr "Εναλλακτική μορφή" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Προαιρετικός κωδικός εκδοχής της γλώσσας" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_gl.po0000644000175000017500000004365611377161311023136 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-04-23 15:44+0000\n" "Last-Translator: Susana Sotelo Docío \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Arquivo" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Requírese sinal de administrador de JClic para validar esta operación." #: m_Help msgid "Help" msgstr "Axuda" #: m_Skin msgid "Skin" msgstr "Apariencia" #: action_helpAbout_caption msgid "About..." msgstr "Sobre o..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Biblioteca principal" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Este arquivo non é unha biblioteca de proxectos JClic!\n" "As bibliotecas son un tipo especial de arquivos JClic." #: library_mainMenu msgid "Main menu" msgstr "Menú principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nova biblioteca de proxectos" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "Quer crear unha nova biblioteca ou conectarse a unha existente?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Conectarse" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Novo" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Crear ou conectarse a unha nova biblioteca" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nova" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Imaxe que mostra a icona" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Texto flotante, que aparecerá ao posicionar o punteiro sobre o botón." #: menuElement_dlg_description msgid "Description:" msgstr "Descrición:" #: edit_find_image msgid "Find image..." msgstr "Achar imaxe..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Icona:" #: edit_find_file msgid "Find file..." msgstr "Achar arquivo..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Ubicación do proxecto JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Proxecto:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Texto do botón" #: edit_text msgid "Text:" msgstr "Texto:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nome do cartafol" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nome da biblioteca" #: edit_name msgid "Name:" msgstr "Nome:" #: edit_title msgid "Title:" msgstr "Título:" #: library_dlg_title msgid "Library properties" msgstr "Propiedades da biblioteca" #: menu_dlg_title msgid "Folder properties" msgstr "Propiedades do cartafol" #: menuElement_dlg_title msgid "Button properties" msgstr "Propiedades do botón" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Eliminar o menú seleccionado" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Eliminar" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Eliminar o elemento do menú seleccionado" #: action_libraries_caption msgid "Libraries..." msgstr "Bibliotecas..." #: dlg_save_title msgid "Save file..." msgstr "Gardar arquivo..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Erro ao abrir \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Utilizaranse os valores por omisión." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Eliminar" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Crear un novo atallo ao proxecto!" #: menu_newMenuName msgid "New folder" msgstr "Novo cartafol" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Crear un novo cartafol de botóns de proxecto" #: menu_newMenu_caption msgid "New button's folder" msgstr "Novo cartafol de iconas" #: menu_newMenuElement_caption msgid "New project button" msgstr "Novo botón de proxecto" #: menu_newMenuElementName msgid "New button" msgstr "Novo botón" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Cancelar cambios" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editar na biblioteca seleccionada" #: libraryManager_edit_caption msgid "Edit" msgstr "Editar" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Gardar cambios" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Escoller o cartafol seleccionado" #: library_select_caption_ok msgid "Ok" msgstr "Aceptar" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Seleccionar" #: library_caption msgid "JClic projects library" msgstr "Biblioteca de proxectos JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Abrir a biblioteca seleccionada" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Cancelar" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Cancelar" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Seleccionar" #: libraryManager_caption msgid "Select library" msgstr "Seleccione biblioteca" #: library_error_reading msgid "Error reading project library!" msgstr "Erro ao ler a biblioteca de proxectos!" #: wizard_next msgid "Next >" msgstr "Seguinte >" #: wizard_prev msgid "< Previous" msgstr "< Anterior" #: wizard_finish msgid "Finish" msgstr "Finalizar" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Erro na creación das iconas da biblioteca!" #: install_title msgid "Installation of JClic projects" msgstr "Instalación de proxectos JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instalación dun novo proxecto JClic" #: install_info_from msgid "From:" msgstr "Desde:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Cancelar" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Cancelar a operación" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Finalizar a operación" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Seguinte paso da operación" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Paso anterior da operación" #: install_select_library msgid "Select the library where to install the project:" msgstr "Seleccione a biblioteca onde instalar o proxecto:" #: install_copy_files msgid "File copy" msgstr "Copiar arquivo" #: install_source msgid "Source:" msgstr "Orixe:" #: install_dest msgid "Destination:" msgstr "Destino:" #: install_status msgid "Status:" msgstr "Estado:" #: install_start msgid "Start the installation" msgstr "Iniciar a instalación" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Iniciar a copia dos arquivos ao seu ordenador" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Progreso da instalación" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Agardando confirmación." #: install_msg_creating_dirs msgid "Creating directories" msgstr "A crear cartafois" #: install_msg_copying msgid "Copying file" msgstr "A copiar o arquivo" #: install_msg_end msgid "Finished!" msgstr "Rematado!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Facendo limpeza..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Instalación cancelada!" #: install_error msgid "Install error!" msgstr "Erro na instalación!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Seleccione o cartafol onde crear as iconas do proxecto:" #: install_library_folders msgid "Library folders:" msgstr "Cartafois da biblioteca:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "O proxecto está instalado no sistema!" #: install_success_2 msgid "In order to run it, select its" msgstr "Para inicialo, seleccione a súa" #: install_success_3 msgid "icon on the project library." msgstr "Icona na biblioteca de proxectos." #: wizard_info msgid "Press \"Next\" to start." msgstr "Prema en \"Seguinte\" para iniciar" #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Selección da biblioteca" #: install_step_2 msgid "2. Download files" msgstr "2. Baixar arquivos" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Creación de iconas" #: install_step_4 msgid "Installation finished!" msgstr "Instalación rematada!" #: install_info_info msgid "You request to install the project:" msgstr "Solicitou instalar o proxecto:" #: settings_title msgid "Settings" msgstr "Configuración" #: library_error_clone msgid "Unable to clone library!" msgstr "Imposíbel clonar a biblioteca!" #: settings_security msgid "Security" msgstr "Seguridade" #: settings_password_protect msgid "Protect settings with password" msgstr "Protexer configuración con sinal" #: settings_new_password msgid "New password:" msgstr "Novo sinal:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Cofirme novo sinal:" #: settings_general msgid "General" msgstr "Xeral" #: settings_look msgid "Look & Feel:" msgstr "Aspecto:" #: settings_skin msgid "Skin:" msgstr "Apariencia:" #: settings_language msgid "Language:" msgstr "Idioma:" #: settings_reports msgid "Reports" msgstr "Informes" #: settings_report_use msgid "Write scores to a database" msgstr "Gardar as actividades nunha base de datos" #: settings_report_engine msgid "Reporter class:" msgstr "Clase:" #: settings_report_params msgid "Parameters:" msgstr "Parámetros:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimedia activado" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimedia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Sons de evento activados" #: settings_library msgid "Libraries" msgstr "Bibliotecas" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Mostrar as bibliotecas cando se inicie JClic" #: m_Tools msgid "Tools" msgstr "Ferramentas" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Actividade" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Abrir o arquivo..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Abrir un arquivo de proxecto JClic" #: action_openFile_keys msgid "OO" msgstr "AO" #: action_openUrl_caption msgid "Open URL..." msgstr "Abrir URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Abrir un proxecto de JClic desde a internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Saír" #: action_exit_tooltip msgid "Close JClic" msgstr "Pechar o Jclic" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Configuración..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Axuste global da configuración do programa" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "C" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Abrir ou editar unha biblioteca JClic" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Información sobre o JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Esta imaxe é moi grande para usala como icona!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Conectarse a un servidor de informes JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Conexión directa a JDBC:" #: settings_report_other msgid "Other:" msgstr "Outros:" #: settings_report_address msgid "Host:" msgstr "Servidor:" #: settings_report_port msgid "Port:" msgstr "Porto:" #: settings_report_driver msgid "Driver:" msgstr "Controlador:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Usuario:" #: settings_report_pwd msgid "Password:" msgstr "Sinal:" #: settings_report_options msgid "Reporter params::" msgstr "Parámetros dos informes:" #: settings_report_err_server msgid "Bad report server name!" msgstr "O nome do servidor de informes é incorrecto!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Valor incorrecto de porto! Por favor, Introduza un valor entre 1000 e 65000" #: settings_report_err msgid "Incorrect report system data!" msgstr "Datos incorrectos para o sistema de informes!" #: settings_report_type msgid "Reporting engine:" msgstr "Sistema de informes" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Detección automática" #: settings_security_tooltip msgid "Security settings" msgstr "Configuración de seguridade" #: settings_report_tooltip msgid "Report system settings" msgstr "Configuración do sistema de informes" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configuración do sistema multimedia" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Configuración de idioma e aspecto" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Configurador e editor de bibliotecas" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspecto da interface de usuario" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Selección do aspecto gráfico de JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Selección do idioma" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Activa/desactiva a conexión a unha base de datos de informes JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motor de informes baseado nunha conexión TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motor de informes baseado nunha conexión directa a base de datos" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Outros motores de informes..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nome ou enderezo IP do servidor de informes" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Porto usado para a conexión (por defecto é 5510)" #: edit_file msgid "File:" msgstr "Arquivo:" #: error_launchLibrary msgid "Error launching library" msgstr "erro ao abrir biblioteca" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "A instalar no cartafol de orixe!" #: edit_find_media msgid "Find media file..." msgstr "Achar recurso..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Eliminar" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Eliminar a referencia á biblioteca seleccionada" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Realmente quer eliminar a referencia á biblioteca seleccionada?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Esta biblioteca xa está conectada ao sistema." #: edit_find_image_keys msgid "F*" msgstr "A*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Crear unha nova biblioteca de proxectos" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Engadir ligazón a unha biblioteca creada" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Arquivo ou URL:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nova biblioteca de proxectos" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Por favor, introduza a URL ou nome de arquivo da biblioteca de proxectos!" #: install_launchProject msgid "Open the project now" msgstr "Abrir o proxecto agora" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferido:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Orde empregada para lanzar o navegador (firefox, iexplore, mozilla, opera...)" #: settings_country msgid "Country code\\:" msgstr "Country code\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" #: settings_variant msgid "Variant\\:" msgstr "Variant\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Optional variant code of the language" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_tr.po0000644000175000017500000003564511377161311023160 0ustar # Turkish translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-11 07:28+0000\n" "Last-Translator: Ahmet YAVUZ \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Dosya" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "Bu işlemi gerçekleştirmek için yönetici şifresi gereklidir." #: m_Help msgid "Help" msgstr "Yardım" #: m_Skin msgid "Skin" msgstr "Görünüm" #: action_helpAbout_caption msgid "About..." msgstr "Hakkında..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Ana kütüphane" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "Bu JClic dosyası bir proje kütüphanesi değil!" #: library_mainMenu msgid "Main menu" msgstr "" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Yeni proje kütüphanesi" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Yeni bir kütüphane mi oluşturmak istiyorsunuz yoksa var olanamı bağlanmak " "istiyorsunuz?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Bağlan" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Yeni" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Yeni" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" #: menuElement_dlg_description msgid "Description:" msgstr "Açıklama:" #: edit_find_image msgid "Find image..." msgstr "Resim bul..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Simge:" #: edit_find_file msgid "Find file..." msgstr "Dosya bul..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "JClic projesi dosya yolu" #: menuElement_dlg_project msgid "Project:" msgstr "Proje:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "" #: edit_text msgid "Text:" msgstr "Metin:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Klasör adı" #: library_dlg_name_tooltip msgid "Library name" msgstr "Kütüphane adı" #: edit_name msgid "Name:" msgstr "İsim:" #: edit_title msgid "Title:" msgstr "Başlık:" #: library_dlg_title msgid "Library properties" msgstr "Kütüphane projesi" #: menu_dlg_title msgid "Folder properties" msgstr "Klasör özellikleri" #: menuElement_dlg_title msgid "Button properties" msgstr "Buton özellikleri" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Geçerli menüyü sil" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Sil" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "" #: action_libraries_caption msgid "Libraries..." msgstr "" #: dlg_save_title msgid "Save file..." msgstr "Dosyayı kaydet..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Dosya açma hatası" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "" #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Sil" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "" #: menu_newMenuName msgid "New folder" msgstr "Yeni klasör" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Proje butonları için yeni dosya oluştur" #: menu_newMenu_caption msgid "New button's folder" msgstr "Yeni buton klasörü" #: menu_newMenuElement_caption msgid "New project button" msgstr "" #: menu_newMenuElementName msgid "New button" msgstr "" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Değişiklikleri iptal et" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "İptal" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Seçilen kütüphaneyi düzenle" #: libraryManager_edit_caption msgid "Edit" msgstr "Düzenle" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Değişiklikleri Kaydet" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "İşaretli klasörü seç" #: library_select_caption_ok msgid "Ok" msgstr "Tamam" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Seç" #: library_caption msgid "JClic projects library" msgstr "JClic proje kütüphanesi" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Seçili kütüphaneyi aç" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "İptal" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "İptal" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Seç" #: libraryManager_caption msgid "Select library" msgstr "Kütüphane seç" #: library_error_reading msgid "Error reading project library!" msgstr "Proje kütüphanesi okuma hatası!" #: wizard_next msgid "Next >" msgstr "Sonraki >" #: wizard_prev msgid "< Previous" msgstr "<Önceki" #: wizard_finish msgid "Finish" msgstr "Tamamla" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Kütüphane simgeleri oluşturma hatası" #: install_title msgid "Installation of JClic projects" msgstr "JClic proje kurulumu" #: install_info_description msgid "Installation of a new JClic project" msgstr "Yeni bir JClic projesi kurulumu" #: install_info_from msgid "From:" msgstr "Gönderen:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "İptal" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "İşlemi iptal et" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "İşlemi bitir" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "İşlemin sonraki adımı" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "İŞşlemin önceki adımı" #: install_select_library msgid "Select the library where to install the project:" msgstr "Projenin kurulacağı kütüphaneyi seç" #: install_copy_files msgid "File copy" msgstr "Dosya kopyalama" #: install_source msgid "Source:" msgstr "Kaynak:" #: install_dest msgid "Destination:" msgstr "Hedef:" #: install_status msgid "Status:" msgstr "Durum:" #: install_start msgid "Start the installation" msgstr "Kurulumu başlat" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Dosyaları bilgisaya kopyalamayı başlat" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Kurulumun ilerlemesi" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Onay için bekliyor." #: install_msg_creating_dirs msgid "Creating directories" msgstr "" #: install_msg_copying msgid "Copying file" msgstr "Dosya kopyalanıyor" #: install_msg_end msgid "Finished!" msgstr "Tamamlandı!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "" #: install_msg_cancel msgid "Installation cancelled!" msgstr "Kurulum iptal edildi!" #: install_error msgid "Install error!" msgstr "Kurulum hatası!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "" #: install_library_folders msgid "Library folders:" msgstr "" #: install_success_1 msgid "The project are now installed on your system!" msgstr "" #: install_success_2 msgid "In order to run it, select its" msgstr "" #: install_success_3 msgid "icon on the project library." msgstr "" #: wizard_info msgid "Press \"Next\" to start." msgstr "" #: install_step_1 msgid "1. Selection of JClic library" msgstr "" #: install_step_2 msgid "2. Download files" msgstr "" #: install_step_3 msgid "3. Creation of icons" msgstr "" #: install_step_4 msgid "Installation finished!" msgstr "" #: install_info_info msgid "You request to install the project:" msgstr "" #: settings_title msgid "Settings" msgstr "" #: library_error_clone msgid "Unable to clone library!" msgstr "" #: settings_security msgid "Security" msgstr "" #: settings_password_protect msgid "Protect settings with password" msgstr "" #: settings_new_password msgid "New password:" msgstr "" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "" #: settings_general msgid "General" msgstr "" #: settings_look msgid "Look & Feel:" msgstr "" #: settings_skin msgid "Skin:" msgstr "" #: settings_language msgid "Language:" msgstr "" #: settings_reports msgid "Reports" msgstr "" #: settings_report_use msgid "Write scores to a database" msgstr "" #: settings_report_engine msgid "Reporter class:" msgstr "" #: settings_report_params msgid "Parameters:" msgstr "" #: settings_media msgid "Multimedia" msgstr "" #: settings_media_enabled msgid "Multimedia enabled" msgstr "" #: settings_media_system msgid "Multimedia system:" msgstr "" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "" #: settings_library msgid "Libraries" msgstr "" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "" #: m_Tools msgid "Tools" msgstr "" #: m_File_Mnemonic msgid "F" msgstr "" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "" #: m_Help_Mnemonic msgid "H" msgstr "" #: m_Activity msgid "Activity" msgstr "" #: m_Activity_Mnemonic msgid "A" msgstr "" #: action_openFile_caption msgid "Open file..." msgstr "" #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "" #: action_openFile_keys msgid "OO" msgstr "" #: action_openUrl_caption msgid "Open URL..." msgstr "" #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "" #: action_openUrl_keys msgid "UU" msgstr "" #: action_exit_caption msgid "Exit" msgstr "" #: action_exit_tooltip msgid "Close JClic" msgstr "" #: action_exit_keys msgid "XX" msgstr "" #: action_settings_caption msgid "Settings..." msgstr "" #: action_settings_tooltip msgid "Adjust global program settings" msgstr "" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "" #: action_libraries_keys msgid "LL" msgstr "" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "" #: action_helpAbout_keys msgid "AA" msgstr "" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "" #: settings_report_other msgid "Other:" msgstr "" #: settings_report_address msgid "Host:" msgstr "" #: settings_report_port msgid "Port:" msgstr "" #: settings_report_driver msgid "Driver:" msgstr "" #: settings_report_url msgid "URL:" msgstr "" #: settings_report_user msgid "User:" msgstr "" #: settings_report_pwd msgid "Password:" msgstr "" #: settings_report_options msgid "Reporter params::" msgstr "" #: settings_report_err_server msgid "Bad report server name!" msgstr "" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" #: settings_report_err msgid "Incorrect report system data!" msgstr "" #: settings_report_type msgid "Reporting engine:" msgstr "" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "" #: settings_media_qt msgid "QuickTime" msgstr "" #: settings_media_default msgid "Auto-detect" msgstr "" #: settings_security_tooltip msgid "Security settings" msgstr "" #: settings_report_tooltip msgid "Report system settings" msgstr "" #: settings_media_tooltip msgid "Multimedia system options" msgstr "" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "" #: settings_library_tooltip msgid "Library settings and editor" msgstr "" #: settings_look_tooltip msgid "User interface look & feel" msgstr "" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "" #: settings_language_tooltip msgid "Language selection" msgstr "" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "" #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "" #: edit_file msgid "File:" msgstr "" #: error_launchLibrary msgid "Error launching library" msgstr "" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "" #: edit_find_media msgid "Find media file..." msgstr "" #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "" #: edit_find_image_keys msgid "F*" msgstr "" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "" #: menu_newMenu_caption_keys msgid "MM" msgstr "" #: edit_find_file_keys msgid "FF" msgstr "" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" #: install_launchProject msgid "Open the project now" msgstr "" #: settings_browser msgid "Preferred browser\\:" msgstr "" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" #: settings_country msgid "Country code\\:" msgstr "" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" #: settings_variant msgid "Variant\\:" msgstr "" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_it.po0000644000175000017500000004443311377161311023142 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-22 16:44+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "File" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Una password di amministratore JClic è richiesta per procedere " "nell'operazione." #: m_Help msgid "Help" msgstr "Aiuto" #: m_Skin msgid "Skin" msgstr "Skin" #: action_helpAbout_caption msgid "About..." msgstr "Informazioni..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Libreria principale" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Questo file JClic non è una libreria di progetto!\n" "Le librerie sono tipi speciali di progetti JClic." #: library_mainMenu msgid "Main menu" msgstr "Menu principale" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nuova libreria di progetti" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "Vuoi creare una nuova libreria o collegarti a una esistente?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Connetti" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nuovo" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Crea o connettiti a una nuova libreria" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nuovo" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Immagine del pulsante" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Testo flottante che apparirà quando il puntatore si troverà sul pulsante." #: menuElement_dlg_description msgid "Description:" msgstr "Descrizione:" #: edit_find_image msgid "Find image..." msgstr "Trova immagine" #: menuElement_dlg_icon msgid "Icon:" msgstr "Icona:" #: edit_find_file msgid "Find file..." msgstr "Trova file" #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Percorso per il progetto JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Progetto:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Testo del pulsante" #: edit_text msgid "Text:" msgstr "Testo:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nome della cartella" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nome della libreria" #: edit_name msgid "Name:" msgstr "Nome:" #: edit_title msgid "Title:" msgstr "Titolo:" #: library_dlg_title msgid "Library properties" msgstr "Proprietà della libreria" #: menu_dlg_title msgid "Folder properties" msgstr "Proprietà della cartella" #: menuElement_dlg_title msgid "Button properties" msgstr "Proprietà del pulsante" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Elimina il menu selezionato" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Elimina" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Elimina l'elemento del menu selezionato" #: action_libraries_caption msgid "Libraries..." msgstr "Librerie..." #: dlg_save_title msgid "Save file..." msgstr "Salva file..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Errore all'apertura di \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Si utilizzeranno i valori predefiniti." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Elimina" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Crea una nuova scorciatoia per il progetto" #: menu_newMenuName msgid "New folder" msgstr "Nuova cartella" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Crea una nuova cartella per i pulsanti del progetto." #: menu_newMenu_caption msgid "New button's folder" msgstr "Nuova cartella delle icone" #: menu_newMenuElement_caption msgid "New project button" msgstr "Nuovo pulsante di progetto" #: menu_newMenuElementName msgid "New button" msgstr "Nuovo pulsante" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Annulla modifiche" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Annulla" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Modifica la libreria selezionata" #: libraryManager_edit_caption msgid "Edit" msgstr "Modifica" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Salva le modifiche" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Scegli la cartella selezionata" #: library_select_caption_ok msgid "Ok" msgstr "Ok" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Seleziona" #: library_caption msgid "JClic projects library" msgstr "Libreria dei progetti JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Apri la libreria selezionata" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Annulla" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Annulla" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Seleziona" #: libraryManager_caption msgid "Select library" msgstr "Seleziona la libreria dei progetti" #: library_error_reading msgid "Error reading project library!" msgstr "Errore nella lettura della libreria del progetto!" #: wizard_next msgid "Next >" msgstr "Successivo >" #: wizard_prev msgid "< Previous" msgstr "< Precedente" #: wizard_finish msgid "Finish" msgstr "Finisci" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Errore nella creazione delle icone della libreria!" #: install_title msgid "Installation of JClic projects" msgstr "Installazione di progetti JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Installazione di un nuovo progetto JClic" #: install_info_from msgid "From:" msgstr "Da:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Annulla" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Annulla l'operazione" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Concludi l'operazione" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Passo successivo dell'operazione" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Passo precedente dell'operazione" #: install_select_library msgid "Select the library where to install the project:" msgstr "Seleziona la libreria dove verrà installato il progetto:" #: install_copy_files msgid "File copy" msgstr "Copia dei file" #: install_source msgid "Source:" msgstr "Origine:" #: install_dest msgid "Destination:" msgstr "Destinazione:" #: install_status msgid "Status:" msgstr "Stato:" #: install_start msgid "Start the installation" msgstr "Inizia l'installazione" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Inizia la copia dei file sul tuo computer" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Installazione in corso" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "In attesa di conferma" #: install_msg_creating_dirs msgid "Creating directories" msgstr "Creazione delle directory" #: install_msg_copying msgid "Copying file" msgstr "Copia dei file" #: install_msg_end msgid "Finished!" msgstr "Finito!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Pulizia in corso..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Installazione annullata!" #: install_error msgid "Install error!" msgstr "Errore nell'installazione!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Seleziona la cartella dove mettere le icone di progetto:" #: install_library_folders msgid "Library folders:" msgstr "Cartelle della libreria:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Ora il progetto è installato nel tuo sistema!" #: install_success_2 msgid "In order to run it, select its" msgstr "Per lanciarlo seleziona la sua" #: install_success_3 msgid "icon on the project library." msgstr "icona nella libreria del progetto." #: wizard_info msgid "Press \"Next\" to start." msgstr "Premi \"Successivo\" per iniziare." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Selezione della libreria JClic" #: install_step_2 msgid "2. Download files" msgstr "Scaricamento dei file" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Creazione delle icone" #: install_step_4 msgid "Installation finished!" msgstr "Installazione conclusa!" #: install_info_info msgid "You request to install the project:" msgstr "Hai chiesto di installare il progetto:" #: settings_title msgid "Settings" msgstr "Impostazioni" #: library_error_clone msgid "Unable to clone library!" msgstr "Impossibile duplicare la libreria" #: settings_security msgid "Security" msgstr "Sicurezza" #: settings_password_protect msgid "Protect settings with password" msgstr "Proteggi la configurazione con una password" #: settings_new_password msgid "New password:" msgstr "Nuova password:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Conferma la nuova password:" #: settings_general msgid "General" msgstr "Generale" #: settings_look msgid "Look & Feel:" msgstr "Aspetto" #: settings_skin msgid "Skin:" msgstr "Skin:" #: settings_language msgid "Language:" msgstr "Lingua:" #: settings_reports msgid "Reports" msgstr "Rapporti" #: settings_report_use msgid "Write scores to a database" msgstr "Scrivi il punteggio in un database" #: settings_report_engine msgid "Reporter class:" msgstr "Classe:" #: settings_report_params msgid "Parameters:" msgstr "Parametri:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimedia abilitato" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimediale:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Suoni di evento abilitati" #: settings_library msgid "Libraries" msgstr "Librerie" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Mostra automaticamente le librerie quando JClic viene avviato" #: m_Tools msgid "Tools" msgstr "Strumenti" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Attività" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Apri il file..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Apri un file di progetto JClic" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Apri URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Apri un progetto JClic direttamente da Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Esci" #: action_exit_tooltip msgid "Close JClic" msgstr "Chiudi JClic" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Impostazioni..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Sistema le impostazioni globali del programma" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "T" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Apri o modifica una liberia JClic." #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Informazioni su JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Questa immagine è troppo grande per essere usata come icona!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Collegati al server dei rapporti JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Connessione diretta JDBC:" #: settings_report_other msgid "Other:" msgstr "Altro:" #: settings_report_address msgid "Host:" msgstr "Host:" #: settings_report_port msgid "Port:" msgstr "Porta:" #: settings_report_driver msgid "Driver:" msgstr "Driver:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Utente:" #: settings_report_pwd msgid "Password:" msgstr "Password:" #: settings_report_options msgid "Reporter params::" msgstr "Parametri:" #: settings_report_err_server msgid "Bad report server name!" msgstr "Nome del server dei rapporti non corretto!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Numero di porta non corretto! Per favore inserisci un valore compreso tra " "1000 e 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Dati incorretti del sistema dei rapporti!" #: settings_report_type msgid "Reporting engine:" msgstr "Motore dei rapporti:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Autorilevamento" #: settings_security_tooltip msgid "Security settings" msgstr "Impostazioni di sicurezza" #: settings_report_tooltip msgid "Report system settings" msgstr "Impostazione del sistema dei rapporti" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configurazione del sistema multimediale" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Impostazioni di lingua e aspetto" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Impostazione e modifica della libreria" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspetto dell'interfaccia utente" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Selezione dell'aspetto grafico di JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Selezione della lingua" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Abilita/disabilita la connessione a un database dei rapporti JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motore dei rapporti basato su una connessione TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motore dei rapporti basato su una diretta connessione a un database" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Altri motori dei rapporti..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nome o indirizzo IP del server dei rapporti" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Porta usare per la connessione (il valore predefinito è 5510)" #: edit_file msgid "File:" msgstr "File:" #: error_launchLibrary msgid "Error launching library" msgstr "Errore all'apertura della libreria" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Installazione nella cartella di origine!" #: edit_find_media msgid "Find media file..." msgstr "Cerca i file multimediali..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Elimina" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Elimina i riferimenti alla libreria selezionata" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Vuoi davvero eliminare i riferimenti alla libreria selezionata?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "La libreria è già connessa al sistema." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Crea una nuova libreria dei progetti" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Aggiungi un link a una esistente libreria dei progetti" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "File o URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nuova libreria di progetti" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Per favore inserisci l'URL o il nome del file della libreria di progetto\\!" #: install_launchProject msgid "Open the project now" msgstr "Apri adesso il progetto" #: settings_browser msgid "Preferred browser\\:" msgstr "Browser preferito\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comando usato per avviare il navigatore Internet (Firefox, IExplore, " "Mozilla, Opera...)" #: settings_country msgid "Country code\\:" msgstr "Codice nazione\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Codice opzionale di due lettere corrispondente alla variante nazionale di " "una lingua (es. BR per il portoghese brasiliano)" #: settings_variant msgid "Variant\\:" msgstr "Variante\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Codice opzionale della variante della lingua" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_fr.po0000644000175000017500000004433111377161311023132 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-04-04 13:26+0000\n" "Last-Translator: Maijin \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Fichier" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Le mot de passe administrateur JClic est requis pour réaliser cette " "opération." #: m_Help msgid "Help" msgstr "Aide" #: m_Skin msgid "Skin" msgstr "Habillage" #: action_helpAbout_caption msgid "About..." msgstr "A propos de..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Librairie principale" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Ce fichier JClic n'est pas une librairie du projet!\n" "Libraries are a special type of JClic projects." #: library_mainMenu msgid "Main menu" msgstr "Menu principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nouvlle librairie de projet" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Voulez-vous créer une nouvelle librairie ou vous connecter sur une existante " "?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Connecter" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nouveau" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Créer ou se connecter à une nouvelle librairie" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nouveau" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Bouton icône" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "Description du bouton utilisé comme outil texte." #: menuElement_dlg_description msgid "Description:" msgstr "Description:" #: edit_find_image msgid "Find image..." msgstr "Chercher image..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Icône:" #: edit_find_file msgid "Find file..." msgstr "Chercher fichier..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Chemin vers le projet JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Projet:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Bouton texte" #: edit_text msgid "Text:" msgstr "Texte:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nom du dossier" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nom de librairie" #: edit_name msgid "Name:" msgstr "Nom:" #: edit_title msgid "Title:" msgstr "Titre:" #: library_dlg_title msgid "Library properties" msgstr "Propriétés de la librairie" #: menu_dlg_title msgid "Folder properties" msgstr "Propriétés de dossier" #: menuElement_dlg_title msgid "Button properties" msgstr "Propriétés de bouton" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Supprimer le bouton courant" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Supprimer" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Supprimer l'élément menu courant" #: action_libraries_caption msgid "Libraries..." msgstr "Librairies..." #: dlg_save_title msgid "Save file..." msgstr "Enregistrer fichier..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Erreur à l'ouverture \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Les paramètres par défaut seront utilisés." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Supprimer" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "" "Créer un nouveau raccourci vers le projet a new shortcut to a project" #: menu_newMenuName msgid "New folder" msgstr "Nouveau dossier" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Créer un nouveau dossier por les boutons du projet" #: menu_newMenu_caption msgid "New button's folder" msgstr "Nouveau bouton de projet" #: menu_newMenuElement_caption msgid "New project button" msgstr "Nouveau bouton du projet" #: menu_newMenuElementName msgid "New button" msgstr "Nouveau projet" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Annuler changement" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Annuler" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editer la librairie sélectionnée" #: libraryManager_edit_caption msgid "Edit" msgstr "Editer" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Enregistrer changement" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Choisir le dossier sélectionné" #: library_select_caption_ok msgid "Ok" msgstr "OK" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Sélectionner" #: library_caption msgid "JClic projects library" msgstr "Librairie de projets JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Ouvrir la librairie sélectionée" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Annuler" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Annuler" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Sélectionner" #: libraryManager_caption msgid "Select library" msgstr "Sélectionner librairie" #: library_error_reading msgid "Error reading project library!" msgstr "Erreur de lecture de la librairie du projet!" #: wizard_next msgid "Next >" msgstr "Suivant >" #: wizard_prev msgid "< Previous" msgstr "< Précédent" #: wizard_finish msgid "Finish" msgstr "Terminé" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Erreur de création de la librairie d'icônes!" #: install_title msgid "Installation of JClic projects" msgstr "Installation de projets JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Installation d'un nouveau projet JClic" #: install_info_from msgid "From:" msgstr "De:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Annuler" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Annuler l'opération" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Terminer l'opération" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Etape suivante de l'opération" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Etape précédente de l'opération" #: install_select_library msgid "Select the library where to install the project:" msgstr "Sélectionner la librairie où sera installé le projet:" #: install_copy_files msgid "File copy" msgstr "Copie de fichier" #: install_source msgid "Source:" msgstr "Source:" #: install_dest msgid "Destination:" msgstr "Destination:" #: install_status msgid "Status:" msgstr "Status:" #: install_start msgid "Start the installation" msgstr "Démarrer l'installation" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Démarrage de la copie des fichiers sur votre ordinateur" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Installation en cours" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Attente de confirmation." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Création des dossiers" #: install_msg_copying msgid "Copying file" msgstr "Copie de fichier" #: install_msg_end msgid "Finished!" msgstr "Terminé!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Nettoyage en cours..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Installation annulée!" #: install_error msgid "Install error!" msgstr "Erreur pendant l'installation!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Sélectionner le dossier où placer les icônes du projet:" #: install_library_folders msgid "Library folders:" msgstr "Dossiers librairie:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Le projet es t maintenant installé sur votre système!" #: install_success_2 msgid "In order to run it, select its" msgstr "Pour le lancer, sélectionnez son" #: install_success_3 msgid "icon on the project library." msgstr "icône sur la librairie projet." #: wizard_info msgid "Press \"Next\" to start." msgstr "Presser \"Suivant\" pour commencer." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Sélection de la librairie JClic" #: install_step_2 msgid "2. Download files" msgstr "2. Télécharger fichiers" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Création d'icônes" #: install_step_4 msgid "Installation finished!" msgstr "Installation terminée!" #: install_info_info msgid "You request to install the project:" msgstr "Vous avez demandé d'installer le projet:" #: settings_title msgid "Settings" msgstr "Paramètres" #: library_error_clone msgid "Unable to clone library!" msgstr "Impossible de cloner la librairie!" #: settings_security msgid "Security" msgstr "Sécurité" #: settings_password_protect msgid "Protect settings with password" msgstr "Protéger les paramètres avec un mot de passe" #: settings_new_password msgid "New password:" msgstr "Nouveau mot de passe:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Confirmer le nouveau mot de passe:" #: settings_general msgid "General" msgstr "Général" #: settings_look msgid "Look & Feel:" msgstr "Apparence:" #: settings_skin msgid "Skin:" msgstr "Habillage:" #: settings_language msgid "Language:" msgstr "Langage:" #: settings_reports msgid "Reports" msgstr "Rapports" #: settings_report_use msgid "Write scores to a database" msgstr "Ecrire le score dans la base de données" #: settings_report_engine msgid "Reporter class:" msgstr "Rapporteur classe:" #: settings_report_params msgid "Parameters:" msgstr "Paramètres:" #: settings_media msgid "Multimedia" msgstr "Multimédia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Autoriser multimedia" #: settings_media_system msgid "Multimedia system:" msgstr "Système multimedia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Autoriser les sons évènement" #: settings_library msgid "Libraries" msgstr "Librairies" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Allez automatiquement aux librairies quand JClic démarre JClic" #: m_Tools msgid "Tools" msgstr "Outils" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Activité" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Ouvrir fichier..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Ouvrir un fichier projet JClic" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Ouvrir URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Ouvrir un projet JClic directement depuis Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Quitter" #: action_exit_tooltip msgid "Close JClic" msgstr "Fermer JClic" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Paramètres..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Adjuster les paramètres globaux du programme" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "T" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Ouvrir ou éditer une librairie JClic ." #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Information à propos de JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Cette image est trop grande pour être utilisée comme icône!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Connecter JClic au serveur de rapports:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Connection directe JDBC:" #: settings_report_other msgid "Other:" msgstr "Autre:" #: settings_report_address msgid "Host:" msgstr "Hôte:" #: settings_report_port msgid "Port:" msgstr "Port:" #: settings_report_driver msgid "Driver:" msgstr "Driver:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Utilisateur:" #: settings_report_pwd msgid "Password:" msgstr "Mot de passe:" #: settings_report_options msgid "Reporter params::" msgstr "Paramètres du reporter:" #: settings_report_err_server msgid "Bad report server name!" msgstr "Mauvais nom de serveur de rapport!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "Numéro de port incorrect! Entrez une valeur entre 1000 et 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Système incorrect de rapport de données!" #: settings_report_type msgid "Reporting engine:" msgstr "Moteur de rapports:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Détection automatique" #: settings_security_tooltip msgid "Security settings" msgstr "Paramètres de sécurité" #: settings_report_tooltip msgid "Report system settings" msgstr "Paramètres du système de rapports" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Options du système multimédia" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Paramètres du langage et de l'aspect" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Paramètres de la librairie et de l'éditeur" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Apparence de l'interface utilisateur User" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Sélection de l'aspect graphique de JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Sélection du langage" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Activer/désactiver la connection à une base de rapports JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Moteur de rapports basé sur une connection TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "" "Moteur de rapports basé sur une connection directe à la base de données" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Autres moteurs de rapports..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nom de serveur de rapports ou adresse IP" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Port utilisé pour la connection (5510 par défaut)" #: edit_file msgid "File:" msgstr "Fichier:" #: error_launchLibrary msgid "Error launching library" msgstr "Erreur au lancement de la librairie" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Installation dans le dossier source!" #: edit_find_media msgid "Find media file..." msgstr "Chercher fichier media..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Supprimer" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Supprimer la référence vers la librairie sélectionnée" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" "Voulez-vous réellement supprimer la référence à la librairie sélectionnée ?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Cette librairie est déjà reliée au système." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Créer une nouvelle librairie projet" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Ajouter un lien vers un projet librairie existant" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Fichier ou URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nouvelle librairie de projet" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "Entrez l'URL ou nom de fichier du projet librairie!" #: install_launchProject msgid "Open the project now" msgstr "Ouvrir le projet maintenant" #: settings_browser msgid "Preferred browser\\:" msgstr "Explorateur préféré:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Commande utilisée pour lancer l'explorateur (firefox, iexplore, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Country code\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Code optionnel de deux lettres correspondant à la variante dialectale d'un " "territoire (ex.\\: BR pour le Portugais du Brésil)" #: settings_variant msgid "Variant\\:" msgstr "Variant\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Code optionnel de variante de la langue" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_ast.po0000644000175000017500000004466111377161311023320 0ustar # Asturian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # Xandru Armesto , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-10-01 09:54+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Ficheru" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "" "Pa facer esta operación hai qu'inxertar la contraseña d'alministración de " "JClic." #: m_Help msgid "Help" msgstr "Aida" #: m_Skin msgid "Skin" msgstr "Apariencia" #: action_helpAbout_caption msgid "About..." msgstr "Tocante a..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Biblioteca principal" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "¡Esti ficheru JClic nun ye una biblioteca de proyeutos!\n" "Les biblioteques son una triba especial de ficheros JClic." #: library_mainMenu msgid "Main menu" msgstr "Menú principal" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Biblioteca de proyeutos nueva" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "¿Quies criar una biblioteca nueva o coneutate a una yá esistente?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Coneutarse" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nueva" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Criar o coneutase a una biblioteca nueva" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nueva" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Imaxe del botón" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "" "Testu flotante que va aparecer cuando se pose'l punteru sobro'l botón." #: menuElement_dlg_description msgid "Description:" msgstr "Descripción:" #: edit_find_image msgid "Find image..." msgstr "Guetar imaxe..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Iconu:" #: edit_find_file msgid "Find file..." msgstr "Guetar ficheru..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Allugamientu del proyeutu JClic" #: menuElement_dlg_project msgid "Project:" msgstr "Proyeutu:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Testu del botón" #: edit_text msgid "Text:" msgstr "Testu:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Nome de la carpeta" #: library_dlg_name_tooltip msgid "Library name" msgstr "Nome de la biblioteca" #: edit_name msgid "Name:" msgstr "Nome:" #: edit_title msgid "Title:" msgstr "Títulu:" #: library_dlg_title msgid "Library properties" msgstr "Propiedaes de la biblioteca" #: menu_dlg_title msgid "Folder properties" msgstr "Propiedaes de la carpeta" #: menuElement_dlg_title msgid "Button properties" msgstr "Propiedaes del botón" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Esborrar el menú escoyíu" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Esborrar" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Esborrar l'elementu de menú escoyíu" #: action_libraries_caption msgid "Libraries..." msgstr "Biblioteques..." #: dlg_save_title msgid "Save file..." msgstr "Guardar ficheru..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Error al abrir \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Van emplegase los valores por defeutu." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Esborrar" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Criar un botón de proyeutu nuevu" #: menu_newMenuName msgid "New folder" msgstr "Carpeta Nueva" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Criar una carpeta de botones de proyeutu nueva" #: menu_newMenu_caption msgid "New button's folder" msgstr "Carpeta d'iconos nueva" #: menu_newMenuElement_caption msgid "New project button" msgstr "Botón nuevu de proyeutu" #: menu_newMenuElementName msgid "New button" msgstr "Botón nuevu" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Encaboxar les modificaciones" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Encaboxar" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editar la biblioteca escoyida" #: libraryManager_edit_caption msgid "Edit" msgstr "Editar" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Guardar los cambeos" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Escoyer la carpeta seleicionada" #: library_select_caption_ok msgid "Ok" msgstr "Aceutar" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Seleicionar" #: library_caption msgid "JClic projects library" msgstr "Biblioteca de proyeutos JClic" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Abrir la biblioteca seleicionada" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Encaboxar" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Encaboxar" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Seleicionar" #: libraryManager_caption msgid "Select library" msgstr "Seleición de la biblioteca de proyeutos" #: library_error_reading msgid "Error reading project library!" msgstr "¡Error al lleer la biblioteca de proyeutos!" #: wizard_next msgid "Next >" msgstr "Siguiente >" #: wizard_prev msgid "< Previous" msgstr "< Anterior" #: wizard_finish msgid "Finish" msgstr "Finar" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "¡Error al criar l'iconu na biblioteca!" #: install_title msgid "Installation of JClic projects" msgstr "Instalación de proyeutos JClic" #: install_info_description msgid "Installation of a new JClic project" msgstr "Instalación de un proyeutu JClic nuevu" #: install_info_from msgid "From:" msgstr "Dende:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Encaboxar" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Encaboxar la operación" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Acabar la operación" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Siguiente pasu de la operación" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Pasu anterior de la operación" #: install_select_library msgid "Select the library where to install the project:" msgstr "Seleiciona la biblioteca na que se va instalar el proyeutu:" #: install_copy_files msgid "File copy" msgstr "Copia de ficheros" #: install_source msgid "Source:" msgstr "Orixe:" #: install_dest msgid "Destination:" msgstr "Destín:" #: install_status msgid "Status:" msgstr "Estáu:" #: install_start msgid "Start the installation" msgstr "Entamar la instalación" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Entamar la copia de ficheros al ordenador" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Progresu de la instalación" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Esperando confirmación." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Criando carpetes" #: install_msg_copying msgid "Copying file" msgstr "Copiando'l ficheru" #: install_msg_end msgid "Finished!" msgstr "¡Fináu!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Llimpiando..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "¡Instalación encaboxada!" #: install_error msgid "Install error!" msgstr "¡Hebo un fallu durante la instalación!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Seleiciona la carpeta na que se van crear los iconos del proyeutu:" #: install_library_folders msgid "Library folders:" msgstr "Carpetes de la biblioteca:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "El proyeutu instalóse dafechu!" #: install_success_2 msgid "In order to run it, select its" msgstr "Pa arrancalu seleiciona'l so" #: install_success_3 msgid "icon on the project library." msgstr "iconu na biblioteca de proyeutos." #: wizard_info msgid "Press \"Next\" to start." msgstr "Fai clic en \"Siguiente\" pa entamar." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Seleición de la biblioteca JClic" #: install_step_2 msgid "2. Download files" msgstr "2. Descarga de ficheros" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Creación d'iconos" #: install_step_4 msgid "Installation finished!" msgstr "¡Instalación finada!" #: install_info_info msgid "You request to install the project:" msgstr "Solicitó instalar el proyeutu:" #: settings_title msgid "Settings" msgstr "Configuración" #: library_error_clone msgid "Unable to clone library!" msgstr "¡Nun se pudo clonar la biblioteca!" #: settings_security msgid "Security" msgstr "Seguridá" #: settings_password_protect msgid "Protect settings with password" msgstr "Protexer los cambeos de configuración con contraseña" #: settings_new_password msgid "New password:" msgstr "Contraseña nueva:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Confirmar contraseña nueva:" #: settings_general msgid "General" msgstr "Xeneral" #: settings_look msgid "Look & Feel:" msgstr "Aspeutu:" #: settings_skin msgid "Skin:" msgstr "Piel:" #: settings_language msgid "Language:" msgstr "Llingua:" #: settings_reports msgid "Reports" msgstr "Informes" #: settings_report_use msgid "Write scores to a database" msgstr "Guardar los resultaos de les xeres nuna base de datos" #: settings_report_engine msgid "Reporter class:" msgstr "Clas:" #: settings_report_params msgid "Parameters:" msgstr "Parámetros:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimedia activao" #: settings_media_system msgid "Multimedia system:" msgstr "Sistema multimedia:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Soníos d'eventu activaos" #: settings_library msgid "Libraries" msgstr "Biblioteques" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Amosar automáticamente la biblioteca nel aniciu" #: m_Tools msgid "Tools" msgstr "Ferramientes" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "F" #: m_Help_Mnemonic msgid "H" msgstr "A" #: m_Activity msgid "Activity" msgstr "Xera" #: m_Activity_Mnemonic msgid "A" msgstr "X" #: action_openFile_caption msgid "Open file..." msgstr "Abrir el ficheru..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Abrir un ficheru de proyeutu JClic" #: action_openFile_keys msgid "OO" msgstr "AO" #: action_openUrl_caption msgid "Open URL..." msgstr "Abrir una web..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Abrir un proyeutu JClic direutamente dende Internet" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Colar" #: action_exit_tooltip msgid "Close JClic" msgstr "Zarrar JClic" #: action_exit_keys msgid "XX" msgstr "XC" #: action_settings_caption msgid "Settings..." msgstr "Configuración..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Axustar la configuración global del programa" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "C" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Abrir o camudar una biblioteca JClic" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Información sobro JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "¡Esta imaxe ye enforma grande pa ser emplegada como iconu!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Conectase a un sirvidor d'informes JClic:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Conexón direuta a una base de datos JDBC:" #: settings_report_other msgid "Other:" msgstr "Otros:" #: settings_report_address msgid "Host:" msgstr "Sirvidor:" #: settings_report_port msgid "Port:" msgstr "Puertu:" #: settings_report_driver msgid "Driver:" msgstr "Controlador:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Usuariu:" #: settings_report_pwd msgid "Password:" msgstr "Contraseña:" #: settings_report_options msgid "Reporter params::" msgstr "Parámetros:" #: settings_report_err_server msgid "Bad report server name!" msgstr "¡El nome del sirvidor d'informes ye incorreutu!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "¡Valor incorreutu del puertu! Por favor, conseña un valor ente 1000 y 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "¡Datos incorreutos pal sistema d'informes!" #: settings_report_type msgid "Reporting engine:" msgstr "Motor d'informes:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Deteición automática" #: settings_security_tooltip msgid "Security settings" msgstr "Opciones de seguridá" #: settings_report_tooltip msgid "Report system settings" msgstr "Configuración del sistema d'informes" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Configuración del sistema multimedia" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Opciones de llingua y aspeutu" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Configuración y edición de biblioteques" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Aspeutu del interfaz d'usuariu" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Seleición del diseñu gráficu de JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Seleición de la llingua" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Activa o desactiva la conexón a una base de datos d'informes JClic" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Motor d'informes basáu nuna conexón TCP/IP" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Motor d'informes basáu nuna conexón direuta a una base de datos" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Otros motores d'informes..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Nome o direición IP del sirvidor d'informes" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Puertu usáu pa la conexón (por defeutu: 5510)" #: edit_file msgid "File:" msgstr "Ficheru:" #: error_launchLibrary msgid "Error launching library" msgstr "Error al abrir la biblioteca" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "¡Instalando na carpeta orixe!" #: edit_find_media msgid "Find media file..." msgstr "Guetar recursu..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Esborrar" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Esborrar la referencia a la biblioteca seleicionada" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" "¿De xuru que quies esborrar la referencia a la biblioteca seleicionada?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "¡Esta biblioteca yá s'alcuentra conectada al sistema!" #: edit_find_image_keys msgid "F*" msgstr "G*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Criar una biblioteca de proyeutos nueva" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Amestar un enllaz a una biblioteca yá esistente" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Ficheru o URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Biblioteca de proyeutos nueva" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "¡Por favor, escribi la URL o nome de ficheru de la biblioteca de proyeutos\\!" #: install_launchProject msgid "Open the project now" msgstr "Abrir agora'l proyeutu" #: settings_browser msgid "Preferred browser\\:" msgstr "Restolador preferíu\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comandu utilizáu p'arrancar el restolador (firefox, iexplore, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Códigu de país\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Códigu opcional de dos lletres correspondiente a la variante llingüística " "d'un territoriu (ex.\\: BR pa portugués del Brasil)" #: settings_variant msgid "Variant\\:" msgstr "Variante\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Códigu opcional de variante de la llingua" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_nl.po0000644000175000017500000004375211377161311023142 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-11 10:24+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Bestand" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "JClic admin wachtwoord is vereist om deze bewerking uit te voeren." #: m_Help msgid "Help" msgstr "Help" #: m_Skin msgid "Skin" msgstr "Skin" #: action_helpAbout_caption msgid "About..." msgstr "Info..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Hoofd bibliotheek" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "Dit JClic bestand is geen project bestand!\n" "Bibliotheken zijn een speciaal type JClic projecten." #: library_mainMenu msgid "Main menu" msgstr "Hoofdmenu" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Nieuw project bibliotheek" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "Wil je een nieuwe bibliotheek maken of een bestaande gebruiken?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Verbinden" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Nieuw" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Maak een nieuwe bibliotheek of verbind met een bestaande" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Nieuw" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Knop pictogram" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "Beschrijving van de knop, gebruikt als helpballontekst." #: menuElement_dlg_description msgid "Description:" msgstr "Beschrijving:" #: edit_find_image msgid "Find image..." msgstr "Zoek afbeelding..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Pictogram:" #: edit_find_file msgid "Find file..." msgstr "Zoek bestand..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "Pad naar JClic project" #: menuElement_dlg_project msgid "Project:" msgstr "Project:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Knop tekst" #: edit_text msgid "Text:" msgstr "Tekst" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Naam van de map" #: library_dlg_name_tooltip msgid "Library name" msgstr "Naam van de bibliotheek" #: edit_name msgid "Name:" msgstr "Naam:" #: edit_title msgid "Title:" msgstr "Titel:" #: library_dlg_title msgid "Library properties" msgstr "Bibliotheek eigenschappen" #: menu_dlg_title msgid "Folder properties" msgstr "Map eigenschappen" #: menuElement_dlg_title msgid "Button properties" msgstr "Knop eigenschappen" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Verwijder huidig menu" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Verwijderen" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Verwijder huidig menu element" #: action_libraries_caption msgid "Libraries..." msgstr "Bibliotheken..." #: dlg_save_title msgid "Save file..." msgstr "Bestand opslaan..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Fout bij openen \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Standaard waarden zullen gebruikt worden." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Verwijderen" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Maak een nieuwe snelkoppeling naar een project" #: menu_newMenuName msgid "New folder" msgstr "Nieuwe map" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Maak een nieuwe map voor project knoppen" #: menu_newMenu_caption msgid "New button's folder" msgstr "Map voor nieuwe knop" #: menu_newMenuElement_caption msgid "New project button" msgstr "Nieuw project knop" #: menu_newMenuElementName msgid "New button" msgstr "Nieuw knop" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Veranderingen ongedaanmaken" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Annuleren" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Wijzig de gekozen bibliotheek" #: libraryManager_edit_caption msgid "Edit" msgstr "Bewerk" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Wijzigingen opslaan" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Kies geselecteerde map" #: library_select_caption_ok msgid "Ok" msgstr "Ok" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Selecteer" #: library_caption msgid "JClic projects library" msgstr "JClic project bibliotheek" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Geselecteerde bibliotheek openen" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Annuleren" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Annuleren" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Selecteer" #: libraryManager_caption msgid "Select library" msgstr "Kies bibliotheek" #: library_error_reading msgid "Error reading project library!" msgstr "Fout bij lezen bibliotheek!" #: wizard_next msgid "Next >" msgstr "Volgende >" #: wizard_prev msgid "< Previous" msgstr "< Vorige" #: wizard_finish msgid "Finish" msgstr "Beëindig" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Fout bij maken van bibliotheek pictogram!" #: install_title msgid "Installation of JClic projects" msgstr "Installatie van JClic projecten" #: install_info_description msgid "Installation of a new JClic project" msgstr "Installatie van een nieuw JClic project" #: install_info_from msgid "From:" msgstr "Van:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Annuleren" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Annuleer de bewerking" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Beëindig de bewerking" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Volgende stap van de bewerking" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Vorige stap van de bewerking" #: install_select_library msgid "Select the library where to install the project:" msgstr "Kies de bibliotheek om het project te installeren" #: install_copy_files msgid "File copy" msgstr "Bestand kopiëren" #: install_source msgid "Source:" msgstr "Bron:" #: install_dest msgid "Destination:" msgstr "Bestemming:" #: install_status msgid "Status:" msgstr "Status:" #: install_start msgid "Start the installation" msgstr "Begin de installatie" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Begin het kopiëren van bestanden op uw computer" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Vooruitgang van de installatie" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Wacht op bevestiging" #: install_msg_creating_dirs msgid "Creating directories" msgstr "Aanmaken mappen" #: install_msg_copying msgid "Copying file" msgstr "Bestanden copieren" #: install_msg_end msgid "Finished!" msgstr "Voltooid!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Opschonen..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Installatie afgebroken!" #: install_error msgid "Install error!" msgstr "Fout bij installatie!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Kies de map om de project pictogrammen op te slaan" #: install_library_folders msgid "Library folders:" msgstr "Bibliotheek mappen:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Het project is geïnstalleerd op uw systeem!" #: install_success_2 msgid "In order to run it, select its" msgstr "Om het uit te voeren, kies het" #: install_success_3 msgid "icon on the project library." msgstr "pictogram in de project bibliotheek" #: wizard_info msgid "Press \"Next\" to start." msgstr "Druk \"Volgende\" om te starten." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Keuze van de JClic bibliotheek" #: install_step_2 msgid "2. Download files" msgstr "2. Download bestanden" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Maak de pictogrammen" #: install_step_4 msgid "Installation finished!" msgstr "Installatie beëindigd!" #: install_info_info msgid "You request to install the project:" msgstr "Je vroeg om het project te installeren:" #: settings_title msgid "Settings" msgstr "Instellingen" #: library_error_clone msgid "Unable to clone library!" msgstr "Onmogelijk om de bibliotheek te kopiëren!" #: settings_security msgid "Security" msgstr "Beveiliging" #: settings_password_protect msgid "Protect settings with password" msgstr "Project instellingen met wachtwoord" #: settings_new_password msgid "New password:" msgstr "Nieuw wachtwoord:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Bevestig nieuw wachtwoord:" #: settings_general msgid "General" msgstr "Algemeen" #: settings_look msgid "Look & Feel:" msgstr "Look & Feel:" #: settings_skin msgid "Skin:" msgstr "Skin:" #: settings_language msgid "Language:" msgstr "Taal:" #: settings_reports msgid "Reports" msgstr "Rapporten" #: settings_report_use msgid "Write scores to a database" msgstr "Schrijf punten naar een database" #: settings_report_engine msgid "Reporter class:" msgstr "Reporter class:" #: settings_report_params msgid "Parameters:" msgstr "Parameter:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimedia toegelaten" #: settings_media_system msgid "Multimedia system:" msgstr "Multimedia systeem:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Geluid gebeurtenissen ingeschakeld" #: settings_library msgid "Libraries" msgstr "Bibliotheken" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Ga automatisch naar bibliotheken als JClic start" #: m_Tools msgid "Tools" msgstr "Gereedschappen" #: m_File_Mnemonic msgid "F" msgstr "B" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "G" #: m_Help_Mnemonic msgid "H" msgstr "H" #: m_Activity msgid "Activity" msgstr "Activiteit" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Bestand openen..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "JClick project bestand openen" #: action_openFile_keys msgid "OO" msgstr "OO" #: action_openUrl_caption msgid "Open URL..." msgstr "Open URL..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "JClic project direct van het internet openen" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Afsluiten" #: action_exit_tooltip msgid "Close JClic" msgstr "JClic afsluiten" #: action_exit_keys msgid "XX" msgstr "XX" #: action_settings_caption msgid "Settings..." msgstr "Instellingen..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Algemene programma instellingen aanpassen" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "T" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "JClic bibliotheek openen of aanpassen" #: action_libraries_keys msgid "LL" msgstr "LL" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "Informatie over JClic" #: action_helpAbout_keys msgid "AA" msgstr "AA" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Deze afbeelding is te groot om gebruikt te worden als pictogram!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Verbinden met een JClic rapport server" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "Direct JDBC verbinding:" #: settings_report_other msgid "Other:" msgstr "Andere:" #: settings_report_address msgid "Host:" msgstr "Host:" #: settings_report_port msgid "Port:" msgstr "Poort:" #: settings_report_driver msgid "Driver:" msgstr "Stuurprogramma:" #: settings_report_url msgid "URL:" msgstr "URL:" #: settings_report_user msgid "User:" msgstr "Gebruiker:" #: settings_report_pwd msgid "Password:" msgstr "Wachtwoord:" #: settings_report_options msgid "Reporter params::" msgstr "Rapporteer parameters::" #: settings_report_err_server msgid "Bad report server name!" msgstr "Verkeerde rapport server naam" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "Verkeer inkomend poort nummer! Kies een waarde tussen 1000 en 65000." #: settings_report_err msgid "Incorrect report system data!" msgstr "Verkeer rapport systeem gegevens!" #: settings_report_type msgid "Reporting engine:" msgstr "Rapporteer motor:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Automatisch detecteren" #: settings_security_tooltip msgid "Security settings" msgstr "Beveiliging instellingen" #: settings_report_tooltip msgid "Report system settings" msgstr "Rapport systeem instellingen" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Multimedia systeem opties" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Taal en aspect instellingen" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Bibliotheek instellingen en bewerken" #: settings_look_tooltip msgid "User interface look & feel" msgstr "User interface look & feel" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "Keuze van de grafische aspecten van JClic" #: settings_language_tooltip msgid "Language selection" msgstr "Taal keuze" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "Toestaan/verhinderen van verbinding met een JClic rapport database" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "Rapporteer engine gebaseerd op een TCP/IP verbinding" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Rapporteer engine gebaseerd op een directe verbinding" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Andere rapporteer engines..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Rapport server naam of IP adres" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Poort voor verbinding (standaard is 5510)" #: edit_file msgid "File:" msgstr "Bestand:" #: error_launchLibrary msgid "Error launching library" msgstr "Fout bij starten bibliotheek" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Installeren naar bron map!" #: edit_find_media msgid "Find media file..." msgstr "Zoek media bestand..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Verwijderen" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Verwijder de referentie naar de gekozen bibliotheek" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "Wil je de referentie naar de gekozen bibliotheek verwijderen?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Deze bibliotheek is reeds gekoppeld aan het systeem." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "NN" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Maak een nieuwe project bibliotheek" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Voegt een snelkoppeling naar een bestaande bibliotheek project toe" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Bestand of URL\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Nieuw project bibliotheek" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "Geef de URL of de bestandsnaam van de project bibliotheek\\!" #: install_launchProject msgid "Open the project now" msgstr "Het project nu openen" #: settings_browser msgid "Preferred browser\\:" msgstr "Voorkeur browser\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "Commando om browser te starten(firefox, iexplore, mozilla, opera...)" #: settings_country msgid "Country code\\:" msgstr "Land code\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Optionele twee letter code die overeenkomt met het land specifieke variant " "van de taal (vb. \\: BR voor Braziliaans Portugees)" #: settings_variant msgid "Variant\\:" msgstr "Variant\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Optionele variant code van de taal" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-player/PlayerMessages_eu.po0000644000175000017500000004414411377161311023136 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-02-18 16:25+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. # JClic player messages #: m_File msgid "File" msgstr "Fitxategia" #: settings_passwordRequired msgid "JClic admin password is required in order to perform this operation." msgstr "JClic kudeatzaile-pasahitza behar da ekintza hau burutzeko." #: m_Help msgid "Help" msgstr "Laguntza" #: m_Skin msgid "Skin" msgstr "Itxura" #: action_helpAbout_caption msgid "About..." msgstr "Honi buruz..." #: libraryManager_mainLibraryTitle msgid "Main library" msgstr "Liburutegi nagusia" #: library_badFormat msgid "" "This JClic file is not a project library!\n" "Libraries are a special type of JClic projects." msgstr "" "JClic fitxategi hau ez da proiektu-liburutegia!\n" "Liburutegiak JClic proiektu-mota berezia dira." #: library_mainMenu msgid "Main menu" msgstr "Menu nagusia" #: library_newLibraryName msgctxt "library_newLibraryName" msgid "New project library" msgstr "Proiektu-liburutegi berria" #: libraryManager_new_prompt msgid "Do you want to create a new library or connect to a existing one?" msgstr "" "Liburutegi berria sortu nahi duzu edo lehendik dagoen batera konektatu?" #: libraryManager_connectToLibrary msgid "Connect" msgstr "Konektatu" #: libraryManager_createNewLibrary msgctxt "libraryManager_createNewLibrary" msgid "New" msgstr "Berria" #: libraryManager_new_tooltip msgid "Create or connect to a new library" msgstr "Liburutegi berria sortu edo konektatu" #: libraryManager_new_caption msgctxt "libraryManager_new_caption" msgid "New" msgstr "Berria" #: menuElement_dlg_icon_tooltip msgid "Button icon" msgstr "Botoiaren irudia" #: menuElement_dlg_description_tooltip msgid "Description of the button, used as a tooltip text." msgstr "Punteroa botoiaren gainean geldituta agertuko den testua." #: menuElement_dlg_description msgid "Description:" msgstr "Deskribapena:" #: edit_find_image msgid "Find image..." msgstr "Bilatu irudia..." #: menuElement_dlg_icon msgid "Icon:" msgstr "Ikonoa:" #: edit_find_file msgid "Find file..." msgstr "Bilatu fitxategia..." #: menuElement_dlg_project_tooltip msgid "Path to JClic project" msgstr "JClic proiektuaren kokapena" #: menuElement_dlg_project msgid "Project:" msgstr "Proiektua:" #: menuElement_dlg_text_tooltip msgid "Button text" msgstr "Botoiaren testua" #: edit_text msgid "Text:" msgstr "Testua:" #: menu_dlg_name_tooltip msgid "Folder name" msgstr "Direktorioaren izena" #: library_dlg_name_tooltip msgid "Library name" msgstr "Liburutegiaren izena" #: edit_name msgid "Name:" msgstr "Izena:" #: edit_title msgid "Title:" msgstr "Izenburua:" #: library_dlg_title msgid "Library properties" msgstr "Liburutegiaren propietateak" #: menu_dlg_title msgid "Folder properties" msgstr "Direktorioaren propietateak" #: menuElement_dlg_title msgid "Button properties" msgstr "Botoiaren propietateak" #: menu_delete_tooltip msgid "Delete current menu" msgstr "Ezabatu oraingo menua" #: menu_delete_caption msgctxt "menu_delete_caption" msgid "Delete" msgstr "Ezabatu" #: menuElement_delete_tooltip msgid "Delete current menu element" msgstr "Ezabatu oraingo menuaren elementua" #: action_libraries_caption msgid "Libraries..." msgstr "Liburutegiak..." #: dlg_save_title msgid "Save file..." msgstr "Gorde fitxategia..." #: error_propertiesFile_beg msgid "Error opening \"" msgstr "Errorea zabaltzean \"" #: error_propertiesFile_end msgid "\". Defaults will be used." msgstr "\". Berezko baloreak erabiliko dira." #: menuElement_delete_caption msgctxt "menuElement_delete_caption" msgid "Delete" msgstr "Ezabatu" #: menu_newMenuElement_tooltip msgid "Create a new shortcut to a project" msgstr "Proiekturako sarbide zuzen berria sortu" #: menu_newMenuName msgid "New folder" msgstr "Karpeta berria" #: menu_newMenu_tooltip msgid "Create a new folder for project buttons" msgstr "Proiektu-botoierako karpeta berria sortu" #: menu_newMenu_caption msgid "New button's folder" msgstr "Ikono-karpeta berria" #: menu_newMenuElement_caption msgid "New project button" msgstr "Proiektu-botoi berria" #: menu_newMenuElementName msgid "New button" msgstr "Botoi berria" #: library_cancel_tooltip msgid "Cancel changes" msgstr "Utzi aldaketak" #: library_cancel_caption msgctxt "library_cancel_caption" msgid "Cancel" msgstr "Utzi" #: libraryManager_edit_tooltip msgid "Edit selected library" msgstr "Editatu aukeratutako liburutegia" #: libraryManager_edit_caption msgid "Edit" msgstr "Editatu" #: library_select_caption_ok_tooltip msgid "Save changes" msgstr "Aldaketak gorde" #: library_select_caption_tooltip msgid "Choose selected folder" msgstr "Aukeratu adierazitako direktorioa" #: library_select_caption_ok msgid "Ok" msgstr "Ados" #: library_select_caption msgctxt "library_select_caption" msgid "Select" msgstr "Aukeratu" #: library_caption msgid "JClic projects library" msgstr "JClic proiektuen liburutegia" #: libraryManager_select_tooltip msgid "Open the selected library" msgstr "Zabaldu aukeratutako liburutegia" #: libraryManager_cancel_tooltip msgctxt "libraryManager_cancel_tooltip" msgid "Cancel" msgstr "Utzi" #: libraryManager_cancel_caption msgctxt "libraryManager_cancel_caption" msgid "Cancel" msgstr "Utzi" #: libraryManager_select_caption msgctxt "libraryManager_select_caption" msgid "Select" msgstr "Aukeratu" #: libraryManager_caption msgid "Select library" msgstr "Aukeratu liburutegia" #: library_error_reading msgid "Error reading project library!" msgstr "Errorea proiektuen liburutegia irakurtzean!" #: wizard_next msgid "Next >" msgstr "Hurrengoa >" #: wizard_prev msgid "< Previous" msgstr "< Aurrekoa" #: wizard_finish msgid "Finish" msgstr "Amaitu" #: library_error_creating_icons msgid "Error creating library icons!" msgstr "Errorea liburutegi-ikonoak sortzean!" #: install_title msgid "Installation of JClic projects" msgstr "JClic proiektuen instalazioa" #: install_info_description msgid "Installation of a new JClic project" msgstr "JClic proiektu berriaren instalazioa" #: install_info_from msgid "From:" msgstr "Hemendik:" #: wizard_cancel msgctxt "wizard_cancel" msgid "Cancel" msgstr "Utzi" #: wizard_cancel_tooltip msgid "Cancel the operation" msgstr "Utzi eragiketa" #: wizard_finish_tooltip msgid "Finish the operation" msgstr "Amaitu eragiketa" #: wizard_next_tooltip msgid "Next step of the operation" msgstr "Eragiketaren hurrengo pausua" #: wizard_prev_tooltip msgid "Previous step of the operation" msgstr "Eragiketaren aurreko pausua" #: install_select_library msgid "Select the library where to install the project:" msgstr "Aukera ezazu zein liburutegitan instalatuko den proiektua:" #: install_copy_files msgid "File copy" msgstr "Fitxategia kopiatu" #: install_source msgid "Source:" msgstr "Iturburua:" #: install_dest msgid "Destination:" msgstr "Helburua:" #: install_status msgid "Status:" msgstr "Egoera:" #: install_start msgid "Start the installation" msgstr "Hasi instalazioa" #: install_start_tooltip msgid "Start the copy of files to your computer" msgstr "Hasi kopiatzen fitxategiak zure ordenagailuan" #: install_progress_tooltip msgid "Progress of the installation" msgstr "Instalazioaren aurrerapena" #: install_msg_waiting msgid "Waiting for confirmation." msgstr "Baieztapenaren zain." #: install_msg_creating_dirs msgid "Creating directories" msgstr "Direktorioak sortzen" #: install_msg_copying msgid "Copying file" msgstr "Fitxategia kopiatzen" #: install_msg_end msgid "Finished!" msgstr "Amaituta!" #: install_msg_cleanup msgid "Performing cleanup..." msgstr "Garbitzen..." #: install_msg_cancel msgid "Installation cancelled!" msgstr "Instalazioa bertan behera utzita!" #: install_error msgid "Install error!" msgstr "Errorea instalatzean!" #: install_select_folder msgid "Select the folder where to place the project icons:" msgstr "Aukera ezazu zein karpetatan sortuko diren proiektuaren ikonoak:" #: install_library_folders msgid "Library folders:" msgstr "Liburutegiaren karpetak:" #: install_success_1 msgid "The project are now installed on your system!" msgstr "Proiektua instalatuta dago orain zure sisteman!" #: install_success_2 msgid "In order to run it, select its" msgstr "Martxan jartzeko, aukera ezazu" #: install_success_3 msgid "icon on the project library." msgstr "ikonoa proiektuen liburutegian." #: wizard_info msgid "Press \"Next\" to start." msgstr "Sakatu \"Hurrengoa\"ri hasteko." #: install_step_1 msgid "1. Selection of JClic library" msgstr "1. Aukeratu JClic liburutegia" #: install_step_2 msgid "2. Download files" msgstr "2. Deskargatu fitxategiak" #: install_step_3 msgid "3. Creation of icons" msgstr "3. Ikonoak sortu" #: install_step_4 msgid "Installation finished!" msgstr "Instalazioa amaituta!" #: install_info_info msgid "You request to install the project:" msgstr "Proiektua instalatzea eskatu duzu:" #: settings_title msgid "Settings" msgstr "Ezarpenak" #: library_error_clone msgid "Unable to clone library!" msgstr "Ezin da liburutegia klonatu!" #: settings_security msgid "Security" msgstr "Segurtasuna" #: settings_password_protect msgid "Protect settings with password" msgstr "Babestu pasahitzez ezarpenak" #: settings_new_password msgid "New password:" msgstr "Pasahitz berria:" #: settings_new_password_confirm msgid "Confirm new password:" msgstr "Konfirmatu pasahitz berria:" #: settings_general msgid "General" msgstr "Orokorra" #: settings_look msgid "Look & Feel:" msgstr "Itxura:" #: settings_skin msgid "Skin:" msgstr "Azala:" #: settings_language msgid "Language:" msgstr "Hizkuntza:" #: settings_reports msgid "Reports" msgstr "Txostenak" #: settings_report_use msgid "Write scores to a database" msgstr "Jardueren puntuazioak datu-basean gorde" #: settings_report_engine msgid "Reporter class:" msgstr "Mota:" #: settings_report_params msgid "Parameters:" msgstr "Parametroak:" #: settings_media msgid "Multimedia" msgstr "Multimedia" #: settings_media_enabled msgid "Multimedia enabled" msgstr "Multimedia gaituta" #: settings_media_system msgid "Multimedia system:" msgstr "Multimedia sistema:" #: settings_media_event_sounds msgid "Event sounds enabled" msgstr "Ekintza-soinuak gaituta" #: settings_library msgid "Libraries" msgstr "Liburutegiak" #: settings_library_autorun msgid "Automatically go to libraries when JClic starts" msgstr "Jo automatikoki liburutegietara JClic hastean" #: m_Tools msgid "Tools" msgstr "Tresnak" #: m_File_Mnemonic msgid "F" msgstr "F" #: m_Tools_Mnemonic msgctxt "m_Tools_Mnemonic" msgid "T" msgstr "T" #: m_Help_Mnemonic msgid "H" msgstr "L" #: m_Activity msgid "Activity" msgstr "Jarduera" #: m_Activity_Mnemonic msgid "A" msgstr "A" #: action_openFile_caption msgid "Open file..." msgstr "Ireki fitxategia..." #: action_openFile_tooltip msgid "Open a JClic project file" msgstr "Ireki JClic proiektuko fitxategi bat" #: action_openFile_keys msgid "OO" msgstr "IF" #: action_openUrl_caption msgid "Open URL..." msgstr "Ireki URL-a..." #: action_openUrl_tooltip msgid "Open a JClic project directly form Internet" msgstr "Ireki JClic proiektu bat zuzenean Internetetik" #: action_openUrl_keys msgid "UU" msgstr "UU" #: action_exit_caption msgid "Exit" msgstr "Irten" #: action_exit_tooltip msgid "Close JClic" msgstr "Itxi JClic" #: action_exit_keys msgid "XX" msgstr "II" #: action_settings_caption msgid "Settings..." msgstr "Ezarpenak..." #: action_settings_tooltip msgid "Adjust global program settings" msgstr "Programaren ezarpen orokorrak doitu" #: action_settings_keys msgctxt "action_settings_keys" msgid "T" msgstr "E" #: action_libraries_tooltip msgid "Open or edit a JClic library." msgstr "Zabaldu edo editatu JClic liburutegia" #: action_libraries_keys msgid "LL" msgstr "BB" #: action_helpAbout_tooltip msgid "Information about JClic" msgstr "JClic-i buruzko informazioa" #: action_helpAbout_keys msgid "AA" msgstr "ZB" #: menuElement_err_iconTooLarge msgid "This image is too large to be used as an icon!" msgstr "Irudia handiegia da ikono batean erabiltzeko!" #: settings_report_tcp msgid "Connect to JClic report server:" msgstr "Konektatu Jclic txostenen zerbitzarira:" #: settings_report_jdbc msgid "Direct JDBC connection:" msgstr "JDBC lotura zuzena:" #: settings_report_other msgid "Other:" msgstr "Bestelakoa:" #: settings_report_address msgid "Host:" msgstr "Ostalaria:" #: settings_report_port msgid "Port:" msgstr "Ataka:" #: settings_report_driver msgid "Driver:" msgstr "Kontrolatzailea:" #: settings_report_url msgid "URL:" msgstr "URL-a:" #: settings_report_user msgid "User:" msgstr "Erabiltzailea:" #: settings_report_pwd msgid "Password:" msgstr "Pasahitza:" #: settings_report_options msgid "Reporter params::" msgstr "Parametroak:" #: settings_report_err_server msgid "Bad report server name!" msgstr "Okerreko txosten-zerbitzariaren izena!" #: settings_report_err_port msgid "Incorrect port number! Please enter a value between 1000 and 65000." msgstr "" "Ataka zenbaki ezegokia! Mesedez, sartu 1000 eta 65000 arteko balore bat." #: settings_report_err msgid "Incorrect report system data!" msgstr "Txosten-sistemaren datu okerra!" #: settings_report_type msgid "Reporting engine:" msgstr "Txosten sortzaile mota:" #: settings_media_jmf msgid "Java Media Framework (JMF)" msgstr "Java Media Framework (JMF)" #: settings_media_qt msgid "QuickTime" msgstr "QuickTime" #: settings_media_default msgid "Auto-detect" msgstr "Auto-atzeman" #: settings_security_tooltip msgid "Security settings" msgstr "Segurtasun-ezarpenak" #: settings_report_tooltip msgid "Report system settings" msgstr "Txostenen sistemaren ezarpenak" #: settings_media_tooltip msgid "Multimedia system options" msgstr "Multimedia-sistemaren ezarpenak" #: settings_general_tooltip msgid "Language and aspect settings" msgstr "Itxura eta hizkuntza-ezarpenak" #: settings_library_tooltip msgid "Library settings and editor" msgstr "Liburutegiaren ezarpenak eta editorea" #: settings_look_tooltip msgid "User interface look & feel" msgstr "Erabiltzailearen interfazaren itxura" #: settings_skin_tooltip msgid "Selection of the graphic aspect of JClic" msgstr "JClic-en itxura grafikoaren aukeraketa" #: settings_language_tooltip msgid "Language selection" msgstr "Hizkuntza aukeraketa" #: settings_report_use_tooltip msgid "Enables/disables the connection to a JClic reports database" msgstr "JClic txosten datu-basearekiko konexioa gaitu/ezgaitu" #: settings_report_tcp_tooltip msgid "Reporting engine based on a TCP/IP connection" msgstr "TCP/IP konexio batean oinarritutako txosten-motorea" #: settings_report_jdbc_tooltip msgid "Reporting engine based on a direct connection to a database" msgstr "Datu-baseetarako konexio zuzen batean oinarritutako txosten-motorea" #: settings_report_other_tooltip msgid "Other reporting engines..." msgstr "Bestelako txosten-motoreak..." #: settings_report_address_tooltip msgid "Report server name or IP address" msgstr "Txosten-zerbitzariaren izena edo IP helbidea" #: settings_report_port_tooltip msgid "Port used for connection (default is 5510)" msgstr "Konexiorako erabilitako ataka (berezkoa 5510)" #: edit_file msgid "File:" msgstr "Fitxategia:" #: error_launchLibrary msgid "Error launching library" msgstr "Errorea biltegia irekitzean" #: install_toSourceFolder msgid "Installing to source folder!" msgstr "Jatorrizko karpetan instalatzen!" #: edit_find_media msgid "Find media file..." msgstr "Bilatu media-fitxategia..." #: libraryManager_delete_caption msgctxt "libraryManager_delete_caption" msgid "Delete" msgstr "Ezabatu" #: libraryManager_delete_tooltip msgid "Delete the reference to the selected library" msgstr "Ezabatu aukeratutako liburutegirako erreferentzia" #: libraryManager_delete_confirm msgid "Do you really want to delete the reference to the selected library?" msgstr "" "Benetan ezabatu nahi al duzu aukeratutako liburutegirako erreferentzia?" #: libraryManager_new_exists msgid "This library is already linked to the system." msgstr "Biltegi hau dagoeneko sistemarekin estekatuta dago." #: edit_find_image_keys msgid "F*" msgstr "F*" #: menu_newMenuElement_caption_keys msgid "NN" msgstr "BB" #: menu_newMenu_caption_keys msgid "MM" msgstr "MM" #: edit_find_file_keys msgid "FF" msgstr "FF" #: libraryManager_newLibaryOption msgid "Create new project library" msgstr "Sortu proiektu-liburutegi berria" #: libraryManager_connectToExistingOption msgid "Add a link to an exisiting project library" msgstr "Gehitu aldez aurretik dagoen proiektu-biltegi baterako esteka" #: libraryManager_fileOrUrlCaption msgid "File or URL\\:" msgstr "Fitxategia edo URL-a\\:" #: libraryManager_newLibraryTitle msgctxt "libraryManager_newLibraryTitle" msgid "New project library" msgstr "Proiektu-liburutegi berria" #: libraryManager_warnNoFileSelected msgid "Please enter thr URL or file name of the project library\\!" msgstr "" "Mesedez, sartu proiektuaren biltegiaren URL-a edo fitxategiaren izena\\!" #: install_launchProject msgid "Open the project now" msgstr "Ireki proiektua orain" #: settings_browser msgid "Preferred browser\\:" msgstr "Lehenetsitako nabigatzailea\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Nabigatzailea abiarazteko erabilitako agindua (firefox, iexplore, mozilla, " "opera...)" #: settings_country msgid "Country code\\:" msgstr "Estatu-kodea\\:" #: settings_country_tooltip msgid "" "Optional two-letter code corresponding to the country-specific variant of " "the language (ex.\\: BR for Brazilian Portuguese)" msgstr "" "Bi hizkiz osatutako aukerako kodea, herrialde zehatzeko hizkuntzaren " "aldagaiari dagokiona (adi.\\: FR Frantziako Euskararako)" #: settings_variant msgid "Variant\\:" msgstr "Hizkuntza-aldaera\\:" #: settings_variant_tooltip msgid "Optional variant code of the language" msgstr "Hizkuntza-aldaeraren aukerako kodea" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/0000755000175000017500000000000011377161311020721 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_fr.po0000644000175000017500000002706211377161311024762 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-22 20:14+0000\n" "Last-Translator: NSV \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Mot de passe\\:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Vous devez donner un mot de passe valide pour accéder à la base de rapports." #: login_title msgid "Login" msgstr "Login" #: submit msgid "Submit..." msgstr "Soumettre..." #: login_incorrect msgid "Incorrect password!" msgstr "Mot de passe incorrect\\!" #: main_title msgid "Main menu" msgstr "Menu principal" #: users_admin_title msgid "Users and groups admin" msgstr "Administrateur d'utilisateurs et de groupes" #: group_report_title msgid "Group reports" msgstr "Rapports de groupe" #: user_report_title msgid "User reports" msgstr "Rapports utilisateur" #: act_report_title msgid "Activity reports" msgstr "Rapports d'activités" #: db_admin_title msgid "Database admin" msgstr "Administrateur de la base de données" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Impossible de définir les valeurs de la nouvelle base de données\\!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Autoriser les utilisateurs à créer de nouveaux groupes" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Autoriser les utilisateurs à créer de nouveaux utilisateurs" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Sélectionner un groupe dans une liste" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Sélectionner un nom d'utilisateur dans une liste" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "La base de données contient des tables d'utilisateurs et de groupes" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Editer les paramètres..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Définir le mot de passe..." #: title msgid "Title" msgstr "Titre" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editer les paramètres de la base de données" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Changer le mot de passe système" #: db_admin_pw_newPwd msgid "New password" msgstr "Nouveau mot de passe" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Retapez le mot de passe" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Les champs mot de passe ne doivent pas rester vides" #: report_group msgid "Group:" msgstr "Groupe :" #: report_user msgid "User:" msgstr "Utilisateur\\:" #: report_project msgid "Project:" msgstr "Projet\\:" #: report_all_projects msgid "All projects" msgstr "Tous les projets" #: report_key msgid "Key:" msgstr "Clé\\:" #: report_code msgid "Code:" msgstr "Code\\:" #: report_context msgid "Context:" msgstr "Contexte\\:" #: report_from msgid "From:" msgstr "DE\\:" #: month_1 msgid "january" msgstr "janvier" #: month_2 msgid "february" msgstr "février" #: month_3 msgid "march" msgstr "mars" #: month_4 msgid "april" msgstr "avril" #: month_5 msgid "may" msgstr "mai" #: month_6 msgid "june" msgstr "juin" #: month_7 msgid "july" msgstr "juillet" #: month_8 msgid "august" msgstr "août" #: month_9 msgid "september" msgstr "septembre" #: month_10 msgid "october" msgstr "octobre" #: month_11 msgid "november" msgstr "novembre" #: month_12 msgid "december" msgstr "décembre" #: report_to msgid "To:" msgstr "A\\:" #: report_global_precision msgid "Global precision" msgstr "Précision globale" #: report_solved_activities msgid "Solved activities" msgstr "Activités résolues" #: report_user_evolution msgid "User evolution" msgstr "Evolution de l'utilisateur" #: report_group_evolution msgid "Group evolution" msgstr "Evolution du groupe" #: report_project_evolution msgid "Project evolution" msgstr "Evolution du projet" #: report_result_distribution msgid "Result distribution" msgstr "Distribution du résultat" #: report_no_data msgid "NO DATA" msgstr "PAS DE DONNEES" #: report_users msgid "Users:" msgstr "Utilisateurs\\:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sessions\\:" #: report_projects msgid "Projects:" msgstr "Projets\\:" #: report_actDone msgid "Activities done:" msgstr "Activités faites\\:" #: report_actSolved msgid "Activities solved:" msgstr "Activités résolues\\:" #: report_totalTime msgid "Total time:" msgstr "Temps total\\:" #: report_globalPrec msgid "Global score:" msgstr "Score global\\:" #: report_globalSummary msgid "Global summary" msgstr "Sommaire général" #: report_header_date msgid "date" msgstr "date" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sessions\\:" #: report_header_user msgid "user" msgstr "utilisateur" #: report_header_project msgid "project" msgstr "projet" #: report_header_numActs msgid "activities" msgstr "activités" #: report_header_actsSolved msgid "acts. solved" msgstr "acts. résolues" #: report_header_time msgid "time" msgstr "temps" #: report_header_prec msgid "score" msgstr "score" #: report_session_detail_show msgid "show session details" msgstr "Montrer les détails de session" #: report_session_detail_title msgid "Activities done in session" msgstr "Activités faites pendant la session" #: report_header_activity msgid "activity" msgstr "activité" #: report_header_actions msgid "actions" msgstr "actions" #: report_header_score msgid "corrects" msgstr "correctes" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "O" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "Cacher les détails de session" #: report_header_sessions msgid "sessions" msgstr "sessions" #: report_all_activities msgid "All activities" msgstr "Toutes les activités" #: report_activity msgid "Activity:" msgstr "Activité\\:" #: report_many msgid "several" msgstr "plusieurs" #: report_n_users msgid "users" msgstr "utilisateurs" #: group_admin_title msgid "Groups administration" msgstr "Administration des groupes" #: group_admin_new_button msgid "New group..." msgstr "Nouveau groupe..." #: group_admin_groups msgid "Groups" msgstr "Groupes" #: report_actions msgid "Actions" msgstr "Actions" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Editer..." #: user_admin_title msgid "User admin" msgstr "Utilisateur admin" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Supprimer..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Effacer rapports..." #: group_admin_properties msgid "Group properties" msgstr "Groupe propriétés" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nom\\:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identifiant\\:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Icône\\:" #: error msgid "ERROR" msgstr "ERREUR" #: return msgid "return..." msgstr "retour..." #: group_admin_users msgid "Users" msgstr "Utilisateurs" #: group_admin_no_users msgid "This group has no users." msgstr "Ce groupe n'a pas d'utilisateurs." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Créer un nouvel utilisateur..." #: cancel msgid "Cancel" msgstr "Annuler" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Nom de groupe incorrect\\!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "L'identifiant de groupe est incorrect\\!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "" "Il y a un autre groupe avec le même identifiant dans la base de données\\!" #: group_admin_delete_group msgid "Delete group" msgstr "Supprimer le groupe" #: report_areyousure msgid "Are you sure?" msgstr "Etes-vous sûr ?" #: YES msgid "Yes" msgstr "Oui" #: NOT msgid "Not" msgstr "Non" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Cette opération effacera aussi dans la base de données tous les utilisateurs " "de ce groupe. Toutes les données de ces utilisateurs seront perdues." #: db_error msgid "Unable to complete the task." msgstr "Impossible de terminer la tâche." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Effacer les données du rapport du groupe" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Cette opération effacera tous les rapports d'activités faites par les " "membres de ce groupe entre deux dates spécifiées." #: db_clear_reports_date msgid "Clear report data" msgstr "Effacer les données du rapport." #: user_admin_invalid_name msgid "Invalid user name." msgstr "Nom d'utilisateur invalide." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Identifiant utilisateur invalide" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Il y a un autre utilisateur avec le même identifiant dans la base de " "données\\!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "L'utilisateur a été supprimé de la base de données." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identifiant\\:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nom\\:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Icône\\:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Editer..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Supprimer..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Effacer les rapports..." #: user_admin_delete_user msgid "Delete user" msgstr "Supprimer l'utilisateur" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Cette opération supprimera cet utilisateur et ses rapports de la base de " "données." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Effacer les données du rapport de l'utilisateur" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Cette opération effacera tous les rapports d'activités faites par cet " "utilisateur entre des dates spécifiées." #: success msgid "Operation successful" msgstr "Opération réussie" #: bad_data msgid "Bad data!" msgstr "Mauvaise donnée\\!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Temps entre les connections (secondes)\\:" #: jclic_reports msgid "JClic reports" msgstr "JClic rapports" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "O" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Mot de passe\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirmer mot de passe\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Les mots de passe ne coincident pas\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_gl.po0000644000175000017500000002654111377161311024756 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-09-02 20:08+0000\n" "Last-Translator: Xosé \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Contrasinal:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "É imprescindíbel escribir un sinal correcto para acceder á base de datos de " "informes." #: login_title msgid "Login" msgstr "Conexión á base de datos" #: submit msgid "Submit..." msgstr "Enviar datos..." #: login_incorrect msgid "Incorrect password!" msgstr "Sinal incorrecto!" #: main_title msgid "Main menu" msgstr "Menú principal" #: users_admin_title msgid "Users and groups admin" msgstr "Administración de grupos e usuarios" #: group_report_title msgid "Group reports" msgstr "Informes de grupo" #: user_report_title msgid "User reports" msgstr "Informes de usuario/a" #: act_report_title msgid "Activity reports" msgstr "Informes de actividade" #: db_admin_title msgid "Database admin" msgstr "Administración da base de datos" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Imposíbel mudar os valores na base de datos!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permitir aos usuarios crear novos grupos" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permitir aos usuarios crear novos usuarios" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Seleccionar grupo nunha lista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Seleccionar nome de usuario/a nunha lista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "A base de datos contén táboas de usuarios e grupos" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Editar propiedades..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Establecer o sinal..." #: title msgid "Title" msgstr "Título" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editar as propiedades da base de datos" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Mudar o sinal do sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Novo sinal" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Escribir de novo o sinal" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Os dous textos non coinciden!" #: report_group msgid "Group:" msgstr "Grupo:" #: report_user msgid "User:" msgstr "Usuario:" #: report_project msgid "Project:" msgstr "Proxecto:" #: report_all_projects msgid "All projects" msgstr "Todos os proxectos" #: report_key msgid "Key:" msgstr "Clave:" #: report_code msgid "Code:" msgstr "Código:" #: report_context msgid "Context:" msgstr "Contexto:" #: report_from msgid "From:" msgstr "Desde:" #: month_1 msgid "january" msgstr "xaneiro" #: month_2 msgid "february" msgstr "febreiro" #: month_3 msgid "march" msgstr "marzo" #: month_4 msgid "april" msgstr "abril" #: month_5 msgid "may" msgstr "maio" #: month_6 msgid "june" msgstr "xuño" #: month_7 msgid "july" msgstr "xullo" #: month_8 msgid "august" msgstr "agosto" #: month_9 msgid "september" msgstr "setembro" #: month_10 msgid "october" msgstr "outubro" #: month_11 msgid "november" msgstr "novembro" #: month_12 msgid "december" msgstr "decembro" #: report_to msgid "To:" msgstr "Ata:" #: report_global_precision msgid "Global precision" msgstr "Precisión global" #: report_solved_activities msgid "Solved activities" msgstr "Actividades resoltas:" #: report_user_evolution msgid "User evolution" msgstr "Evolución do usuario" #: report_group_evolution msgid "Group evolution" msgstr "Evolución do grupo" #: report_project_evolution msgid "Project evolution" msgstr "Evolución do proxecto" #: report_result_distribution msgid "Result distribution" msgstr "Distribución de resultados" #: report_no_data msgid "NO DATA" msgstr "SEN DATOS" #: report_users msgid "Users:" msgstr "Usuarios:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sesións:" #: report_projects msgid "Projects:" msgstr "Proxectos:" #: report_actDone msgid "Activities done:" msgstr "Actividades feitas:" #: report_actSolved msgid "Activities solved:" msgstr "Actividades resoltas:" #: report_totalTime msgid "Total time:" msgstr "Tempo total:" #: report_globalPrec msgid "Global score:" msgstr "Precisión global:" #: report_globalSummary msgid "Global summary" msgstr "Resume global" #: report_header_date msgid "date" msgstr "data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sesións:" #: report_header_user msgid "user" msgstr "usuario" #: report_header_project msgid "project" msgstr "proxecto" #: report_header_numActs msgid "activities" msgstr "actividades" #: report_header_actsSolved msgid "acts. solved" msgstr "acts. resoltas" #: report_header_time msgid "time" msgstr "tempo" #: report_header_prec msgid "score" msgstr "precisión" #: report_session_detail_show msgid "show session details" msgstr "mostrar detalles da sesión" #: report_session_detail_title msgid "Activities done in session" msgstr "Actividades feitas na sesión" #: report_header_activity msgid "activity" msgstr "actividade" #: report_header_actions msgid "actions" msgstr "accións" #: report_header_score msgid "corrects" msgstr "acertos" #: report_header_solved msgid "ok" msgstr "ben" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "ocultar detalles da sesión" #: report_header_sessions msgid "sessions" msgstr "sesións" #: report_all_activities msgid "All activities" msgstr "Todas as actividades" #: report_activity msgid "Activity:" msgstr "Actividade:" #: report_many msgid "several" msgstr "diversos" #: report_n_users msgid "users" msgstr "usuarios" #: group_admin_title msgid "Groups administration" msgstr "Administración de grupos" #: group_admin_new_button msgid "New group..." msgstr "Novo grupo..." #: group_admin_groups msgid "Groups" msgstr "Grupos" #: report_actions msgid "Actions" msgstr "Accións" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Modificar..." #: user_admin_title msgid "User admin" msgstr "Administración de usuarios" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Eliminar informes..." #: group_admin_properties msgid "Group properties" msgstr "Propiedades do grupo" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nome:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificador:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Icona:" #: error msgid "ERROR" msgstr "ERRO" #: return msgid "return..." msgstr "voltar..." #: group_admin_users msgid "Users" msgstr "Usuarios" #: group_admin_no_users msgid "This group has no users." msgstr "Este grupo non ten usuarios." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Crear un novo usuario..." #: cancel msgid "Cancel" msgstr "Cancelar" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Nome de grupo incorrecto!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Identificador de grupo incorrecto!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Existe outro grupo co mesmo identificador na base de datos!" #: group_admin_delete_group msgid "Delete group" msgstr "Eliminar o grupo" #: report_areyousure msgid "Are you sure?" msgstr "Tes a seguridade de realizar esta operación?" #: YES msgid "Yes" msgstr "Si" #: NOT msgid "Not" msgstr "Non" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Esta operación tamén eliminará da base de datos todos os usuarios deste " "grupo. Perderanse todos os seus datos." #: db_error msgid "Unable to complete the task." msgstr "Imposíbel completar a operación." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Eliminar os informes do grupo" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Esta operación eliminará os informes de actividade de todos os membros deste " "grupo entre as datas especificadas." #: db_clear_reports_date msgid "Clear report data" msgstr "Eliminar os informes" #: user_admin_invalid_name msgid "Invalid user name." msgstr "O nome de usuario/a é incorrecto." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "O identificador de usuario/a é incorrecto!" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Hai outro/a usuario/a co mesmo identificador na base de datos! Os nomes " "poden repetirse (en grupos distintos) pero os identificadores deben ser " "únicos." #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "O/a usuario/a foi eliminado/a axeitadamente da base de datos." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificador:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nome:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Icona:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Modificar..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Eliminar informes..." #: user_admin_delete_user msgid "Delete user" msgstr "Eliminar o usuario/a" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Esta operación eliminará o usuario/a e os seus informes da base de datos" #: user_admin_clear_user msgid "Clear report data of user" msgstr "Eliminar os informes do usuario/a" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Esta operación eliminará os informes de actividades realizadas por este/a " "usuario/a entre as datas especificadas." #: success msgid "Operation successful" msgstr "Operación realizada con éxito" #: bad_data msgid "Bad data!" msgstr "Datos incorrectos!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tempo en segundos entre conexións:" #: jclic_reports msgid "JClic reports" msgstr "Informes JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Sinal\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirmar sinal\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Os sinais non coinciden\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_es.po0000644000175000017500000002717311377161311024765 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 18:15+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Contraseña:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Debe escribir una contraseña correcta para acceder a la base de datos de " "informes." #: login_title msgid "Login" msgstr "Conexión a la base de datos" #: submit msgid "Submit..." msgstr "Enviar datos..." #: login_incorrect msgid "Incorrect password!" msgstr "Contraseña incorrecta!" #: main_title msgid "Main menu" msgstr "Menú principal" #: users_admin_title msgid "Users and groups admin" msgstr "Administración de grupos y usuarios" #: group_report_title msgid "Group reports" msgstr "Informes de grupo" #: user_report_title msgid "User reports" msgstr "Informes de usuario/a" #: act_report_title msgid "Activity reports" msgstr "Informes de actividad" #: db_admin_title msgid "Database admin" msgstr "Administración de la base de datos" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "¡No se han podido cambiar los valores de la base de datos!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permitir a los usuarios crear nuevos grupos" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permitir a los usuarios la creación de nuevos usuarios" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Seleccionar grupo en una lista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Seleccionar el nombre de usuario/a en una lista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "La base de datos tiene tablas de usuarios y grupos" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Editar propiedades..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Establecer contraseña..." #: title msgid "Title" msgstr "Título" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editar propiedades de la base de datos" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Cambiar la contraseña del sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Nueva contraseña" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Volver a escribir la contraseña" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Los dos textos no coinciden!" #: report_group msgid "Group:" msgstr "Grupo:" #: report_user msgid "User:" msgstr "Usuario:" #: report_project msgid "Project:" msgstr "Proyecto:" #: report_all_projects msgid "All projects" msgstr "Todos los proyectos" #: report_key msgid "Key:" msgstr "Clave:" #: report_code msgid "Code:" msgstr "Código:" #: report_context msgid "Context:" msgstr "Contexto:" #: report_from msgid "From:" msgstr "Desde:" #: month_1 msgid "january" msgstr "enero" #: month_2 msgid "february" msgstr "febrero" #: month_3 msgid "march" msgstr "marzo" #: month_4 msgid "april" msgstr "abril" #: month_5 msgid "may" msgstr "mayo" #: month_6 msgid "june" msgstr "junio" #: month_7 msgid "july" msgstr "julio" #: month_8 msgid "august" msgstr "agosto" #: month_9 msgid "september" msgstr "septiembre" #: month_10 msgid "october" msgstr "octubre" #: month_11 msgid "november" msgstr "noviembre" #: month_12 msgid "december" msgstr "diciembre" #: report_to msgid "To:" msgstr "Hasta:" #: report_global_precision msgid "Global precision" msgstr "Precisión global" #: report_solved_activities msgid "Solved activities" msgstr "Actividades resueltas" #: report_user_evolution msgid "User evolution" msgstr "Evolución del usuario/a" #: report_group_evolution msgid "Group evolution" msgstr "Evolución del grupo" #: report_project_evolution msgid "Project evolution" msgstr "Evolución del proyecto" #: report_result_distribution msgid "Result distribution" msgstr "Distribución de resultados" #: report_no_data msgid "NO DATA" msgstr "SIN DATOS" #: report_users msgid "Users:" msgstr "Usuarios\\:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sessiones:" #: report_projects msgid "Projects:" msgstr "Proyectos:" #: report_actDone msgid "Activities done:" msgstr "Actividades realizadas:" #: report_actSolved msgid "Activities solved:" msgstr "Actividades resueltas:" #: report_totalTime msgid "Total time:" msgstr "Tiempo total:" #: report_globalPrec msgid "Global score:" msgstr "Precisión global:" #: report_globalSummary msgid "Global summary" msgstr "Resumen global" #: report_header_date msgid "date" msgstr "fecha" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sesiones realizadas:" #: report_header_user msgid "user" msgstr "usuario/a" #: report_header_project msgid "project" msgstr "proyecto" #: report_header_numActs msgid "activities" msgstr "actividades" #: report_header_actsSolved msgid "acts. solved" msgstr "act. resueltas" #: report_header_time msgid "time" msgstr "tiempo" #: report_header_prec msgid "score" msgstr "precisión" #: report_session_detail_show msgid "show session details" msgstr "mostrar detalles de la sesión..." #: report_session_detail_title msgid "Activities done in session" msgstr "Actividades realizadas en la sesión" #: report_header_activity msgid "activity" msgstr "actividad" #: report_header_actions msgid "actions" msgstr "acciones" #: report_header_score msgid "corrects" msgstr "aciertos" #: report_header_solved msgid "ok" msgstr "bien" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "esconder detalles de la sesión" #: report_header_sessions msgid "sessions" msgstr "sesiones" #: report_all_activities msgid "All activities" msgstr "Todas las actividades" #: report_activity msgid "Activity:" msgstr "Actividad:" #: report_many msgid "several" msgstr "diversos" #: report_n_users msgid "users" msgstr "usuarios" #: group_admin_title msgid "Groups administration" msgstr "Administración de grupos" #: group_admin_new_button msgid "New group..." msgstr "Nuevo grupo..." #: group_admin_groups msgid "Groups" msgstr "Grupos" #: report_actions msgid "Actions" msgstr "Acciones" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Modificar..." #: user_admin_title msgid "User admin" msgstr "Administración de usuarios" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Eliminar informes..." #: group_admin_properties msgid "Group properties" msgstr "Propiedades del grupo" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nombre:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificador:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Icono:" #: error msgid "ERROR" msgstr "ERROR" #: return msgid "return..." msgstr "regresar..." #: group_admin_users msgid "Users" msgstr "Usuarios" #: group_admin_no_users msgid "This group has no users." msgstr "Este grupo no tiene ningún usuario/a." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Crear un nuevo usuario/a..." #: cancel msgid "Cancel" msgstr "Cancelar" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "El nombre del grupo es incorrecto!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "El identificador de grupo es incorrecto." #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "¡Ya existe un grupo con este identificador en la base de datos!" #: group_admin_delete_group msgid "Delete group" msgstr "Eliminar el grupo" #: report_areyousure msgid "Are you sure?" msgstr "¿Está seguro de querer realizar esta operación?" #: YES msgid "Yes" msgstr "Sí" #: NOT msgid "Not" msgstr "No" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Esta operación eliminará también de la base de datos a todos los usuarios de " "este grupo. Todos sus datos se perderán." #: db_error msgid "Unable to complete the task." msgstr "No se ha podido realizar la operación." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Eliminar los informes del grupo" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Esta operación borrará todos los informes de las actividades realizadas por " "los miembros de este grupo entre las fechas indicadas." #: db_clear_reports_date msgid "Clear report data" msgstr "Eliminar los informes" #: user_admin_invalid_name msgid "Invalid user name." msgstr "El nombre de usuario/a es incorrecto." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "El identificador de usuario/a es incorrecto!" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Ya existe otro usuario/a con este identificador en la base de datos. Los " "nombres se pueden repetir (en distintos grupos) pero los identificadores han " "de ser únicos." #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "" "El usuario/a ha sido eliminado satisfactoriamente de la base de datos." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificador:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nombre:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Icono:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Modificar..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Eliminar informes..." #: user_admin_delete_user msgid "Delete user" msgstr "Eliminar el usuario/a" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Esta operación eliminará al usuario/a y sus informes de la base de datos." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Eliminar los informes del usuario/a" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Esta operación eliminará los informes de las actividades realizadas por " "este/a usuario(a en el periodo especificado." #: success msgid "Operation successful" msgstr "Operación realizada con éxito" #: bad_data msgid "Bad data!" msgstr "¡Datos incorrectos!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tiempo entre conexiones (segundos)\\:" #: jclic_reports msgid "JClic reports" msgstr "Informes JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Contraseña\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirmar contraseña\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "¡Las contraseñas no coinciden\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_it.po0000644000175000017500000002645111377161311024770 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-22 16:58+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Password:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Devi inserire una password valida per accedere al database dei rapporti." #: login_title msgid "Login" msgstr "Login" #: submit msgid "Submit..." msgstr "Presenta..." #: login_incorrect msgid "Incorrect password!" msgstr "Password errata!" #: main_title msgid "Main menu" msgstr "Menu principale" #: users_admin_title msgid "Users and groups admin" msgstr "Amministratore degli utenti e dei gruppi" #: group_report_title msgid "Group reports" msgstr "Rapporti del gruppo" #: user_report_title msgid "User reports" msgstr "Rapporti utente" #: act_report_title msgid "Activity reports" msgstr "Rapporti d'attività" #: db_admin_title msgid "Database admin" msgstr "Amministratore del database" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Impossibile definire i valori del nuovo database!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permetti agli utenti di creare nuovi gruppi" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permetti agli utenti di creare nuovi utenti" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Seleziona un gruppo in una lista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Seleziona un nome utente in una lista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Il database contiene tabelle di utenti e gruppi" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Modifica i parametri..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Imposta la password..." #: title msgid "Title" msgstr "Titolo" #: db_admin_edit_title msgid "Edit database settings" msgstr "Modifica la configurazione del database" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Cambia la password di sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Nuova password" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Riscrivi la password" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Le password non coincidono" #: report_group msgid "Group:" msgstr "Gruppo:" #: report_user msgid "User:" msgstr "Utente:" #: report_project msgid "Project:" msgstr "Progetto:" #: report_all_projects msgid "All projects" msgstr "Tutti i progetti" #: report_key msgid "Key:" msgstr "Chiave:" #: report_code msgid "Code:" msgstr "Codice:" #: report_context msgid "Context:" msgstr "Contesto:" #: report_from msgid "From:" msgstr "Da:" #: month_1 msgid "january" msgstr "gennaio" #: month_2 msgid "february" msgstr "febbraio" #: month_3 msgid "march" msgstr "marzo" #: month_4 msgid "april" msgstr "aprile" #: month_5 msgid "may" msgstr "maggio" #: month_6 msgid "june" msgstr "giugno" #: month_7 msgid "july" msgstr "luglio" #: month_8 msgid "august" msgstr "agosto" #: month_9 msgid "september" msgstr "settembre" #: month_10 msgid "october" msgstr "ottobre" #: month_11 msgid "november" msgstr "novembre" #: month_12 msgid "december" msgstr "dicembre" #: report_to msgid "To:" msgstr "A:" #: report_global_precision msgid "Global precision" msgstr "Precisione globale" #: report_solved_activities msgid "Solved activities" msgstr "Attività risolte" #: report_user_evolution msgid "User evolution" msgstr "Progressi dell'utente" #: report_group_evolution msgid "Group evolution" msgstr "Progressi del gruppo" #: report_project_evolution msgid "Project evolution" msgstr "Evoluzione del progetto" #: report_result_distribution msgid "Result distribution" msgstr "Distribuzione dei risultati" #: report_no_data msgid "NO DATA" msgstr "NESSUN DATO" #: report_users msgid "Users:" msgstr "Utenti:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sessioni:" #: report_projects msgid "Projects:" msgstr "Progetti:" #: report_actDone msgid "Activities done:" msgstr "Attività eseguite:" #: report_actSolved msgid "Activities solved:" msgstr "Attività risolte:" #: report_totalTime msgid "Total time:" msgstr "Tempo totale:" #: report_globalPrec msgid "Global score:" msgstr "Punteggio globale:" #: report_globalSummary msgid "Global summary" msgstr "Riassunto globale" #: report_header_date msgid "date" msgstr "data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sessioni:" #: report_header_user msgid "user" msgstr "utente" #: report_header_project msgid "project" msgstr "progetto" #: report_header_numActs msgid "activities" msgstr "attività" #: report_header_actsSolved msgid "acts. solved" msgstr "att. risolte" #: report_header_time msgid "time" msgstr "tempo" #: report_header_prec msgid "score" msgstr "punteggio" #: report_session_detail_show msgid "show session details" msgstr "mostra i dettagli della sessione" #: report_session_detail_title msgid "Activities done in session" msgstr "Attività eseguite nella sessione" #: report_header_activity msgid "activity" msgstr "attività" #: report_header_actions msgid "actions" msgstr "azioni" #: report_header_score msgid "corrects" msgstr "corretti" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "nascondi dettagli sessione" #: report_header_sessions msgid "sessions" msgstr "sessioni" #: report_all_activities msgid "All activities" msgstr "Tutte le attività" #: report_activity msgid "Activity:" msgstr "Attività:" #: report_many msgid "several" msgstr "diversi" #: report_n_users msgid "users" msgstr "utenti" #: group_admin_title msgid "Groups administration" msgstr "Amministrazione gruppi" #: group_admin_new_button msgid "New group..." msgstr "Nuovo gruppo..." #: group_admin_groups msgid "Groups" msgstr "Gruppi" #: report_actions msgid "Actions" msgstr "Azioni" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Modifica..." #: user_admin_title msgid "User admin" msgstr "Amministratore degli utenti" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Elimina..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Elimina rapporti" #: group_admin_properties msgid "Group properties" msgstr "Proprietà del gruppo" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nome:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Id." #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Icona:" #: error msgid "ERROR" msgstr "ERRORE" #: return msgid "return..." msgstr "indietro..." #: group_admin_users msgid "Users" msgstr "Utenti" #: group_admin_no_users msgid "This group has no users." msgstr "Questo gruppo non ha utenti." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Crea un nuovo utente..." #: cancel msgid "Cancel" msgstr "Annulla" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Nome del gruppo errato!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "L'id del gruppo è errato!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Nel database c'è un altro gruppo con lo stesso id!" #: group_admin_delete_group msgid "Delete group" msgstr "Elimina gruppo" #: report_areyousure msgid "Are you sure?" msgstr "Sei sicuro?" #: YES msgid "Yes" msgstr "Sì" #: NOT msgid "Not" msgstr "No" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Questa operazione eliminerà anche tutti gli utenti del gruppo nel database. " "Andranno persi tutti i dati di questi utenti." #: db_error msgid "Unable to complete the task." msgstr "Impossibile completare l'operazione." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Elimina i rapporti del gruppo" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Questa operazione cancellerà tutti i rapporti sule attività eseguite dagli " "utenti di questo gruppo tra le date specificate." #: db_clear_reports_date msgid "Clear report data" msgstr "Elimina i rapporti" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Nome utente non valido." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "User id non valido" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Nel database c'è già un altro utente con lo stesso id!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "L'utente è stato cancellato con successo dal database." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Id." #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nome:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Icona:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Modifica..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Elimina..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Elimina rapporti..." #: user_admin_delete_user msgid "Delete user" msgstr "Elimina l'utente" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Questa operazione cancellerà l'utente e i suoi rapporti dal database." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Elimina i rapporti dell'utente" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Questa operazione cancellerà tutti i rapporti sule attività eseguite " "dall'utente tra le date specificate." #: success msgid "Operation successful" msgstr "L'operazione ha avuto successo" #: bad_data msgid "Bad data!" msgstr "Dati non corretti!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tempo tra le connessioni (secondi)\\:" #: jclic_reports msgid "JClic reports" msgstr "Rapporti JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Password\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Conferma password\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Le password non coincidono\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_tr.po0000644000175000017500000002551711377161311025003 0ustar # Turkish translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-10 23:18+0000\n" "Last-Translator: Ahmet YAVUZ \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Şifre" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Veritabanı raporlarına erişim için geçerli bir şifreye ihtiyacınız var." #: login_title msgid "Login" msgstr "Kullanıcı adı" #: submit msgid "Submit..." msgstr "Gönder" #: login_incorrect msgid "Incorrect password!" msgstr "Hatalı şifre!" #: main_title msgid "Main menu" msgstr "Ana menü" #: users_admin_title msgid "Users and groups admin" msgstr "Kullanıcılar ve yöneticiler" #: group_report_title msgid "Group reports" msgstr "Grup raporları" #: user_report_title msgid "User reports" msgstr "Kullanıcı raporları" #: act_report_title msgid "Activity reports" msgstr "Aktivite raporları" #: db_admin_title msgid "Database admin" msgstr "Veritabanı yöneticisi" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Yeni veritabanı değerleri yapılandırılamıyor!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Kullanıcılara yeni grup eklemelerine izin ver" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Kullanıcılara yeni kullanıcı oluşturma izni ver" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Listedeki grupları seç" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Listeden bir kullanıcı adı seç" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Veritabanında kullanıcılar ve gruplar tablosu oluşturuldu" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Ayarları düzenle" #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Şifre belirle..." #: title msgid "Title" msgstr "Başlık" #: db_admin_edit_title msgid "Edit database settings" msgstr "Veritabanı ayarlarını düzenle" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Sistem şifresini değiştir" #: db_admin_pw_newPwd msgid "New password" msgstr "Yeni parola" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Şifrenizi tekrar giriniz" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "" #: report_group msgid "Group:" msgstr "Grup:" #: report_user msgid "User:" msgstr "Kullanıcı:" #: report_project msgid "Project:" msgstr "Proje:" #: report_all_projects msgid "All projects" msgstr "Tüm projeler" #: report_key msgid "Key:" msgstr "Anahtar:" #: report_code msgid "Code:" msgstr "Kod:" #: report_context msgid "Context:" msgstr "İçerik:" #: report_from msgid "From:" msgstr "Gönderen:" #: month_1 msgid "january" msgstr "Ocak" #: month_2 msgid "february" msgstr "Şubat" #: month_3 msgid "march" msgstr "Mart" #: month_4 msgid "april" msgstr "Nisan" #: month_5 msgid "may" msgstr "Mayıs" #: month_6 msgid "june" msgstr "Haziran" #: month_7 msgid "july" msgstr "Temmuz" #: month_8 msgid "august" msgstr "Ağustos" #: month_9 msgid "september" msgstr "Eylül" #: month_10 msgid "october" msgstr "Ekim" #: month_11 msgid "november" msgstr "Kasım" #: month_12 msgid "december" msgstr "Aralık" #: report_to msgid "To:" msgstr "Kime:" #: report_global_precision msgid "Global precision" msgstr "" #: report_solved_activities msgid "Solved activities" msgstr "Çözülmüş aktiviteler" #: report_user_evolution msgid "User evolution" msgstr "Kullanıcı gelişimi" #: report_group_evolution msgid "Group evolution" msgstr "Grup gelişimi" #: report_project_evolution msgid "Project evolution" msgstr "Proje gelişimi" #: report_result_distribution msgid "Result distribution" msgstr "" #: report_no_data msgid "NO DATA" msgstr "VERİ YOK" #: report_users msgid "Users:" msgstr "Kullanıcılar:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Oturumlar:" #: report_projects msgid "Projects:" msgstr "Projeler:" #: report_actDone msgid "Activities done:" msgstr "" #: report_actSolved msgid "Activities solved:" msgstr "Çözülmüş aktiviteler" #: report_totalTime msgid "Total time:" msgstr "Toplam süre:" #: report_globalPrec msgid "Global score:" msgstr "Genel sonuç:" #: report_globalSummary msgid "Global summary" msgstr "Genel özet:" #: report_header_date msgid "date" msgstr "tarih" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Oturumlar:" #: report_header_user msgid "user" msgstr "kullanıcı" #: report_header_project msgid "project" msgstr "proje" #: report_header_numActs msgid "activities" msgstr "aktiviteler" #: report_header_actsSolved msgid "acts. solved" msgstr "çözülmüş aktiviteler" #: report_header_time msgid "time" msgstr "zaman" #: report_header_prec msgid "score" msgstr "sonuç" #: report_session_detail_show msgid "show session details" msgstr "oturum detaylarını göster" #: report_session_detail_title msgid "Activities done in session" msgstr "" #: report_header_activity msgid "activity" msgstr "aktivite" #: report_header_actions msgid "actions" msgstr "eylemler" #: report_header_score msgid "corrects" msgstr "doğrular" #: report_header_solved msgid "ok" msgstr "tamam" #: Y msgctxt "Y" msgid "Y" msgstr "E" #: N msgctxt "N" msgid "N" msgstr "H" #: report_session_detail_hide msgid "hide session details" msgstr "oturum detaylarını sakla" #: report_header_sessions msgid "sessions" msgstr "oturumlar" #: report_all_activities msgid "All activities" msgstr "tüm aktiviteler" #: report_activity msgid "Activity:" msgstr "Aktivite:" #: report_many msgid "several" msgstr "" #: report_n_users msgid "users" msgstr "kullanıcılar" #: group_admin_title msgid "Groups administration" msgstr "Grup yöneticisi" #: group_admin_new_button msgid "New group..." msgstr "Yeni grup..." #: group_admin_groups msgid "Groups" msgstr "Gruplar" #: report_actions msgid "Actions" msgstr "Eylemler" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Düzenle..." #: user_admin_title msgid "User admin" msgstr "Kullanıcı yöneticisi" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Sil..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Raporları sil..." #: group_admin_properties msgid "Group properties" msgstr "Grup özellikleri" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "İsim:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Simge:" #: error msgid "ERROR" msgstr "HATA" #: return msgid "return..." msgstr "geri dön..." #: group_admin_users msgid "Users" msgstr "Kullanıcılar" #: group_admin_no_users msgid "This group has no users." msgstr "Bu grupta kullanıcı yok." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Yeni kullanıcı oluştur..." #: cancel msgid "Cancel" msgstr "İptal" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Grup adı hatalı!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Grup kimliği hatalı!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Veritabanında aynı isme sahip başka bir grup var!" #: group_admin_delete_group msgid "Delete group" msgstr "Grup Sil" #: report_areyousure msgid "Are you sure?" msgstr "Emin misiniz?" #: YES msgid "Yes" msgstr "Evet" #: NOT msgid "Not" msgstr "Değil" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Bu işlem bu gruptaki tüm kullanıcıları veritabanından silecek. Kullanıcılara " "ait tüm veriler kaybolacak." #: db_error msgid "Unable to complete the task." msgstr "" #: group_admin_clear_group msgid "Clear report data of group" msgstr "Grup veri raporunu sil" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" #: db_clear_reports_date msgid "Clear report data" msgstr "Veri raporunu sil" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Geçersiz kullanıcı adı" #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Geçersiz kullanıcı kimliği" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Veritabanında aynı kimliğe sahip başka bir kullanıcı var!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "Kullanıcı başarıyla veritabanından silindi." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "İsim:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Simge:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Düzenle..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Sil..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Raporları sil..." #: user_admin_delete_user msgid "Delete user" msgstr "Kullanıcı sil" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "Bu işlem kullanıcıyı ve raporlarını veritabanından silecek." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Kullanıcı veri raporunu sil" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" #: success msgid "Operation successful" msgstr "İşlem başarıyla gerçekleştirildi" #: bad_data msgid "Bad data!" msgstr "Hatalı veri!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "İki bağlantı arasındaki zaman (saniye):" #: jclic_reports msgid "JClic reports" msgstr "JClic raporları" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "E" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "H" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Şifre:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_el.po0000644000175000017500000003463611377161311024760 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-16 10:56+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Πρέπει να δώσετε έναν έγκυρο κωδικό πρόσβασης για να αποκτήσετε πρόσβαση στη " "βάση δεδομένων των αναφορών." #: login_title msgid "Login" msgstr "Είσοδος" #: submit msgid "Submit..." msgstr "Υποβολή..." #: login_incorrect msgid "Incorrect password!" msgstr "Λανθασμένος κωδικός πρόσβασης" #: main_title msgid "Main menu" msgstr "Κύριο Μενού" #: users_admin_title msgid "Users and groups admin" msgstr "Διαχείριση χρηστών και ομάδων" #: group_report_title msgid "Group reports" msgstr "Αναφορές ομάδας" #: user_report_title msgid "User reports" msgstr "Αναφορές χρήστη" #: act_report_title msgid "Activity reports" msgstr "Αναφορές δραστηριότητας" #: db_admin_title msgid "Database admin" msgstr "Διαχείριση βάσης δεδομένων" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Αδυναμία ορισμού νέων τιμών για τη βάση δεδομένων!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Επιτρέπεται στους χρήστες να δημιουργούν νέες ομάδες" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Επιτρέπεται στους χρήστες να δημιουργούν νέους χρήστες" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Επιλογή ομάδας από έναν κατάλογο" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Επιλογή ονόματος χρήστη από έναν κατάλογο" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Η βάση δεδομένων διαθέτει πίνακες με τους χρήστες και τις ομάδες" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Επεξεργασία ρυθμίσεων" #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Ορισμός κωδικού πρόσβασης..." #: title msgid "Title" msgstr "Τίτλος" #: db_admin_edit_title msgid "Edit database settings" msgstr "Επεξεργασία ρυθμίσεων της βάσης δεδομένων" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Αλλαγή κωδικού πρόσβασης συστήματος" #: db_admin_pw_newPwd msgid "New password" msgstr "Νέος κωδικός πρόσβασης" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Πληκτρολογήστε ξανά τον κωδικό πρόσβασης" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Ο κωδικός πρόσβασης δεν ταιριάζει!" #: report_group msgid "Group:" msgstr "Ομάδα:" #: report_user msgid "User:" msgstr "Χρήστης:" #: report_project msgid "Project:" msgstr "Έργο:" #: report_all_projects msgid "All projects" msgstr "Όλα τα έργα" #: report_key msgid "Key:" msgstr "Κλειδί:" #: report_code msgid "Code:" msgstr "Κωδικός:" #: report_context msgid "Context:" msgstr "Περιβάλλον:" #: report_from msgid "From:" msgstr "Από:" #: month_1 msgid "january" msgstr "Ιανουάριος" #: month_2 msgid "february" msgstr "Φεβρουάριος" #: month_3 msgid "march" msgstr "Μάρτιος" #: month_4 msgid "april" msgstr "Απρίλιος" #: month_5 msgid "may" msgstr "Μάιος" #: month_6 msgid "june" msgstr "Ιούνιος" #: month_7 msgid "july" msgstr "Ιούλιος" #: month_8 msgid "august" msgstr "Αύγουστος" #: month_9 msgid "september" msgstr "Σεπτέμβριος" #: month_10 msgid "october" msgstr "Οκτώβριος" #: month_11 msgid "november" msgstr "Νοέμβριος" #: month_12 msgid "december" msgstr "Δεκέμβριος" #: report_to msgid "To:" msgstr "Προς:" #: report_global_precision msgid "Global precision" msgstr "Καθολική ακρίβεια" #: report_solved_activities msgid "Solved activities" msgstr "Επιλυμένες δραστηριότητες" #: report_user_evolution msgid "User evolution" msgstr "Εξέλιξη του χρήστη" #: report_group_evolution msgid "Group evolution" msgstr "Εξέλιξη της ομάδας" #: report_project_evolution msgid "Project evolution" msgstr "Εξέλιξη του έργου" #: report_result_distribution msgid "Result distribution" msgstr "Διανομή αποτελεσμάτων" #: report_no_data msgid "NO DATA" msgstr "ΔΕΝ ΥΠΑΡΧΟΥΝ ΔΕΔΟΜΕΝΑ" #: report_users msgid "Users:" msgstr "Χρήστες;" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Συνεδρίες:" #: report_projects msgid "Projects:" msgstr "Έργα:" #: report_actDone msgid "Activities done:" msgstr "Ολοκληρωμένες δραστηριότητες:" #: report_actSolved msgid "Activities solved:" msgstr "Επιλυμένες δραστηριότητες:" #: report_totalTime msgid "Total time:" msgstr "Συνολικός χρόνος:" #: report_globalPrec msgid "Global score:" msgstr "Συνολική βαθμολογία" #: report_globalSummary msgid "Global summary" msgstr "Γενική σύνοψη" #: report_header_date msgid "date" msgstr "ημερομηνία" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Συνεδρίες:" #: report_header_user msgid "user" msgstr "χρήστης" #: report_header_project msgid "project" msgstr "έργο" #: report_header_numActs msgid "activities" msgstr "δραστηριότητες" #: report_header_actsSolved msgid "acts. solved" msgstr "επιλυμένες δραστηριότητες" #: report_header_time msgid "time" msgstr "χρόνος" #: report_header_prec msgid "score" msgstr "βαθμολογία" #: report_session_detail_show msgid "show session details" msgstr "εμφάνιση πληροφοριών συνεδρίας" #: report_session_detail_title msgid "Activities done in session" msgstr "Πραγματοποιημένες δραστηριότητες σε αυτή τη συνεδρία" #: report_header_activity msgid "activity" msgstr "δραστηριότητα" #: report_header_actions msgid "actions" msgstr "ενέργειες" #: report_header_score msgid "corrects" msgstr "διορθώνει" #: report_header_solved msgid "ok" msgstr "Εντάξει" #: Y msgctxt "Y" msgid "Y" msgstr "Ναι" #: N msgctxt "N" msgid "N" msgstr "Όχι" #: report_session_detail_hide msgid "hide session details" msgstr "απόκρυψη λεπτομερειών συνεδρίας" #: report_header_sessions msgid "sessions" msgstr "συνεδρίες" #: report_all_activities msgid "All activities" msgstr "Όλες οι δραστηριότητες" #: report_activity msgid "Activity:" msgstr "Δραστηριότητα:" #: report_many msgid "several" msgstr "αρκετά" #: report_n_users msgid "users" msgstr "χρήστες" #: group_admin_title msgid "Groups administration" msgstr "Διαχείριση ομάδων" #: group_admin_new_button msgid "New group..." msgstr "Νέα ομάδα..." #: group_admin_groups msgid "Groups" msgstr "Ομάδες" #: report_actions msgid "Actions" msgstr "Ενέργειες" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Επεξεργασία..." #: user_admin_title msgid "User admin" msgstr "Διαχείριση χρήστη" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Διαγραφή..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Καθαρισμός αναφορών..." #: group_admin_properties msgid "Group properties" msgstr "Ιδιότητες ομάδας" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Όνομα:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Αναγνωριστικό:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Εικονίδιο:" #: error msgid "ERROR" msgstr "ΣΦΑΛΜΑ" #: return msgid "return..." msgstr "επιστροφή" #: group_admin_users msgid "Users" msgstr "Χρήστες" #: group_admin_no_users msgid "This group has no users." msgstr "Αυτή η ομάδα δεν διαθέτει χρήστες." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Δημιουργία νέου χρήστη..." #: cancel msgid "Cancel" msgstr "Άκυρο" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Λανθασμένο όνομα ομάδας!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Λανθασμένο αναγνωριστικό ομάδας!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Υπάρχει μια άλλη ομάδα στη βάση δεδομένων με το ίδιο αναγνωριστικό!" #: group_admin_delete_group msgid "Delete group" msgstr "Διαγραφή ομάδας" #: report_areyousure msgid "Are you sure?" msgstr "Σίγουρα;" #: YES msgid "Yes" msgstr "Ναι" #: NOT msgid "Not" msgstr "Όχι" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Αυτή η λειτουργία θα σβήσει όλους τους χρήστες αυτής της ομάδας από τη βάση " "δεδομένων. Όλα τα δεδομένα αυτών των χρηστών θα χαθούν." #: db_error msgid "Unable to complete the task." msgstr "Αδυναμία εκπλήρωσης του στόχου." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Καθαρισμός δεδομένων αναφοράς της ομάδας" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Αυτή η λειτουργία θα καθαρίσει όλες τις αναφορές των δραστηριοτήτων που " "πραγματοποιήθηκαν από τα μέλη αυτής της ομάδας μεταξύ των καθορισμένων " "ημερομηνιών." #: db_clear_reports_date msgid "Clear report data" msgstr "Καθαρισμός δεδομένων αναφοράς" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Λανθασμένο όνομα χρήστη." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Λανθασμένο αναγνωριστικό χρήστη." #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Υπάρχει ένας άλλο χρήστης με το ίδιο αναγνωριστικό στη βάση δεδομένων!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "Ο χρήστης αφαιρέθηκε με επιτυχία από τη βάση δεδομένων." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Αναγνωριστικό:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Όνομα:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Εικονίδιο:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Επεξεργασία..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Διαγραφή..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Καθαρισμός αναφορών..." #: user_admin_delete_user msgid "Delete user" msgstr "Διαγραφή χρήστη" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Αυτή η λειτουργία θα διαγράψει τον χρήστη και τις αναφορές του από τη βάση " "δεδομένων." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Καθαρισμός δεδομένων αναφοράς χρήστη" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Αυτή η λειτουργία θα κάνει εκκαθάριση όλων των αναφορών και των " "δραστηριοτήτων που έγιναν από αυτόν τον χρήστη μεταξύ των καθορισμένων " "ημερομηνιών." #: success msgid "Operation successful" msgstr "Επιτυχής λειτουργία" #: bad_data msgid "Bad data!" msgstr "Λάθος δεδομένα!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Χρόνος μεταξύ των συνδέσεων (δευτερόλεπτα)\\:" #: jclic_reports msgid "JClic reports" msgstr "Αναφορές του JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "Ναι" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "Όχι" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Κωδικός πρόσβασης\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Επιβεβαίωση κωδικού πρόσβασης\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Ο κωδικός πρόσβασης δεν ταιριάζει\\:" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_pt_BR.po0000644000175000017500000002675311377161311025367 0ustar # Brazilian Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-05-13 17:36+0000\n" "Last-Translator: Alexandre R Soares \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Senha :" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "É necessário que você forneça uma senha válida para poder acessar os " "relatórios no banco de dados." #: login_title msgid "Login" msgstr "Login" #: submit msgid "Submit..." msgstr "Enviar..." #: login_incorrect msgid "Incorrect password!" msgstr "Senha incorreta!" #: main_title msgid "Main menu" msgstr "Menu principal" #: users_admin_title msgid "Users and groups admin" msgstr "Administrador de usuários e grupos" #: group_report_title msgid "Group reports" msgstr "Relatórios de grupo" #: user_report_title msgid "User reports" msgstr "relatórios de usuário" #: act_report_title msgid "Activity reports" msgstr "Relatórios de atividades" #: db_admin_title msgid "Database admin" msgstr "Administrador de BD" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Não foi possível definir os novos valores do banco de dados!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permitir que usuários criem novos grupos" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permitir que usuários criem novos usuários" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Selecione grupo em uma lista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Selecione nome de usuário em uma lista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Banco de dados possui tabelas de usuários e grupos" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Editar preferências..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Definir senha..." #: title msgid "Title" msgstr "Título" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editar configurações do banco de dados" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Alterar senha do sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Nova senha" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Confirme a senha" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "As senhas estão diferentes!" #: report_group msgid "Group:" msgstr "Grupo:" #: report_user msgid "User:" msgstr "Usuário:" #: report_project msgid "Project:" msgstr "Projeto:" #: report_all_projects msgid "All projects" msgstr "Todos os projetos" #: report_key msgid "Key:" msgstr "Chave:" #: report_code msgid "Code:" msgstr "Código:" #: report_context msgid "Context:" msgstr "Contexto:" #: report_from msgid "From:" msgstr "De:" #: month_1 msgid "january" msgstr "janeiro" #: month_2 msgid "february" msgstr "fevereiro" #: month_3 msgid "march" msgstr "março" #: month_4 msgid "april" msgstr "abril" #: month_5 msgid "may" msgstr "maio" #: month_6 msgid "june" msgstr "junho" #: month_7 msgid "july" msgstr "julho" #: month_8 msgid "august" msgstr "agosto" #: month_9 msgid "september" msgstr "setembro" #: month_10 msgid "october" msgstr "outubro" #: month_11 msgid "november" msgstr "novembro" #: month_12 msgid "december" msgstr "dezembro" #: report_to msgid "To:" msgstr "Para:" #: report_global_precision msgid "Global precision" msgstr "Precisão global" #: report_solved_activities msgid "Solved activities" msgstr "Atividades resolvidas" #: report_user_evolution msgid "User evolution" msgstr "Progresso do usuário" #: report_group_evolution msgid "Group evolution" msgstr "Progresso do grupo" #: report_project_evolution msgid "Project evolution" msgstr "Progresso do projeto" #: report_result_distribution msgid "Result distribution" msgstr "Distribuição do resultado" #: report_no_data msgid "NO DATA" msgstr "SEM DADOS" #: report_users msgid "Users:" msgstr "Usuários:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sessões:" #: report_projects msgid "Projects:" msgstr "Projetos:" #: report_actDone msgid "Activities done:" msgstr "Atividades realizadas:" #: report_actSolved msgid "Activities solved:" msgstr "Atividades resolvidas:" #: report_totalTime msgid "Total time:" msgstr "Tempo total:" #: report_globalPrec msgid "Global score:" msgstr "Pontuação geral:" #: report_globalSummary msgid "Global summary" msgstr "Resumo geral" #: report_header_date msgid "date" msgstr "Data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sessões:" #: report_header_user msgid "user" msgstr "usuário" #: report_header_project msgid "project" msgstr "projeto" #: report_header_numActs msgid "activities" msgstr "atividades" #: report_header_actsSolved msgid "acts. solved" msgstr "ativ. feitas" #: report_header_time msgid "time" msgstr "tempo" #: report_header_prec msgid "score" msgstr "acertos" #: report_session_detail_show msgid "show session details" msgstr "mostrar detalhes da sessão" #: report_session_detail_title msgid "Activities done in session" msgstr "Atividades feitas na sessão" #: report_header_activity msgid "activity" msgstr "atividade" #: report_header_actions msgid "actions" msgstr "ações" #: report_header_score msgid "corrects" msgstr "corretas" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "ocultar detalhes da sessão" #: report_header_sessions msgid "sessions" msgstr "sessões" #: report_all_activities msgid "All activities" msgstr "Todas as atividades" #: report_activity msgid "Activity:" msgstr "Atividade:" #: report_many msgid "several" msgstr "vários" #: report_n_users msgid "users" msgstr "usuários" #: group_admin_title msgid "Groups administration" msgstr "Administração de grupos" #: group_admin_new_button msgid "New group..." msgstr "Novo grupo..." #: group_admin_groups msgid "Groups" msgstr "Grupos" #: report_actions msgid "Actions" msgstr "Ações" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Editar..." #: user_admin_title msgid "User admin" msgstr "Administrador de usuário" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Excluir..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Apagar registros..." #: group_admin_properties msgid "Group properties" msgstr "Propriedades do grupo" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nome:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificador:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Ícone:" #: error msgid "ERROR" msgstr "ERRO" #: return msgid "return..." msgstr "voltar..." #: group_admin_users msgid "Users" msgstr "Usuários" #: group_admin_no_users msgid "This group has no users." msgstr "Esse grupo não contém usuários." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Criar um novo usuário..." #: cancel msgid "Cancel" msgstr "Cancelar" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Nome de grupo incorreto!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Identificador de grupo incorreto!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Já existe outro grupo com o mesmo identificador no banco de dados!" #: group_admin_delete_group msgid "Delete group" msgstr "Excluir grupo" #: report_areyousure msgid "Are you sure?" msgstr "Você tem certeza?" #: YES msgid "Yes" msgstr "Sim" #: NOT msgid "Not" msgstr "Não" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Essa operação também excluirá do banco todos os usuários desse grupo. Todos " "os dados desses usuários serão perdidos." #: db_error msgid "Unable to complete the task." msgstr "Não foi possível completar a tarefa." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Apagar dados de relatório do grupo" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Essa operação apagará todos os registros de atividades feitas pelos membros " "desse grupo dentro do intervalo de datas indicadas." #: db_clear_reports_date msgid "Clear report data" msgstr "Apagar registros de dados" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Nome de usuário inválido." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Identificador de usuário inválido" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Já existe outro usuário com o mesmo identificador no banco de dados!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "O usuário foi excluído com sucesso do banco de dados." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificador:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nome:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Ícone:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Editar..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Apagar registros..." #: user_admin_delete_user msgid "Delete user" msgstr "Excluir usuário" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Essa operação excluirá do banco de dados esse usuário e seus registros." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Apagar registros de dados do usuário" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Esse operação apagará todos os registros de atividades feitas pelo usuário " "no período entre as datas indicadas." #: success msgid "Operation successful" msgstr "Operação bem sucedida" #: bad_data msgid "Bad data!" msgstr "Dados incorretos!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tempo entre conexões (segundos)\\:" #: jclic_reports msgid "JClic reports" msgstr "Relatórios jClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Senha\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirme senha\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "As senhas estão diferentes\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_zh_TW.po0000644000175000017500000002407211377161311025404 0ustar # Traditional Chinese translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-04-12 15:16+0000\n" "Last-Translator: tclin \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "密碼:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" #: login_title msgid "Login" msgstr "登入" #: submit msgid "Submit..." msgstr "送出" #: login_incorrect msgid "Incorrect password!" msgstr "密碼不正確" #: main_title msgid "Main menu" msgstr "主選單" #: users_admin_title msgid "Users and groups admin" msgstr "使用者與群組管理" #: group_report_title msgid "Group reports" msgstr "群組報 告" #: user_report_title msgid "User reports" msgstr "使用者報告" #: act_report_title msgid "Activity reports" msgstr "活動報告" #: db_admin_title msgid "Database admin" msgstr "資料庫管理" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "允許使用者建立新群組" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "允許使用者建立新使用者" #: db_admin_param_shgl msgid "Select group in a list" msgstr "在列表中選擇群組" #: db_admin_param_shul msgid "Select user name in a list" msgstr "在列表中選擇使用者" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "資料庫有使用者與群組工作表" #: db_admin_edit_btn msgid "Edit settings..." msgstr "編輯偏好設定..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "設定密碼..." #: title msgid "Title" msgstr "標題" #: db_admin_edit_title msgid "Edit database settings" msgstr "編輯資料庫設定" #: db_admin_pw_edit_title msgid "Change system password" msgstr "變更系統密碼" #: db_admin_pw_newPwd msgid "New password" msgstr "新密碼" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "再一次輸入密碼" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "密碼欄位不一致!" #: report_group msgid "Group:" msgstr "群組:" #: report_user msgid "User:" msgstr "使用者:" #: report_project msgid "Project:" msgstr "專案:" #: report_all_projects msgid "All projects" msgstr "全部專案" #: report_key msgid "Key:" msgstr "金鑰:" #: report_code msgid "Code:" msgstr "編碼:" #: report_context msgid "Context:" msgstr "上下文:" #: report_from msgid "From:" msgstr "從:" #: month_1 msgid "january" msgstr "一月" #: month_2 msgid "february" msgstr "二月" #: month_3 msgid "march" msgstr "三月" #: month_4 msgid "april" msgstr "四月" #: month_5 msgid "may" msgstr "五月" #: month_6 msgid "june" msgstr "六月" #: month_7 msgid "july" msgstr "七月" #: month_8 msgid "august" msgstr "八月" #: month_9 msgid "september" msgstr "九月" #: month_10 msgid "october" msgstr "十月" #: month_11 msgid "november" msgstr "十一月" #: month_12 msgid "december" msgstr "十二月" #: report_to msgid "To:" msgstr "到:" #: report_global_precision msgid "Global precision" msgstr "" #: report_solved_activities msgid "Solved activities" msgstr "解答活動" #: report_user_evolution msgid "User evolution" msgstr "" #: report_group_evolution msgid "Group evolution" msgstr "" #: report_project_evolution msgid "Project evolution" msgstr "" #: report_result_distribution msgid "Result distribution" msgstr "" #: report_no_data msgid "NO DATA" msgstr "" #: report_users msgid "Users:" msgstr "使用者:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "" #: report_projects msgid "Projects:" msgstr "專案:" #: report_actDone msgid "Activities done:" msgstr "" #: report_actSolved msgid "Activities solved:" msgstr "" #: report_totalTime msgid "Total time:" msgstr "全部時間:" #: report_globalPrec msgid "Global score:" msgstr "總成績" #: report_globalSummary msgid "Global summary" msgstr "" #: report_header_date msgid "date" msgstr "日期" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "" #: report_header_user msgid "user" msgstr "使用者" #: report_header_project msgid "project" msgstr "專案" #: report_header_numActs msgid "activities" msgstr "" #: report_header_actsSolved msgid "acts. solved" msgstr "" #: report_header_time msgid "time" msgstr "時間" #: report_header_prec msgid "score" msgstr "分數" #: report_session_detail_show msgid "show session details" msgstr "" #: report_session_detail_title msgid "Activities done in session" msgstr "" #: report_header_activity msgid "activity" msgstr "活動" #: report_header_actions msgid "actions" msgstr "動作" #: report_header_score msgid "corrects" msgstr "" #: report_header_solved msgid "ok" msgstr "確定" #: Y msgctxt "Y" msgid "Y" msgstr "" #: N msgctxt "N" msgid "N" msgstr "" #: report_session_detail_hide msgid "hide session details" msgstr "" #: report_header_sessions msgid "sessions" msgstr "" #: report_all_activities msgid "All activities" msgstr "" #: report_activity msgid "Activity:" msgstr "活動:" #: report_many msgid "several" msgstr "" #: report_n_users msgid "users" msgstr "使用者" #: group_admin_title msgid "Groups administration" msgstr "群組管理" #: group_admin_new_button msgid "New group..." msgstr "新群組..." #: group_admin_groups msgid "Groups" msgstr "群組" #: report_actions msgid "Actions" msgstr "動作" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "編輯…" #: user_admin_title msgid "User admin" msgstr "使用者管理" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "刪除..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "清除報告..." #: group_admin_properties msgid "Group properties" msgstr "群組屬性" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "名稱:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "識別碼:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "圖示:" #: error msgid "ERROR" msgstr "錯誤" #: return msgid "return..." msgstr "返回..." #: group_admin_users msgid "Users" msgstr "使用者" #: group_admin_no_users msgid "This group has no users." msgstr "這個群組沒有使用者。" #: group_admin_create_user_button msgid "Create a new user..." msgstr "建立新使用者..." #: cancel msgid "Cancel" msgstr "取消" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "不正確的群組名稱!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "不正確的群組識別碼!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "" #: group_admin_delete_group msgid "Delete group" msgstr "刪除群組" #: report_areyousure msgid "Are you sure?" msgstr "您確定嗎?" #: YES msgid "Yes" msgstr "確定" #: NOT msgid "Not" msgstr "" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" #: db_error msgid "Unable to complete the task." msgstr "" #: group_admin_clear_group msgid "Clear report data of group" msgstr "清除群組的報告資料" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" #: db_clear_reports_date msgid "Clear report data" msgstr "清除報告資料" #: user_admin_invalid_name msgid "Invalid user name." msgstr "無效的使用者名稱。" #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "無效的使用者識別碼" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "使用者已經刪除。" #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "識別碼:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "名稱:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "圖示:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "編輯…" #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "刪除..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "清除報告..." #: user_admin_delete_user msgid "Delete user" msgstr "刪除使用者" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" #: user_admin_clear_user msgid "Clear report data of user" msgstr "清除使用者的報告" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" #: success msgid "Operation successful" msgstr "操作完成" #: bad_data msgid "Bad data!" msgstr "壞的資料!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "" #: jclic_reports msgid "JClic reports" msgstr "JClic 報告" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "" #: user_admin_pw_prompt msgid "Password\\:" msgstr "密碼:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "確認密碼:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "密碼沒有匹配!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_ru.po0000644000175000017500000003232411377161311024776 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-12-18 17:42+0000\n" "Last-Translator: Artem Karimov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Пароль:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Вы должны ввести действительный пароль для доступа к базе данных отчётов." #: login_title msgid "Login" msgstr "Вход" #: submit msgid "Submit..." msgstr "Отправить..." #: login_incorrect msgid "Incorrect password!" msgstr "Неверный пароль!" #: main_title msgid "Main menu" msgstr "Главное меню" #: users_admin_title msgid "Users and groups admin" msgstr "Адм. пользователей и групп" #: group_report_title msgid "Group reports" msgstr "Групповые отчёты" #: user_report_title msgid "User reports" msgstr "Отчёты пользователя" #: act_report_title msgid "Activity reports" msgstr "Отчёты о заданиях" #: db_admin_title msgid "Database admin" msgstr "Администратор базы данных" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Невозможно задать новые значения базы данных!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Разрешить пользователям создавать новые группы" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Разрешить пользователям создавать новых пользователей" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Выберите группу из списка" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Выберите имя пользователя из списка" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "База данных содержит таблицы пользователей и групп" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Изменить настройки..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Установить пароль..." #: title msgid "Title" msgstr "Заголовок" #: db_admin_edit_title msgid "Edit database settings" msgstr "Изменить настройки базы данных" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Изменить системный пароль" #: db_admin_pw_newPwd msgid "New password" msgstr "Новый пароль" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Повторите пароль" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Поля паролей не заполнены!" #: report_group msgid "Group:" msgstr "Группа:" #: report_user msgid "User:" msgstr "Пользователь:" #: report_project msgid "Project:" msgstr "Проект:" #: report_all_projects msgid "All projects" msgstr "Все проекты" #: report_key msgid "Key:" msgstr "Ключ:" #: report_code msgid "Code:" msgstr "Код:" #: report_context msgid "Context:" msgstr "Контекст:" #: report_from msgid "From:" msgstr "От:" #: month_1 msgid "january" msgstr "январь" #: month_2 msgid "february" msgstr "февраль" #: month_3 msgid "march" msgstr "март" #: month_4 msgid "april" msgstr "апрель" #: month_5 msgid "may" msgstr "май" #: month_6 msgid "june" msgstr "июнь" #: month_7 msgid "july" msgstr "июль" #: month_8 msgid "august" msgstr "август" #: month_9 msgid "september" msgstr "сентябрь" #: month_10 msgid "october" msgstr "октябрь" #: month_11 msgid "november" msgstr "ноябрь" #: month_12 msgid "december" msgstr "декабрь" #: report_to msgid "To:" msgstr "Кому:" #: report_global_precision msgid "Global precision" msgstr "Общая точность" #: report_solved_activities msgid "Solved activities" msgstr "Решённые задания" #: report_user_evolution msgid "User evolution" msgstr "Развитие пользователя" #: report_group_evolution msgid "Group evolution" msgstr "Развитие группы" #: report_project_evolution msgid "Project evolution" msgstr "Развитие проекта" #: report_result_distribution msgid "Result distribution" msgstr "Распределение результатов" #: report_no_data msgid "NO DATA" msgstr "НЕТ ДАННЫХ" #: report_users msgid "Users:" msgstr "Пользователи" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Сессии:" #: report_projects msgid "Projects:" msgstr "Проекты:" #: report_actDone msgid "Activities done:" msgstr "Выполненных заданий:" #: report_actSolved msgid "Activities solved:" msgstr "Решённых заданий:" #: report_totalTime msgid "Total time:" msgstr "Общее время:" #: report_globalPrec msgid "Global score:" msgstr "Общий счёт" #: report_globalSummary msgid "Global summary" msgstr "Общие итоги" #: report_header_date msgid "date" msgstr "дата" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Сессии:" #: report_header_user msgid "user" msgstr "пользователь" #: report_header_project msgid "project" msgstr "проект" #: report_header_numActs msgid "activities" msgstr "задания" #: report_header_actsSolved msgid "acts. solved" msgstr "реш. заданий" #: report_header_time msgid "time" msgstr "время" #: report_header_prec msgid "score" msgstr "счёт" #: report_session_detail_show msgid "show session details" msgstr "показать подробности сессии" #: report_session_detail_title msgid "Activities done in session" msgstr "Действия завершенные в сессии" #: report_header_activity msgid "activity" msgstr "активность" #: report_header_actions msgid "actions" msgstr "действия" #: report_header_score msgid "corrects" msgstr "поправки" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "Y" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "скрыть подробности сессии" #: report_header_sessions msgid "sessions" msgstr "сессии" #: report_all_activities msgid "All activities" msgstr "Вся активность" #: report_activity msgid "Activity:" msgstr "Активность:" #: report_many msgid "several" msgstr "несколько" #: report_n_users msgid "users" msgstr "пользователей" #: group_admin_title msgid "Groups administration" msgstr "Управление группами" #: group_admin_new_button msgid "New group..." msgstr "Новая группа..." #: group_admin_groups msgid "Groups" msgstr "Группы" #: report_actions msgid "Actions" msgstr "Действия" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Изменить..." #: user_admin_title msgid "User admin" msgstr "Адм. пользователей" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Удалить..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Очистить отчёты..." #: group_admin_properties msgid "Group properties" msgstr "Свойства группы:" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Название:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Идентификатор:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Значок:" #: error msgid "ERROR" msgstr "ОШИБКА" #: return msgid "return..." msgstr "возврат..." #: group_admin_users msgid "Users" msgstr "Пользователи" #: group_admin_no_users msgid "This group has no users." msgstr "В этой группе нет пользователей." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Создать нового пользователя..." #: cancel msgid "Cancel" msgstr "Отмена" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Неверное название группы!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Неверный идентификатор группы!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "В базе данных имеется группа с таким же идентификатором." #: group_admin_delete_group msgid "Delete group" msgstr "Удалить группу" #: report_areyousure msgid "Are you sure?" msgstr "Вы уверены?" #: YES msgid "Yes" msgstr "Да" #: NOT msgid "Not" msgstr "Нет" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Эта операция также удалит всех пользователей этой группы, Все данные об этих " "пользователях будут потеряны." #: db_error msgid "Unable to complete the task." msgstr "Невозможно звершить действие." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Очистить данные отчётов группы" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Эта операция удалит все отчёты членов этой группы между указанными датами." #: db_clear_reports_date msgid "Clear report data" msgstr "Очистить данные отчётов" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Неверное имя пользователя." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Неверный идентификатор пользователя." #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "В базе данных существует пользователь с таким же идентификатором!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "Пользователь успешно удалён из базы данных." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Идентификатор:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Имя:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Значок:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Изменить..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Удалить..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Очистить отчёты..." #: user_admin_delete_user msgid "Delete user" msgstr "Удалить пользователя" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "Эта операция удалит пользователя и его отчёты из базы данных." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Очистка данных отчётов пользователя" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "Эта операция удалит все отчёты пользователя между указанными датами." #: success msgid "Operation successful" msgstr "Операция успешно завершена" #: bad_data msgid "Bad data!" msgstr "Неверные данные!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Время между подключениями (секунд)\\:" #: jclic_reports msgid "JClic reports" msgstr "Отчёты JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "Y" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Пароль\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Повторите пароль\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Пароли не совпадают\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_nl.po0000644000175000017500000002657711377161311024776 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-10 21:18+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Wachtwoord:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Je dient een geldig wachtwoord in te voeren om toegang te krijgen tot de " "rapporten database." #: login_title msgid "Login" msgstr "Aanmelden" #: submit msgid "Submit..." msgstr "Verzenden..." #: login_incorrect msgid "Incorrect password!" msgstr "Verkeer paswoord!" #: main_title msgid "Main menu" msgstr "Hoofdmenu" #: users_admin_title msgid "Users and groups admin" msgstr "Gebruikers en groepen admin" #: group_report_title msgid "Group reports" msgstr "Groep rapporten" #: user_report_title msgid "User reports" msgstr "Gebruikers rapport" #: act_report_title msgid "Activity reports" msgstr "Activiteiten rapporten" #: db_admin_title msgid "Database admin" msgstr "Database admin" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Nieuwe database waarden kunnen niet ingevoerd worden!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Laat gebruikers nieuwe groepen maken" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Laat gebruikers nieuwe gebruikers maken" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Kies groep in een lijst" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Kies gebruikersnaam in een lijst" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Database heeft tabellen met gebruikers en groepen" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Bewerk instellingen..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Wachtwoord instellen..." #: title msgid "Title" msgstr "Titel" #: db_admin_edit_title msgid "Edit database settings" msgstr "Database instellingen bewerken" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Verander systeem wachtwoord" #: db_admin_pw_newPwd msgid "New password" msgstr "Nieuw wachtwoord" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Wachtwoord opnieuw invoeren" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Wachtwoorden komen niet overeen!" #: report_group msgid "Group:" msgstr "Groep:" #: report_user msgid "User:" msgstr "Gebruiker:" #: report_project msgid "Project:" msgstr "Project:" #: report_all_projects msgid "All projects" msgstr "Alle projecten" #: report_key msgid "Key:" msgstr "Sleutel:" #: report_code msgid "Code:" msgstr "Code:" #: report_context msgid "Context:" msgstr "Inhoud:" #: report_from msgid "From:" msgstr "Van:" #: month_1 msgid "january" msgstr "januari" #: month_2 msgid "february" msgstr "februari" #: month_3 msgid "march" msgstr "maart" #: month_4 msgid "april" msgstr "april" #: month_5 msgid "may" msgstr "mei" #: month_6 msgid "june" msgstr "juni" #: month_7 msgid "july" msgstr "juli" #: month_8 msgid "august" msgstr "augustus" #: month_9 msgid "september" msgstr "september" #: month_10 msgid "october" msgstr "oktober" #: month_11 msgid "november" msgstr "november" #: month_12 msgid "december" msgstr "december" #: report_to msgid "To:" msgstr "Tot:" #: report_global_precision msgid "Global precision" msgstr "Totale nauwkeurigheid" #: report_solved_activities msgid "Solved activities" msgstr "Opgeloste activiteiten" #: report_user_evolution msgid "User evolution" msgstr "Vooruitgang gebruiker" #: report_group_evolution msgid "Group evolution" msgstr "Vooruitgang groep" #: report_project_evolution msgid "Project evolution" msgstr "Vooruitgang project" #: report_result_distribution msgid "Result distribution" msgstr "Resultaat verdeling" #: report_no_data msgid "NO DATA" msgstr "GEEN GEGEVENS" #: report_users msgid "Users:" msgstr "Gebruikers:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Reeksen:" #: report_projects msgid "Projects:" msgstr "Projecten:" #: report_actDone msgid "Activities done:" msgstr "Activiteiten klaar:" #: report_actSolved msgid "Activities solved:" msgstr "Activiteiten opgelost:" #: report_totalTime msgid "Total time:" msgstr "Totale tijd:" #: report_globalPrec msgid "Global score:" msgstr "Puntentotaal:" #: report_globalSummary msgid "Global summary" msgstr "Samenvatting overzicht" #: report_header_date msgid "date" msgstr "datum" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Reeksen:" #: report_header_user msgid "user" msgstr "gebruiker" #: report_header_project msgid "project" msgstr "project" #: report_header_numActs msgid "activities" msgstr "activiteiten" #: report_header_actsSolved msgid "acts. solved" msgstr "opgeloste activiteiten" #: report_header_time msgid "time" msgstr "tijd" #: report_header_prec msgid "score" msgstr "punten" #: report_session_detail_show msgid "show session details" msgstr "toon details reeks" #: report_session_detail_title msgid "Activities done in session" msgstr "activiteiten gedaan in reeks" #: report_header_activity msgid "activity" msgstr "activiteit" #: report_header_actions msgid "actions" msgstr "acties" #: report_header_score msgid "corrects" msgstr "juist" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "J" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "verberg details" #: report_header_sessions msgid "sessions" msgstr "reeksen" #: report_all_activities msgid "All activities" msgstr "Alle activiteiten" #: report_activity msgid "Activity:" msgstr "Activiteit:" #: report_many msgid "several" msgstr "verschillende" #: report_n_users msgid "users" msgstr "gebruikers" #: group_admin_title msgid "Groups administration" msgstr "Groepen administratie" #: group_admin_new_button msgid "New group..." msgstr "Nieuwe groep..." #: group_admin_groups msgid "Groups" msgstr "Groepen" #: report_actions msgid "Actions" msgstr "Acties" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Bewerken..." #: user_admin_title msgid "User admin" msgstr "Gebruikers administratie" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Verwijder..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Rapporten wissen..." #: group_admin_properties msgid "Group properties" msgstr "Groepseigenschappen" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Naam:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificatie:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Pictogram:" #: error msgid "ERROR" msgstr "FOUT" #: return msgid "return..." msgstr "verder..." #: group_admin_users msgid "Users" msgstr "Gebruikers" #: group_admin_no_users msgid "This group has no users." msgstr "Deze groep heeft geen gebruikers" #: group_admin_create_user_button msgid "Create a new user..." msgstr "Maak nieuwe gebruiker..." #: cancel msgid "Cancel" msgstr "Annuleren" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Verkeerde groepsnaam!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Verkeerde groepsidentificatie!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Er is een andere groep met dezelfde identificatie in de database!" #: group_admin_delete_group msgid "Delete group" msgstr "Groep verwijderen" #: report_areyousure msgid "Are you sure?" msgstr "Weet u het zeker?" #: YES msgid "Yes" msgstr "Ja" #: NOT msgid "Not" msgstr "Nee" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Deze bewerking zal ook alle gebruikers van deze groep verwijderen. Alle " "gegevens zullen verloren gaan." #: db_error msgid "Unable to complete the task." msgstr "Kan de opdracht niet afwerken." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Rapport gegevens van de groep leeg maken" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Deze operatie zal alle rapporten van de activiteiten van leden tussen de " "twee opgegeven datums van deze groep verwijderen" #: db_clear_reports_date msgid "Clear report data" msgstr "Rapport gegevens verwijderen" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Ongeldige gebruikers naam." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Ongeldige gebruiker identificatie" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Er is een andere gebruiker met dezelfde identificatie in de database!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "De gebruiker is verwijderd uit de database." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificatie:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Naam:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Pictogram:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Bewerken..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Verwijder..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Rapporten wissen..." #: user_admin_delete_user msgid "Delete user" msgstr "Gebruiker verwijderen" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Deze bewerking zal de gebruiker en zijn rapporten verwijderen uit deze " "database." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Verwijder rapport gegevens van gebruiker" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Deze bewerking zal alle rapporten van de activiteiten van deze gebruiker " "tussen de opgegeven datums verwijderen." #: success msgid "Operation successful" msgstr "Geslaagde bewerking" #: bad_data msgid "Bad data!" msgstr "Verkeerde gegevens!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tijd tussen verbindingen (in seconden)\\:" #: jclic_reports msgid "JClic reports" msgstr "JClic rapporten" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "J" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Wachtwoord\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Bevestig wachtwoord\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Wachtwoorden komen niet overeen\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_ast.po0000644000175000017500000002723511377161311025144 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # Xandru Armesto , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-09-30 14:01+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Contraseña:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Tien d'escribir una contraseña correuta p'acceder a la base de datos " "d'informes." #: login_title msgid "Login" msgstr "Coneutar" #: submit msgid "Submit..." msgstr "Unviar..." #: login_incorrect msgid "Incorrect password!" msgstr "¡Contraseña incorreuta!" #: main_title msgid "Main menu" msgstr "Menú principal" #: users_admin_title msgid "Users and groups admin" msgstr "Alministración de grupos y usuarios" #: group_report_title msgid "Group reports" msgstr "Informes de grupu" #: user_report_title msgid "User reports" msgstr "Informes d'usuariu/a" #: act_report_title msgid "Activity reports" msgstr "Informes de xera" #: db_admin_title msgid "Database admin" msgstr "Alministración de la base de datos" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "¡Nun se pudieron camudar los valores de la base de datos!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permitir a los usuarios criar grupos nuevos" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permitir a los usuarios la creación de usuarios nuevos" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Esbillar grupu d'una llista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Esbillar el nome d'usuariu/a d'una llista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "La base de datos tien tables d'usuarios y grupos" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Editar propiedaes..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Afitar contraseña..." #: title msgid "Title" msgstr "Títulu" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editar propiedaes de la base de datos" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Camudar la contraseña del sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Contraseña nueva" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Volver a escribir la contraseña" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Los dos testos nun concasen!" #: report_group msgid "Group:" msgstr "Grupu:" #: report_user msgid "User:" msgstr "Usuariu:" #: report_project msgid "Project:" msgstr "Proyeutu:" #: report_all_projects msgid "All projects" msgstr "Tolos proyeutos" #: report_key msgid "Key:" msgstr "Contraseña:" #: report_code msgid "Code:" msgstr "Códigu:" #: report_context msgid "Context:" msgstr "Contestu:" #: report_from msgid "From:" msgstr "Dende:" #: month_1 msgid "january" msgstr "xineru" #: month_2 msgid "february" msgstr "febreru" #: month_3 msgid "march" msgstr "marzu" #: month_4 msgid "april" msgstr "abril" #: month_5 msgid "may" msgstr "mayu" #: month_6 msgid "june" msgstr "xunu" #: month_7 msgid "july" msgstr "xunetu" #: month_8 msgid "august" msgstr "agostu" #: month_9 msgid "september" msgstr "setiembre" #: month_10 msgid "october" msgstr "ochobre" #: month_11 msgid "november" msgstr "payares" #: month_12 msgid "december" msgstr "avientu" #: report_to msgid "To:" msgstr "Fasta:" #: report_global_precision msgid "Global precision" msgstr "Precisión global" #: report_solved_activities msgid "Solved activities" msgstr "Xeres resueltes" #: report_user_evolution msgid "User evolution" msgstr "Evolución del usuariu/a" #: report_group_evolution msgid "Group evolution" msgstr "Evolución del grupu" #: report_project_evolution msgid "Project evolution" msgstr "Evolución del proyeutu" #: report_result_distribution msgid "Result distribution" msgstr "Distribución de resultaos" #: report_no_data msgid "NO DATA" msgstr "ENSIN DATOS" #: report_users msgid "Users:" msgstr "Usuarios\\:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sesiones:" #: report_projects msgid "Projects:" msgstr "Proyeutos:" #: report_actDone msgid "Activities done:" msgstr "Xeres realizaes:" #: report_actSolved msgid "Activities solved:" msgstr "Xeres resueltes:" #: report_totalTime msgid "Total time:" msgstr "Tiempu total:" #: report_globalPrec msgid "Global score:" msgstr "Precisión global:" #: report_globalSummary msgid "Global summary" msgstr "Resume global" #: report_header_date msgid "date" msgstr "data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sesiones realizaes:" #: report_header_user msgid "user" msgstr "usuariu/a" #: report_header_project msgid "project" msgstr "proyeutu" #: report_header_numActs msgid "activities" msgstr "xeres" #: report_header_actsSolved msgid "acts. solved" msgstr "xeres. resueltes" #: report_header_time msgid "time" msgstr "tiempu" #: report_header_prec msgid "score" msgstr "precisión" #: report_session_detail_show msgid "show session details" msgstr "amosar detalles de la sesión..." #: report_session_detail_title msgid "Activities done in session" msgstr "Xeres realizaes na sesión" #: report_header_activity msgid "activity" msgstr "xera" #: report_header_actions msgid "actions" msgstr "aiciones" #: report_header_score msgid "corrects" msgstr "aciertos" #: report_header_solved msgid "ok" msgstr "bien" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "esconder detalles de la sesión" #: report_header_sessions msgid "sessions" msgstr "sesiones" #: report_all_activities msgid "All activities" msgstr "Toles xeres" #: report_activity msgid "Activity:" msgstr "Xera:" #: report_many msgid "several" msgstr "dellos" #: report_n_users msgid "users" msgstr "usuarios" #: group_admin_title msgid "Groups administration" msgstr "Alministración de grupos" #: group_admin_new_button msgid "New group..." msgstr "Grupu nuevu..." #: group_admin_groups msgid "Groups" msgstr "Grupos" #: report_actions msgid "Actions" msgstr "Aiciones" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Camudar..." #: user_admin_title msgid "User admin" msgstr "Alministración d'usuarios" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Esborrar..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Llimpiar informes..." #: group_admin_properties msgid "Group properties" msgstr "Propiedaes del grupu" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nome:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificador:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Iconu:" #: error msgid "ERROR" msgstr "ERROR" #: return msgid "return..." msgstr "tornar..." #: group_admin_users msgid "Users" msgstr "Usuarios" #: group_admin_no_users msgid "This group has no users." msgstr "Esti grupu nun tien usuariu/a dengún." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Criar un usuariu/a nuevu..." #: cancel msgid "Cancel" msgstr "Encaboxar" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "El nome del grupu ye incorreutu!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "L'identificador de grupu ye incorreutu." #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "¡Yá hai un grupu con esti identificador na base de datos!" #: group_admin_delete_group msgid "Delete group" msgstr "Esborrar el grupu" #: report_areyousure msgid "Are you sure?" msgstr "¿De xuru?" #: YES msgid "Yes" msgstr "Sí" #: NOT msgid "Not" msgstr "Non" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Esta operación va desaniciar tamién de la base de datos a tolos usuarios " "d'esti grupu. Van perdese tolos datos d'estos usuarios." #: db_error msgid "Unable to complete the task." msgstr "Nun se pudo facer la operación." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Llimpiar los informes del grupu" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Esta operación va llimpiar tolos informes de les xeres realizaes polos " "miembros d'esti grupu ente les dates conseñaes." #: db_clear_reports_date msgid "Clear report data" msgstr "Llimpiar los datos d'informes" #: user_admin_invalid_name msgid "Invalid user name." msgstr "El nome d'usuariu/a ye incorreutu." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "L'identificador d'usuariu/a ye incorreutu!" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Yá hai otru usuariu/a con esti identificador na base de datos. Los nomes " "puen repetise (en dellos grupos) pero los identificadores tienen de ser " "únicos." #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "L'usuariu/a foi esborráu dafechu de la base de datos." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificador:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nome:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Iconu:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Camudar..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Esborrar..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Llimpiar informes..." #: user_admin_delete_user msgid "Delete user" msgstr "Esborrar l'usuariu/a" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Esta operación va esborrar al usuariu/a y los sos informes de la base de " "datos." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Llimpiar los informes del usuariu/a" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Esta operación va llimpiar los informes de les xeres realizaes por esti/a " "usuariu/a nel periodu especificáu." #: success msgid "Operation successful" msgstr "Operación fecha con ésitu" #: bad_data msgid "Bad data!" msgstr "¡Datos incorreutos!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tiempu ente conexones (segundos)\\:" #: jclic_reports msgid "JClic reports" msgstr "Informes JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Contraseña\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirmar contraseña\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "¡Les contraseñes nun concasen\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_pt.po0000644000175000017500000002702711377161311024777 0ustar # Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-12-17 22:45+0000\n" "Last-Translator: José Borges Ferreira (underspell) \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Palavra-chave:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "É necessário fornecer uma palavra-chave para ter acesso à base de dados de " "relatórios" #: login_title msgid "Login" msgstr "Utilizador" #: submit msgid "Submit..." msgstr "Enviar..." #: login_incorrect msgid "Incorrect password!" msgstr "Palavra-chave incorreta" #: main_title msgid "Main menu" msgstr "Menu principal" #: users_admin_title msgid "Users and groups admin" msgstr "Utilizadores e grupos admin" #: group_report_title msgid "Group reports" msgstr "Relatórios do grupo" #: user_report_title msgid "User reports" msgstr "Relatórios do utilizador" #: act_report_title msgid "Activity reports" msgstr "Relatórios de actividades" #: db_admin_title msgid "Database admin" msgstr "Base de dados admin" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Não foi possível definir os valores da nova base de dados!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permitir que os utilizadores criem novos grupos" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permitir que os utilizadores criem novos utilizadores" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Selecione o grupo numa lista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Escolha o nome de utilizador numa lista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Base de dados possui tabelas de utilizadores e grupos" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Edtiar configurações..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Definir palavra-chave..." #: title msgid "Title" msgstr "Título" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editar configurações da base de dados" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Alterar palavra-chave do sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Nova palavra-chave" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Confirme a palavra-chave" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "As palavras-chave são diferentes!" #: report_group msgid "Group:" msgstr "Grupo:" #: report_user msgid "User:" msgstr "Utilizador:" #: report_project msgid "Project:" msgstr "Projecto:" #: report_all_projects msgid "All projects" msgstr "Todos os projectos" #: report_key msgid "Key:" msgstr "Chave:" #: report_code msgid "Code:" msgstr "Código:" #: report_context msgid "Context:" msgstr "Contexto:" #: report_from msgid "From:" msgstr "De:" #: month_1 msgid "january" msgstr "Janeiro" #: month_2 msgid "february" msgstr "Fevereiro" #: month_3 msgid "march" msgstr "Março" #: month_4 msgid "april" msgstr "Abril" #: month_5 msgid "may" msgstr "Maio" #: month_6 msgid "june" msgstr "Junho" #: month_7 msgid "july" msgstr "Julho" #: month_8 msgid "august" msgstr "Agosto" #: month_9 msgid "september" msgstr "Setembro" #: month_10 msgid "october" msgstr "Outubro" #: month_11 msgid "november" msgstr "Novembro" #: month_12 msgid "december" msgstr "Dezembro" #: report_to msgid "To:" msgstr "Até:" #: report_global_precision msgid "Global precision" msgstr "Precisão global" #: report_solved_activities msgid "Solved activities" msgstr "Actividades resolvidas" #: report_user_evolution msgid "User evolution" msgstr "Progresso do utilizador" #: report_group_evolution msgid "Group evolution" msgstr "Progresso do grupo" #: report_project_evolution msgid "Project evolution" msgstr "Progresso do projeto" #: report_result_distribution msgid "Result distribution" msgstr "Distribuição do resultado" #: report_no_data msgid "NO DATA" msgstr "SEM DADOS" #: report_users msgid "Users:" msgstr "Utilizadores:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sessões:" #: report_projects msgid "Projects:" msgstr "Projectos:" #: report_actDone msgid "Activities done:" msgstr "Actividades realizadas:" #: report_actSolved msgid "Activities solved:" msgstr "Actividades resolvidas:" #: report_totalTime msgid "Total time:" msgstr "Duração total:" #: report_globalPrec msgid "Global score:" msgstr "Pontuação global:" #: report_globalSummary msgid "Global summary" msgstr "Resumo global" #: report_header_date msgid "date" msgstr "data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sessões:" #: report_header_user msgid "user" msgstr "Utilizador" #: report_header_project msgid "project" msgstr "projecto" #: report_header_numActs msgid "activities" msgstr "actividades" #: report_header_actsSolved msgid "acts. solved" msgstr "resolvidas" #: report_header_time msgid "time" msgstr "tempo" #: report_header_prec msgid "score" msgstr "acertos" #: report_session_detail_show msgid "show session details" msgstr "mostrar pormenores da sessão" #: report_session_detail_title msgid "Activities done in session" msgstr "Actividades concluídas na sessão" #: report_header_activity msgid "activity" msgstr "actividade" #: report_header_actions msgid "actions" msgstr "acções" #: report_header_score msgid "corrects" msgstr "correctas" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "Ocultar pomenores da sessão" #: report_header_sessions msgid "sessions" msgstr "sessões" #: report_all_activities msgid "All activities" msgstr "Todas as actividades" #: report_activity msgid "Activity:" msgstr "Actividade:" #: report_many msgid "several" msgstr "vários" #: report_n_users msgid "users" msgstr "utilizadores" #: group_admin_title msgid "Groups administration" msgstr "Administração de grupos" #: group_admin_new_button msgid "New group..." msgstr "Novo grupo..." #: group_admin_groups msgid "Groups" msgstr "Grupos" #: report_actions msgid "Actions" msgstr "Acções" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Editar..." #: user_admin_title msgid "User admin" msgstr "Utilizador admin" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Limpar relatórios..." #: group_admin_properties msgid "Group properties" msgstr "Propriedades de grupo" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nome:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificador:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Ícone:" #: error msgid "ERROR" msgstr "ERRO" #: return msgid "return..." msgstr "voltar..." #: group_admin_users msgid "Users" msgstr "Utilizadores" #: group_admin_no_users msgid "This group has no users." msgstr "Este grupo não possui utilizadores" #: group_admin_create_user_button msgid "Create a new user..." msgstr "Criar um novo utilizador..." #: cancel msgid "Cancel" msgstr "Cancelar" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Nome de grupo incorrecto!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Identificador de grupo incorrecto!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Há outro grupo com o mesmo identificador na base de dados!" #: group_admin_delete_group msgid "Delete group" msgstr "Eliminar grupo" #: report_areyousure msgid "Are you sure?" msgstr "Tem a certeza?" #: YES msgid "Yes" msgstr "Sim" #: NOT msgid "Not" msgstr "Não" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Esta operação também excluirá da base de dados todos os utilizadores do " "grupo. Todos os dados desses utilizadores serão perdidos." #: db_error msgid "Unable to complete the task." msgstr "Impossível concluir a tarefa." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Limpar dados dos relatórios do grupo" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Esta operação elimina todos os relatórios de actividades realizadas pelos " "membros do grupo entre as datas especificadas." #: db_clear_reports_date msgid "Clear report data" msgstr "Limpar dados de relatórios" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Nome de utilizador inválido." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Identificador de utilizador inválido" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Há outro utilizador com o mesmo identificador na base de dados!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "O utilizador foi excluído com sucesso da base de dados." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificador:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nome:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Ícone:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Editar..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Eliminar..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Limpar relatórios..." #: user_admin_delete_user msgid "Delete user" msgstr "Eliminar utilizador" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Esta operação elimina o utilizador e respectivos relatórios na base de dados." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Limpar os dados de relatórios do utilizador" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "Esta operação limpa todos os relatórios das actividades" #: success msgid "Operation successful" msgstr "Operação bem sucedida!" #: bad_data msgid "Bad data!" msgstr "Dados incorrectos!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Tempo entre conexões (segundos)\\:" #: jclic_reports msgid "JClic reports" msgstr "Relatórios jClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Palavra-chave\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirme palavra-chave\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Palavras-chave diferentes\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_de.po0000644000175000017500000002625111377161311024742 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Passwort:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Sie benötigen ein gültiges Passwort, um auf die Datenbank zugreifen zu " "können." #: login_title msgid "Login" msgstr "Login" #: submit msgid "Submit..." msgstr "Absenden..." #: login_incorrect msgid "Incorrect password!" msgstr "Falsches Passwort!" #: main_title msgid "Main menu" msgstr "Hauptmenü" #: users_admin_title msgid "Users and groups admin" msgstr "User- und Gruppenverwaltung" #: group_report_title msgid "Group reports" msgstr "Berichte für Gruppe" #: user_report_title msgid "User reports" msgstr "Userberichte" #: act_report_title msgid "Activity reports" msgstr "Übungsberichte" #: db_admin_title msgid "Database admin" msgstr "Datenbankverwaltung" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Neue Werte für Datenbank konnten nicht übernommen werden!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "User dürfen neue Gruppen anlegen" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "User dürfen neue User anlegen" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Gruppe aus Liste auswählen" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Username aus Liste auswählen" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Datenbank beinhaltet Tabellen der User und Usergruppen" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Einstellungen bearbeiten..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Passwort festlegen..." #: title msgid "Title" msgstr "Titel" #: db_admin_edit_title msgid "Edit database settings" msgstr "Einstellungen für Datenbank bearbeiten" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Passwort für System ändern" #: db_admin_pw_newPwd msgid "New password" msgstr "Neues Passwort" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Passwort wiederholen" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Falsches Passwort!" #: report_group msgid "Group:" msgstr "Gruppe:" #: report_user msgid "User:" msgstr "User:" #: report_project msgid "Project:" msgstr "Projekt:" #: report_all_projects msgid "All projects" msgstr "Alle Projekte" #: report_key msgid "Key:" msgstr "Schlüssel:" #: report_code msgid "Code:" msgstr "Code:" #: report_context msgid "Context:" msgstr "Context:" #: report_from msgid "From:" msgstr "Von:" #: month_1 msgid "january" msgstr "Jänner" #: month_2 msgid "february" msgstr "Feber" #: month_3 msgid "march" msgstr "März" #: month_4 msgid "april" msgstr "April" #: month_5 msgid "may" msgstr "Mai" #: month_6 msgid "june" msgstr "Juni" #: month_7 msgid "july" msgstr "Juli" #: month_8 msgid "august" msgstr "August" #: month_9 msgid "september" msgstr "September" #: month_10 msgid "october" msgstr "Oktober" #: month_11 msgid "november" msgstr "November" #: month_12 msgid "december" msgstr "Detember" #: report_to msgid "To:" msgstr "Bis:" #: report_global_precision msgid "Global precision" msgstr "Gesamtpunkte" #: report_solved_activities msgid "Solved activities" msgstr "Richtig gelöste Übungen" #: report_user_evolution msgid "User evolution" msgstr "Userfortschritt" #: report_group_evolution msgid "Group evolution" msgstr "Fortschritt der Gruppe" #: report_project_evolution msgid "Project evolution" msgstr "Projektfortschritt" #: report_result_distribution msgid "Result distribution" msgstr "Ergebnisverteilung" #: report_no_data msgid "NO DATA" msgstr "KEINE DATEN" #: report_users msgid "Users:" msgstr "User:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sitzungen:" #: report_projects msgid "Projects:" msgstr "Projekte:" #: report_actDone msgid "Activities done:" msgstr "Abgeschlossene Übungen:" #: report_actSolved msgid "Activities solved:" msgstr "Richtig gelöste Übungen:" #: report_totalTime msgid "Total time:" msgstr "Gesamtzeit:" #: report_globalPrec msgid "Global score:" msgstr "Gesamtpunktestand:" #: report_globalSummary msgid "Global summary" msgstr "Gesamtergebnis" #: report_header_date msgid "date" msgstr "Datum" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sitzungen:" #: report_header_user msgid "user" msgstr "User" #: report_header_project msgid "project" msgstr "Projekt" #: report_header_numActs msgid "activities" msgstr "Übungen" #: report_header_actsSolved msgid "acts. solved" msgstr "Richtig gelöste Übungen" #: report_header_time msgid "time" msgstr "Zeit" #: report_header_prec msgid "score" msgstr "Punktestand" #: report_session_detail_show msgid "show session details" msgstr "Details der Sitzung anzeigen" #: report_session_detail_title msgid "Activities done in session" msgstr "In der Sitzung durchgfeführte Übungen" #: report_header_activity msgid "activity" msgstr "Übung" #: report_header_actions msgid "actions" msgstr "Aktionen" #: report_header_score msgid "corrects" msgstr "Richtige" #: report_header_solved msgid "ok" msgstr "OK" #: Y msgctxt "Y" msgid "Y" msgstr "J" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "Details der Sitzung nicht anzeigen" #: report_header_sessions msgid "sessions" msgstr "Sitzungen" #: report_all_activities msgid "All activities" msgstr "Alle Übungen" #: report_activity msgid "Activity:" msgstr "Übung:" #: report_many msgid "several" msgstr "mehrere" #: report_n_users msgid "users" msgstr "User" #: group_admin_title msgid "Groups administration" msgstr "Gruppenverwaltung" #: group_admin_new_button msgid "New group..." msgstr "Neue Gruppe..." #: group_admin_groups msgid "Groups" msgstr "Gruppen" #: report_actions msgid "Actions" msgstr "Aktionen" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Bearbeiten..." #: user_admin_title msgid "User admin" msgstr "Userverwaltung" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Löschen..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Berichte löschen..." #: group_admin_properties msgid "Group properties" msgstr "Gruppeneigenschaften" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Name:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Username:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Symbol:" #: error msgid "ERROR" msgstr "ERROR" #: return msgid "return..." msgstr "zurück..." #: group_admin_users msgid "Users" msgstr "User" #: group_admin_no_users msgid "This group has no users." msgstr "Keine Benutzer in dieser Gruppe vorhanden." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Neuen User anlegen..." #: cancel msgid "Cancel" msgstr "Löschen" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Falscher Gruppenname!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Falscher Gruppenname!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "" "Es wurde bereits eine andere Gruppe mit gleichem Namen in die Datenbank " "eingetragen!" #: group_admin_delete_group msgid "Delete group" msgstr "Gruppe löschen" #: report_areyousure msgid "Are you sure?" msgstr "Sind Sie sicher, dass Sie diese Aktion durchführen wollen?" #: YES msgid "Yes" msgstr "Ja" #: NOT msgid "Not" msgstr "Nein" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Dieser Vorgang löscht alle User der ausgewählten Gruppe aus der Datenbank. " "Alle Daten der ausgewählten User werden gelöscht." #: db_error msgid "Unable to complete the task." msgstr "Vorgang konnte nicht durchgeführt werden." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Daten der Gruppe löschen" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Dieser Vorgang löscht alle Übungsberichte für die Mitglieder der " "ausgewählten Gruppe im angegebenen Zeitraum aus der Datenbank." #: db_clear_reports_date msgid "Clear report data" msgstr "Daten löschen" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Ungültiger Username." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Ungültiger Username" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Username wird bereits von einem anderen User verwendet!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "User erfolgreich aus der Datenbank gelöscht." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Username:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Name:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Symbol:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Bearbeiten..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Löschen..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Berichte löschen..." #: user_admin_delete_user msgid "Delete user" msgstr "User löschen" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Dieser Vorgang löscht den ausgewählten User und alle dazugehörigen Berichte " "aus der Datenbank." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Userdaten löschen" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Dieser Vorgang löscht alle Ergebnisse des ausgewählten Users innerhalb des " "angegebenen Zeitraums aus der Datenbank." #: success msgid "Operation successful" msgstr "Vorgang erfolgreich abgeschlossen" #: bad_data msgid "Bad data!" msgstr "Falsche Eingabe!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Zeitabstand zwischen Verbindungen (in Sekunden):" #: jclic_reports msgid "JClic reports" msgstr "JClic Reports" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "J" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Passwort\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Passwort bestätigen\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Falsches Passwort\\!\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_cs.po0000644000175000017500000002637211377161311024763 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-23 21:34+0000\n" "Last-Translator: Konki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Heslo:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "Musíte zadat platné heslo pro přístup k databázi zpráv." #: login_title msgid "Login" msgstr "Přihlášení" #: submit msgid "Submit..." msgstr "Odeslat..." #: login_incorrect msgid "Incorrect password!" msgstr "Chybné heslo" #: main_title msgid "Main menu" msgstr "Hlavní menu" #: users_admin_title msgid "Users and groups admin" msgstr "Uživatelé a administrátoři skupin" #: group_report_title msgid "Group reports" msgstr "Skupinová sestava" #: user_report_title msgid "User reports" msgstr "Uživatelská sestava" #: act_report_title msgid "Activity reports" msgstr "Sestava aktivit" #: db_admin_title msgid "Database admin" msgstr "Administrátor databáze" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Nemohu nastavit hodnoty pro novou databázi!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Povolit uživatelům vytvářet nové skupiny" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Povolit uživatelům vytvářet nové uživatele" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Vybrat skupinu ze seznamu" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Vybrat uživatele ze seznamu" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Databáze má tabulky uživatelů a skupin" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Upravit nastavení..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Nastavit heslo..." #: title msgid "Title" msgstr "Titulek" #: db_admin_edit_title msgid "Edit database settings" msgstr "Upravit nastavení databáze" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Změnit heslo systému" #: db_admin_pw_newPwd msgid "New password" msgstr "Nové heslo" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Znovu napiš heslo" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Hesla se neshodují!" #: report_group msgid "Group:" msgstr "Skupina:" #: report_user msgid "User:" msgstr "Uživatel:" #: report_project msgid "Project:" msgstr "Projekt:" #: report_all_projects msgid "All projects" msgstr "Všechny projekty" #: report_key msgid "Key:" msgstr "Klávesa:" #: report_code msgid "Code:" msgstr "Kód:" #: report_context msgid "Context:" msgstr "Kontext:" #: report_from msgid "From:" msgstr "Od:" #: month_1 msgid "january" msgstr "leden" #: month_2 msgid "february" msgstr "únor" #: month_3 msgid "march" msgstr "březen" #: month_4 msgid "april" msgstr "duben" #: month_5 msgid "may" msgstr "květen" #: month_6 msgid "june" msgstr "červen" #: month_7 msgid "july" msgstr "červenec" #: month_8 msgid "august" msgstr "srpen" #: month_9 msgid "september" msgstr "září" #: month_10 msgid "october" msgstr "říjen" #: month_11 msgid "november" msgstr "listopad" #: month_12 msgid "december" msgstr "prosinec" #: report_to msgid "To:" msgstr "Komu:" #: report_global_precision msgid "Global precision" msgstr "Globální přesnost" #: report_solved_activities msgid "Solved activities" msgstr "Vyřešené aktivity" #: report_user_evolution msgid "User evolution" msgstr "Vývoj uživatele" #: report_group_evolution msgid "Group evolution" msgstr "Vývoj skupiny" #: report_project_evolution msgid "Project evolution" msgstr "Vývoj projektu" #: report_result_distribution msgid "Result distribution" msgstr "Rozdělení výsledků" #: report_no_data msgid "NO DATA" msgstr "NO DATA" #: report_users msgid "Users:" msgstr "Uživatelé:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Relace:" #: report_projects msgid "Projects:" msgstr "Projekty:" #: report_actDone msgid "Activities done:" msgstr "Vyzkoušené aktivity:" #: report_actSolved msgid "Activities solved:" msgstr "Vyřešené aktivity:" #: report_totalTime msgid "Total time:" msgstr "Celkový čas:" #: report_globalPrec msgid "Global score:" msgstr "Celkové skóre:" #: report_globalSummary msgid "Global summary" msgstr "Souhrnný přehled" #: report_header_date msgid "date" msgstr "datum" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Relace:" #: report_header_user msgid "user" msgstr "uživatel" #: report_header_project msgid "project" msgstr "projekt" #: report_header_numActs msgid "activities" msgstr "aktivity" #: report_header_actsSolved msgid "acts. solved" msgstr "akty. vyřešen" #: report_header_time msgid "time" msgstr "čas" #: report_header_prec msgid "score" msgstr "Skóre" #: report_session_detail_show msgid "show session details" msgstr "zobrazit podrobnosti relace (sessions)" #: report_session_detail_title msgid "Activities done in session" msgstr "Aktivity vyzkoušené v relaci" #: report_header_activity msgid "activity" msgstr "aktivita" #: report_header_actions msgid "actions" msgstr "akce" #: report_header_score msgid "corrects" msgstr "správně" #: report_header_solved msgid "ok" msgstr "ok" #: Y msgctxt "Y" msgid "Y" msgstr "Y" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "skrýt detaily relace" #: report_header_sessions msgid "sessions" msgstr "relace" #: report_all_activities msgid "All activities" msgstr "Všechny aktivity" #: report_activity msgid "Activity:" msgstr "Aktivita:" #: report_many msgid "several" msgstr "několik" #: report_n_users msgid "users" msgstr "uživatelé" #: group_admin_title msgid "Groups administration" msgstr "Správa skupin" #: group_admin_new_button msgid "New group..." msgstr "Nová skupina..." #: group_admin_groups msgid "Groups" msgstr "Skupiny" #: report_actions msgid "Actions" msgstr "Akce" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Upravit..." #: user_admin_title msgid "User admin" msgstr "Správce" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Smazat..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Vymazat zprávy ..." #: group_admin_properties msgid "Group properties" msgstr "Vlastnosti skupiny" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Jméno:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identifikátor:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Ikona:" #: error msgid "ERROR" msgstr "CHYBA" #: return msgid "return..." msgstr "zpět..." #: group_admin_users msgid "Users" msgstr "Uživatelé" #: group_admin_no_users msgid "This group has no users." msgstr "Tato skupina nemá žádné uživatele." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Vytvořit nového uživatele..." #: cancel msgid "Cancel" msgstr "Zrušit" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Chybný název skupiny!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Chybný identifikátor skupiny!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Je tam další skupina se stejným identifikátorem v databázi!" #: group_admin_delete_group msgid "Delete group" msgstr "Odstranit skupinu" #: report_areyousure msgid "Are you sure?" msgstr "Jste si jistý?" #: YES msgid "Yes" msgstr "Ano" #: NOT msgid "Not" msgstr "Ne" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Tato operace také odstraní z databáze všechny uživatele této skupiny. " "Všechna data těchto uživatelů budou smazána." #: db_error msgid "Unable to complete the task." msgstr "Nelze dokončit úkol." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Vyčistit hlášená data o skupině" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Tato operace smaže všechna hlášení činností provedených členy této skupiny " "mezi zadanými daty." #: db_clear_reports_date msgid "Clear report data" msgstr "Vyčistit hlášená data" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Neplatné uživatelské jméno." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Neplatný identifikátor uživatele" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Je zde jiný uživatel se stejným identifikátorem v databázi!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "Uživatel byl úspěšně smazán z databáze." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identifikátor:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Název:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Ikona:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Upravit..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Smazat..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Vymazat zprávy ..." #: user_admin_delete_user msgid "Delete user" msgstr "Odstranit uživatele" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "Tato operace vymaže tohoto uživatele a jeho hlášení z databáze." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Vyčistit datová hlášení uživatele" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Tato operace smaže všechna hlášení činností tohoto uživatele mezi " "stanovenými termíny." #: success msgid "Operation successful" msgstr "Operace proběhla úspěšně" #: bad_data msgid "Bad data!" msgstr "Špatná data!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Čas mezi připojením (sekundy)\\:" #: jclic_reports msgid "JClic reports" msgstr "JClic hlášení" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "A" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Heslo\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Potvrzení hesla\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Hesla se neshodují\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_eu.po0000644000175000017500000002667311377161311024773 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-02-18 16:37+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Pasahitza:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Txostenen datu-basera sartzeko balio duen pasahitza lortu behar duzu." #: login_title msgid "Login" msgstr "Saioa hasi" #: submit msgid "Submit..." msgstr "Bildatzen..." #: login_incorrect msgid "Incorrect password!" msgstr "Pasahitza ez da zuzena!" #: main_title msgid "Main menu" msgstr "Menu nagusia" #: users_admin_title msgid "Users and groups admin" msgstr "Erabiltzaile eta taldeen kudeaketa" #: group_report_title msgid "Group reports" msgstr "Talde-txostenak" #: user_report_title msgid "User reports" msgstr "Erabiltzailearen txostenak" #: act_report_title msgid "Activity reports" msgstr "Jarduera-txostenak" #: db_admin_title msgid "Database admin" msgstr "Datu-basearen kudeatzailea" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Datu-basearen baloreak ezin dira aldatu!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Utzi erabiltzaileei talde berriak sortzen" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Utzi erabiltzaileei erabiltzaile berriak sortzen" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Aukeratu taldea zerrendatik" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Aukeratu erabiltzaile-izena zerrendatik" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "Datu-baseak erabiltzaile eta taldeen taulak ditu" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Editatu ezarpenak..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Ezarri pasahitza..." #: title msgid "Title" msgstr "Izenburua" #: db_admin_edit_title msgid "Edit database settings" msgstr "Editatu datu-basearen ezarpenak" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Aldatu sistemaren pasahitza" #: db_admin_pw_newPwd msgid "New password" msgstr "Pasahitz berria" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Idatzi berriz pasahitza" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Bi testuak ez datoz bat!" #: report_group msgid "Group:" msgstr "Taldea:" #: report_user msgid "User:" msgstr "Erabiltzailea:" #: report_project msgid "Project:" msgstr "Proiektua:" #: report_all_projects msgid "All projects" msgstr "Proiektu guztiak" #: report_key msgid "Key:" msgstr "Giltza:" #: report_code msgid "Code:" msgstr "Kodea:" #: report_context msgid "Context:" msgstr "Testuingurua:" #: report_from msgid "From:" msgstr "Hemendik:" #: month_1 msgid "january" msgstr "urtarrila" #: month_2 msgid "february" msgstr "otsaila" #: month_3 msgid "march" msgstr "martxoa" #: month_4 msgid "april" msgstr "apirila" #: month_5 msgid "may" msgstr "maiatza" #: month_6 msgid "june" msgstr "ekaina" #: month_7 msgid "july" msgstr "uztaila" #: month_8 msgid "august" msgstr "abuztua" #: month_9 msgid "september" msgstr "iraila" #: month_10 msgid "october" msgstr "urria" #: month_11 msgid "november" msgstr "azaroa" #: month_12 msgid "december" msgstr "abendua" #: report_to msgid "To:" msgstr "Hona:" #: report_global_precision msgid "Global precision" msgstr "Zehaztapen orokorra" #: report_solved_activities msgid "Solved activities" msgstr "Egindako jarduerak" #: report_user_evolution msgid "User evolution" msgstr "Erabiltzailearen garapena" #: report_group_evolution msgid "Group evolution" msgstr "Taldearen garapena" #: report_project_evolution msgid "Project evolution" msgstr "Proiektuaren garapena" #: report_result_distribution msgid "Result distribution" msgstr "Emaitzen banaketa" #: report_no_data msgid "NO DATA" msgstr "DATURIK EZ" #: report_users msgid "Users:" msgstr "Erabiltzaileak:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Saioak:" #: report_projects msgid "Projects:" msgstr "Proiektuak:" #: report_actDone msgid "Activities done:" msgstr "Burututako jarduerak:" #: report_actSolved msgid "Activities solved:" msgstr "Egindako jarduerak:" #: report_totalTime msgid "Total time:" msgstr "Denbora guztira:" #: report_globalPrec msgid "Global score:" msgstr "Puntuazio orokorra:" #: report_globalSummary msgid "Global summary" msgstr "Laburpen orokorra" #: report_header_date msgid "date" msgstr "data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Saioak:" #: report_header_user msgid "user" msgstr "erabiltzailea" #: report_header_project msgid "project" msgstr "proiektua" #: report_header_numActs msgid "activities" msgstr "jarduerak" #: report_header_actsSolved msgid "acts. solved" msgstr "egindako jarduerak" #: report_header_time msgid "time" msgstr "denbora" #: report_header_prec msgid "score" msgstr "puntuazioa" #: report_session_detail_show msgid "show session details" msgstr "erakutsi saioaren zehaztasunak" #: report_session_detail_title msgid "Activities done in session" msgstr "Saioan egindako jarduerak" #: report_header_activity msgid "activity" msgstr "jarduera" #: report_header_actions msgid "actions" msgstr "ekintzak" #: report_header_score msgid "corrects" msgstr "zuzenak" #: report_header_solved msgid "ok" msgstr "ados" #: Y msgctxt "Y" msgid "Y" msgstr "B" #: N msgctxt "N" msgid "N" msgstr "E" #: report_session_detail_hide msgid "hide session details" msgstr "ezkutatu saioaren zehaztasunak" #: report_header_sessions msgid "sessions" msgstr "saioak" #: report_all_activities msgid "All activities" msgstr "Jarduera guztiak" #: report_activity msgid "Activity:" msgstr "Jarduera:" #: report_many msgid "several" msgstr "gehiegi" #: report_n_users msgid "users" msgstr "erabiltzaileak" #: group_admin_title msgid "Groups administration" msgstr "Taldeen kudeaketa" #: group_admin_new_button msgid "New group..." msgstr "Talde berria..." #: group_admin_groups msgid "Groups" msgstr "Taldeak" #: report_actions msgid "Actions" msgstr "Ekintzak" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Editatu..." #: user_admin_title msgid "User admin" msgstr "Erabiltzaileen kudeatzailea" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Ezabatu..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Garbitu txostenak..." #: group_admin_properties msgid "Group properties" msgstr "Taldearen propietateak" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Izena:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identifikatzailea:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Ikonoa:" #: error msgid "ERROR" msgstr "ERROREA" #: return msgid "return..." msgstr "itzuli..." #: group_admin_users msgid "Users" msgstr "Erabiltzaileak" #: group_admin_no_users msgid "This group has no users." msgstr "Taldeak ez du erabiltzailerik." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Sortu erabiltzaile berria..." #: cancel msgid "Cancel" msgstr "Utzi" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "Okerreko talde-izena!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "Okerreko talde-identifikatzailea!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "Bada beste talde bat identifikatzaile bera duena datu-basean!" #: group_admin_delete_group msgid "Delete group" msgstr "Ezabatu taldea" #: report_areyousure msgid "Are you sure?" msgstr "Ziur al zaude?" #: YES msgid "Yes" msgstr "Bai" #: NOT msgid "Not" msgstr "Ez" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Eragiketa honek talde honetako erabiltzaile guztiak ere ezabatuko ditu datu-" "basetik . Horien datu guztiak galdu egingo dira." #: db_error msgid "Unable to complete the task." msgstr "Ezin izan da eragiketa burutu." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Ezabatu taldearen txostenak" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Adierazitako daten artean talde honetako erabiltzaileek egindako jardueren " "txostenak ezabatuko ditu eragiketa honek." #: db_clear_reports_date msgid "Clear report data" msgstr "Ezabatu txostenak" #: user_admin_invalid_name msgid "Invalid user name." msgstr "Okerreko erabiltzaile-izena" #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "Okerreko erabiltzaile-identifikatzailea" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "Bada datu-basean identifikatzaile bera duen beste erabiltzaile bat!" #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "Erabiltzailea egoki ezabatu da datu-basetik." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identifikatzailea:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Izena:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Ikonoa:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Editatu..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Ezabatu..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Garbitu txostenak..." #: user_admin_delete_user msgid "Delete user" msgstr "Ezabatu erabiltzailea" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Eragiketa honek erabiltzaile hau eta bere txostenak datu-basetik ezabatuko " "ditu." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Ezabatu erabiltzaile-txostena" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Eragiketa honek adierazitako denbora-tartean erabiltzaile honek egindako " "jardueren txostenak ezabatuko ditu." #: success msgid "Operation successful" msgstr "Eragiketa ondo burutu da" #: bad_data msgid "Bad data!" msgstr "Datuak ez dira zuzenak!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Konexio arteko denbora-tartea (segundutan)\\:" #: jclic_reports msgid "JClic reports" msgstr "JClic txostenak" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "B" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "E" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Pasahitza\\:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Konfirmatu pasahitza\\:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Pasahitzak ez datoz bat\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServlets/reportMessages_ca.po0000644000175000017500000002701211377161311024731 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-22 18:07+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: login_pwd msgid "Password:" msgstr "Contrasenya:" #: login_desc msgid "" "You need to provide a valid password in order to access the reports database." msgstr "" "Heu d'escriure una contrasenya correcta per accedir a la base de dades " "d'informes." #: login_title msgid "Login" msgstr "Connexió a la base de dades" #: submit msgid "Submit..." msgstr "Envia dades..." #: login_incorrect msgid "Incorrect password!" msgstr "Contrasenya incorrecta!" #: main_title msgid "Main menu" msgstr "Menú principal" #: users_admin_title msgid "Users and groups admin" msgstr "Administració de grups i usuaris" #: group_report_title msgid "Group reports" msgstr "Informes de grup" #: user_report_title msgid "User reports" msgstr "Informes d'usuari/a" #: act_report_title msgid "Activity reports" msgstr "Informes d'activitat" #: db_admin_title msgid "Database admin" msgstr "Administració de la base de dades" #: db_admin_settings_error msgid "Unable to set the new database values!" msgstr "Ha estat impossible fixar els nous valors per a la base de dades!" #: db_admin_param_agc msgid "Allow users to create new groups" msgstr "Permetre als usuaris crear nous grups" #: db_admin_param_auc msgid "Allow users to create new users" msgstr "Permetre als usuaris la creació de nous usuaris" #: db_admin_param_shgl msgid "Select group in a list" msgstr "Seleccionar grup en una llista" #: db_admin_param_shul msgid "Select user name in a list" msgstr "Seleccionar el nom d'usuari/a en una llista" #: db_admin_param_ut msgid "Database has tables of users and groups" msgstr "La base de dades té taules d'usuaris i grups" #: db_admin_edit_btn msgid "Edit settings..." msgstr "Edita les propietats..." #: db_admin_pw_edit_btn msgid "Set password..." msgstr "Estableix la contrasenya..." #: title msgid "Title" msgstr "Títol" #: db_admin_edit_title msgid "Edit database settings" msgstr "Edita les propietats de la base de dades" #: db_admin_pw_edit_title msgid "Change system password" msgstr "Canvia la contrasenya del sistema" #: db_admin_pw_newPwd msgid "New password" msgstr "Nova contrasenya" #: db_admin_pw_verifyPwd msgid "Retype password" msgstr "Torna a escriure la contrasenya" #: db_admin_pw_noFit msgid "Password fields don't fit!" msgstr "Els dos texts no coïncideixen!" #: report_group msgid "Group:" msgstr "Grup:" #: report_user msgid "User:" msgstr "Usuari:" #: report_project msgid "Project:" msgstr "Projecte:" #: report_all_projects msgid "All projects" msgstr "Tots els projectes" #: report_key msgid "Key:" msgstr "Clau:" #: report_code msgid "Code:" msgstr "Codi:" #: report_context msgid "Context:" msgstr "Context:" #: report_from msgid "From:" msgstr "Des de:" #: month_1 msgid "january" msgstr "gener" #: month_2 msgid "february" msgstr "febrer" #: month_3 msgid "march" msgstr "març" #: month_4 msgid "april" msgstr "abril" #: month_5 msgid "may" msgstr "maig" #: month_6 msgid "june" msgstr "juny" #: month_7 msgid "july" msgstr "juliol" #: month_8 msgid "august" msgstr "agost" #: month_9 msgid "september" msgstr "setembre" #: month_10 msgid "october" msgstr "octubre" #: month_11 msgid "november" msgstr "novembre" #: month_12 msgid "december" msgstr "desembre" #: report_to msgid "To:" msgstr "Fins a:" #: report_global_precision msgid "Global precision" msgstr "Precisió global" #: report_solved_activities msgid "Solved activities" msgstr "Activitats resoltes" #: report_user_evolution msgid "User evolution" msgstr "Evolució de l'usuari/a" #: report_group_evolution msgid "Group evolution" msgstr "Evolució del grup" #: report_project_evolution msgid "Project evolution" msgstr "Evolució del projecte" #: report_result_distribution msgid "Result distribution" msgstr "Distribució de resultats" #: report_no_data msgid "NO DATA" msgstr "SENSE DADES" #: report_users msgid "Users:" msgstr "Usuaris:" #: report_sessions msgctxt "report_sessions" msgid "Sessions:" msgstr "Sessions:" #: report_projects msgid "Projects:" msgstr "Projectes:" #: report_actDone msgid "Activities done:" msgstr "Activitats fetes:" #: report_actSolved msgid "Activities solved:" msgstr "Activitats resoltes:" #: report_totalTime msgid "Total time:" msgstr "Temps total:" #: report_globalPrec msgid "Global score:" msgstr "Precisió global:" #: report_globalSummary msgid "Global summary" msgstr "Resum global" #: report_header_date msgid "date" msgstr "data" #: report_session_list msgctxt "report_session_list" msgid "Sessions:" msgstr "Sessions realitzades:" #: report_header_user msgid "user" msgstr "usuari/a" #: report_header_project msgid "project" msgstr "projecte" #: report_header_numActs msgid "activities" msgstr "activitats" #: report_header_actsSolved msgid "acts. solved" msgstr "act. resoltes" #: report_header_time msgid "time" msgstr "temps" #: report_header_prec msgid "score" msgstr "precisió" #: report_session_detail_show msgid "show session details" msgstr "mostrar detalls de la sessió" #: report_session_detail_title msgid "Activities done in session" msgstr "Activitats realitzades a la sessió" #: report_header_activity msgid "activity" msgstr "activitat" #: report_header_actions msgid "actions" msgstr "accions" #: report_header_score msgid "corrects" msgstr "encerts" #: report_header_solved msgid "ok" msgstr "bé" #: Y msgctxt "Y" msgid "Y" msgstr "S" #: N msgctxt "N" msgid "N" msgstr "N" #: report_session_detail_hide msgid "hide session details" msgstr "amaga els detalls de la sessió" #: report_header_sessions msgid "sessions" msgstr "sessions" #: report_all_activities msgid "All activities" msgstr "Totes les activitats" #: report_activity msgid "Activity:" msgstr "Activitat:" #: report_many msgid "several" msgstr "diversos" #: report_n_users msgid "users" msgstr "usuaris" #: group_admin_title msgid "Groups administration" msgstr "Administració de grups" #: group_admin_new_button msgid "New group..." msgstr "Nou grup..." #: group_admin_groups msgid "Groups" msgstr "Grups" #: report_actions msgid "Actions" msgstr "Accions" #: group_admin_edit_button msgctxt "group_admin_edit_button" msgid "Edit..." msgstr "Modifica..." #: user_admin_title msgid "User admin" msgstr "Administració d'usuaris" #: group_admin_delete_button msgctxt "group_admin_delete_button" msgid "Delete..." msgstr "Elimina..." #: group_admin_clear_button msgctxt "group_admin_clear_button" msgid "Clear reports..." msgstr "Elimina informes..." #: group_admin_properties msgid "Group properties" msgstr "Propietats del grup" #: group_admin_name msgctxt "group_admin_name" msgid "Name:" msgstr "Nom:" #: group_admin_id msgctxt "group_admin_id" msgid "Identifier:" msgstr "Identificador:" #: group_admin_icon msgctxt "group_admin_icon" msgid "Icon:" msgstr "Icona:" #: error msgid "ERROR" msgstr "ERROR" #: return msgid "return..." msgstr "torna..." #: group_admin_users msgid "Users" msgstr "Usuaris" #: group_admin_no_users msgid "This group has no users." msgstr "Aquest grup no conté cap usuari/a." #: group_admin_create_user_button msgid "Create a new user..." msgstr "Crea un nou usuari/a..." #: cancel msgid "Cancel" msgstr "Cancel·la" #: group_admin_invalid_name msgid "Incorrect group name!" msgstr "El nom del grup és incorrecte!" #: group_admin_invalid_id msgid "Incorrect group identifier!" msgstr "L'identificador de grup és incorrecte!" #: group_admin_id_already_exists msgid "There is another group with the same identifier in the database!" msgstr "" "Ja hi ha un altre grup amb el mateix identificador a la base de dades!" #: group_admin_delete_group msgid "Delete group" msgstr "Elimina el grup" #: report_areyousure msgid "Are you sure?" msgstr "Segur que voleu realitzar aquesta operació?" #: YES msgid "Yes" msgstr "Sí" #: NOT msgid "Not" msgstr "No" #: group_admin_delete_group_explain msgid "" "This operation will also delete on the database all users of this group. All " "data of these users will be lost." msgstr "" "Aquesta operació també eliminará de la base de dades a tots els usuaris " "d'aquest grup. Totes les seves dades es perdran." #: db_error msgid "Unable to complete the task." msgstr "No s'ha pogut realitzar l'operació." #: group_admin_clear_group msgid "Clear report data of group" msgstr "Esborra els informes del grup" #: group_admin_clear_group_explain msgid "" "This operation will clear all the reports of the activities done by the " "members of this group between the specified dates." msgstr "" "Aquesta operació esborrarà tots els informes de les activitats realitzades " "pels membres d'aquest grup entre les dates indicades." #: db_clear_reports_date msgid "Clear report data" msgstr "Esborra els informes" #: user_admin_invalid_name msgid "Invalid user name." msgstr "El nom d'usuari/a és incorrecte." #: user_admin_invalid_id msgid "Invalid user identifier" msgstr "L'identificador d'usuari/a és incorrecte!" #: user_admin_id_already_exists msgid "There is another user with the same identifier in the database!" msgstr "" "Ja hi ha un altre usuari/a amb aquest identificador a la base de dades. Els " "noms es poden repetir (en diferents grups), però els identificadors han de " "ser únics." #: user_admin_user_deleted msgid "The user was successfully deleted from the database." msgstr "L'usuari/a ha estat eliminat satisfactòriament de la base de dades." #: user_admin_id msgctxt "user_admin_id" msgid "Identifier:" msgstr "Identificador:" #: user_admin_name msgctxt "user_admin_name" msgid "Name:" msgstr "Nom:" #: user_admin_icon msgctxt "user_admin_icon" msgid "Icon:" msgstr "Icona:" #: user_admin_edit_button msgctxt "user_admin_edit_button" msgid "Edit..." msgstr "Modifica..." #: user_admin_delete_button msgctxt "user_admin_delete_button" msgid "Delete..." msgstr "Elimina..." #: user_admin_clear_button msgctxt "user_admin_clear_button" msgid "Clear reports..." msgstr "Elimina informes..." #: user_admin_delete_user msgid "Delete user" msgstr "Elimina l'usuari/a" #: user_admin_delete_user_explain msgid "" "This operation will delete this user and his reports from the database." msgstr "" "Aquesta operació eliminarà aquest/a usuari/a i els seus informes de la base " "de dades." #: user_admin_clear_user msgid "Clear report data of user" msgstr "Elimina els informes de l'usuari/a" #: user_admin_clear_user_explain msgid "" "This operation will clear all the reports of the activities done by this " "user between the specified dates." msgstr "" "Aquesta operació eliminará els informes de les activitats realitzades per " "aquest/a usuari/a en el període especificat." #: success msgid "Operation successful" msgstr "Operació realitzada amb èxit" #: bad_data msgid "Bad data!" msgstr "Dades incorrectes!" #: db_admin_param_lap msgid "Time between connections (seconds)\\:" msgstr "Temps entre connexions (segons):" #: jclic_reports msgid "JClic reports" msgstr "Informes JClic" #: YES_SHORT msgctxt "YES_SHORT" msgid "Y" msgstr "S" #: NOT_SHORT msgctxt "NOT_SHORT" msgid "N" msgstr "N" #: user_admin_pw_prompt msgid "Password\\:" msgstr "Contrasenya:" #: user_admin_pw_prompt_confirm msgid "Confirm password\\:" msgstr "Confirmació de la contrasenya:" #: user_admin_err_bad_pw msgid "Passwords don't match\\!" msgstr "Les contrasenyes no coïncideixen\\!" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/0000755000175000017500000000000011377161311017160 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_it.po0000644000175000017500000024410711377161311023156 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-15 18:03+0000\n" "Last-Translator: nilocram \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descrizione" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nome dell'attività" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nome:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descrizione dell'attività" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Rapporti" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Includi questa attività nei rapporti" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Includi i risultati di queste attività nei rapporti degli utenti" #: edit_act_code msgid "Code:" msgstr "Codice:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Codice opzionale usato per raggruppare e fare ricerche nel database dei " "rapporti." #: edit_act_reportActions msgid "Report user actions" msgstr "Resoconto delle attività dell'utente" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Registra i dettagli di tutte le attività eseguite dagli utenti" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Contatori" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Cronometro" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Mostra/nascondi il cronometro" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Contatore dei tentativi" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Mostra/nascondi il contatore dei tentativi" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Punteggio" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Mostra/nascondi il punteggio." #: edit_act_maxTime msgid "Max time:" msgstr "Tempo massimo:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Tempo massimo per risolvere l'attività, in secondi, o 0 per un tempo " "illimitato." #: edit_act_countdown msgid "Countdown" msgstr "Conto alla rovescia" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "Il contatore inizia con il valore massimo, decrescendo fino a 0." #: edit_act_maxActions msgid "Max tries:" msgstr "Numero massimo dei tentativi:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Massimo numero di tentativi premesso, o 0 per tentativi illimitati." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Pulsanti" #: edit_act_helpBtn msgid "Help" msgstr "Aiuto" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Mostra/nascondi il pulsante di aiuto" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Mostra la soluzione" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Mostra questo messaggio:" #: edit_act_infoBtn msgid "Information" msgstr "Informazioni" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Mostra/Nascondi il pulsante informativo" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Mostra questa URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Esegui questo comando:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Indirizzo del sito Web da mostrare quando si clicca sul pulsante informativo" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" "Linea di comando da eseguire quando si clicca sul pulsante d'informazione." #: edit_act_mainWindow msgid "Main window:" msgstr "Finestra principale:" #: edit_act_gameWindow msgid "Game window:" msgstr "Finestra di lavoro:" #: edit_act_margin msgid "Margin:" msgstr "Margine:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Spazio orizzontale e verticale tra gli oggetti visuali." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Colore di sfondo:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Cambia il colore di sfondo." #: edit_gradient_startColor msgid "Start color:" msgstr "Colore di partenza:" #: edit_gradient_endColor msgid "End color:" msgstr "Colore finale:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Selezione del colore di partenza" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Selezione del colore finale" #: edit_gradient_cycles msgid "Cycles:" msgstr "Ripetizioni:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Numero di ripetizioni della sfumatura sulla superificie colorata" #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientamento:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "" "Orientamento della sfumatura, misurato in gradi rispetto all'orizzontale" #: edit_act_gradient msgid "Gradient:" msgstr "Sfumatura:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Usa sfumature di colore" #: edit_color_opacity msgid "Opacity" msgstr "Opacità" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Imposta il valore di canale alpha del colore (opacità)" #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Sfumatura" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Usa i valori di default (sfumatura nulla)" #: edit_act_image msgid "Image:" msgstr "Immagine:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descrizione" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nome e descrizione" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Ripetuto" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Anteprima:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Bordo" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Disegna una linea attorno alla finestra" #: edit_act_transparent msgid "Transparent" msgstr "Trasparente" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "La finestra ha lo sfondo trasparente" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Larghezza:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altezza:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Larghezza dell'oggetto, misurata in pixels" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Altezza dell'oggetto, misurata in pixels" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrato" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "L'oggetto sarà centrato sulla finestra principale" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Posizione orizzontale assoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Posizione verticale assoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interfaccia utente" #: edit_act_image_tooltip msgid "Select an image" msgstr "Seleziona un'immagine" #: edit_act_text msgid "Text:" msgstr "Testo:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Testo da mostrare in questo oggetto" #: edit_font_face msgid "Typeface:" msgstr "Carattere:" #: edit_font_size msgid "Size:" msgstr "Dimensione:" #: edit_font_bold msgid "Bold" msgstr "Grassetto" #: edit_font_italic msgid "Italic" msgstr "Corsivo" #: edit_font_underline msgid "Underline" msgstr "Sottolineato" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Stile:" #: edit_cell_title msgid "Cell contents" msgstr "Contenuto della cella" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Messaggi" #: edit_act_msg_initial msgid "Initial message:" msgstr "Messaggio iniziale:" #: edit_act_msg_final msgid "Final message:" msgstr "Messaggio finale:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Messaggio precedente:" #: edit_act_msg_error msgid "Error message:" msgstr "Messaggio d'errore:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Messaggio da visualizzare all'avvio dell'attività" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Messaggio da visualizzare alla conclusione dell'attività" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "" "Messaggio da visualizzare quando l'attività si conclude con degli errori" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Messaggio da visualizzare prima dell'avvio dell'attività (solo in alcuni " "tipi di attività)" #: edit_align msgid "Align:" msgstr "Allineamento:" #: edit_act_textColor msgid "Text color:" msgstr "Colore del testo:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Colore usato per disegnare il testo" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Colore dell'ombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "" "Colore usato per disegnare l'ombreggiatura del testo, quando applicabile" #: edit_act_shadow msgid "Shadow" msgstr "Ombreggiatura" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Disegna il testo con l'ombreggiatura" #: edit_act_borderColor msgid "Border color:" msgstr "Colore del bordo:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Colore usato per disegnare il bordo della cella" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Colore di stato inattivo:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Colore usato quando la cella è disabilitata" #: edit_act_altColor msgid "Alternative color:" msgstr "Colore alternativo:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Colore usato per disegnare il contenuto alternativo nelle celle risolte" #: edit_cell_marked msgid "Marked" msgstr "Evidenziato" #: edit_cell_disabled msgid "Disabled" msgstr "Disabilitato" #: edit_cell_alt msgid "Alternative" msgstr "Alternativa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Margine interno:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Spazio tra il bordo della cella e il testo." #: edit_cell_borderWidth msgid "Border width:" msgstr "Larghezza del bordo:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Larghezza della punta usata per disegnare il bordo standard" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Larghezza del marcatore:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Larghezza della punta usata per disegnare il bordo quando la cella è marcata " "o selezionata" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Anteprima nello stato \"alternativa\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Anteprima nello stato \"disabilitato\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Anteprima nello stato \"marcato\"" #: edit_act_testAction msgid "Preview activity" msgstr "Anteprima dell'attività" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Anteprima e prova dell'attività" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descrizione" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Titolo e descrizione dell'attività" #: edit_act_panels_options msgid "Options" msgstr "Opzioni" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opzioni dell'attività" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Finestra" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspetto, dimensioni e posizione della finestra dell'attività" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Messaggi" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Contenuto dei messaggi dell'attività" #: edit_act_panels_panel msgid "Panel" msgstr "Pannello" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Contenuti del pannello" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Stile" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Imposta il colore delle celle, font e dimensioni" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Stile:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Permetti al testo di sconfinare dall'immagine" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Permette al testo di sconfinare dall'immagine" #: edit_media_exists_1 msgid "The file" msgstr "Il file" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "già esiste nella biblioteca multimediale!" #: edit_act_shaper msgid "Shaper:" msgstr "Pezzi:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Errore dei pezzi:" #: edit_act_num_cols msgid "Columns:" msgstr "Colonne:" #: edit_act_num_rows msgid "Rows:" msgstr "Righe:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Altezza della dentatura" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Larghezza della dentatura" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribuzione casuale" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Proprietà dei pezzi" #: edit_act_panels_text msgid "Text" msgstr "Testo" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Testo dell'attività" #: action_saveFile_caption msgid "Save..." msgstr "Salva..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Salva il progetto corrente" #: action_docTree_caption msgid "Document tree..." msgstr "Albero del documento..." #: action_docTree_keys msgid "T*" msgstr "T*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Mostra il documento del progetto come un albero" #: edit_docTree_title msgid "Document tree" msgstr "Albero del documento" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Referenziato da:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Attenzione\\:

Questo " "progetto si connette con altri progetti.
Vuoi esplorare i riferimenti e " "caricare tutti i files relativi?

(Conviene rispondere SI' quando si " "vogliono importare attività di Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Tipo:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Sconosciuto" #: edit_mc_type_sound msgid "Play sound" msgstr "Riproduci un suono" #: edit_mc_type_video msgid "Play video" msgstr "Riproduci un video" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Riproduci un file MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Riproduci un CD audio" #: edit_mc_type_record msgid "Record sound" msgstr "Registra un suono" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Riproduci un suono registrato" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Vai all'attività" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Vai alla sequenza" #: edit_mc_type_run_external msgid "Run program" msgstr "Esegui il programma" #: edit_mc_type_url msgid "Show URL" msgstr "Mostra l'URL" #: edit_mc_type_exit msgid "End" msgstr "Fine" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Torna al programma" #: edit_mc_level msgid "Priority level:" msgstr "Livello di priorità:" #: edit_mc_file msgid "File:" msgstr "File:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parametri:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Da:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "A:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Lunghezza max.:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Registratore:" #: edit_mc_stretch msgid "Stretch size" msgstr "Comprimi le dimensioni" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Posizione:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Da:" #: edit_mc_location_from_box msgid "Cell" msgstr "Cella" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Finestra" #: edit_mc_location_from_frame msgid "Frame" msgstr "Fotogramma" #: edit_mc_loop msgid "Loop playback" msgstr "Esecuzione continua" #: edit_mc_autostart msgid "Auto start" msgstr "Auto start" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Cattura il mouse" #: edit_mc_title msgid "Multimedia and active content" msgstr "Contenuti multimediali e attivi" #: edit_mc_label msgid "Active content:" msgstr "Contenuto attivo:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Selezione degli oggetti multimediali" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Libreria multimediale" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centrato sulla cella" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centrato sulla finestra" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Specifica la posizione:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Struttura dell'albero incorretta o dati errati!" #: edit_act_panels_controls msgid "Controls" msgstr "Controlli" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opzioni per i pulsanti e i contatori" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Tipo:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Disposizione della griglia:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posizione relativa dei pannelli A e B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Risoluzione inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "L'attività è risolta quando risultano collegati tutti gli elementi assegnati " "di \"B\"." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Mostra tutte le frecce" #: edit_act_alt msgid "Alternative content:" msgstr "Contenuto alternativo:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Contenuto mostrato nelle celle risolte e nelle celle non assegnate." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Modifica il contenuto alternativo" #: edit_act_grid msgid "Grid" msgstr "Griglia" #: edit_act_grid_A msgid "Grid A" msgstr "Griglia A" #: edit_act_grid_B msgid "Grid B" msgstr "Griglia B" #: edit_act_grid_layout msgid "Layout" msgstr "Disposizione" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relazioni" #: edit_seq_activity_header msgid "activity" msgstr "attività" #: edit_seq_tag_header msgid "tag" msgstr "tag" #: edit_seq_jump_header msgid "jump to" msgstr "salta a" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Attività:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etichetta:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descrizione:" #: edit_seq_auto msgid "Move on automatically" msgstr "Vai avanti automaticamente" #: edit_seq_delay msgid "Delay:" msgstr "Ritardo:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Vai avanti" #: edit_seq_action_back msgid "Go bak" msgstr "Vai indietro" #: edit_seq_action_jump msgid "Jump to..." msgstr "Salta a..." #: edit_seq_action_stop msgid "Stop" msgstr "Arresta" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Torna al programma" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Esci da JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Freccia avanti:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Freccia indietro:" #: edit_seq_action msgid "Action:" msgstr "Azione:" #: edit_seq_button_enabled msgid "Show button" msgstr "Mostra il pulsante" #: edit_seq_project msgid "JClic Project:" msgstr "Progetto JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posizione assoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "L'oggetto sarà posizionato alle coordinate X e Y specificate" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Posizione:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Nuovo elemento della sequenza..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Inserisci un nuovo elemento nella sequenza delle attività" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "" "Per favore seleziona un'attività per il nuovo elemento della sequenza." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "Non posso creare un nuovo elemento senza un'attività!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Questo progetto non ha attività! Non è possibile creare una sequenza di " "attività in un progetto vuoto." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Obiettivo del salto:" #: edit_seq_jump_title msgid "Jump target" msgstr "Obiettivo del salto" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Aggiungi una nuova attività al progetto" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Tipo di attività:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nome:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" "Per favore seleziona il tipo di attività da creare e dai ad essa un nome:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Devi selezionare un tipo di attività!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Devi specificare un nome per l'attività!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Impossibile creare l'attività!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Nome di classe Java:" #: edit_text_act_format msgid "Format" msgstr "Formato" #: edit_text_act_answer msgid "Answer" msgstr "Risposta" #: edit_text_act_popup msgid "Pop up" msgstr "Pop up" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Risposte valide:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Aggiungi un nuovo elemento alla lista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Modifica l'elemento selezionato" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Cancella l'elemento selezionato" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Sposta in alto" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Sposta in basso" #: edit_list_newValue msgid "New text:" msgstr "Nuovo testo:" #: edit_list_addElement msgid "Add new list element" msgstr "Aggiungi un nuovo elemento di testo" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modifica il testo selezionato" #: edit_text_act_target msgid "Target" msgstr "Testo nascosto" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Lunghezza max.:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Massimo numero di caratteri nella risposta." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Carattere di riempimento" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Carattere utilizzato per indicare il testo nascosto" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Lunghezza iniziale:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Numero dei caratteri di riempimento che saranno visualizzati all'inizio " "dell'attività." #: edit_text_act_iniText msgid "Initial text:" msgstr "Testo iniziale:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "" "Testo visualizzato all'inizio dell'attività al posto del testo nascosto." #: edit_text_act_list msgid "Show a list of options:" msgstr "Mostra una lista di opzioni:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" "Mostra una lista di opzioni tra le quali l'utente è chiamato a scegliere." #: edit_text_act_check_title msgid "Correction options" msgstr "Opzioni di correzione" #: edit_text_act_popup_no msgid "No pop up" msgstr "Niente pop up" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Pop up automatico" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Pop up in caso di errori" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Pop up con F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Tipo:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Ritardo del pop up:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Tempo max:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Solo suono" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "Per creare un nuovo testo nascosto devi selezionare un frammento di testo!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "Il testo nascosto non può includere caratteri accapo o tab." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Non possono essere registrati testi nascosti!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "I testi nascosti non possono contenere celle!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Colore del foglio:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Modifica gli stili del documento..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Stile principale:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tabulazione:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Spazi tra i tabulatori:" #: edit_text_act_colors msgid "Colors:" msgstr "Colori:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Colori del testo nascosto:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Colori degli errori:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Anteprima:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Testo standard" #: edit_text_act_styleSample_target msgid "target" msgstr "testo nascosto" #: edit_text_act_styleSample_error msgid "error" msgstr "errore" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "testo standard" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "testo standard." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Attenzione: questa azione toglierà il testo nascosto attualmente " "selezionato. Vuoi procedere?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Schermo precedente..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Non mostrare alcun testo prima dell'inizio dell'attività" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Mostra il testo completo dell'esercizio" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Mostra questo testo:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Tempo max:" #: edit_text_act_edit_target msgid "Target..." msgstr "Testo nascosto..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Mostra il pulsante di correzione" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Pulsante di testo:" #: edit_text_act_checkCase msgid "Match case" msgstr "Considera maiuscole/minuscole" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Considera accenti e caratteri speciali" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Considera la punteggiatura" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permetti spazi ripetuti" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Criteri" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Passa alla nuova parola nascosta una volta completato il riempimento" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Passa alla nuova parola solo dopo risposta corretta" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indica gli errori lettera per lettera" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parametri dell'algoritmo d'analisi:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Passi:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Campo d'esplorazione:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Controllo" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Analisi della risposta" #: edit_text_act_check_bt msgid "Correction..." msgstr "Correzione..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Pulsante di correzione" #: edit_text_act_checkProgress msgid "Progress" msgstr "Avanzamento" #: edit_text_act_typeBtn msgid "Type..." msgstr "Tipo..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordina i paragrafi" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordina le parole" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Sparpaglia le parole nel paragrafo" #: edit_text_act_type_title msgid "Activity type" msgstr "Tipo di attività" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Questa azione cancellerà tutte le parole nascoste esistenti. Vuoi procedere?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identifica le parole" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identifica i caratteri" #: edit_media_change_name msgid "Change name..." msgstr "Cambia il nome..." #: edit_media_change_file msgid "Change file..." msgstr "Cambia il file..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Salva in un file ZIP" #: edit_media_type msgid "Media type:" msgstr "Tipo di file multimediale:" #: edit_media_size msgid "File size:" msgstr "Grandezza del file:" #: edit_media_show_type msgid "Files of type:" msgstr "Archivi di tipo:" #: edit_media_preview msgid "Preview media" msgstr "Anteprima del file multimediale" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Anteprima della risorsa multimediale" #: edit_media_rename msgid "Change resource name" msgstr "Cambia il nome di risorsa" #: edit_media_rename_title msgid "Rename" msgstr "Rinomina" #: edit_media_rename_prompt msgid "New name:" msgstr "Nuovo nome:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Nome di risorsa non valido!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "C'è un'altra risorsa con questo nome! Ogni risorsa deve avere un nome unico." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "File non valido!" #: err_media_chfile_different msgid "File must be of same type" msgstr "Il file deve essere dello stesso tipo" #: edit_media_font_error msgid "Unable to load font!" msgstr "Impossibile caricare il font!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Salva il file (estrai da ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Aggiorna da file il contenuto multimediale" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Questo non è un file \"reale\", ma un oggetto collocato in un contenitore " "ZIP. Per usare questa funzione, un file con lo stesso nome deve essere " "presente nella cartella dove si trova il file ZIP." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Attività" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Sequenze" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Libreria multimediale" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Gestisci immagini e altri file multimediali usati nel progetto" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Crea e modifica le attività del progetto" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Modifica e crea sequenze di attività" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Titolo:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Titolo di progetto" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Progetto" #: edit_project_tooltip msgid "Edit project properties" msgstr "Modifica le proprietà del progetto" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descrizione:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descrizione generale del progetto" #: edit_project_area msgid "Areas:" msgstr "Aree:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Aree curricolari del progetto" #: edit_project_level msgid "Levels:" msgstr "Livelli:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Livelli educativi del progetto" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descrittori:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descrittori del progetto (separati da virgola)" #: edit_project_languages msgid "Languages:" msgstr "Lingue:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Lingue usate nel progetto" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Cambia la lingua selezionata" #: edit_project_languages_add msgid "Add language" msgstr "Aggiungi una lingua" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Codici di lingua ISO-639:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autori:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Persone coinvolte nel progetto" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nome:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "e-mail:" #: edit_project_author_rol msgid "Rol:" msgstr "Ruolo:" #: edit_project_author_organization msgid "Organization:" msgstr "Organizzazione:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Commenti:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nome dell'autore (richiesto)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "E-mail dell'autore (opzionale)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Ruolo della persona nel progetto: autore, collaboratore, disegni, suoni... " "(opzionale)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Scuola, università, associazione... (opzionale)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Pagina web personale (opzionale)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Campo per altre informazioni (opzionale)" #: edit_project_author_info msgid "Author info:" msgstr "Informazioni sull'autore:" #: edit_project_author_add msgid "Add author to list" msgstr "Aggiungi un autore alla lista" #: edit_project_author_edit msgid "Edit author info" msgstr "Modifica le informazioni sull'autore" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nome:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nome della scuola" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "e-mail:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Indirizzo e-mail della scuola" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Sito web della scuola" #: edit_project_org_address msgid "Address:" msgstr "Indirizzo:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Indirizzo snail-mail" #: edit_project_org_pc msgid "PC:" msgstr "c.p.:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Codice postale" #: edit_project_org_city msgid "City:" msgstr "Città:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Città della scuola" #: edit_project_org_country msgid "Country:" msgstr "Nazione:" #: edit_project_org_state msgid "State:" msgstr "Stato:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Commenti:" #: edit_project_org msgid "School/s:" msgstr "Scuola/e:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Scuola o altra istituzione coinvolta nel progetto" #: edit_project_org_info msgid "Organization info:" msgstr "Info sull'organizzazione:" #: edit_project_org_add msgid "Add organization" msgstr "Aggiungi organizzazione" #: edit_project_org_edit msgid "Edit organization data" msgstr "Modifica i dati dell'organizzazione" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Stato, federazione, unione..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Stato federale, comunità, regione..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Altre informazioni..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Data della revisione" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autori:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autori della revisione" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descrizione:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breve descrizione dei cambiamenti apportati" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Commenti:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Altre informazioni rilevanti" #: edit_project_rev msgid "Revisions:" msgstr "Revisioni:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Storia della principali modifiche al progetto" #: edit_project_rev_add msgid "Add revision record" msgstr "Aggiungi una registrazione di revisione" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Modifica una registrazione di revisione" #: edit_project_rev_info msgid "Revision data" msgstr "Data di revisione" #: edit_media_objects msgid "objects" msgstr "oggetti" #: edit_media_object msgid "object" msgstr "oggetto" #: edit_evsounds_start msgid "Start of activity:" msgstr "Inizio dell'attività:" #: edit_evsounds_click msgid "Click on object:" msgstr "Clicca sull'oggetto" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Azione erronea:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Azione corretta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Attività completata con errori:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Attività completata in modo esatto:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Errore: Il campo di descrizione non può essere lasciato vuoto!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Modifica i suoni dell'evento" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Suoni dell'evento:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Imposta suoni specifici per ciascun evento JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Suoni dell'evento:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Imposta suoni specifici per ciascun evento JClic" #: edit_evsounds_default msgid "default sound" msgstr "suono predefinito" #: edit_evsounds_disabled msgid "disabled" msgstr "disabilitato" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Abilita o disabilita i suoni per questo evento" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Clicca per selezionare un suono per questo evento, o deseleziona per usare " "il suono predefinito" #: action_newProject_caption msgid "New project..." msgstr "Nuovo progetto..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Crea un nuovo progetto JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Da:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valore minimo dell'operatore" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "A:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valore massimo dell'operatore" #: edit_arith_op_with msgid "With:" msgstr "Con:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Se selezionato, l'operatore può anche avere questo valore" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Uno da questa lista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Lista dei possibili valori per l'operatore" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimali:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Numero di decimali dell'operando" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (integer)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#.#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#.##" #: edit_arith_firstOp msgid "First operand" msgstr "Primo operando" #: edit_arith_secondOp msgid "Second operand" msgstr "Secondo operando" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 per JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operazioni:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Seleziona il tipo di operazioni da sviluppare" #: edit_arith_operations_plus msgid "Plus" msgstr "Addizione" #: edit_arith_operations_minus msgid "Minus" msgstr "Sottrazione" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Moltiplicazione" #: edit_arith_operations_divide msgid "Divide" msgstr "Divisione" #: edit_arith_unknown msgid "Unknown:" msgstr "Incognita:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Seleziona l'elemento che agirà da incognita" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "Il risultato è l'incognita" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "Il secondo operatore è l'incognita" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "Il primo operatore è l'incognita" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "L'operazione è l'incognita" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Scrivi il risultato all'inizio dell'espressione" #: edit_arith_result msgid "Result:" msgstr "Risultato:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Non riportare" #: edit_arith_result_random msgid "Random" msgstr "Casuale" #: edit_arith_result_asc msgid "Ascending" msgstr "Crescente" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordina per risultato:" #: edit_arith_result_desc msgid "Descending" msgstr "Decrescente" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evita duplicati" #: edit_arith_cond msgid "Conditions:" msgstr "Condizioni:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indifferente" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "Il primo operatore deve essere più grande del secondo" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "Il primo operatore deve essere minore del secondo" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Altre condizioni" #: edit_autocp msgid "Automatic content generator:" msgstr "Generatore automatico di contenuti:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Seleziona il tipo di generatore automatico di contenuti per questa attività." #: edit_autocp_block msgid "Content generator" msgstr "Generatore di contenuti" #: edit_autocp_btn msgid "Settings..." msgstr "Parametri..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configura i parametri del generatore di contenuti" #: edit_data msgid "Edit data" msgstr "Modifica i dati" #: edit_act msgid "Activity edit" msgstr "Modifica l'attività" #: edit_acp msgid "Content provider edit" msgstr "Modifica il generatore di contenuti" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Errore di creazione del generatore automatico di contenuti!" #: edit_project_author_group msgid "Creation" msgstr "Creazione" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descrizione" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interfaccia utente" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descrizione:" #: m_Edit msgid "Edit" msgstr "Modifica" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Nuova attività..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Inserisci" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Visualizza" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Progetto" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Modifica i parametri del progetto" #: action_editMedia_caption msgid "Media" msgstr "Mediateca" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Modifica la biblioteca multimediale del progetto" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Attività" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Modifica le attività" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Sequenze" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Modifica le sequenze delle attività" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "Il progetto corrente è stato modificato. Vuoi salvare i cambiamenti?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descrittori" #: edit_media_new msgid "New media object..." msgstr "Nuovo oggetto multimediale..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "" "Aggiungi una nuova immagine o un nuovo oggetto multimediale alla biblioteca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Limite di punteggio:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Segui questo percorso quando il punteggio globale è uguale o superiore a..." #: edit_seq_time msgid "Time threshold:" msgstr "Limite di tempo:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Per seguire questo percorso, devi aver completato l'attività in un tempo " "inferiore a..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Segui questo percorso quando il punteggio globale è inferiore a..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Segui questo percorso quando il tempo impiegato nell'attività è superiore " "a..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Salti condizionali" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "Imposta salti speciali da eseguire solo con specifiche condizioni" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Imposta condizioni per il salto a un livello superiore" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Salto a livello inferiore:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Salto a livello superiore:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Imposta le condizioni per saltare a un livello inferiore" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Azione assegnata al pulsante \"successivo\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Azione assegnata al pulsante \"precedente\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Imposta la destinazione del salto" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Azione da fare" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Attività assegnata a questo elemento di sequenza" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Tag usato per riferirsi a questo elemento di sequenza (campo opzionale)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descrizione dell'elemento di sequenza (campo opzionale)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Abilita o disabilita il pulsante freccia" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Avanza automaticamente al termine dell'attività" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Secondi di attesa prima dell'avanzamento automatico" #: edit_color_dlgTitle msgid "Select color" msgstr "Seleziona il colore" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Per favore aspetta mentre la risorsa viene rinominata..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Larghezza:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Larghezza della cella (in pixels)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Altezza:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Altezza della cella (in pixels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Parole nascoste:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Lista delle parole nascoste inserite nel pannello" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Usa il pannello B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "I contenuti del secondo pannello saranno mostrati una volta trovate le parole" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Seleziona il tipo di generatore di forme da usare nel pannello" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Numero di colonne del pannello" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Numero di righe del pannello" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Separatori trasparenti" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Mostra i separatori (caselle nere) come spazi trasparenti" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Mescola\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Numero di mescolamenti" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copia le caratteristiche in..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Caratteristiche" #: edit_act_copy_dest msgid "Apply to:" msgstr "Applica a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Finestra principale" #: edit_act_copy_style_play msgid "Play window" msgstr "Finestra di gioco" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Attività da modificare:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copia le caratteristiche" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Copia le caratteristiche dell'attività corrente in altre attività" #: edit_new_project_name msgid "Project name:" msgstr "Nome del progetto:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Breve nome descrittivo del progetto" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nome file:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nome del file del progetto, senza estensione" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Cartella:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nome della cartella dove il progetto sarà conservato" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Sfoglia..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Crea un nuovo progetto JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "Errore: Progetto, file e cartella devono avere nomi validi." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Questa cartella già contiene un altro progetto Clic 3.0 o JClic. Per evitare " "confusione, è preferibile tenere ogni progetto in una cartella separata, ma " "non è strettamente necessario. Vuoi realmente creare il nuovo progetto in " "questa cartella?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Errore: Impossibile creare la cartella specificata!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Errore: Nessuna attività selezionata! Per usare questa funzione devi " "selezionare nella lista una o più attività alle quali vanno applicate le " "caratteristiche indicate." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copia delle caratteristiche in:" #: edit_act_copy_margin msgid "Margin" msgstr "Margine" #: edit_act_copy_bgColor msgid "Background color" msgstr "Colore di sfondo" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Sfumatura" #: edit_act_copy_bgImage msgid "Background image" msgstr "Immagine di sfondo" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Bordo" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Sfondo trasparente" #: edit_act_copy_position msgid "Position" msgstr "Posizione" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Messaggi" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Stile del messaggio iniziale" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Stile del messaggio finale" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Stile del messaggio di errore" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Rapporti" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Includi l'attività nei rapporti" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Registra azioni" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interfaccia utente" #: edit_act_copy_skin msgid "Skin" msgstr "Skin" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Suoni dell'evento" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Contatori" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Cronometro" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Tempo max." #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Contatore dei tentativi" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Tentativi max." #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Punteggio" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Numero di mescolamenti" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Pulsanti" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Pulsante di aiuto" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Pulsante informativo" #: edit_act_copy_grids msgid "Grids" msgstr "Griglie" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Stile della griglia A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Stile della griglia B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Stile delle griglie di testo" #: edit_act_copy_text msgid "Text activities" msgstr "Attività testuali" #: edit_act_copy_fontFace msgid "Font face" msgstr "Tipo di carattere" #: edit_act_copy_fontSize msgid "Font size" msgstr "Dimensione del carattere" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Stile del carattere" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Colore del testo principale" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Colore del testo nascosto" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Colore degli errori" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Spazio tra i tabulatori" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Stile del messaggio precedente" #: edit_act_changeType msgid "Change activity type" msgstr "Cambia il tipo di attività" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nome completo della classe da usare per costruire l'attività (solo per " "utenti esperti!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Altro..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Gli utenti esperti possono anche creare tipi non registrati di attività " "JClic. Basta scrivere sotto il nome della classe, con il prefisso indicante " "il pacchetto (es. \"com.acme.activities.FooActivity\"). Le classi di " "attività devono estendere edu.xtec.jclic.Activity, e devono essere " "accessibili al caricatore di classi virtuali di Java." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nome dell'attività:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Ciascuna attività deve avere un nome unico nel progetto" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Attenzione: " "Il cambiamento del tipo di attività può causare la perdita di alcune " "caratteristiche e di alcuni oggetti dell'attività corrente. Usa questa " "funzione con attenzione!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Ubicazione del codice JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "URL che punta a una cartella con i file di programma e gli scripts di JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Codice HTML precedente:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Il testo o il codice HTML che apparirà prima dell'applet" #: applet_post_text msgid "HTML code after:" msgstr "Codice HTML successivo:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Il testo o il codice HTML che apparirà dopo l'applet" #: applet_size msgid "Applet size:" msgstr "Dimensioni dell'applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Larghezza e altezza dell'applet, in valori assoluti o percentuali." #: applet_page_title msgid "Page title:" msgstr "Titolo della pagina:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "" "Testo da mostrare nella parte superiore della finestra di navigazione" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "La pagina web \"%s\" è stata creata con successo." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Vuoi aprirla adesso con il navigatore?" #: action_createHTML_caption msgid "Create web page..." msgstr "Crea la pagina web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Creazione di una pagina HTML con l'applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Crea una pagina HTML con l'applet contenente il progetto corrente" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nome file:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nome del file HTML fa creare" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valori predefiniti usati nella creazione della pagina web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Colore di sfondo:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Colore di sfondo della pagina HTML" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centrato" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Inserisci l'applet centrandolo orizzontalmente" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Larghezza dell'applet (assoluta o in percentuale)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Altezza dell'applet (assoluta o in percentuale)" #: applet_exitUrl msgid "On exit, go to:" msgstr "In uscita, vai a:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL dove ridirigere la navigazione all'uscita da JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Nome della schermata informativa:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Nome della schermata usata per mostrare i contenuti relativi al pulsante " "\"informazioni\"" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Crea l'installatore del progetto..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Crea uno script di installazione di progetto per il lettore JClic" #: installer_caption msgid "Edit project installer script" msgstr "Modifica lo script di installazione di progetto" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Titolo:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Titolo del progetto, da mostrare nell'assistente dell'installazione" #: installer_authors msgid "Autors:" msgstr "Autori:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autore/i del progetto (testo breve)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Cartella:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "" "Nome della cartella che sarà suggerita dall'assistente di installazione" #: installer_files msgid "Files to be copied:" msgstr "I file da copiare:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "I file da copiare nell'installazione" #: installer_files_available msgid "Available files" msgstr "File disponibili" #: installer_files_selected msgid "Selected files" msgstr "File selezionati" #: installer_files_add msgid ">> add >>" msgstr ">> aggiungi >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Aggiungi il file selezionato alla lista" #: installer_files_remove msgid "<< remove <<" msgstr "<< rimuovi <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Rimuovi il file selezionato dalla lista" #: installer_button msgid "Launch button" msgstr "Pulsante di attivazione" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Proprietà del pulsante da mostrare nella biblioteca dei progetti" #: installer_button_project msgid "Main project:" msgstr "Progetto principale:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Progetto JClic associato al pulsante" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etichetta:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Breve etichetta di testo, da mostrare all'interno del pulsante" #: installer_button_icon msgid "Icon:" msgstr "Icona:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Immagine da usare come icona del pulsante. Lascia vuoto per usare l'icona " "predefinita di JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descrizione" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Testo di aiuto mostrato con il pulsante" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Errore: Devi indicare il titolo del progetto" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Errore: Devi indicare in quale cartella vuoi installare il progetto" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Errore: Devi selezionare un file" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Errore: Devi indicare il testo del pulsante di attivazione" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Errore: Il progetto assegnato al pulsante di attivazione non è nella lista " "dei file da copiare" #: applet_page_full msgid "Full-page applet" msgstr "Applet a tutto schermo" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "Applet con dimensioni specifiche" #: edit_text_align_left msgid "Align text left" msgstr "Allinea il testo a sinistra" #: edit_text_align_center msgid "Center text" msgstr "Centra il testo" #: edit_text_align_right msgid "Align text right" msgstr "Allinea il testo a destra" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Crea o rimuovi un testo nascosto" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Inserisci una cella" #: edit_text_act_content msgid "Content" msgstr "Contenuto" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Stile" #: edit_cell_size msgid "Cell size:" msgstr "Dimensione della cella:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Le seguenti attività non appariranno in alcuna delle sequenze di attività, " "quindi non saranno mostrate:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "I seguenti oggetti multimediali non risultano usati in alcuna attività:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "Vuoi aggiungerli alla fine dell'ultima sequenza di attività?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Vuoi rimuoverli?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Rimozione di oggetti multimediali non usati" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Attività orfane" #: edit_media_refreshAll msgid "Update all media content" msgstr "Aggiorna tutti i contenuti multimediali" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Aggiorna tutti i contenuti multimediali richiamando i loro archivi" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Aggiornamento dei contenuti multimediali..." #: edit_media_exportAll msgid "Export all media" msgstr "Esportazione di tutti i contenuti multimediali" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Salva i file dei contenuti di tutti gli elementi multimediali" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Seleziona" #: edit_shape_addPoint msgid "Add point" msgstr "Aggiungi un punto" #: edit_shape_deletePoint msgid "Delete" msgstr "Elimina" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Disegna un rettangolo" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Disegna un'ellisse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Disegna un poligono" #: edit_shape_toLine msgid "Convert to line" msgstr "Converti in linea" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Converti in curva di Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Converti in quadratica" #: edit_shape_rLeft msgid "Rotate left" msgstr "Ruota a sinistra" #: edit_shape_rRight msgid "Rotate right" msgstr "Ruota a destra" #: edit_shape_expand msgid "Expand" msgstr "Espandi" #: edit_shape_contract msgid "Contract" msgstr "Contrai" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Zoom avanti" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Zoom indietro" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Unisci punti vicini" #: edit_shape_showPoints msgid "Show points" msgstr "Mostra punti" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Mostra/Nascondi i punti" #: edit_shape_gridSize msgid "Grid size:" msgstr "Dimensione della griglia:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Mostra / Nascondi la griglia" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Raggio del magnete:" #: edit_shape_elements msgid "Defined elements" msgstr "Elementi definiti" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nome dell'elemento selezionato" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Raggio di azione del magnete (se abilitato)" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Dimenzioni della griglia" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Attività:" #: edit_mc_sequence msgid "Sequence:" msgstr "Sequenza:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Progetto:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Scegli l'attività" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Scegli la sequenza" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Dati insufficienti!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Colore delle frecce:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Colore usato dall'editor per disegnare le frecce (non esattamente, dato che " "viene utilizzata una maschera di bit XOR)" #: edit_act_editActivity msgid "Edit..." msgstr "Modifica..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Modifica l'attività selezionata" #: action_saveFileAs_caption msgid "Save as..." msgstr "Salva come..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Salva il progetto corrente con un nome differente" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Trascina gli oggetti" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Trascina gli oggetti invece di unirli con una linea" #: edit_act_behavior_order msgid "Check solving order" msgstr "Controlla l'ordine di soluzione" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Le celle devono essere risolte in ordine" #: edit_act_scramble msgid "Scramble" msgstr "Mescola" #: action_importActivities_caption msgid "Import activities..." msgstr "Importa attività..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importa attività da un altro progetto" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "Il file selezionato fa parte del progetto corrente. Possono essere importate " "attività solo tra progetti differenti. Per favore seleziona un altro file di " "progetto." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "Seleziona una o più attività da importare nel progetto corrente\\:" #: import_importing msgid "Importing..." msgstr "Importazione..." #: import_checkdep msgid "Checking dependencies..." msgstr "Verifica delle dipendenze..." #: import_impmedia msgid "Importing media\\:" msgstr "Importazione degli oggetti multimediali\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importazione delle attività\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Seleziona il progetto JClic dal quale saranno importate le attività" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marcatori" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marcatore d'inizio\\:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marcatore usato all'inizio dei tag" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marcatore finale\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marcatore usato alla fine dei tag" #: edit_tagRep_file msgid "File" msgstr "File" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "File o URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Nome o URL del file contenente i valori che sostituiranno le etichette" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Set di caratteri\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Set di caratteri usati nel file" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Sfoglia..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Sfoglia il sistema degli archivi" #: edit_tagRep_title msgid "Tag replacing" msgstr "Sostituzione dei tag" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Rimuovi gli stili di testo..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Attenzione\\: Questa azione rimuoverà gli specifici attributi di testo " "applicati al documento, ritornando allo stile principale. Questa azione non " "può essere annullata. Vuoi procedere?" #: img_max_size msgid "Maximum size of images:" msgstr "Dimensione massima delle immagini:" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" "Larghezza massima delle immagini importate nella libreria multimediale." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" "Altezza massima delle immagini importate nella libreria multimediale." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "L'immagine \"%s\" ha una dimensione di %s pixel. Supera perciò il massimo " "consentito da JClic Author (%s). Vuoi ridimensionarla?" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_nl.po0000644000175000017500000024034511377161311023153 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-16 15:15+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Beschrijving" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Naam van de activiteit" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Naam:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Beschrijving van de activiteit" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Rapporten" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Voeg deze activiteit toe aan de rapporten" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "" "Voeg de resultaten van deze activiteit toe aan de gebruikersrapporten" #: edit_act_code msgid "Code:" msgstr "Code:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "Optionele code om te groeperen en te zoeken in de rapporten database" #: edit_act_reportActions msgid "Report user actions" msgstr "Rapporteer acties van gebruikers" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Registreer de details van alle acties van de gebruikers" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Tellers" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Tijdsteller" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Toon/verberg de tijdsteller" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Aantal pogingen teller" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Toon/verberg de aantal pogingen teller" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Puntenteller" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Toon/verberg de puntenteller" #: edit_act_maxTime msgid "Max time:" msgstr "Max tijd:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Max tijd om de activiteit op te lossen, in seconden, of 0 zonder " "tijdsbeperking." #: edit_act_countdown msgid "Countdown" msgstr "Aftellen" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "De teller start met de maximumwaarde, en vermindert tot 0" #: edit_act_maxActions msgid "Max tries:" msgstr "Max pogingen:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Maximum aantal pogingen, of 0 voor onbeperkt" #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Knoppen" #: edit_act_helpBtn msgid "Help" msgstr "Help" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Toon/verberg help knop" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Toon oplossing" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Toon dit bericht:" #: edit_act_infoBtn msgid "Information" msgstr "Informatie" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Toon/verberg informatie knop" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Toon deze URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Voer dit commando uit:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Adres van de website die getoond moet worden als de info knop gedrukt wordt" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Commando dat uitgevoerd wordt als de info knop gedrukt wordt" #: edit_act_mainWindow msgid "Main window:" msgstr "Hoofd venster:" #: edit_act_gameWindow msgid "Game window:" msgstr "Spel venster:" #: edit_act_margin msgid "Margin:" msgstr "Marge:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Horizontale en verticale afstand tussen visuele objecten" #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Achtergrondkleur:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Verander de achtergrondkleur." #: edit_gradient_startColor msgid "Start color:" msgstr "Begin kleur:" #: edit_gradient_endColor msgid "End color:" msgstr "Eind kleur:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Selectie van de start kleur" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Selectie van de eind kleur" #: edit_gradient_cycles msgid "Cycles:" msgstr "Cycles:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Aantal herhalingen van de gradiënt over het tekenoppervlak" #: edit_gradient_orientation msgid "Orientation:" msgstr "Oriëntatie:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Oriëntatie van de gradiënt , gemeten in graden over de horizon" #: edit_act_gradient msgid "Gradient:" msgstr "Gradiënt:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Gebruik gradiënt van kleuren" #: edit_color_opacity msgid "Opacity" msgstr "Doorzichtigheid" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Zet de alpha channel (doorzichtigheid) kleur waarde." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradiënt" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Gebruik de standaardwaarden (geen gadient)" #: edit_act_image msgid "Image:" msgstr "Afbeelding:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Beschrijving" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Naam en beschrijving" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Getegeld" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Teken heel het oppervlak met een afbeelding, herhaal over de X en Y as " "indien nodig." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Voorbeeld:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Rand" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Teken een lijn rond het venster" #: edit_act_transparent msgid "Transparent" msgstr "Transparant" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "Venster heeft een transparante achtergrond" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Breedte:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Hoogte:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Breedte van een object, gemeten in pixels" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Hoogte van een object, gemeten in pixels" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Gecentreerd" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "Het object zal gecentreerd worden over het hoofdvenster" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Absolute horizontale positie" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Absolute verticale positie" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Gebruikers interface" #: edit_act_image_tooltip msgid "Select an image" msgstr "Kies een afbeelding" #: edit_act_text msgid "Text:" msgstr "Tekst:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Tekst die binnen dit object getoond moet worden" #: edit_font_face msgid "Typeface:" msgstr "Lettertype" #: edit_font_size msgid "Size:" msgstr "Grootte:" #: edit_font_bold msgid "Bold" msgstr "Vet" #: edit_font_italic msgid "Italic" msgstr "Schuin" #: edit_font_underline msgid "Underline" msgstr "Onderstreept" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Stijl:" #: edit_cell_title msgid "Cell contents" msgstr "Cel inhoud" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Berichten" #: edit_act_msg_initial msgid "Initial message:" msgstr "Eerste bericht" #: edit_act_msg_final msgid "Final message:" msgstr "Laatste bericht" #: edit_act_msg_prev msgid "Previous message:" msgstr "Vorig bericht" #: edit_act_msg_error msgid "Error message:" msgstr "Fout bericht:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Bericht dat getoond wordt als de activiteit begint" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Bericht dat getoond wordt als de activiteit eindigt" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Bericht dat getoond wordt als de activiteit eindigt met fouten" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Bericht dat getoond wordt als de activiteit voor de start van een activiteit " "(alleen bij sommige activiteiten)" #: edit_align msgid "Align:" msgstr "Uitlijning:" #: edit_act_textColor msgid "Text color:" msgstr "Tekstkleur:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Kleur van de tekst" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Schaduwkleur:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Kleur van de schaduw van de tekst, indien toepasbaar" #: edit_act_shadow msgid "Shadow" msgstr "Schaduw" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Teken tekst met schaduw" #: edit_act_borderColor msgid "Border color:" msgstr "Randkleur:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Kleur van de rand van de cel" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Kleur indien inactief:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Kleur als cel uitgeschakeld is" #: edit_act_altColor msgid "Alternative color:" msgstr "Alternatieve kleur:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "Kleur van alternatieve inhoud in opgeloste cellen." #: edit_cell_marked msgid "Marked" msgstr "Gemarkeerd" #: edit_cell_disabled msgid "Disabled" msgstr "Uitgeschakeld" #: edit_cell_alt msgid "Alternative" msgstr "Alternatief" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Interne marge:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Hoeveelheid ruimte tussen rand van de cel en de tekst." #: edit_cell_borderWidth msgid "Border width:" msgstr "Randbreedte:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Breedte van de standaard rand" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Breedte gemarkeerd:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "Breedte van de rand als de cel gemarkeerd is of geselecteerd" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Voorbeeld in \"alternatieve\" toestand" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Voorbeeld in \"niet toegestaan\" toestand" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Voorbeeld in \"gemarkeerde\" toestand" #: edit_act_testAction msgid "Preview activity" msgstr "Voorbeeld activiteit" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Voorbeeld en test activiteit" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Beschrijving" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Titel en beschrijving van de activiteit" #: edit_act_panels_options msgid "Options" msgstr "Opties" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opties van de activiteit" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Venster" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Verhouding, grootte en positie van het activiteit venster" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Berichten" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Inhoud van de activiteit berichten" #: edit_act_panels_panel msgid "Panel" msgstr "Paneel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Inhoud van het paneel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Stijl" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Kleur, lettertype en grootte van de cel" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Stijl:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Vermijd tekst afbeelding overlapt" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Probeer te vermijden dat tekst afbeelding overlapt" #: edit_media_exists_1 msgid "The file" msgstr "Het bestand" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "Bestaat reeds in media bibliotheek!" #: edit_act_shaper msgid "Shaper:" msgstr "Vormgereedschap" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Fout vormgereedschap:" #: edit_act_num_cols msgid "Columns:" msgstr "Kolommen:" #: edit_act_num_rows msgid "Rows:" msgstr "Rijen:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Tand hoogte:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Tand breedte:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Willekeurige verdeling" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Vormgereedschap eigenschappen" #: edit_act_panels_text msgid "Text" msgstr "Tekst" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Tekst van de activiteit" #: action_saveFile_caption msgid "Save..." msgstr "Opslaan..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "OO" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Bewaar het huidige project" #: action_docTree_caption msgid "Document tree..." msgstr "Document boom" #: action_docTree_keys msgid "T*" msgstr "B*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Toon het document van het project als een boom" #: edit_docTree_title msgid "Document tree" msgstr "Document boom" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Gerefereerd door:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Waarschuwing:

Dit project " "verbindt met andere projecten.
Wil je de hyperlinks volgen en al de " "bijbehorende bestanden laden?

(Je klikt best op JA als je Clic 3.0 " "activititeiten importeert)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Type:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Onbekend" #: edit_mc_type_sound msgid "Play sound" msgstr "Geluid afspelen" #: edit_mc_type_video msgid "Play video" msgstr "Video afspelen" #: edit_mc_type_midi msgid "Play MIDI" msgstr "MIDI afspelen" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "CD audio afspelen" #: edit_mc_type_record msgid "Record sound" msgstr "Geluid opnemen" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Opgenomen geluid afspelen" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Ga naar activiteit" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Ga naar volgorde" #: edit_mc_type_run_external msgid "Run program" msgstr "Programma uitvoeren" #: edit_mc_type_url msgid "Show URL" msgstr "URL adres tonen" #: edit_mc_type_exit msgid "End" msgstr "Einde" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Vorige" #: edit_mc_level msgid "Priority level:" msgstr "Prioriteitsniveau:" #: edit_mc_file msgid "File:" msgstr "Bestand:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parameter:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Van:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Tot:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Max. lengte:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Opname band:" #: edit_mc_stretch msgid "Stretch size" msgstr "Uitrek grootte" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Locatie:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Van:" #: edit_mc_location_from_box msgid "Cell" msgstr "Cel" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Venster" #: edit_mc_location_from_frame msgid "Frame" msgstr "Kader" #: edit_mc_loop msgid "Loop playback" msgstr "Doorlopen weergeven" #: edit_mc_autostart msgid "Auto start" msgstr "Automatische start" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Vang muis" #: edit_mc_title msgid "Multimedia and active content" msgstr "Multimedia en actieve inhoud" #: edit_mc_label msgid "Active content:" msgstr "Actieve inhoud" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Multimedia object keuze" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Media bibliotheek" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Gecentreerd over cel" #: edit_mc_pos_window msgid "Centered over window" msgstr "Gecentreerd over venster" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Geef positie:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Verkeerde boomstructuur of gegevens!" #: edit_act_panels_controls msgid "Controls" msgstr "Besturingselementen" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opties voor knoppen en tellers" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Type:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Raster:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Relatieve positie van de rasters A en B" #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Omgekeerde resolutie" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "De activiteit is opgelost als alle elementen van \"B\" overeenkomen." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Toon alle pijlen" #: edit_act_alt msgid "Alternative content:" msgstr "Alternatieve inhoud:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" "Inhoud die getoond wordt in opgeloste cellen en niet toegewezen cellen" #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Bewerk de alternatieve inhoud" #: edit_act_grid msgid "Grid" msgstr "Raster" #: edit_act_grid_A msgid "Grid A" msgstr "Raster A" #: edit_act_grid_B msgid "Grid B" msgstr "Raster B" #: edit_act_grid_layout msgid "Layout" msgstr "Lay-out" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relatie" #: edit_seq_activity_header msgid "activity" msgstr "activiteit" #: edit_seq_tag_header msgid "tag" msgstr "trefwoord" #: edit_seq_jump_header msgid "jump to" msgstr "springen naar" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Activiteit:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Label:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Beschrijving:" #: edit_seq_auto msgid "Move on automatically" msgstr "Ga automatisch verder" #: edit_seq_delay msgid "Delay:" msgstr "Vertraging:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Ga vooruit" #: edit_seq_action_back msgid "Go bak" msgstr "Ga terug" #: edit_seq_action_jump msgid "Jump to..." msgstr "Spring naar..." #: edit_seq_action_stop msgid "Stop" msgstr "Stoppen" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Vorige" #: edit_seq_action_exit msgid "Exit JClic" msgstr "JClic verlaten" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Vooruit pijl:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Pijl terug:" #: edit_seq_action msgid "Action:" msgstr "Actie:" #: edit_seq_button_enabled msgid "Show button" msgstr "Toon knop" #: edit_seq_project msgid "JClic Project:" msgstr "JClic Project:" #: edit_act_absolute msgid "Absolute position" msgstr "Absolute positie" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "" "Het object zal geplaatst worden op de gespecificeerde X en Y coördinaten" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Locatie:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Nieuwe volgorde element..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Voeg een nieuw element toe aan de activiteiten" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Selecteer een activiteit voor de niewe volgorde element" #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "Kan geen nieuwe volgorde element maken zonder activiteit!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Dit project heeft geen activiteiten! Kan geen volgorde elementen maken in " "een leeg project." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Sprong doel:" #: edit_seq_jump_title msgid "Jump target" msgstr "Sprong doel" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Voeg een nieuwe activiteit toe aan het project" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Type activiteit:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Naam:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Selecteer het type activiteit en geef het een naam:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Je moet een activiteit type kiezen!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Je moet een naam geven voor de activiteit!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Kan de activiteit niet maken!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Java class name:" #: edit_text_act_format msgid "Format" msgstr "Formaat" #: edit_text_act_answer msgid "Answer" msgstr "Beantwoorden" #: edit_text_act_popup msgid "Pop up" msgstr "Pop up" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Beschikbare antwoorden:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Voeg een nieuw lijst element toe" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Bewerk het geselecteerde lijst element" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Verwijder het geselecteerde lijst element" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Omhoog" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Omlaag" #: edit_list_newValue msgid "New text:" msgstr "Nieuwe tekst:" #: edit_list_addElement msgid "Add new list element" msgstr "Voeg nieuw lijst element toe" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Verander geselecteerde tekst" #: edit_text_act_target msgid "Target" msgstr "Doel" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Max. lengte:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Maximum hoeveelheid letters in het antwoord." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Opvul letter" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Letter gebruikt als spatie" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Eerste lengte:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Aantal vul letters dat getoond wordt bij het begin van de activiteit." #: edit_text_act_iniText msgid "Initial text:" msgstr "Eerste tekst:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Getoonde tekst in het begin van de activiteit." #: edit_text_act_list msgid "Show a list of options:" msgstr "Toon lijst met opties" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "Toon lijst met opties waaruit de gebruiker een moet kiezen." #: edit_text_act_check_title msgid "Correction options" msgstr "Correctie opties" #: edit_text_act_popup_no msgid "No pop up" msgstr "Geen pop up" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Pop up automatisch" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Pop up met fouten" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Pop up met F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Type:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Pop up vertraging:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Max. tijd:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Alleen geluid" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "Je moet een deel tekst kiezen om een nieuw tekst doel te maken!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "Tekst doel kan geen paragraaf tekens of tab tekens bevatten." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Doelen kunnen niet genest zijn!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Doelen kunnen geen cellen bevatten!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Papier kleur:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Bewerk dokument stijl..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Hoofd stijl" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tab ruimte:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Ruimte tussen tab markeringen:" #: edit_text_act_colors msgid "Colors:" msgstr "Kleuren:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Doel kleuren:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Fout kleuren:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Voorbeeld:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Standaardtekst" #: edit_text_act_styleSample_target msgid "target" msgstr "doel" #: edit_text_act_styleSample_error msgid "error" msgstr "Fout" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "standaard tekst" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "standaard tekst." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Waarschuwing: Deze bewerking zal alle geselecteerde doelen onderdrukken. Wil " "je verder gaan?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Vorig scherm..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Toon geen tekst voor de start van een activiteit" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Toon de volledige tekst van de oefening" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Toon deze tekst:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Max. tijd:" #: edit_text_act_edit_target msgid "Target..." msgstr "Doel..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Toon de verbeter knop" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Knop tekst" #: edit_text_act_checkCase msgid "Match case" msgstr "Exact dezelfde tekens" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Gebruik accenten en speciale letters" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Gebruik leestekens" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Laat meerdere spaties toe" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Criteria" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Ga naar het volgend doel als alles ingevuld is" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Ga alleen verder wanneer het juist is" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Geef vergissingen aan met een letter" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Analyse van algoritme parameters:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Stappen:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Exploration veld:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Controleren" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Antwoord analyse" #: edit_text_act_check_bt msgid "Correction..." msgstr "Verbetering..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Verbeter knop" #: edit_text_act_checkProgress msgid "Progress" msgstr "Voortgang" #: edit_text_act_typeBtn msgid "Type..." msgstr "Type..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Orden paragrafen" #: edit_text_act_orderWords msgid "Order words" msgstr "Orden woorden" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Haal woorden doorheen over paragrafen" #: edit_text_act_type_title msgid "Activity type" msgstr "Activiteit type" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Deze bewerking zal alle bestaande doelen leegmaken. Wil je verder gaan?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identificeer woorden" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identificeer letters" #: edit_media_change_name msgid "Change name..." msgstr "Verander naam..." #: edit_media_change_file msgid "Change file..." msgstr "Verander bestand..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Bewaar in ZIP bestand" #: edit_media_type msgid "Media type:" msgstr "Mediumtype:" #: edit_media_size msgid "File size:" msgstr "Bestandsgrootte:" #: edit_media_show_type msgid "Files of type:" msgstr "Bestanden van het type:" #: edit_media_preview msgid "Preview media" msgstr "Voorbeeld media" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Voorbeeld media bron" #: edit_media_rename msgid "Change resource name" msgstr "Verander naam van bron" #: edit_media_rename_title msgid "Rename" msgstr "Hernoemen" #: edit_media_rename_prompt msgid "New name:" msgstr "Nieuwe naam:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Ongeldige bron naam" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Er is een andere bron met deze naam! Elke bron moet een unieke naam hebben." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Verkeerd bestand!" #: err_media_chfile_different msgid "File must be of same type" msgstr "Bestand moet hetzelfde type hebben" #: edit_media_font_error msgid "Unable to load font!" msgstr "Onmogelijk om lettertype te laden!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Bewaar bestand (haal op uit ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Herlaad media inhoud van bestand" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Dit is geen \"echt\" bestand, maar een object geladen in een ZIP container. " "Om dit element te gebruiken, moet er een bestand met dezelfde naam aanwezig " "zijn in de map waar de ZIP file is." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Activiteiten" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Volgorden" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Media bibliotheek" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" "Beheer afbeeldingen en andere media bestanden die in dit project gebruikt " "worden" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Maak en bewerk project activiteiten" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Maak en bewerk volgorde van activiteiten" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Titel:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Titel van project" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Project" #: edit_project_tooltip msgid "Edit project properties" msgstr "Bewerk project eigenschappen" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Beschrijving:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Algemene beschrijving van het project" #: edit_project_area msgid "Areas:" msgstr "Gebieden:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Curricular gebieden van het project" #: edit_project_level msgid "Levels:" msgstr "Niveau's:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Opleidingsniveau van het project" #: edit_project_descriptors msgid "Descriptors:" msgstr "Beschrijving:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Beschrijvingen van het programma (gescheiden door komma's)" #: edit_project_languages msgid "Languages:" msgstr "Talen:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "In het project gebruikte talen" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Verander de gekozen taal" #: edit_project_languages_add msgid "Add language" msgstr "Voeg taal toe" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "ISO-639 taal codes:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Auteurs:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Mensen die aan dit project hebben meegewerkt" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Naam:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "e-mail:" #: edit_project_author_rol msgid "Rol:" msgstr "Rol:" #: edit_project_author_organization msgid "Organization:" msgstr "Organisatie:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Commentaar:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Auteur (vereist)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Auteur e-mail (optioneel)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Rol van de persoon in the project: auteur, medewerker, tekeningen, " "geluiden... (optioneel)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "School, universiteit, vereniging... (optioneel)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Persoonlijke web pagina (optioneel)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Veld voor andere informatie (optioneel)" #: edit_project_author_info msgid "Author info:" msgstr "Auteur info:" #: edit_project_author_add msgid "Add author to list" msgstr "Auteur toevoegen aan lijst" #: edit_project_author_edit msgid "Edit author info" msgstr "Auteur info bewerken" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Naam:" #: edit_project_org_name_tooltip msgid "School name" msgstr "School naam" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "e-mail:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "e-mail addres van de school" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "School website" #: edit_project_org_address msgid "Address:" msgstr "Adres:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Snail-mail address" #: edit_project_org_pc msgid "PC:" msgstr "PC:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Post code" #: edit_project_org_city msgid "City:" msgstr "Stad:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Stad" #: edit_project_org_country msgid "Country:" msgstr "Land:" #: edit_project_org_state msgid "State:" msgstr "Provincie" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Commentaar:" #: edit_project_org msgid "School/s:" msgstr "Scho(o)l/en:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "School of andere instelling die bij het project betrokken zijn" #: edit_project_org_info msgid "Organization info:" msgstr "Informatie over de organisatie" #: edit_project_org_add msgid "Add organization" msgstr "Voeg organisatie toe" #: edit_project_org_edit msgid "Edit organization data" msgstr "Bewerk organisatie gegevens" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Land, federatie, unie" #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Federale staat, gemeenschap, regio" #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Andere informatie..." #: edit_project_rev_date msgid "Date:" msgstr "Datum:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Datum van de versie" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Auteurs:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Auteurs van de versie" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Omschrijving:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Korte omschrijving van de gemaakte veranderingen" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Commentaar:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Andere relevante informatie" #: edit_project_rev msgid "Revisions:" msgstr "Versies:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Geschiedenis van grote veranderingen aan het project" #: edit_project_rev_add msgid "Add revision record" msgstr "Voeg een versie beschrijving toe" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Bewerk versie beschrijving" #: edit_project_rev_info msgid "Revision data" msgstr "Versie gegevens" #: edit_media_objects msgid "objects" msgstr "objecten" #: edit_media_object msgid "object" msgstr "object" #: edit_evsounds_start msgid "Start of activity:" msgstr "Begin van de activiteit" #: edit_evsounds_click msgid "Click on object:" msgstr "Click op het object" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Verkeerde actie:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Juiste actie:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Activiteit beëindigd met fouten:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Activiteit beëindigd zonder fouten:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Fout: Het beschrijvingsveld kan niet leeg zijn!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Bewerk gebeurtenis geluiden" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Gebeurtenis geluiden:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Kies specifieke geluiden voor elke JClic gebeurtenis" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Gebeurtenis geluiden:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Kies specifieke geluiden voor elke JClic gebeurtenis" #: edit_evsounds_default msgid "default sound" msgstr "Standaard geluid" #: edit_evsounds_disabled msgid "disabled" msgstr "uitgeschakeld" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Inschakelen of uitschakelen van geluid voor deze gebeurtenis" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Klik om een geluid te kiezen voor deze gebeurtenis, of schakel uit om het " "standaard geluid te gebruiken" #: action_newProject_caption msgid "New project..." msgstr "Nieuw project..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Maak een nieuw JClic project" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Van:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Minimum waarde van de term" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Tot:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Maximum waarde van de term" #: edit_arith_op_with msgid "With:" msgstr "Door:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Indien aangekruist, kan de term ook deze waarde hebben" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Kies een uit de lijst:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Lijst van mogelijke waarden van de term" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Cijfers na de komma:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Aantal cijfers na de komma van de term" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (integer)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#.#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#.##" #: edit_arith_firstOp msgid "First operand" msgstr "Eerste term" #: edit_arith_secondOp msgid "Second operand" msgstr "Tweede term" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 for JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operaties:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Kies de soort operaties die mogelijk zijn" #: edit_arith_operations_plus msgid "Plus" msgstr "Plus" #: edit_arith_operations_minus msgid "Minus" msgstr "Min" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Vermenigvuldigen" #: edit_arith_operations_divide msgid "Divide" msgstr "Delen" #: edit_arith_unknown msgid "Unknown:" msgstr "Onbekend:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Kies de term die moet gezocht worden" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "Het resultaat is te zoeken" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "De tweede term is te zoeken" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "De eerste term is te zoeken" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "De bewerking is te zoeken" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Schrijf het resultaat bij het begin van de vergelijking" #: edit_arith_result msgid "Result:" msgstr "Resultaat:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Geen overdracht" #: edit_arith_result_random msgid "Random" msgstr "Willekeurig" #: edit_arith_result_asc msgid "Ascending" msgstr "Oplopend" #: edit_arith_result_order msgid "Order by result:" msgstr "Orden volgens resultaat:" #: edit_arith_result_desc msgid "Descending" msgstr "Aflopend" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Vermijd dubbels" #: edit_arith_cond msgid "Conditions:" msgstr "Omstandigheden:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Om het even" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "De eerste term moet groter zijn dan de tweede" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "De eerste term moet kleiner zijn dan de tweede" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Andere voorwaarden" #: edit_autocp msgid "Automatic content generator:" msgstr "Automatische inhoud genereren:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "Kies het type automatische inhoud genereren voor deze activiteit" #: edit_autocp_block msgid "Content generator" msgstr "Inhoud genereren" #: edit_autocp_btn msgid "Settings..." msgstr "Instellingen..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Geef de instellingen van de inhoud verstrekker" #: edit_data msgid "Edit data" msgstr "Bewerk gegevens" #: edit_act msgid "Activity edit" msgstr "Bewerk activiteit" #: edit_acp msgid "Content provider edit" msgstr "Bewerk de inhoud verstrekker" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Fout bij het aanmaken van de inhoud verstrekker" #: edit_project_author_group msgid "Creation" msgstr "Aanmaak" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Beschrijving" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Gebruikers interface" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Omschrijving:" #: m_Edit msgid "Edit" msgstr "Bewerk" #: m_Edit_Mnemonic msgid "E" msgstr "B" #: edit_media_preview_keys msgid "P*" msgstr "V" #: edit_act_newActivity msgid "New activity..." msgstr "Nieuwe ativiteit..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Invoegen" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Weergeven" #: m_View_Mnemonic msgid "V" msgstr "W" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Project" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Bewerk project instellingen" #: action_editMedia_caption msgid "Media" msgstr "Media" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Bewerk de multimedia bibliotheek van het project" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Activiteiten" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Bewerk de activiteiten" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Volgorden" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Bewerk de volgorde van activiteiten" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "Huidig project is veranderd. Wil je de veranderingen bewaren?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Beschrijvingen" #: edit_media_new msgid "New media object..." msgstr "Nieuw media object" #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "" "Voeg een nieuwe afbelding of multimedia object toe aan de bibliotheek" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Punten drempel:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Kies deze weg als het totaal aantal punten gelijk is aan of groter dan..." #: edit_seq_time msgid "Time threshold:" msgstr "Tijdsdrempel:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Om deze weg te kiezen, moet de tijd aan deze activiteiten besteed minder " "zijn dan..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Neem deze weg als het totaal aantal punten minder is dan..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Neem deze weg als de tijd aan deze activiteiten besteed meer is dan..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Voorwaardelijke sprongen" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Kies speciale sprongen die uitgevoerd moeten worden bij speciale voorwaarden" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Kies voorwaarden om naar een hoger niveau te gaan" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Lager niveau sprong:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Hoger niveau sprong:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Kies voorwaarden om naar een lager niveau te springen" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Toegewezen actie aan de \"Volgende\" knop" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Toegewezen actie aan de \"Voorgaande\" knop" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Kies het doel van de sprong" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Actie die moet gebeuren" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Toegekende activiteit bij dit volgorde element" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "Handvat als referentie bij dit volgorde element(optioneel veld)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Beschrijving van het volgorde element (optioneel veld)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Toestaan of verhinderen van de pijlknop" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Ga automatisch verder als de activiteit gedaan is" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Aantal seconden wachten voordat het automatisch verder gaat" #: edit_color_dlgTitle msgid "Select color" msgstr "Kleur kiezen" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Gelieve te wachten terwijl de bron hernoemd wordt..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Breedte:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Cel breedte (in pixels)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Hoogte:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Cel hoogte (in pixels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Verborgen woorden" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Lijst met verborgen woorden in het paneel" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Gebruik paneel B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "De inhoud van het tweede paneel zal getoond worden als de woorden gevonden " "zijn" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Kies het vormgereedschap type dat gebruikt moet worden in het paneel" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Aantal kolommen van het paneel" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Aantal rijen van het paneel" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Doorzichtige randen" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Behandel de randen (zwarte rechthoeken) als doorzichtige gaten" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Door elkaar\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Aantal keren schudden" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Attributen kopiëren naar..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Attributen" #: edit_act_copy_dest msgid "Apply to:" msgstr "Gebruik bij:" #: edit_act_copy_style_main msgid "Main window" msgstr "Hoofd venster" #: edit_act_copy_style_play msgid "Play window" msgstr "Speel venster" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Te wijzigen activiteiten:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Attributen kopiëren" #: edit_act_copyAttributes_keys msgid "T" msgstr "N" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Huidige activiteit attributen kopiëren naar andere activiteiten" #: edit_new_project_name msgid "Project name:" msgstr "Project naam:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Korte, beschrijvende naam van het project" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Bestandsnaam:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Naam van het projectbestand, zonder extensie" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Map:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Naam van de folder waar het project opgeslagen wordt" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Bladeren..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Maak een nieuw JClic project" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Fout: Project, bestand en map moeten een geldige en niet lege naam hebben." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Deze map bevat een ander Clic 3.0 of JClic project. Om verwarring te " "vermijden, hou je best elk project in een aparte map. Het is echter niet " "absoluut nodig. Wil je dit nieuwe project echt in deze map bewaren?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Fout: Onmogelijk om de gespecificeerde map aan te maken." #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Fout: Geen activiteit gekozen! Om deze functie te gebruiken, moet je in de " "activiteitenlijst een of meerdere activiteiten kiezen waarop de attributen " "zullen worden toegepast." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Attributen kopiëren naar:" #: edit_act_copy_margin msgid "Margin" msgstr "Marge" #: edit_act_copy_bgColor msgid "Background color" msgstr "Achtergrondkleur" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Kleurovergang" #: edit_act_copy_bgImage msgid "Background image" msgstr "Achtergrondafbeelding" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Rand" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Transparante achtergrond" #: edit_act_copy_position msgid "Position" msgstr "Positie" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Berichten" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Stijl van het eerste bericht" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Stijl van het laatste bericht" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Stijl van de foutboodschap" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Rapporten" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Voeg deze activiteit toe aan rapporten" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Acties opnemen" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Gebruikers interface" #: edit_act_copy_skin msgid "Skin" msgstr "Skin" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Gebeurtenis geluiden" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Tellers" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Tijdsteller" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Max. tijd" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Aantal pogingen teller" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Max. pogingen" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Score teller" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Tijd tot schudden" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Knoppen" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Help knop" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Informatie knop" #: edit_act_copy_grids msgid "Grids" msgstr "Rasters" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Stijl van raster A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Stijl van raster B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Stijl van tekst rasters" #: edit_act_copy_text msgid "Text activities" msgstr "Tekst activiteiten" #: edit_act_copy_fontFace msgid "Font face" msgstr "Lettertype" #: edit_act_copy_fontSize msgid "Font size" msgstr "Grootte Lettertype" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Lettertypestijl" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Hoofd tekst kleur" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Kies het JClic project waaruit activiteiten overgenomen worden" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Fouten kleuren" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Tab space" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Stijl van vorig bericht" #: edit_act_changeType msgid "Change activity type" msgstr "Verander activiteiten type" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Volledige naam van de class die gebruikt wordt om de activiteit te " "bouwen(alleen gevorderde gebruikers!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Andere..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Gevorderde gebruikers kunnen ook ongeregistreerde types van JClic " "activiteiten maken. Schrijf hieronder de volledige classnaam, voorafgegaan " "door de pakketnaam ( zoals \"com.acme.activities.FooActivity\"). Activiteit " "classes must extend edu.xtec.jclic.Activity, and must be accessibles " "to the JVM classloader." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Activiteit naam" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Elke activiteit moet een unieke naam hebben in het project" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Waarschuwing: Het veranderen van het type van activiteit " "kan attributen en objecten verloren laten gaan. Voorzichtig " "gebruiken!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Plaats van JClic code:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "URL die wijst naar map met JClic programma bestand en scripts" #: applet_prev_text msgid "HTML code before:" msgstr "HTML code vooraf:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Tekst of HTML code die voor het applet getoond wordt" #: applet_post_text msgid "HTML code after:" msgstr "HTML code nadien:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Tekst of HTML code die na het applet getoond wordt" #: applet_size msgid "Applet size:" msgstr "Applet grootte:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Breedte en hoogte van het applet, in absolute of percent waarde." #: applet_page_title msgid "Page title:" msgstr "Paginatitel:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Tekst die getoond wordt bovenaan het browser venster" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "De web pagina \"%s\" werd met succes gemaakt." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Wil je dit nu openen met de browser?" #: action_createHTML_caption msgid "Create web page..." msgstr "Maak web pagina..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Maak een HTML pagina met een JClic applet" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Maak een HTML pagina met een JClic applet van het huidige project" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Bestandsnaam:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Naam van het HTML bestand dat moet gemaakt worden" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "" "Standaard waarden die gebruikt worden bij het maken van een web pagina" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Achtergrondkleur:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "HTML pagina achtergrond kleur" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Gecentreerd" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Plaats het applet horizontaal gecentreerd" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Applet breedte (absoluut of percent)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Applet hoogte (absoluut of percent)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Bij exit, ga naar:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL waarheen de navigatie dient te wijzen als JClic stopt" #: applet_infoFrame msgid "Info frame name:" msgstr "Info frame naam:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Naam van het frame dat gebruikt wordt om de inhoud die hoort bij de \"info\" " "knop" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Maak project installeer bestand..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Maak project installeer script voor JClic speler" #: installer_caption msgid "Edit project installer script" msgstr "Bewerk project installeer script" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Title:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Project titel, die getoond wordt bij de installeer wizard" #: installer_authors msgid "Autors:" msgstr "Auteurs:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Auteur/s van het project (korte tekst)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Map:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Map naam die gessugereeerd wordt door de installeer wizard" #: installer_files msgid "Files to be copied:" msgstr "Te kopiëren bestanden:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Door het installeer bestand te kopiëren bestanden" #: installer_files_available msgid "Available files" msgstr "Beschikbare bestanden" #: installer_files_selected msgid "Selected files" msgstr "Gekozen bestanden" #: installer_files_add msgid ">> add >>" msgstr ">>toevoegen>>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Voog het geselecteerde bestand toe aan de lijst" #: installer_files_remove msgid "<< remove <<" msgstr "<\n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descrición" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nome da actividade" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nome:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descrición da actividade" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Informes" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Engadir esta actividade nos informes" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Engadir os resultados desta actividade nos informes de usuario" #: edit_act_code msgid "Code:" msgstr "Código:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Código opcional empregado para agrupar e filtrar na base de datos de " "informes." #: edit_act_reportActions msgid "Report user actions" msgstr "Rexistrar tamén as accións" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Rexistrar os detalles de todas as accións feitas polos usuarios" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Contadores" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Contador de tempo" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Mostrar ou ocultar o contador de tempo" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Contador de intentos" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Mostra ou oculta o contador de intentos" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Contador de acertos" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Mostrar ou ocultar o contador de acertos." #: edit_act_maxTime msgid "Max time:" msgstr "Tempo máximo:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Tempo máximo para resolver a actividade, en segundos, ou cero para ilimitado." #: edit_act_countdown msgid "Countdown" msgstr "Conta atrás" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "O contador comeza no máximo valor, decrecendo ata cero." #: edit_act_maxActions msgid "Max tries:" msgstr "Intentos máx:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Número máximo de intentos permitidos, ou cero para ilimitado." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botóns" #: edit_act_helpBtn msgid "Help" msgstr "Axuda" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Mostra ou oculta o botón de axuda" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Mostra a solución" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Mostra esta mensaxe:" #: edit_act_infoBtn msgid "Information" msgstr "Información" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Mostra ou oculta o botón de información" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Mostra esta URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Executa o comando:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Enderezo da páxina web que se mostrará ao facer clic no botón de información" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" "Liña de ordes que se executará ao facer clic no botón de información." #: edit_act_mainWindow msgid "Main window:" msgstr "Xanela principal:" #: edit_act_gameWindow msgid "Game window:" msgstr "Xanela de xogo:" #: edit_act_margin msgid "Margin:" msgstr "Marxe:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espacio horizontal e vertical entre obxectos visuais." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Cor de fondo:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Cambia a cor de fondo." #: edit_gradient_startColor msgid "Start color:" msgstr "Cor inicial:" #: edit_gradient_endColor msgid "End color:" msgstr "Cor final:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Selección da cor inicial" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Selección da cor final." #: edit_gradient_cycles msgid "Cycles:" msgstr "Ciclos:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Número de repeticións do gradiente sobre a superficie a pintar." #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientación:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientación do gradiente, medida en graos sobre a horizontal." #: edit_act_gradient msgid "Gradient:" msgstr "Gradiente:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Emprega un gradiente de cores" #: edit_color_opacity msgid "Opacity" msgstr "Opacidade" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Axusta o valor da canle alfa (opacidade) de cor." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradiente" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Empregar os valores por defecto (gradiente nulo)." #: edit_act_image msgid "Image:" msgstr "Imaxe:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descricións" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nome e descrición" #: edit_act_tiledBgImg msgid "Tiled" msgstr "En mosaico" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Pinta toda a superficie coa imaxe, repetíndoa ao longo dos eixes X e Y " "tantas veces como for necesario." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Vista previa:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Beira" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Debuxar unha liña de beira arredor da xanela" #: edit_act_transparent msgid "Transparent" msgstr "Transparente" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "A xanela ten o fondo transparente" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Anchura:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altura:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Anchura do obxecto, indicada en píxeles" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Altura do obxecto, en píxeles" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrada" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "O obxecto sitúase centrado respecto á xanela principal" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Posición horizontal absoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Posición vertical absoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interface de usuario" #: edit_act_image_tooltip msgid "Select an image" msgstr "Selecciona unha imaxe" #: edit_act_text msgid "Text:" msgstr "Texto:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Texto que se mostrará neste obxecto" #: edit_font_face msgid "Typeface:" msgstr "Tipo:" #: edit_font_size msgid "Size:" msgstr "Tamaño:" #: edit_font_bold msgid "Bold" msgstr "Negra" #: edit_font_italic msgid "Italic" msgstr "Cursiva" #: edit_font_underline msgid "Underline" msgstr "Subliñado" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estilo:" #: edit_cell_title msgid "Cell contents" msgstr "Contido da cela" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Mensaxes" #: edit_act_msg_initial msgid "Initial message:" msgstr "Mensaxe inicial:" #: edit_act_msg_final msgid "Final message:" msgstr "Mensaxe final:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Mensaxe previa:" #: edit_act_msg_error msgid "Error message:" msgstr "Mensaxe de erro:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Mensaxe que se mostra cando comezar a actividade" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Mensaxe que se mostra cando rematar a actividade" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Mensaxe que se mostra cando rematar a actividade con erros" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Mensaxe que se mostra antes de comezar a actividade (só en certos tipos de " "actividades)" #: edit_align msgid "Align:" msgstr "Orientación:" #: edit_act_textColor msgid "Text color:" msgstr "Cor do texto:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Cor empregada para debuxar o texto" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Cor da sombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Cor empregada na sombra do texto, se existe" #: edit_act_shadow msgid "Shadow" msgstr "Sombra" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Debuxar o texto con sombra" #: edit_act_borderColor msgid "Border color:" msgstr "Cor do beira:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Cor empregada para debuxar a beira da cela" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Cor de estado inactiva:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Cor empregada cando a cela está desactivada" #: edit_act_altColor msgid "Alternative color:" msgstr "Cor alternativa:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Cor coa que se mostra o contido alternativo das celas unha vez solucionadas" #: edit_cell_marked msgid "Marked" msgstr "Marcada" #: edit_cell_disabled msgid "Disabled" msgstr "Desactivada" #: edit_cell_alt msgid "Alternative" msgstr "Alternativa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Marxe interna:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Espacio entre as beiras da cela e o texto" #: edit_cell_borderWidth msgid "Border width:" msgstr "Groso da beira:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Groso do trazo empregado para debuxar a beira" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Groso do marcador:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Groso do trazo empregado para debuxar a beira cando a cela se acha marcada " "ou seleccionada" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Vista previa da cela en estado \"alternativo\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Vista previa en estado \"desactivado\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Vista previa en estado \"marcado\"" #: edit_act_testAction msgid "Preview activity" msgstr "Mostrar a actividade:" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Probar o funcionamento da actividade" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descrición" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Título e descrición da actividade" #: edit_act_panels_options msgid "Options" msgstr "Opcións" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opcións da actividade" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Xanela" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspecto, tamaño e posición da xanela na que corre a actividade" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Mensaxes" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Contido das mensaxes da actividade" #: edit_act_panels_panel msgid "Panel" msgstr "Panel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Contidos do panel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estilo" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Axustar a cor, tipo e tamaño de letra das celas" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estilo:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Evitar superposición imaxe/texto" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Intentar evitar que texto e imaxe se superpoñan" #: edit_media_exists_1 msgid "The file" msgstr "O arquivo" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "xa existe na mediateca!" #: edit_act_shaper msgid "Shaper:" msgstr "Recortador:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Erro no xerador de formas:" #: edit_act_num_cols msgid "Columns:" msgstr "Columnas:" #: edit_act_num_rows msgid "Rows:" msgstr "Filas:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Altura dos dentes:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Anchura dos dentes:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribución aleatoria" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propiedades do xerador de formas" #: edit_act_panels_text msgid "Text" msgstr "Texto" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Texto da actividade" #: action_saveFile_caption msgid "Save..." msgstr "Gardar..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Gardar o proxecto" #: action_docTree_caption msgid "Document tree..." msgstr "Árbore do documento..." #: action_docTree_keys msgid "T*" msgstr "T*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Mostra o documento do proxecto en forma de árbore" #: edit_docTree_title msgid "Document tree" msgstr "Árbore do documento" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Referenciado por:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Atención:

Este proxecto " "enlaza con outros proxectos.
¿Desexa explorar as ligazóns e cargar todos " "os arquivos relacionados?

(Recoméndase responder SI cando se está " "importando un paquete de actividades Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Tipo:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Descoñecido" #: edit_mc_type_sound msgid "Play sound" msgstr "Reproducir son" #: edit_mc_type_video msgid "Play video" msgstr "Reproducir vídeo" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Reproducir MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Reproducir CD de audio" #: edit_mc_type_record msgid "Record sound" msgstr "Gravar son" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Interpretar son gravado" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Ir á actividade" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Ir á secuencia" #: edit_mc_type_run_external msgid "Run program" msgstr "Executar un programa" #: edit_mc_type_url msgid "Show URL" msgstr "Mostrar URL" #: edit_mc_type_exit msgid "End" msgstr "Fin" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Volver" #: edit_mc_level msgid "Priority level:" msgstr "Nivel de prioridade:" #: edit_mc_file msgid "File:" msgstr "Arquivo:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parámetros" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Desde:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Ata:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Lonxitude máx.:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Cinta de gravación:" #: edit_mc_stretch msgid "Stretch size" msgstr "Comprimir se non collese" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Posición:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Desde:" #: edit_mc_location_from_box msgid "Cell" msgstr "Cela" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Xanela" #: edit_mc_location_from_frame msgid "Frame" msgstr "Marco" #: edit_mc_loop msgid "Loop playback" msgstr "Repetir indefinidamente" #: edit_mc_autostart msgid "Auto start" msgstr "Comezo automático" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Capturar o rato" #: edit_mc_title msgid "Multimedia and active content" msgstr "Contido activo e multimedia" #: edit_mc_label msgid "Active content:" msgstr "Contido activo:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Selección do obxecto multimedia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Mediateca" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centrado na cela" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centrado na xanela" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Especificar posición:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "A estrutura ou os datos da árbore son incorrectos!" #: edit_act_panels_controls msgid "Controls" msgstr "Controis" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opcións de botóns e contadores" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Tipo:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Distribución dos paneis:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posición relativa dos paneis A e B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Resolución inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "A actividade considerarase resolta cando todos os elementos de \"B\" estexan " "emparellados." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Mostrar todas as frechas" #: edit_act_alt msgid "Alternative content:" msgstr "Contido alternativo:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Contido que se mostra nas celas xa resoltas ou non asignadas." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Editar o contido alternativo" #: edit_act_grid msgid "Grid" msgstr "Panel" #: edit_act_grid_A msgid "Grid A" msgstr "Panel A" #: edit_act_grid_B msgid "Grid B" msgstr "Panel B" #: edit_act_grid_layout msgid "Layout" msgstr "Distribución" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relacións" #: edit_seq_activity_header msgid "activity" msgstr "actividade" #: edit_seq_tag_header msgid "tag" msgstr "etiqueta" #: edit_seq_jump_header msgid "jump to" msgstr "saltar a" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Actividade:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etiqueta:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descrición:" #: edit_seq_auto msgid "Move on automatically" msgstr "Avance automático" #: edit_seq_delay msgid "Delay:" msgstr "Retardo:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Avanzar" #: edit_seq_action_back msgid "Go bak" msgstr "Retroceder" #: edit_seq_action_jump msgid "Jump to..." msgstr "Saltar a..." #: edit_seq_action_stop msgid "Stop" msgstr "Parar" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Volver" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Saír de JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Frecha adiante" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Frecha atrás" #: edit_seq_action msgid "Action:" msgstr "Acción:" #: edit_seq_button_enabled msgid "Show button" msgstr "Mostrar o botón" #: edit_seq_project msgid "JClic Project:" msgstr "Proxecto JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posición absoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "O obxecto situarase nas coordenadas X e Y especificadas" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Posición:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Novo elemento da secuencia..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Inserir un novo elemento na secuencia de actividades" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Seleccione unha actividade para o novo elemento de secuencia." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "Non se pode crear un novo elemento de secuencia sen indicar a actividade!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "En este proxecto non hai ningunha actividade! Non se poden empregar " "elementos de secuencia nun proxecto valeiro." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Destino do salto:" #: edit_seq_jump_title msgid "Jump target" msgstr "Destino do salto" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Engadir unha nova actividade ao proxecto" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Tipo de actividade:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nome:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Seleccione o tipo de actividade que desexe crear e déalle un nome:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "¡Hai que seleccionar un tipo de actividade!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "¡Hai que indicar un nome para a actividade!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "¡Non se puido crear a actividade!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Clase Java:" #: edit_text_act_format msgid "Format" msgstr "Formato" #: edit_text_act_answer msgid "Answer" msgstr "Resposta" #: edit_text_act_popup msgid "Pop up" msgstr "Xanela emerxente" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Respostas válidas:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Engadir un novo elemento á lista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Modificar o elemento seleccionado" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Eliminar da lista o elemento seleccionado" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Arriba" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Baixar" #: edit_list_newValue msgid "New text:" msgstr "Novo texto:" #: edit_list_addElement msgid "Add new list element" msgstr "Engadir un novo elemento de texto" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modificar o texto seleccionado" #: edit_text_act_target msgid "Target" msgstr "Incógnita" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Lonxitude máx.:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Número máximo de caracteres permitidos na resposta." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Carácter de recheo" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Carácter empregado para indicar a incógnita" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Lonxitude inicial" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Número de caracteres de recheo que se mostrarán ao comezo da actividade." #: edit_text_act_iniText msgid "Initial text:" msgstr "Texto inicial:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Texto que se mostrará na incógnita ao comezo da actividade." #: edit_text_act_list msgid "Show a list of options:" msgstr "Mostrar unha lista de opcións:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "O usuario deberá elixir unha opción da lista." #: edit_text_act_check_title msgid "Correction options" msgstr "Opcións de avaliación" #: edit_text_act_popup_no msgid "No pop up" msgstr "Sen xanela emerxente" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Aparición automática" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Aparición en erros" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Aparición con F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Tipo:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Retardo de aparición:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Tempo máx.:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Reproducir só son" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "É necesario seleccionar un fragmento de texto para crear unha nova incógnita!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "O texto das incógnitas non pode incluír retornos de parágrafo nin " "tabuladores." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "As incógnitas non se poden solapar!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "As incógnitas non poden conter celas!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Cor de papel:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Editar os estilos do documento..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Estilo principal:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tab espacio:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espacios entre marcas de tabulador:" #: edit_text_act_colors msgid "Colors:" msgstr "Cores:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Cores das incógnitas:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Cores de erro:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Vista preliminar:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Texto normal" #: edit_text_act_styleSample_target msgid "target" msgstr "incógnita" #: edit_text_act_styleSample_error msgid "error" msgstr "erro" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "texto normal" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "texto normal." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Atención: Esta acción suprimirá a incógnita actualmente seleccionada. Desexa " "facelo?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Xanela previa..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Non mostrar ningún texto antes de comezar a actividade" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Mostrar o texto completo do exercicio" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Mostrar este texto:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Tempo máx.:" #: edit_text_act_edit_target msgid "Target..." msgstr "Incógnita..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Mostrar o botón de avaliación" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Texto do botón:" #: edit_text_act_checkCase msgid "Match case" msgstr "Comprobar maiúsculas/minúsculas" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Ter en conta tiles e caracteres especiais" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Ter en conta os signos de puntuación" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permitir espacios repetidos" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Criterios" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Saltar automaticamente á seguinte incógnita" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Avanzar só se a resposta é correcta" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indicar a posición dos erros" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parámetros do algoritmo de análises" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Pasos:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Campo de exploración:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Avaliación" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Análise das respostas" #: edit_text_act_check_bt msgid "Correction..." msgstr "Corrección..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Botón de avaliación" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progreso" #: edit_text_act_typeBtn msgid "Type..." msgstr "Tipo..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordenar parágrafos" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordenar palabras" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Barallar palabras entre parágrafos" #: edit_text_act_type_title msgid "Activity type" msgstr "Tipo de actividade" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Esta acción suprimirá todas as incógnitas actualmente definidas. Seguro que " "desexa facelo?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identificar palabras" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identificar caracteres" #: edit_media_change_name msgid "Change name..." msgstr "Cambiar o nome..." #: edit_media_change_file msgid "Change file..." msgstr "Cambiar o arquivo..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Gardar no arquivo ZIP" #: edit_media_type msgid "Media type:" msgstr "Tipo de recurso:" #: edit_media_size msgid "File size:" msgstr "Tamaño do arquivo:" #: edit_media_show_type msgid "Files of type:" msgstr "Tipo de arquivos:" #: edit_media_preview msgid "Preview media" msgstr "Visualizar o obxecto" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Visualización do recurso" #: edit_media_rename msgid "Change resource name" msgstr "Cambiar o nome do recurso" #: edit_media_rename_title msgid "Rename" msgstr "Renomear" #: edit_media_rename_prompt msgid "New name:" msgstr "Nome novo:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Nome de recurso non válido!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Xa existe outro recurso con este nome! Cada recurso debe ter un único nome " "no proxecto." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Arquivo incorrecto!" #: err_media_chfile_different msgid "File must be of same type" msgstr "O arquivo debe ser do mesmo tipo" #: edit_media_font_error msgid "Unable to load font!" msgstr "Non se puido cargar o tipo de letra!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Gardar o arquivo (extraelo desde o ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Actualizar o contido do recurso desde o arquivo" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Isto non é un arquivo real, senón un obxecto localizado nun contedor ZIP. " "Para empregar este recurso é preciso que exista un arquivo co mesmo nome no " "cartafol onde está ubicado o ZIP." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Actividades" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Secuencias" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Mediateca" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" "Xestión de imaxes e outros recursos multimedia empregados no proxecto" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Creación e edición das actividades do proxecto" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Creación e edición de secuencias de actividades" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Título:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Título do proxecto" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Proxecto" #: edit_project_tooltip msgid "Edit project properties" msgstr "Edición das propiedades do proxecto" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descrición:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descrición xeral do proxecto" #: edit_project_area msgid "Areas:" msgstr "Áreas:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Áreas curriculares do proxecto" #: edit_project_level msgid "Levels:" msgstr "Niveis:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Niveis educativos do proxecto" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descritores:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descritores do proxecto (separados por comas)" #: edit_project_languages msgid "Languages:" msgstr "Idiomas:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Idiomas empregados no proxecto" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Cambiar o idioma seleccionado" #: edit_project_languages_add msgid "Add language" msgstr "Engadir un idioma:" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Códigos de idioma ISO-639:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Persoas que participaron na creación do proxecto" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nome:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "Correo electrónico:" #: edit_project_author_rol msgid "Rol:" msgstr "Rol:" #: edit_project_author_organization msgid "Organization:" msgstr "Organización:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nome do autor (campo obrigatorio)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Dirección de correo electrónico do autor (opcional)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Rol da persoa no proxecto: autor, colaborador, debuxos, sons... (campo " "opcional)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Escola, universidade, asociación... (campo opcional)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Páxina web persoal (campo opcional)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Outras características (campo opcional)" #: edit_project_author_info msgid "Author info:" msgstr "Datos do autor:" #: edit_project_author_add msgid "Add author to list" msgstr "Engadir un autor á lista" #: edit_project_author_edit msgid "Edit author info" msgstr "Editar información sobre o autor" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nome:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nome da escola" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "Correo electrónico:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Dirección de correo electrónico da escola" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Dirección web da escola" #: edit_project_org_address msgid "Address:" msgstr "Enderezo:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Enderezo postal da escola" #: edit_project_org_pc msgid "PC:" msgstr "CP:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Código postal" #: edit_project_org_city msgid "City:" msgstr "Localidade:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Localidade da escola" #: edit_project_org_country msgid "Country:" msgstr "País:" #: edit_project_org_state msgid "State:" msgstr "Estado:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_org msgid "School/s:" msgstr "Centro/s:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Escolas e outras institucións que participaron no proxecto" #: edit_project_org_info msgid "Organization info:" msgstr "Datos da organización:" #: edit_project_org_add msgid "Add organization" msgstr "Engadir unha nova organización" #: edit_project_org_edit msgid "Edit organization data" msgstr "Modificar os datos da organización" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Estado, país, federación..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Estado federal, nacionalidade, comunidade, rexión..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Outros datos..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Data da revisión:" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autor da revisión" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descrición:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breve descrición dos cambios realizados" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Información adicional" #: edit_project_rev msgid "Revisions:" msgstr "Revisións:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Historial das principais modificacións efectuadas no proxecto" #: edit_project_rev_add msgid "Add revision record" msgstr "Engadir un rexistro de revisión" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Modificación dos datos da revisión" #: edit_project_rev_info msgid "Revision data" msgstr "Características da revisión" #: edit_media_objects msgid "objects" msgstr "obxectos" #: edit_media_object msgid "object" msgstr "obxecto" #: edit_evsounds_start msgid "Start of activity:" msgstr "Comezo da actividade:" #: edit_evsounds_click msgid "Click on object:" msgstr "Facer clic nun obxecto:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Acción errónea:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Acción correcta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Actividade rematada con erros:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Actividade rematada correctamente:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Erro: O campo da descrición non pode quedar en branco!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Edición dos sons de evento" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Sons de evento:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Asignar sons específicos a cada evento JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Sons de evento:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Poñer sons específicos a cada evento de JClic" #: edit_evsounds_default msgid "default sound" msgstr "son por defecto" #: edit_evsounds_disabled msgid "disabled" msgstr "desactivado" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Activa ou desactiva o son para este evento" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Faga clic para seleccionar un son para este evento, ou desmarque para " "empregar o son por defecto" #: action_newProject_caption msgid "New project..." msgstr "Novo proxecto..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Crea un novo proxecto JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Desde:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valor mínimo do operando" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Ata:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valor máximo do operando" #: edit_arith_op_with msgid "With:" msgstr "Con:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Se se marca, o operando pode ter tamén este valor" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Un da lista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Lista de posíbeis valores do operando" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimais:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Número de decimais do operando" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (integer)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#,#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#,##" #: edit_arith_firstOp msgid "First operand" msgstr "Primeiro operando" #: edit_arith_secondOp msgid "Second operand" msgstr "Segundo operando" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 para JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operacións:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Selecciona o tipo de operacións a realizar" #: edit_arith_operations_plus msgid "Plus" msgstr "Sumas" #: edit_arith_operations_minus msgid "Minus" msgstr "Restas" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplicacións" #: edit_arith_operations_divide msgid "Divide" msgstr "Divisións" #: edit_arith_unknown msgid "Unknown:" msgstr "Incógnita:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Selecciona o elemento que fará de incógnita" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "A incógnita é o resultado" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "A incógnita é o segundo operando" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "O primeiro operando é a incógnita" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "A operación é a incógnita" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Escribe a expresión comezando polo resultado" #: edit_arith_result msgid "Result:" msgstr "Resultado:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Sen \"levar\"" #: edit_arith_result_random msgid "Random" msgstr "Aleatorio" #: edit_arith_result_asc msgid "Ascending" msgstr "Ascendente" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordenar por resultado:" #: edit_arith_result_desc msgid "Descending" msgstr "Descendente" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evitar duplicados" #: edit_arith_cond msgid "Conditions:" msgstr "Condicións:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indiferente" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "O primeiro operando debe ser maior que o segundo" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "O primeiro operando debe ser menor que o segundo" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Outras condicións" #: edit_autocp msgid "Automatic content generator:" msgstr "Xerador automático de contido:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Selección do tipo de xerador automático de contido para esta actividade." #: edit_autocp_block msgid "Content generator" msgstr "Xerador de contido" #: edit_autocp_btn msgid "Settings..." msgstr "Configuración..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configuración dos parámetros do xerador de contido" #: edit_data msgid "Edit data" msgstr "Edición de datos" #: edit_act msgid "Activity edit" msgstr "Edición da actividade" #: edit_acp msgid "Content provider edit" msgstr "Edición do xerador de contido" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "¡Erro de creación do xerador automático de contido!" #: edit_project_author_group msgid "Creation" msgstr "Creación" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descrición" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interface de usuario" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descrición:" #: m_Edit msgid "Edit" msgstr "Edición" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Nova actividade..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Inserir" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Ver" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Proxecto" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Edita as propiedades do proxecto" #: action_editMedia_caption msgid "Media" msgstr "Mediateca" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Edita a biblioteca multimedia do proxecto" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Actividades" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Edita as actividades" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Secuencias" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Edita as secuencias das actividades" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "O proxecto actual foi modificado. Desexa gardar os cambios?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descritores" #: edit_media_new msgid "New media object..." msgstr "Novo obxecto multimedia..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Engadir unha nova imaxe ou obxecto multimedia á mediateca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Límite de puntuación:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Segue este camiño cando a puntuación global for igual ou maior que..." #: edit_seq_time msgid "Time threshold:" msgstr "Límite de tempo:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Para seguir este camiño, o tempo empregado nas actividades debe ser inferior " "a..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Segue este camiño cando a puntuación global for inferior a..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Segue este camiño cando o tempo empregado nas actividades for maior que..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Saltos condicionais" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Especificar saltos especiais que se executarán unicamente se se dan " "determinadas condicións" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Indicar as condicións para saltar a un nivel superior" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Salto inferior:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Salto superior:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Indicar as condicións para saltar a un nivel inferior" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Acción asignada ao botón de \"avanzar\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Acción asignada ao botón de \"retroceder\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Indicar o destino do salto" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Acción a realizar" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Actividade asignada a este elemento da secuencia" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Etiqueta empregada para referirse a este elemento da secuencia (campo " "opcional)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descrición do elemento da secuencia (campo opcional)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Activar ou desactivar o botón de paso de actividade" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Avanzar automaticamente ao finalizar a actividade" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Número de segundos a esperar antes de realizar o paso automático" #: edit_color_dlgTitle msgid "Select color" msgstr "Selección da cor" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Por favor, agarda mentres se cambia o nome do recurso..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Ancho:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Anchura das celas (en píxeles)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Alto:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Altura das celas (en píxeles)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Palabras ocultas:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Lista das palabras ocultas no panel" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Empregar o panel B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Empregar un segundo panel, que se mostrará segundo se acharen as palabras" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Selección do tipo de xerador de formas do panel" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Número de columnas do panel" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Número de filas do panel" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Separadores transparentes" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Mostra os separadores (celas negras) como buratos transparentes" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Mesturas\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Número de veces que se barallarán as pezas" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copiar atributos a..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Atributos:" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplicar a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Xanela principal" #: edit_act_copy_style_play msgid "Play window" msgstr "Xanela de xogo" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Actividades a modificar:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copiar atributos" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "" "Copiar a outras actividades algúns dos atributos da actividade actual" #: edit_new_project_name msgid "Project name:" msgstr "Nome do proxecto:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nome curto e descritivo do proxecto" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nome de arquivo:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nome do arquivo do proxecto, sen extensión" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Cartafol:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nome do cartafol no que se almacenará o proxecto" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Navegar..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Crear novo proxecto JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Erro: Tanto o proxecto como o arquivo e o cartafol deben ter nomes válidos, " "non pode quedar o campo en branco." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Este cartafol xa contén outro proxecto Clic 3.0 ou JClic. Para evitar " "confusións, recoméndase manter cada proxecto nun cartafol diferenciado, se " "ben non é un requisito imprescindíbel. Realmente desexa crear o novo " "proxecto neste cartafol?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Erro: Imposíbel crear o cartafol especificado!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Erro: ¡Non seleccionou ningunha actividade! Para empregar esta función é " "necesario seleccionar a lista de actividade ou actividades ás que se lle " "aplicarán os atributos indicados." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copiando atributos a:" #: edit_act_copy_margin msgid "Margin" msgstr "Marxe" #: edit_act_copy_bgColor msgid "Background color" msgstr "Cor de fondo" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradiente" #: edit_act_copy_bgImage msgid "Background image" msgstr "Imaxe de fondo" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Beira" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Fondo transparente" #: edit_act_copy_position msgid "Position" msgstr "Posición" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Mensaxes" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Estilo da mensaxe inicial" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Estilo da mensaxe final" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Estilo da mensaxe de erro" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Informes" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Engadir a actividade nos informes" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Rexistrar accións" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interface de usuario" #: edit_act_copy_skin msgid "Skin" msgstr "Contorno visual" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sons de evento" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Contadores" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Contador de tempo" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Tempo máximo" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Contador de intentos" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Número máximo de intentos" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Contador de acertos" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Número de veces que hai que barallar" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botóns" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Botón de axuda:" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Botón de información" #: edit_act_copy_grids msgid "Grids" msgstr "Paneis" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Estilo do panel A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Estilo do panel B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Estilo dos paneis de texto" #: edit_act_copy_text msgid "Text activities" msgstr "Actividades de texto" #: edit_act_copy_fontFace msgid "Font face" msgstr "Tipo de letra" #: edit_act_copy_fontSize msgid "Font size" msgstr "Tamaño de letra" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Estilo de letra" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Cor do texto principal" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Cor das incógnitas" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Cor dos erros" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Espacio entre tabuladores" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Estilo da mensaxe previa" #: edit_act_changeType msgid "Change activity type" msgstr "Cambiar o tipo de actividade" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nome completo da clase que se empregará para construír a actividade (¡só " "usuarios avanzados!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Outras..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Os usuarios/as avanzados/as poden crear tamén outros tipos de actividades " "JClic non rexistradas. Escriba debaixo o nome completo da clase, precedida " "polo do paquete (por exemplo: \"com.acme.activities.FooActivity\"). As novas " "actividades extenderán edu.xtec.jclic.Activity, e serán accesíbeis ao " "cargador de clases da Máquina Virtual de Java." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nome da actividade:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Cada actividade terá un nome único no proxecto" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Atención: O " "cambio de tipo pode causar a perda dalgúns dos atributos e obxectos da " "actividade que se está a editar. ¡Empregue esta función con " "coidado!

" #: applet_codebase msgid "Location of JClic code:" msgstr "Ubicación do código JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "URL que apunta a un cartafol onde están os arquivos de programa do JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Código HTML previo:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Texto ou código HTML que aparecerá antes do applet" #: applet_post_text msgid "HTML code after:" msgstr "Código HTML posterior:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Texto ou código HTML que aparecerá despois do applet" #: applet_size msgid "Applet size:" msgstr "Tamaño do applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Anchura e altura do applet, en valores absolutos ou percentuais." #: applet_page_title msgid "Page title:" msgstr "Título da páxina:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Texto que se mostrará na parte superior da xanela do navegador" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "A páxina web \"%s\" creouse con éxito." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "¿Desexa abrila agora co navegador?" #: action_createHTML_caption msgid "Create web page..." msgstr "Crear páxina web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Creación dunha páxina HTML cun applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Creación dunha páxina HTML cun applet que conteña o proxecto actual." #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nome do arquivo:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nome do arquivo HTML que se creará" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valores por defecto empregados na creación de páxinas web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Cor de fondo:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Cor de fondo da páxina web" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centrado" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Situar o applet centrado horizontalmente" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Anchura do applet (en valor absoluto ou percentual)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Altura do applet (en valor absoluto ou percentual)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Ao saír, ir a:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL a onde se redirixirá a navegación ao saír de JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Marco de información:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Nome do marco empregado para mostrar o contido ligado ao botón \"info\"" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Crear instalador do proxecto..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Creación dun arquivo de instalación do proxecto para JClic player" #: installer_caption msgid "Edit project installer script" msgstr "Edición do arquivo de instalación do proxecto" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Título:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Título do proxecto que se mostrará no asistente da instalación" #: installer_authors msgid "Autors:" msgstr "Autores:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autor/es do proxecto (texto curto)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Cartafol:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nome do cartafol que suxerirá o asistente da instalación" #: installer_files msgid "Files to be copied:" msgstr "Arquivos a copiar:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Arquivos que se copiarán durante a instalación" #: installer_files_available msgid "Available files" msgstr "Arquivos dispoñíbeis" #: installer_files_selected msgid "Selected files" msgstr "Arquivos seleccionados" #: installer_files_add msgid ">> add >>" msgstr ">> engadir >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Engadir o arquivo seleccionado á lista" #: installer_files_remove msgid "<< remove <<" msgstr "<< suprimir <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Quitar o arquivo seleccionado da lista" #: installer_button msgid "Launch button" msgstr "Botón de activación" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propiedades do botón que se mostrará na biblioteca de proxectos" #: installer_button_project msgid "Main project:" msgstr "Proxecto principal" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Proxecto JClic asociado ao botón" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etiqueta" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Breve etiqueta de texto, que aparecerá dentro do botón" #: installer_button_icon msgid "Icon:" msgstr "Icona:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Imaxe que mostrará o botón. Deixar en branco para empregar o botón JClic por " "defecto." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descrición" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Texto de axuda emerxente que mostrará o botón" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Erro: Hai que indicar o título do proxecto" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "" "Erro: Hai que indicar o nome do cartafol no que se instalará o proxecto" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Erro: Non hai ningún arquivo seleccionado" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Erro: Hai que indicar o texto do botón de activación" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Erro: O proxecto asignado ao botón de activación non se acha entre os " "arquivos a copiar" #: applet_page_full msgid "Full-page applet" msgstr "O applet ocupa toda a páxina" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "O applet ten unhas dimensións específicas" #: edit_text_align_left msgid "Align text left" msgstr "Aliñar o texto á esquerda" #: edit_text_align_center msgid "Center text" msgstr "Texto centrado" #: edit_text_align_right msgid "Align text right" msgstr "Aliñar o texto á dereita" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Crear unha incógnita ou suprimila" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Inserir unha cela" #: edit_text_act_content msgid "Content" msgstr "Contido" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Estilo" #: edit_cell_size msgid "Cell size:" msgstr "Dimensións:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "As seguintes actividades non chegaron a executarse, posto que non aparecen " "en ningunha secuencia de actividades do proxecto:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Os seguintes obxectos da mediateca non se empregan directamente en ninguha " "actividade:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "Desexa engadilas ao remate da última secuencia de actividades?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Desexa eliminalos?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Retirada de obxectos multimedia non empregados" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Actividades orfas:" #: edit_media_refreshAll msgid "Update all media content" msgstr "Actualizar o contido de todos os recursos" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Actualizar todos os recursos recargando os seus arquivos" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Actualizando recursos..." #: edit_media_exportAll msgid "Export all media" msgstr "Exportar todos os recursos" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Gravar en arquivos o contido de todos os recursos" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Seleccionar" #: edit_shape_addPoint msgid "Add point" msgstr "Engadir un punto" #: edit_shape_deletePoint msgid "Delete" msgstr "Borrar" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Debuxar un rectángulo" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Debuxar unha elipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Debuxar un polígono" #: edit_shape_toLine msgid "Convert to line" msgstr "Converter en liña" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Converter en curva de Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Converter en curva cuadrática" #: edit_shape_rLeft msgid "Rotate left" msgstr "Xirar á esquerda" #: edit_shape_rRight msgid "Rotate right" msgstr "Xirar á dereita" #: edit_shape_expand msgid "Expand" msgstr "Expandir" #: edit_shape_contract msgid "Contract" msgstr "Contraer" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Acercar" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Afastar" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Adxuntar puntos próximos" #: edit_shape_showPoints msgid "Show points" msgstr "Mostrar os puntos" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Mostrar/Ocultar os puntos" #: edit_shape_gridSize msgid "Grid size:" msgstr "Grella" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Mostrar / Ocultar a grella" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Radio do imán:" #: edit_shape_elements msgid "Defined elements" msgstr "Elementos definidos" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nome do elemento seleccionado" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Radio de acción do imán cando está activado" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Tamaño da grella" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Actividade:" #: edit_mc_sequence msgid "Sequence:" msgstr "Secuencia:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Proxecto:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Escoller actividade" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Escoller secuencia" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Datos insuficientes!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Cor das frechas:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Cor empregada polo editor para debuxar as frechas (non é exacto, xa que se " "emprega unha máscara XOR de bits)" #: edit_act_editActivity msgid "Edit..." msgstr "Editar..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Editar a actividade seleccionada" #: action_saveFileAs_caption msgid "Save as..." msgstr "Gardar como..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Garda o proxecto cun nome diferente" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Arrastrar" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Drag cells instead of use a connection line" #: edit_act_behavior_order msgid "Check solving order" msgstr "Check solving order" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Cells must be solved in order" #: edit_act_scramble msgid "Scramble" msgstr "Barallar" #: action_importActivities_caption msgid "Import activities..." msgstr "Importar actividades..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importar actividades dende outro proxecto" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "O ficheiro seleccionado correspóndese co proxecto actual. As actividades " "poden ser importadas só entre proxectos diferentes. Por favor, escolla outro " "ficheiro de proxecto." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "Escolla unha ou máis actividades a importar no proxecto actual\\:" #: import_importing msgid "Importing..." msgstr "A importar..." #: import_checkdep msgid "Checking dependencies..." msgstr "Comprobación de dependencias..." #: import_impmedia msgid "Importing media\\:" msgstr "Importando multimedia\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importando actividade\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Escolla o proxecto JClic a partir do cal desexa importar actividades" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marcas de etiquetas" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marca inicial\\:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marca usada ao inicio das etiquetas" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marca final\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marca usada ao final das etiquetas" #: edit_tagRep_file msgid "File" msgstr "Arquivo" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Arquivo ou URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Nome ou URL do ficheiro que contén os valores que remprazarán as etiquetas" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Codificación de caracteres\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Codificación de caracteres empregada no ficheiro" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Explorar..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Explorar o sistema de ficheiros" #: edit_tagRep_title msgid "Tag replacing" msgstr "Remprazo de etiqueta" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Borrar estilos de texto..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Atención\\: Esta acción borrará os atributos dos caracteres específicos " "aplicados ao documento, restaurándoos ao seu estilo principal. Esta acción " "non se pode desfacer. Está seguro de querer continuar?" #: img_max_size msgid "Maximum size of images:" msgstr "" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_pt.po0000644000175000017500000024222211377161311023161 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-17 17:52+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descrição" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nome da actividade" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nome:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descrição da actividade" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Relatórios" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Incluir esta actividade nos relatórios" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Incluir os resultados desta actividade nos relatórios de utilizador" #: edit_act_code msgid "Code:" msgstr "Código:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Código opcional utilizado para agrupar e filtrar na base de dados de " "relatórios." #: edit_act_reportActions msgid "Report user actions" msgstr "Registar também as acções" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" "Registar pormenores de todas as acções efectuadas pelos utilizadores." #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Contadores" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Contador de tempo" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Mostrar ou ocultar contador de tempo." #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Contador de tentativas" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Mostrar ou ocultar contador de tentativas." #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Contador de acertos" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Mostrar ou ocultar contador de acertos." #: edit_act_maxTime msgid "Max time:" msgstr "Tempo máximo:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Tempo máximo permitido para resolver a actividade, em segundos. O zero " "significa tempo ilimitado." #: edit_act_countdown msgid "Countdown" msgstr "Contagem regressiva" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "O contador inicia no valor máximo, decrescendo até zero." #: edit_act_maxActions msgid "Max tries:" msgstr "Tentativas máx.:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Número máximo de tentativas permitidas, ou zero para ilimitado." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botões" #: edit_act_helpBtn msgid "Help" msgstr "Ajuda" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Mostrar ou ocultar o botão de ajuda" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Mostrar a solução" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Mostrar esta mensagem:" #: edit_act_infoBtn msgid "Information" msgstr "Informação" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Mostrar ou ocultar o botão de informação" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Mostrar esta URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Executar o comando:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "Endereço web a mostrar ao clicar no botão de informação." #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Linha de comandos a executar ao clicar no botão de informação." #: edit_act_mainWindow msgid "Main window:" msgstr "Janela principal:" #: edit_act_gameWindow msgid "Game window:" msgstr "Janela de jogo:" #: edit_act_margin msgid "Margin:" msgstr "Margem:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espaço vertical e horizontal entre objectos visuais." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Cor de fundo:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Mudar cor de fundo." #: edit_gradient_startColor msgid "Start color:" msgstr "Cor inicial:" #: edit_gradient_endColor msgid "End color:" msgstr "Cor final:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Selecção da cor inicial" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Selecção da cor final" #: edit_gradient_cycles msgid "Cycles:" msgstr "Ciclos:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Número de repetições do gradiente sobre a superfície a pintar." #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientação:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientação do gradiente, medida em graus sobre a horizontal." #: edit_act_gradient msgid "Gradient:" msgstr "Gradiente:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Utilizar um gradiente de cores" #: edit_color_opacity msgid "Opacity" msgstr "Opacidade" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Ajusta o valor do canal alfa (opacidade) da cor." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradiente" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Utilizar os valores padrão (gradiente nulo)" #: edit_act_image msgid "Image:" msgstr "Imagem:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descrição" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nome e descrição" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Em mosaico" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Pinta toda a superfície com a imagem, repetindo-a ao longo dos eixos X e Y." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Previsualizar:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Limite" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Desenhar limite da janela" #: edit_act_transparent msgid "Transparent" msgstr "Transparente" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "A janela tem fundo transparente" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Largura:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altura:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Largura do objecto, em píxeis" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Altura do objecto, em píxeis" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrada" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "Objecto centrado em relação à janela principal" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Posição horizontal absoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Posição vertical absoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interface de utilizador" #: edit_act_image_tooltip msgid "Select an image" msgstr "Seleccionar uma imagem" #: edit_act_text msgid "Text:" msgstr "Texto:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Texto a mostrar para este objecto" #: edit_font_face msgid "Typeface:" msgstr "Tipo:" #: edit_font_size msgid "Size:" msgstr "Tamanho:" #: edit_font_bold msgid "Bold" msgstr "Negrito" #: edit_font_italic msgid "Italic" msgstr "Itálico" #: edit_font_underline msgid "Underline" msgstr "Sublinhado" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estilo:" #: edit_cell_title msgid "Cell contents" msgstr "Conteúdo da célula" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Mensagens" #: edit_act_msg_initial msgid "Initial message:" msgstr "Mensagem inicial:" #: edit_act_msg_final msgid "Final message:" msgstr "Mensagem final:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Mensagem anterior:" #: edit_act_msg_error msgid "Error message:" msgstr "Mensagem de erro:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Mensagem a mostrar ao iniciar a actividade" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Mensagem a mostrar ao terminar a actividade" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Mensagem a mostrar ao terminar a actividade com erros" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Mensagem a mostrar antes de iniciar (disponível nalgumas actividades)" #: edit_align msgid "Align:" msgstr "Alinhamento:" #: edit_act_textColor msgid "Text color:" msgstr "Cor do texto:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Cor utilizada pelo texto" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Cor da sombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Cor da sombra do texto, se houver." #: edit_act_shadow msgid "Shadow" msgstr "Sombra" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Desenhar texto com sombra" #: edit_act_borderColor msgid "Border color:" msgstr "Cor do limite:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Cor do limite da célula" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Cor de estado inactivo:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Cor para célula desactivada" #: edit_act_altColor msgid "Alternative color:" msgstr "Cor alternativa:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "Cor para conteúdo alternativo das células solucionadas." #: edit_cell_marked msgid "Marked" msgstr "Marcada" #: edit_cell_disabled msgid "Disabled" msgstr "Desactivada" #: edit_cell_alt msgid "Alternative" msgstr "Alternativa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Margem interna:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Espaço entre limites da célula e texto." #: edit_cell_borderWidth msgid "Border width:" msgstr "Espessura do limite:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Espessura do limite." #: edit_cell_markerWidth msgid "Marker width:" msgstr "Espessura do marcador:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "Espessura do limite de uma célula marcada ou seleccionada." #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Previsualizar no estado \"alternativo\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Previsualizar no estado \"desactivado\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Previsualizar no estado \"marcado\"" #: edit_act_testAction msgid "Preview activity" msgstr "Mostrar actividade" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Testar o funcionamento da actividade" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descrição" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Título e descrição da actividade" #: edit_act_panels_options msgid "Options" msgstr "Opções" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opções da actividade" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Janela" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspecto, tamanho e posição da janela durante a actividade" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Mensagens" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Conteúdo das mensagens da actividade" #: edit_act_panels_panel msgid "Panel" msgstr "Painel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Conteúdo do painel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estilo" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Ajustar a cor, tipo e tamanho de letra das células" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estilo:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Evitar sobreposição imagem/texto" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Tentar evitar sobreposição texto/imagem" #: edit_media_exists_1 msgid "The file" msgstr "O ficheiro" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "já está na mediateca!" #: edit_act_shaper msgid "Shaper:" msgstr "Recorte:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Erro no gerador de formas:" #: edit_act_num_cols msgid "Columns:" msgstr "Colunas:" #: edit_act_num_rows msgid "Rows:" msgstr "Linhas:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Altura dos dentes:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Largura dos dentes:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribuição aleatória" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propriedades do gerador de formas" #: edit_act_panels_text msgid "Text" msgstr "Texto" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Texto da actividade" #: action_saveFile_caption msgid "Save..." msgstr "Guardar..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "GG" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Guardar o projecto" #: action_docTree_caption msgid "Document tree..." msgstr "Árvore do documento..." #: action_docTree_keys msgid "T*" msgstr "A*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Mostrar o documento do projecto em forma de árvore" #: edit_docTree_title msgid "Document tree" msgstr "Árvore do documento" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Em uso por:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Atenção:

Este projecto " "está ligado a outros projectos.
Deseja explorá-los e carregar todos os " "arquivos relacionados?

(Recomenda-se responder SIM ao importar um " "pacote de actividades Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Tipo:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Desconhecido" #: edit_mc_type_sound msgid "Play sound" msgstr "Reproduzir som" #: edit_mc_type_video msgid "Play video" msgstr "Reproduzir vídeo" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Reproduzir MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Reproduzir CD áudio" #: edit_mc_type_record msgid "Record sound" msgstr "Gravar som" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Reproduzir gravação" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Ir para actividade" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Ir para sequência" #: edit_mc_type_run_external msgid "Run program" msgstr "Executar programa" #: edit_mc_type_url msgid "Show URL" msgstr "Mostrar URL" #: edit_mc_type_exit msgid "End" msgstr "Terminar" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Voltar" #: edit_mc_level msgid "Priority level:" msgstr "Nível de prioridade:" #: edit_mc_file msgid "File:" msgstr "Ficheiro:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parâmetros:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "De:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Até:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Duração máx.:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Buffer de gravação:" #: edit_mc_stretch msgid "Stretch size" msgstr "Comprimir se não couber" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Posição:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "De:" #: edit_mc_location_from_box msgid "Cell" msgstr "Célula" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Janela" #: edit_mc_location_from_frame msgid "Frame" msgstr "Moldura" #: edit_mc_loop msgid "Loop playback" msgstr "Repetir indefinidamente" #: edit_mc_autostart msgid "Auto start" msgstr "Arranque automático" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Capturar rato" #: edit_mc_title msgid "Multimedia and active content" msgstr "Conteúdo activo e multimédia" #: edit_mc_label msgid "Active content:" msgstr "Conteúdo activo:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Selecção do objecto multimédia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Biblioteca de recursos" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centrado na célula" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centrado na janela" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Especificar posição:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Estrutura ou dados da árvore incorrectos." #: edit_act_panels_controls msgid "Controls" msgstr "Controlos" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opções de botões e contadores" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Tipo:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Distribuição dos painéis:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posição relativa dos painéis A e B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Resolução inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "Actividade resolvida quando todos os elementos de \"B\" estiverem " "emparelhados." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Mostrar todas as setas" #: edit_act_alt msgid "Alternative content:" msgstr "Conteúdo alternativo:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Conteúdo a mostrar nas células resolvidas ou não realizadas." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Editar o conteúdo alternativo" #: edit_act_grid msgid "Grid" msgstr "Grelha" #: edit_act_grid_A msgid "Grid A" msgstr "Grelha A" #: edit_act_grid_B msgid "Grid B" msgstr "Grelha B" #: edit_act_grid_layout msgid "Layout" msgstr "Distribuição" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relações" #: edit_seq_activity_header msgid "activity" msgstr "actividade" #: edit_seq_tag_header msgid "tag" msgstr "etiqueta" #: edit_seq_jump_header msgid "jump to" msgstr "saltar para" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Actividade:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Rótulo:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descrição:" #: edit_seq_auto msgid "Move on automatically" msgstr "Avanço automático" #: edit_seq_delay msgid "Delay:" msgstr "Atraso:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Avançar" #: edit_seq_action_back msgid "Go bak" msgstr "Retroceder" #: edit_seq_action_jump msgid "Jump to..." msgstr "Ir para..." #: edit_seq_action_stop msgid "Stop" msgstr "Parar" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Voltar" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Sair do JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Seta \"seguir\":" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Seta \"voltar\":" #: edit_seq_action msgid "Action:" msgstr "Acção:" #: edit_seq_button_enabled msgid "Show button" msgstr "Mostrar botão" #: edit_seq_project msgid "JClic Project:" msgstr "Projecto JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posição absoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "O objecto será colocado nas coordenadas X e Y especificadas" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Posição:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Novo elemento da sequência..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Inserir um novo elemento na sequência de actividades" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Seleccione uma actividade para o novo elemento da sequência." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "Não é possível criar um novo elemento de sequência sem indicar a actividade!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Neste projecto não há nenhuma actividade. Não é possível criar elementos de " "sequência num projecto vazio." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Destino do salto:" #: edit_seq_jump_title msgid "Jump target" msgstr "Destino do salto" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Adicionar uma nova actividade ao projecto" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Tipo de actividade:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nome:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Seleccione o tipo de actividade a criar e dê-lhe um nome:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Deve seleccionar um tipo de actividade!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Deve indicar um nome para a actividade!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Não foi possível criar a actividade!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Classe Java:" #: edit_text_act_format msgid "Format" msgstr "Formato" #: edit_text_act_answer msgid "Answer" msgstr "Resposta" #: edit_text_act_popup msgid "Pop up" msgstr "Janela emergente (\"pop up\")" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Respostas válidas:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Adicionar um novo elemento à lista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Modificar o elemento seleccionado" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Eliminar o elemento seleccionado da lista" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Mover para cima" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Mover para baixo" #: edit_list_newValue msgid "New text:" msgstr "Novo texto:" #: edit_list_addElement msgid "Add new list element" msgstr "Adicionar um novo elemento de texto" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modificação do texto seleccionado" #: edit_text_act_target msgid "Target" msgstr "Incógnita" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Comprimento máx.:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Número máximo de caracteres permitidos na resposta." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Carácter de preenchimento" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Carácter utilizado para indicar a incógnita" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Comprimento inicial:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Número de caracteres de preenchimento a mostrar ao iniciar a actividade." #: edit_text_act_iniText msgid "Initial text:" msgstr "Texto inicial:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Texto a mostrar ao iniciar a actividade." #: edit_text_act_list msgid "Show a list of options:" msgstr "Mostrar uma lista de opções:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "O utilizador deve escolher uma opção numa lista." #: edit_text_act_check_title msgid "Correction options" msgstr "Opções de avaliação" #: edit_text_act_popup_no msgid "No pop up" msgstr "Sem janela emergente (\"pop up\")" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Aparição automática" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Aparição em erros" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Aparição com F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Tipo:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Atraso na aparição:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Tempo máximo:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Apenas som" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "Para criar uma nova incógnita, seleccione um fragmento de texto." #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "O texto das incógnitas não pode incluir parágrafos nem tabulações." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "As incógnitas não podem sobrepor-se" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "As incógnitas não podem conter células!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Cor do papel:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Editar os estilos do documento..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Estilo principal:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Espaçamento de tabulação:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espaços entre marcas de tabulação:" #: edit_text_act_colors msgid "Colors:" msgstr "Cores:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Cores das incógnitas:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Cores de erro:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Previsualizar:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Texto normal" #: edit_text_act_styleSample_target msgid "target" msgstr "incógnita" #: edit_text_act_styleSample_error msgid "error" msgstr "erro" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "texto normal" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "texto normal." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Atenção: esta acção suprimirá a incógnita seleccionada. Tem a certeza de que " "deseja suprimi-la?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Ecrã anterior" #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Não mostrar texto antes de iniciar a actividade" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Mostrar o texto completo do exercício" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Mostrar este texto:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Tempo máximo:" #: edit_text_act_edit_target msgid "Target..." msgstr "Incógnita..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Mostrar botão de avaliação" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Texto do botão:" #: edit_text_act_checkCase msgid "Match case" msgstr "Verificar maiúsculas / minúsculas" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Considerar acentos e caracteres especiais" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Considerar os sinais de pontuação" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permitir espaços repetidos" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Critérios" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Saltar automaticamente para incógnita seguinte" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Avançar apenas se responder correctamente" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indicar erros letra a letra" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parâmetros do algoritmo de análise:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Passos:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Campo de exploração:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Verificação" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Análise das respostas" #: edit_text_act_check_bt msgid "Correction..." msgstr "Avaliação..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Botão de avaliação" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progresso" #: edit_text_act_typeBtn msgid "Type..." msgstr "Tipo..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordenar parágrafos" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordenar palavras" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Misturar palavras entre parágrafos" #: edit_text_act_type_title msgid "Activity type" msgstr "Tipo de actividade" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Esta acção suprimirá todas as incógnitas. Tem a certeza de que deseja " "suprimi-las?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identificar palavras" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identificar caracteres" #: edit_media_change_name msgid "Change name..." msgstr "Renomear..." #: edit_media_change_file msgid "Change file..." msgstr "Mudar ficheiro..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Guardar em ficheiro ZIP" #: edit_media_type msgid "Media type:" msgstr "Tipo de recurso:" #: edit_media_size msgid "File size:" msgstr "Tamanho do ficheiro:" #: edit_media_show_type msgid "Files of type:" msgstr "Tipo de ficheiros:" #: edit_media_preview msgid "Preview media" msgstr "Visualizar objecto" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Previsualização do recurso multimédia" #: edit_media_rename msgid "Change resource name" msgstr "Mudar o nome do recurso" #: edit_media_rename_title msgid "Rename" msgstr "Renomear" #: edit_media_rename_prompt msgid "New name:" msgstr "Novo nome:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Nome de recurso inválido!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Já existe outro recurso com este nome. Os recursos devem ter um nome único " "no projecto." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Ficheiro incorrecto" #: err_media_chfile_different msgid "File must be of same type" msgstr "Ficheiro deve ser do mesmo tipo" #: edit_media_font_error msgid "Unable to load font!" msgstr "Não foi possível carregar o tipo de letra." #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Guardar o ficheiro (extraí-lo do ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Actualizar o conteúdo a partir do ficheiro" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Não é um ficheiro \"real\", é um objecto dentro de um ficheiro ZIP. Para " "utilizar esta função, é necessário que exista um ficheiro com o mesmo nome " "na pasta onde está o ficheiro ZIP." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Actividades" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Sequências" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Biblioteca de recursos" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Gestão de imagens e outros recursos utilizados no projecto." #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Criação e edição das actividades do projecto" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Criação e edição de sequências de actividades" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Título:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Título do projecto" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Projecto" #: edit_project_tooltip msgid "Edit project properties" msgstr "Edição das propriedades do projecto" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descrição:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descrição geral do projecto" #: edit_project_area msgid "Areas:" msgstr "Áreas:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Áreas curriculares a que se destina o projecto" #: edit_project_level msgid "Levels:" msgstr "Níveis:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Níveis e ciclos educativos a que se destina o projecto" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descritores:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descritores do projecto (separados por vírgulas)" #: edit_project_languages msgid "Languages:" msgstr "Idiomas:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Idiomas utilizados no projecto" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Mudar idioma seleccionado" #: edit_project_languages_add msgid "Add language" msgstr "Adicionar idioma" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Códigos de idioma ISO-639:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Pessoas que participaram na criação do projecto" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nome:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "Correio electrónico:" #: edit_project_author_rol msgid "Rol:" msgstr "Função:" #: edit_project_author_organization msgid "Organization:" msgstr "Organização:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Comentários:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nome do autor (obrigatório)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Endereço de correio electrónico do autor (opcional)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Função da pessoa no projecto: autor, colaborador, desenhos, sons... " "(opcional)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Escola, universidade, associação... (opcional)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Página web pessoal (opcional)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Outras características (opcional)" #: edit_project_author_info msgid "Author info:" msgstr "Dados do autor:" #: edit_project_author_add msgid "Add author to list" msgstr "Adicionar um autor à lista" #: edit_project_author_edit msgid "Edit author info" msgstr "Modificação dos dados do autor" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nome:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nome da escola" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "Correio electrónico:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Endereço de correio electrónico da escola" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Endereço web da escola" #: edit_project_org_address msgid "Address:" msgstr "Endereço:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Endereço postal da escola" #: edit_project_org_pc msgid "PC:" msgstr "CP:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Código postal" #: edit_project_org_city msgid "City:" msgstr "Localidade:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Localidade da escola" #: edit_project_org_country msgid "Country:" msgstr "País:" #: edit_project_org_state msgid "State:" msgstr "Estado:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Comentários:" #: edit_project_org msgid "School/s:" msgstr "Centro/s:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Escolas e outras instituições que participaram no projecto" #: edit_project_org_info msgid "Organization info:" msgstr "dados da organização:" #: edit_project_org_add msgid "Add organization" msgstr "Adicionar uma nova organização" #: edit_project_org_edit msgid "Edit organization data" msgstr "Modificar os dados da organização" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Estado, país, federação..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Estado federal, nacionalidade, comunidade, região..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Outros dados..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Data da revisão" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autores da revisão" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descrição:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breve descrição das alterações" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Comentários:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Informação adicional" #: edit_project_rev msgid "Revisions:" msgstr "Revisões:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Registo das principais modificações efectuadas no projecto" #: edit_project_rev_add msgid "Add revision record" msgstr "Adicionar um registo de revisão" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Edição dos dados da revisão" #: edit_project_rev_info msgid "Revision data" msgstr "Características da revisão" #: edit_media_objects msgid "objects" msgstr "objectos" #: edit_media_object msgid "object" msgstr "objecto" #: edit_evsounds_start msgid "Start of activity:" msgstr "Início de actividade:" #: edit_evsounds_click msgid "Click on object:" msgstr "Clicar num objecto:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Acção errada:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Acção correcta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Actividade terminada com erros:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Actividade correctamente terminada:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Erro: A descrição deve ser preenchida" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Edição dos sons de evento" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Sons de evento:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Definir sons específicos para cada evento de JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Sons de evento:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Definir sons específicos para cada evento de JClic" #: edit_evsounds_default msgid "default sound" msgstr "som padrão" #: edit_evsounds_disabled msgid "disabled" msgstr "desactivado" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Activa/desactiva o som para este evento" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Clique para seleccionar o som ligado a este evento, ou desmarque para " "utilizar o som padrão" #: action_newProject_caption msgid "New project..." msgstr "Novo projecto..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Criar um novo projecto JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "De:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valor mínimo do operando" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Até:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valor máximo do operando" #: edit_arith_op_with msgid "With:" msgstr "Com:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Se seleccionado, o operando pode ter também este valor" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Um da lista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Lista de possíveis valores do operando" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimais:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Número de decimais do operando" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (inteiro)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#,#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#,##" #: edit_arith_firstOp msgid "First operand" msgstr "Primeiro operando" #: edit_arith_secondOp msgid "Second operand" msgstr "Segundo operando" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 para JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operações:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Selecciona o tipo de operações a efectuar" #: edit_arith_operations_plus msgid "Plus" msgstr "Somar" #: edit_arith_operations_minus msgid "Minus" msgstr "Subtrair" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplicar" #: edit_arith_operations_divide msgid "Divide" msgstr "Dividir" #: edit_arith_unknown msgid "Unknown:" msgstr "Incógnita:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Selecciona o elemento que funcionará como incógnita" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "A incógnita é o resultado" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "A incógnita é o segundo operando" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "O primeiro operando é a incógnita" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "A operação é a incógnita" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Escrever a expressão começando pelo resultado" #: edit_arith_result msgid "Result:" msgstr "Resultado:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Sem transporte" #: edit_arith_result_random msgid "Random" msgstr "Aleatório" #: edit_arith_result_asc msgid "Ascending" msgstr "Ascendente" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordenar por resultado:" #: edit_arith_result_desc msgid "Descending" msgstr "Descendente" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evitar duplicados" #: edit_arith_cond msgid "Conditions:" msgstr "Condições:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indiferente" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "O primeiro operando deve ser maior que o segundo" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "O primeiro operando deve ser menor que o segundo" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Outras condições" #: edit_autocp msgid "Automatic content generator:" msgstr "Gerador automático de conteúdo:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Selecção do tipo de gerador automático de conteúdo para esta actividade." #: edit_autocp_block msgid "Content generator" msgstr "Gerador de conteúdo" #: edit_autocp_btn msgid "Settings..." msgstr "Definições..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configuração dos parâmetros do gerador de conteúdo" #: edit_data msgid "Edit data" msgstr "Edição de dados" #: edit_act msgid "Activity edit" msgstr "Edição da actividade" #: edit_acp msgid "Content provider edit" msgstr "Edição do gerador de conteúdo" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Erro ao criar o gerador de conteúdo" #: edit_project_author_group msgid "Creation" msgstr "Criação" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descrição" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interface de utilizador" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descrição:" #: m_Edit msgid "Edit" msgstr "Edição" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "V*" #: edit_act_newActivity msgid "New activity..." msgstr "Nova actividade..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "M#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Inserir" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Ver" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Projecto" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Editar as propriedades do projecto" #: action_editMedia_caption msgid "Media" msgstr "Mediateca" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Edição da biblioteca multimédia do projecto" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Actividades" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Edição das actividades" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Sequências" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Edição das sequências de actividades" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "O projecto actual foi modificado. Deseja guardar as alterações?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descritores" #: edit_media_new msgid "New media object..." msgstr "Novo objecto multimédia..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Adicionar uma imagem ou um objecto multimédia à mediateca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Limite de pontuação:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Seguir este caminho quando a pontuação global for maior ou igual a..." #: edit_seq_time msgid "Time threshold:" msgstr "Limite de tempo:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Para seguir este caminho é necessário ter realizado as actividades num tempo " "inferior a..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Siga este caminho sempre que a pontuação global for inferior a..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Seguir este caminho sempre que o tempo decorrido nas actividades for " "superior a..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Saltos condicionais" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "Indicar saltos a executar apenas se ocorrerem determinadas condições" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Indicar as condições para saltar para um nível superior" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Salto inferior:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Salto superior:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Indicar as condições para saltar para um nível inferior" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Acção atribuída ao botão \"Seguinte\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Acção atribuída ao botão \"Anterior\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Indicar o destino do salto" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Acção a realizar" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Actividade atribuída a este elemento da sequência" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Etiqueta utilizada para referir-se a este elemento de sequência (opcional)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descrição do elemento de sequência (opcional)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Activar/desactivar o botão de mudança de actividade" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Avançar automaticamente ao terminar a actividade" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Segundos de espera antes de realizar o avanço automático" #: edit_color_dlgTitle msgid "Select color" msgstr "Seleccionar cor" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Por favor, espere enquanto se altera o nome do recurso..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Largura:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Largura das células (em píxeis)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Altura:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Altura das células (em píxeis)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Palavras escondidas:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Lista das palavras escondidas no painel" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Utilizar o painel B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Usar um segundo painel, que surge à medida que as palavras são encontradas" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Selecção do tipo de gerador de formas do painel" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Número de colunas do painel" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Número de filas do painel" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Separadores transparentes" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Exibir os separadores (quadros negros) como buracos transparentes" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Misturas\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Número de vezes a misturar as peças" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copiar atributos para..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Atributos:" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplicar a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Janela principal" #: edit_act_copy_style_play msgid "Play window" msgstr "Janela de jogo" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Actividades a modificar:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copiar atributos" #: edit_act_copyAttributes_keys msgid "T" msgstr "F" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Copiar atributos da actividade actual para outras actividades" #: edit_new_project_name msgid "Project name:" msgstr "Nome do projecto:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nome curto e descritivo do projecto" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nome do ficheiro:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nome do ficheiro do projecto (sem extensão)" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Pasta:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nome da pasta em que se guardará o projecto" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Procurar..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Criação de um novo projecto JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Erro: Tanto o projecto como o ficheiro e a pasta devem ter nomes válidos." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Nesta pasta já existe outro projecto Clic3.0 ou JClic. Para evitar " "confusões, recomenda-se manter cada projecto numa pasta independente, ainda " "que não seja um requisito imprescindível. Deseja criar o novo projecto nesta " "pasta?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Erro: não foi possível criar a pasta (directoria)!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Erro: Não foi seleccionada nenhuma actividade. Para utilizar esta função, " "deve seleccionar na lista a actividade ou actividades às quais serão " "aplicados os atributos indicados." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "A copiar atributos para:" #: edit_act_copy_margin msgid "Margin" msgstr "Margem" #: edit_act_copy_bgColor msgid "Background color" msgstr "Cor de fundo" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradiente" #: edit_act_copy_bgImage msgid "Background image" msgstr "Imagem de fundo" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Limite" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Fundo transparente" #: edit_act_copy_position msgid "Position" msgstr "Posição" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Mensagens" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Estilo da mensagem inicial" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Estilo da mensagem final" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Estilo da mensagem de erro" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Relatórios" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Incluir a actividade nos relatórios" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Registar acções" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interface de utilizador" #: edit_act_copy_skin msgid "Skin" msgstr "Aspecto" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sons de evento" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Contadores" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Contador de tempo" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Tempo máximo" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Contador de tentativas" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Número máximo de tentativas" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Contador de acertos" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Número de vezes a baralhar" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botões" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Botão de ajuda" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Botão de informação" #: edit_act_copy_grids msgid "Grids" msgstr "Painéis" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Estilo do painel A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Estilo do painel B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Estilo dos painéis de texto" #: edit_act_copy_text msgid "Text activities" msgstr "Actividades de texto" #: edit_act_copy_fontFace msgid "Font face" msgstr "Tipo de letra" #: edit_act_copy_fontSize msgid "Font size" msgstr "Tamanho de letra" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Estilo de letra" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Cor do texto principal" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Escolha o projecto JClic do qual as actividades serão importadas" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Cor dos erros" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Espaço entre tabulações" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Estilo da mensagem anterior" #: edit_act_changeType msgid "Change activity type" msgstr "Mudar o tipo de actividade" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nome completo da classe que se utilizará para construir a actividade " "(utilizadores avançados!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Outras..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Os utilizadores avançados podem criar outros tipos de actividades JClic não " "registadas. Escreva abaixo o nome completo da classe, precedida pelo do " "pacote (por exemplo: \"com.acme.activities.FooActivity\"). As novas " "actividades devem expandir edu.xtec.jclic.Activity, e devem ser accessíveis " "ao carregador de classes da máquina virtual de Java." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nome da actividade" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Cada actividade deve ter um nome único no projecto" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Atenção: " "Mudar o tipo de actividade pode causar a perda de atributos e objectos da " "actividade actual. Utilize esta função com cuidado!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Localização do código JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "URL que aponta para uma pasta com os ficheiros e scripts do JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Código HTML prévio:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Texto ou código HTML que aparecerá antes do applet" #: applet_post_text msgid "HTML code after:" msgstr "Código HTML posterior:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Texto ou código HTML que aparecerá depois do applet" #: applet_size msgid "Applet size:" msgstr "Tamanho do applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Largura e altura do applet, em valores absolutos ou percentuais." #: applet_page_title msgid "Page title:" msgstr "Título da página:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Texto a mostrar na parte superior da janela do navegador" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "A página web \"%s\" foi criada com êxito." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Deseja abri-la agora com o navegador?" #: action_createHTML_caption msgid "Create web page..." msgstr "Criar página web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Criação de uma página HTML com um applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" "Criação de uma página HTML com um applet que contem o projecto actual." #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nome do arquivo:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nome do arquivo HTML a criar" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valores padrão usados na criação de páginas web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Cor de fundo:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Cor de fundo da página web" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centrado" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Applet centrado horizontalmente" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Largura do applet (em valor absoluto ou percentual)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Altura do applet (em valor absoluto ou percentual)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Ao sair, ir para:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL a visitar após sair do JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Quadro de informação:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Nome do quadro usado para mostrar o conteúdo relacionado com o botão de " "informação." #: action_createInstaller_caption msgid "Create project installer..." msgstr "Criar instalador do projecto..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Criação de um ficheiro de instalação do projecto para JClic player" #: installer_caption msgid "Edit project installer script" msgstr "Edição do ficheiro de instalação do projecto" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Título:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Título do projecto a mostrar no assistente de instalação" #: installer_authors msgid "Autors:" msgstr "Autores:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autores do projecto (texto curto)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Pasta:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nome da pasta a sugerir pelo assistente de instalação" #: installer_files msgid "Files to be copied:" msgstr "Ficheiros a copiar:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Ficheiros copiados durante a instalação" #: installer_files_available msgid "Available files" msgstr "Ficheiros disponíveis" #: installer_files_selected msgid "Selected files" msgstr "Ficheiros seleccionados" #: installer_files_add msgid ">> add >>" msgstr ">> adicionar >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Adicionar o ficheiro seleccionado à lista" #: installer_files_remove msgid "<< remove <<" msgstr "<< remover <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Remover da lista o ficheiro seleccionado" #: installer_button msgid "Launch button" msgstr "Botão de activação" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propriedades do botão a mostrar na biblioteca de projectos" #: installer_button_project msgid "Main project:" msgstr "Projecto principal:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Projecto JClic associado ao botão" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etiqueta:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Breve etiqueta de texto, que aparecerá dentro do botão" #: installer_button_icon msgid "Icon:" msgstr "Ícone:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Imagem a usar como ícone do botão. Deixar em branco para usar o ícone padrão " "do JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descrição" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Texto de ajuda a mostrar pelo botão" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Erro: Falta o título do projecto" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Erro: Falta o nome da pasta de instalação do projecto" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Erro: Nãio foi seleccionado nenhum ficheiro" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Erro: Falta texto do botão de activação" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Erro: O projecto associado ao botão de activação não faz da lista de " "ficheiros a copiar" #: applet_page_full msgid "Full-page applet" msgstr "O applet ocupa toda a página" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "O applet tem dimensões específicas" #: edit_text_align_left msgid "Align text left" msgstr "Alinhar o texto à esquerda" #: edit_text_align_center msgid "Center text" msgstr "Centrar texto" #: edit_text_align_right msgid "Align text right" msgstr "Alinhar à direita" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Criar uma incógnita ou suprimi-la" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Inserir uma célula" #: edit_text_act_content msgid "Content" msgstr "Conteúdo" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Estilo" #: edit_cell_size msgid "Cell size:" msgstr "Dimensões:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "As actividades seguintes não aparecem em nenhuma sequência de actividades do " "projecto. Não serão mostradas:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Os seguintes objectos da mediateca não são utilizados directamente em " "nenhuma actividade:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "Deseja adicioná-los ao final da última sequência de actividades?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Deseja eliminá-los?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Remoção de objectos multimédia não utilizados" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Actividades órfãs" #: edit_media_refreshAll msgid "Update all media content" msgstr "Actualizar o conteúdo de todos os recursos" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Actualizar todos os recursos voltando a carregar os ficheiros" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "A actualizar recursos..." #: edit_media_exportAll msgid "Export all media" msgstr "Exportar todos os recursos" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Gravar em ficheiros o conteúdo de todos os recursos" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Seleccionar" #: edit_shape_addPoint msgid "Add point" msgstr "Adicionar ponto" #: edit_shape_deletePoint msgid "Delete" msgstr "Eliminar" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Desenhar um rectângulo" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Desenhar uma elipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Desenhar um polígono" #: edit_shape_toLine msgid "Convert to line" msgstr "Converter em linha" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Converter em curva de Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Converter em quádrica" #: edit_shape_rLeft msgid "Rotate left" msgstr "Girar para esquerda" #: edit_shape_rRight msgid "Rotate right" msgstr "Girar para direita" #: edit_shape_expand msgid "Expand" msgstr "Expandir" #: edit_shape_contract msgid "Contract" msgstr "Contrair" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Aproximar" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Afastar" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Juntar pontos próximos" #: edit_shape_showPoints msgid "Show points" msgstr "Mostrar pontos" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Mostrar/Ocultar pontos" #: edit_shape_gridSize msgid "Grid size:" msgstr "Tamanho da grelha:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Mostrar/Ocultar grelha" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Raio do imán:" #: edit_shape_elements msgid "Defined elements" msgstr "Elementos definidos" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nome do elemento seleccionado" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Raio de acção do íman, quando está activado" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Tamanho da grelha" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Actividade:" #: edit_mc_sequence msgid "Sequence:" msgstr "Sequência:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Projecto:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Selecção da actividade" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Selecção da sequência" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Dados insuficientes!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Cor das setas:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Cor utilizada pelo editor ao desenhar as setas (não exactamente, já que " "utiliza uma máscara XOR de bits)" #: edit_act_editActivity msgid "Edit..." msgstr "Editar..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Editar a actividade seleccionada" #: action_saveFileAs_caption msgid "Save as..." msgstr "Guardar como..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Guardar o projecto com um nome diferente" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Arrastar" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Arrastar células em vez de usar linha de conexão" #: edit_act_behavior_order msgid "Check solving order" msgstr "Marcar ordem de resolução" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Células deverão ser resolvidas por ordem" #: edit_act_scramble msgid "Scramble" msgstr "Misturar" #: action_importActivities_caption msgid "Import activities..." msgstr "Importar actividades..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importar actividades de outro projecto" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "O ficheiro que foi seleccionado corresponde ao projecto actual. Só pode " "importar actividades entre projectos diferentes. Por favor, escolha outro " "projecto." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" "Seleccione uma ou mais actividades a importar para o projecto actual\\:" #: import_importing msgid "Importing..." msgstr "A importar..." #: import_checkdep msgid "Checking dependencies..." msgstr "A verificar dependências..." #: import_impmedia msgid "Importing media\\:" msgstr "Importar recursos\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importar actividade\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Escolha o projecto JClic do qual as actividades serão importadas" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marcas" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marcas de início" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marca que indica início de etiqueta" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marca final\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marca que indica final de etiqueta" #: edit_tagRep_file msgid "File" msgstr "Ficheiro" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Ficheiro ou URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "Nome ou URL do ficheiro com os valores que substituirão as etiquetas" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Codificação de caracteres\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Codificação de caracteres usada no ficheiro" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Procurar..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Procurar no sistema de ficheiros" #: edit_tagRep_title msgid "Tag replacing" msgstr "Substituir etiqueta" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Eliminar estilos de texto" #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Atenção\\: Esta acção eliminará os atributos de texto do documento, " "aplicando o estilo predefinido. Esta acção não pode ser desfeita. Quer " "eliminar os atributos de texto?" #: img_max_size msgid "Maximum size of images:" msgstr "Tamanho máximo das imagens" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "Largura máxima das imagens importadas para biblioteca de media." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "Altura máxima das imagens importadas para biblioteca de media." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "A imagem \"%s\" tem %s pixeis. Excede o máximo permitido pelo JClic Author " "(%s). Quer redimensioná-la?" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_ca.po0000644000175000017500000024324111377161311023123 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-22 17:57+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descripció" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nom de l'activitat" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nom:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descripció de l'activitat" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Informes" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Inclou aquesta activitat als informes" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Inclou els resultats d'aquesta activitat en els informes d'usuari" #: edit_act_code msgid "Code:" msgstr "Codi:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Codi opcional utilitzat per agrupar i filtrar en la base de dades d'informes." #: edit_act_reportActions msgid "Report user actions" msgstr "Enregistra també les accions" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Enregistra els detalls de totes les accions efectuades pels usuaris." #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Comptadors" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Comptador de temps" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Mostra o amaga el comptador de temps" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Comptador d'intents" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Mostra o amaga el comptador d'intents." #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Comptador d'encerts" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Mostra o amaga el comptador d'encerts." #: edit_act_maxTime msgid "Max time:" msgstr "Temps màxim:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Temps màxim per a resoldre l'activitat, en segons. El zero significa temps " "il·limitat." #: edit_act_countdown msgid "Countdown" msgstr "Compte enrere" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "El comptador comença al valor màxim, decreixent fins a zero." #: edit_act_maxActions msgid "Max tries:" msgstr "Intents màx.:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Nombre màxim d'intents permesos, o zero per a il·limitat." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botons" #: edit_act_helpBtn msgid "Help" msgstr "Ajuda" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Mostra o amaga el botó d'ajuda" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Mostra la solució" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Mostra aquest missatge:" #: edit_act_infoBtn msgid "Information" msgstr "Informació" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Mostrar o amagar el botó d'informació" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Mostrar aquesta URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Executa el comandament:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Adreça de la pàgina web que es mostrarà en fer clic al botó d'informació." #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Línia d'ordres que s'executarà en fer clic al botó d'informació." #: edit_act_mainWindow msgid "Main window:" msgstr "Finestra principal:" #: edit_act_gameWindow msgid "Game window:" msgstr "Finestra de joc:" #: edit_act_margin msgid "Margin:" msgstr "Marge:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espai horitzontal i vertical entre objectes visuals." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Color de fons:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Canvia el color de fons." #: edit_gradient_startColor msgid "Start color:" msgstr "Color inicial:" #: edit_gradient_endColor msgid "End color:" msgstr "Color final:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Selecció del color inicial" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Selecció del color final" #: edit_gradient_cycles msgid "Cycles:" msgstr "Cicles:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Nombre de repeticions del gradient sobre la superfície a pintar" #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientació:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientació del gradient, mesurada en graus sobre la horitzontal" #: edit_act_gradient msgid "Gradient:" msgstr "Gradient:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Utilitza un gradient de colors" #: edit_color_opacity msgid "Opacity" msgstr "Opacitat" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Ajusta el valor del canal alfa (opacitat) del color." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradient" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Utilitza els valors per defecte (gradient nul)" #: edit_act_image msgid "Image:" msgstr "Imatge:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descripció" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nom i descripció" #: edit_act_tiledBgImg msgid "Tiled" msgstr "En mosaic" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Pinta tota la superfície amb la imatge, repetint-la al llarg dels eixos X i " "Y tantes vegades com calgui." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Vista preliminar:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Vora" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Dibuixar una línia de vora al voltant de la finestra" #: edit_act_transparent msgid "Transparent" msgstr "Transparent" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "La finestra té el fons transparent" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Amplada:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Alçada:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Amplada de l'objecte, mesurada en pícsels" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Alçada de l'objecte, mesurada en pícsels" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrada" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "L'objecte se situa centrat respecte a la finestra principal" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Posició horizontal absoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Posició vertical absoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interfície d'usuari" #: edit_act_image_tooltip msgid "Select an image" msgstr "Selecciona una imatge" #: edit_act_text msgid "Text:" msgstr "Text:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Text que es mostrarà en aquest objecte" #: edit_font_face msgid "Typeface:" msgstr "Tipus:" #: edit_font_size msgid "Size:" msgstr "Mida:" #: edit_font_bold msgid "Bold" msgstr "Negreta" #: edit_font_italic msgid "Italic" msgstr "Cursiva" #: edit_font_underline msgid "Underline" msgstr "Subrratllat" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estil:" #: edit_cell_title msgid "Cell contents" msgstr "Contingut de la casella" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Missatges" #: edit_act_msg_initial msgid "Initial message:" msgstr "Missatge inicial:" #: edit_act_msg_final msgid "Final message:" msgstr "Missatge final:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Missatge previ:" #: edit_act_msg_error msgid "Error message:" msgstr "Missatge d'error:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Missatge que es mostra en iniciar-se l'activitat" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Missatge que es mostra en acabar l'activitat" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Missatge que es mostra quan l'activitat acaba amb errors" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Missatge que es mostra abans de començar (només en alguns tipus d'activitats)" #: edit_align msgid "Align:" msgstr "Orientació:" #: edit_act_textColor msgid "Text color:" msgstr "Color del text:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Color emprat per dibuixar el text" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Color de l'ombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Color emprat en l'ombra del text, si n'hi ha." #: edit_act_shadow msgid "Shadow" msgstr "Ombra" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Dibuixa el text amb ombra" #: edit_act_borderColor msgid "Border color:" msgstr "Color de la vora:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Color utilitzat per a dibuixar la vora de la casella" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Color d'estat inactiu:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Color emprat quan la casella es troba desactivada" #: edit_act_altColor msgid "Alternative color:" msgstr "Color alternatiu:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Color amb què es mostra el contingut alternatiu de les caselles un cop " "solucionades." #: edit_cell_marked msgid "Marked" msgstr "Marcada" #: edit_cell_disabled msgid "Disabled" msgstr "Desactivada" #: edit_cell_alt msgid "Alternative" msgstr "Alternativa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Marge intern:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Espai entre les vores de la cel·la i el text." #: edit_cell_borderWidth msgid "Border width:" msgstr "Gruix de la vora:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Gruix del traç utilitzat per a dibuixar la vora." #: edit_cell_markerWidth msgid "Marker width:" msgstr "Gruix del marcador:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Gruix del traç utilitzat per dibuixar la vora quan la casella es troba " "marcada o seleccionada" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Vista preliminar de la casella en estat \"alternatiu\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Vista preliminar en estat \"desactivat\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Vista preliminar en estat \"marcat\"" #: edit_act_testAction msgid "Preview activity" msgstr "Mostra l'activitat" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Prova el funcionament de l'activitat" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descripció" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Títol i descripció de l'activitat" #: edit_act_panels_options msgid "Options" msgstr "Opcions" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opcions de l'activitat" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Finestra" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspecte, mida i posició de la finestra on corre l'activitat." #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Missatges" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Contingut dels missatges de l'activitat" #: edit_act_panels_panel msgid "Panel" msgstr "Plafó" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Contingut del plafó" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estil" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Ajusta els colors, tipus i mida de lletra de les caselles" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estil:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Evita la sobreposició imatge/text" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Intenta evitar que el text trepitgi la imatge." #: edit_media_exists_1 msgid "The file" msgstr "El fitxer" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "ja es troba a la mediateca!" #: edit_act_shaper msgid "Shaper:" msgstr "Retallador:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Error del retallador:" #: edit_act_num_cols msgid "Columns:" msgstr "Columnes:" #: edit_act_num_rows msgid "Rows:" msgstr "Files:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Alçada de les dents:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Amplada de les dents:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribució aleatòria" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propietats del generador de formes" #: edit_act_panels_text msgid "Text" msgstr "Text" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Text de l'activitat" #: action_saveFile_caption msgid "Save..." msgstr "Desa..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "DD" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Desa el projecte" #: action_docTree_caption msgid "Document tree..." msgstr "Arbre del document..." #: action_docTree_keys msgid "T*" msgstr "A*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Mostra el document del projecte en forma d'abre" #: edit_docTree_title msgid "Document tree" msgstr "Arbre del document" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Referenciat per:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Atenció:

Aquest projecte " "enllaça amb altres projectes.
Voleu que el JClic explori els enllaços i " "carregui tots els materials relacionats?

(Es recomana respondre SI " "si esteu important un paquet d'activitats Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Tipus:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Desconegut" #: edit_mc_type_sound msgid "Play sound" msgstr "Interpreta so" #: edit_mc_type_video msgid "Play video" msgstr "Interpreta vídeo" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Interpreta MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Interpreta CD àudio" #: edit_mc_type_record msgid "Record sound" msgstr "Enregistra so" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Interpreta un enregistrament" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Ves a l'activitat" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Ves a la seqüència" #: edit_mc_type_run_external msgid "Run program" msgstr "Executa un programa" #: edit_mc_type_url msgid "Show URL" msgstr "Mostra la URL" #: edit_mc_type_exit msgid "End" msgstr "Acaba" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Torna" #: edit_mc_level msgid "Priority level:" msgstr "Nivell de prioritat:" #: edit_mc_file msgid "File:" msgstr "Fitxer:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Paràmetres:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Des de:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Fins a:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Durada màx.:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Cinta d'enregistrament:" #: edit_mc_stretch msgid "Stretch size" msgstr "Comprimeix-lo si no hi cap" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Posició:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Des de:" #: edit_mc_location_from_box msgid "Cell" msgstr "Cel·la" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Finestra" #: edit_mc_location_from_frame msgid "Frame" msgstr "Marc" #: edit_mc_loop msgid "Loop playback" msgstr "Repeteix indefinidament" #: edit_mc_autostart msgid "Auto start" msgstr "Engega automàticament" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Captura ratolí" #: edit_mc_title msgid "Multimedia and active content" msgstr "Contingut actiu i multimèdia" #: edit_mc_label msgid "Active content:" msgstr "Contingut actiu:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Selecció de l'objecte multimèdia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Biblioteca de recursos" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centrat a la cel·la" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centrat a la finestra" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Posició absoluta:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "L'estructura o les dades de l'arbre són incorrectes!" #: edit_act_panels_controls msgid "Controls" msgstr "Controls" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opcions de botons i comptadors" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Tipus:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Distribució dels plafons:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posició relativa dels plafons A i B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Resolució inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "L'activitat es considerarà resolta quan tots els elements de \"B\" hagin " "estat aparellats." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Mostra totes les fletxes" #: edit_act_alt msgid "Alternative content:" msgstr "Contingut alternatiu:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Contingut que es mostra en les caselles ja resoltes o no assignades." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Edita el contingut alternatiu" #: edit_act_grid msgid "Grid" msgstr "Plafó" #: edit_act_grid_A msgid "Grid A" msgstr "Plafó A" #: edit_act_grid_B msgid "Grid B" msgstr "Plafó B" #: edit_act_grid_layout msgid "Layout" msgstr "Distribució" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relacions" #: edit_seq_activity_header msgid "activity" msgstr "activitat" #: edit_seq_tag_header msgid "tag" msgstr "etiqueta" #: edit_seq_jump_header msgid "jump to" msgstr "saltar a" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Activitat:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etiqueta:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descripció:" #: edit_seq_auto msgid "Move on automatically" msgstr "Avanç automàtic" #: edit_seq_delay msgid "Delay:" msgstr "Retard:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Avançar" #: edit_seq_action_back msgid "Go bak" msgstr "Retrocedir" #: edit_seq_action_jump msgid "Jump to..." msgstr "Saltar a..." #: edit_seq_action_stop msgid "Stop" msgstr "Aturar-se" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Tornar" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Sortir del JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Fletxa endavant:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Fletxa enrera:" #: edit_seq_action msgid "Action:" msgstr "Acció:" #: edit_seq_button_enabled msgid "Show button" msgstr "Mostra botó" #: edit_seq_project msgid "JClic Project:" msgstr "Projecte JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posició absoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "L'objecte es situarà a les coordenades X i Y que especifiqueu" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Posició:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Nou element de seqüència..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Insereix un nou element a la sequencia d'activitats" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Selecciona una activitat per al nou element de seqüència." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "No es pot crear un nou element de seqüència sense indicar l'activitat." #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "En aquest projecte no hi ha cap activitat! No es poden crear elements de " "seqüència en un projecte buit." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Destí del salt:" #: edit_seq_jump_title msgid "Jump target" msgstr "Destí del salt" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Afegeix una nova activitat al projecte" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Tipus d'activitat:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nom:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Seleccioneu el tipus d'activitat que voleu crear i doneu-li un nom:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Cal seleccionar un tipus d'activitat!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Heu d'indicar un nom per l'activitat!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "No s'ha pogut crear l'activitat!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Classe Java:" #: edit_text_act_format msgid "Format" msgstr "Format" #: edit_text_act_answer msgid "Answer" msgstr "Resposta" #: edit_text_act_popup msgid "Pop up" msgstr "Finestra emergent" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Respostes vàlides:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Afegeix un nou element a la llista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Modifica l'element seleccionat" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Elimina l'element seleccionat de la llista" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Mou amunt" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Mou avall" #: edit_list_newValue msgid "New text:" msgstr "Nou text:" #: edit_list_addElement msgid "Add new list element" msgstr "Afegeix un nou element de text" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modifica el text seleccionat" #: edit_text_act_target msgid "Target" msgstr "Incògnita" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Longitud màxima:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Nombre màxim de caràcters de la resposta" #: edit_text_act_fillingChar msgid "Filling character" msgstr "Caràcter de farciment" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Caràcter emprat per a indicar la incògnita" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Longitud inicial:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Nombre de caràcters de farciment que es mostraran en iniciar-se l'activitat." #: edit_text_act_iniText msgid "Initial text:" msgstr "Text inicial:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Tetx que es mostrarà a la incògnita en iniciar l'activitat." #: edit_text_act_list msgid "Show a list of options:" msgstr "Mostra una llista d'opcions:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "L'usuari haurà de seleccionar una opció en una llista." #: edit_text_act_check_title msgid "Correction options" msgstr "Opcions d'avaluació" #: edit_text_act_popup_no msgid "No pop up" msgstr "Sense finestra emergent" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Aparició automàtica" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Aparició en errors" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Aparició amb F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Tipus:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Retard d'aparició:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Temps màxim:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Només interpreta so" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "¡Per crear una nova incògnita cal que seleccioneu un fragment de text!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "El text de les incògnites no pot incloure retorns de paràgraf ni tabuladors." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Les incògnites no es poden solapar!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Les incògnites no poden contenir cel·les!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Color del paper:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Edita els estils del document..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Estil principal:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tab space:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espais entre marques de tabulador:" #: edit_text_act_colors msgid "Colors:" msgstr "Colors:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Colors de les incògnites:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Colors d'error:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Visualització prèvia:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Text normal" #: edit_text_act_styleSample_target msgid "target" msgstr "incògnita" #: edit_text_act_styleSample_error msgid "error" msgstr "error" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "text normal" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "text normal." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Atenció: aquesta acció suprimirà la incògnita actualment seleccionada. Segur " "que vols fer-ho?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Finestra prèvia..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "No mostris cap text abans d'iniciar l'activitat" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Mostra el text complet de l'exercici" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Mostra aquest text:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Temps màxim:" #: edit_text_act_edit_target msgid "Target..." msgstr "Incògnita..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Mostra el botó d'avaluació" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Text del botó:" #: edit_text_act_checkCase msgid "Match case" msgstr "Comprova majúscules / minúscules" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Considera accents i caràcters especials" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Considera els símbols de puntuació" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permet espais repetits" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Criteris" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Salta automàticament a la següent incògnita" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Avança només si es respon correctament" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indica la posició dels errors" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Paràmetres de l'algorisme d'anàlisi:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Passos:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Camp d'exploració:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Avaluació" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Anàlisi de les respostes" #: edit_text_act_check_bt msgid "Correction..." msgstr "Avaluació..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Botó d'avaluació" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progrés" #: edit_text_act_typeBtn msgid "Type..." msgstr "Tipus..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordenar paràgrafs" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordenar paraules" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Barreja paraules entre paràgrafs" #: edit_text_act_type_title msgid "Activity type" msgstr "Tipus d'activitat" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Aquesta acció suprimirà totes les incògnites actualment definides. Segur que " "vols fer-ho?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identificar paraules" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identificar caràcters" #: edit_media_change_name msgid "Change name..." msgstr "Canvia el nom..." #: edit_media_change_file msgid "Change file..." msgstr "Canvia el fitxer..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Desar-lo en el fitxer ZIP" #: edit_media_type msgid "Media type:" msgstr "Tipus de recurs:" #: edit_media_size msgid "File size:" msgstr "Mida del fitxer:" #: edit_media_show_type msgid "Files of type:" msgstr "Tipus de fitxers :" #: edit_media_preview msgid "Preview media" msgstr "Mostra l'objecte" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Visualització del recurs" #: edit_media_rename msgid "Change resource name" msgstr "Canvi del nom del recurs" #: edit_media_rename_title msgid "Rename" msgstr "Canvi de nom" #: edit_media_rename_prompt msgid "New name:" msgstr "Nou nom:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Nom de recurs no vàlid!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Ja hi ha un altre recurs amb aquest nom! Cada recurs ha de tenir un nom únic " "en el projecte." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Fitxer incorrecte!" #: err_media_chfile_different msgid "File must be of same type" msgstr "El fitxer ha de ser del mateix tipus" #: edit_media_font_error msgid "Unable to load font!" msgstr "No ha estat possible carregar el tipus de lletra!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Desa el fitxer (extreu-lo del ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Actualitza el contingut del recurs des del fitxer" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Aquest no és un fitxer \"real\", sinó un objecte situat dins d'un contenidor " "ZIP. Per fer servir aquesta funció cal que hi hagi un fitxer amb el mateix " "nom a la carpeta on es troba el fitxer ZIP." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Activitats" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Seqüències" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Mediateca" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Gestió de les Imatges i altres recursos emprats en el projecte." #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Creació i modificació de les activitats del projecte" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Creació i modificació de seqüències d'activitats" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Títol:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Títol del projecte" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Projecte" #: edit_project_tooltip msgid "Edit project properties" msgstr "Edició de les propietats del projecte" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descripció:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descripció general del projecte" #: edit_project_area msgid "Areas:" msgstr "Àrees:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Àrees curriculars a les que s'orienta el projecte" #: edit_project_level msgid "Levels:" msgstr "Nivells:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Nivells i cicles educatius als que s'adreça el projecte" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descriptors:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descriptors del projecte (separats per comes)" #: edit_project_languages msgid "Languages:" msgstr "Idiomes:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Idiomes emprats en el projecte" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Canvia l'idioma seleccionat" #: edit_project_languages_add msgid "Add language" msgstr "Afegeix un idioma" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Codis d'idioma ISO-639:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autors/es:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Persones que han contribuit a la creació del projecte" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nom:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "Correu electrònic:" #: edit_project_author_rol msgid "Rol:" msgstr "Rol:" #: edit_project_author_organization msgid "Organization:" msgstr "Organització:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Comentaris:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nom de l'autor/a (camp obligatori)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Adreça de correu electrònic de l'autor/a (opcional)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Rol de la persona en el projecte: autor/a, col·laborador/a, dibuixos, " "sons... (camp opcional)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Escola, universitat, associació... (camp opcional)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Pàgina web personal (camp opcional)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Altres característiques (camp opcional)" #: edit_project_author_info msgid "Author info:" msgstr "Dades de l'autor/a:" #: edit_project_author_add msgid "Add author to list" msgstr "Afegeix un autor a la llista" #: edit_project_author_edit msgid "Edit author info" msgstr "Modifica les dades de l'autor/a" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nom:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nom de l'escola" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "Correu electrònic:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Adreça de correu electrònic de l'escola" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Adreça web de l'escola" #: edit_project_org_address msgid "Address:" msgstr "Adreça:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Adreça postal de l'escola" #: edit_project_org_pc msgid "PC:" msgstr "CP:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Codi postal" #: edit_project_org_city msgid "City:" msgstr "Localitat:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Localitat de l'escola" #: edit_project_org_country msgid "Country:" msgstr "País:" #: edit_project_org_state msgid "State:" msgstr "Estat:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Comentaris:" #: edit_project_org msgid "School/s:" msgstr "Centre/s:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Escoles i altres institucions que han participat en el projecte" #: edit_project_org_info msgid "Organization info:" msgstr "Dades de l'organització:" #: edit_project_org_add msgid "Add organization" msgstr "Afegir una nova organització" #: edit_project_org_edit msgid "Edit organization data" msgstr "Modificar les dades de l'organització" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Estat, país, federació..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Estat federal, nacionalitat, comunitat, regió..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Altres dades..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Data de la revisió" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autors/es:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autors/es de la revisió" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descripció:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breu descripció dels canvis realitzats" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Comentaris:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Informació addicional" #: edit_project_rev msgid "Revisions:" msgstr "Revisions:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Historial de les principals modificacions realitzades al projecte" #: edit_project_rev_add msgid "Add revision record" msgstr "Afegir un registre de revisió" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Modificació de les dades de la revisió" #: edit_project_rev_info msgid "Revision data" msgstr "Dades de la revisió" #: edit_media_objects msgid "objects" msgstr "objectes" #: edit_media_object msgid "object" msgstr "objecte" #: edit_evsounds_start msgid "Start of activity:" msgstr "Inici d'activitat:" #: edit_evsounds_click msgid "Click on object:" msgstr "Fer clic a un objecte:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Acció errònia:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Acció correcta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Activitat acabada amb errors:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Activitat acabada correctament:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Error: La descripció no es pot deixar en blanc" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Edita els sons d'events" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Sons d'event:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Assigna sons específics per a cada event del JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Sons d'event:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Assigna sons específics per a cada event del JClic" #: edit_evsounds_default msgid "default sound" msgstr "so per defecte" #: edit_evsounds_disabled msgid "disabled" msgstr "desactivat" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Activa o desactiva el so per aquest event" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Cliqueu per a seleccionar un so per aquest event, o desmarqueu per emprar el " "so per defecte" #: action_newProject_caption msgid "New project..." msgstr "Nou projecte..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Crea un nou projecte JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Des de:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valor mínim de l'operand" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Fins a:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valor màxim de l'operand" #: edit_arith_op_with msgid "With:" msgstr "Amb:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Si es marca, l'operand port tenir també aquest valor" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Un de la llista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Llista de possibles valors de l'operand" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimals:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Nombre de decimals de l'operand" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (enter)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#,#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#,##" #: edit_arith_firstOp msgid "First operand" msgstr "Primer operand" #: edit_arith_secondOp msgid "Second operand" msgstr "Segon operand" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 pel JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operacions:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Seleccioneu el tipus d'operacions a efectuar" #: edit_arith_operations_plus msgid "Plus" msgstr "Sumes" #: edit_arith_operations_minus msgid "Minus" msgstr "Restes" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplicacions" #: edit_arith_operations_divide msgid "Divide" msgstr "Divisions" #: edit_arith_unknown msgid "Unknown:" msgstr "Incògnita:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Seleccioneu l'element que farà d'incògnita" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "La incògnita és el resultat" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "La incògnita és el segon operand" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "El primer operand és la incògnita" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "La operació és la incògnita" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Escriu l'expressió començant pel resultat" #: edit_arith_result msgid "Result:" msgstr "Resultat:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Sense \"portar-ne\"" #: edit_arith_result_random msgid "Random" msgstr "Aleatori" #: edit_arith_result_asc msgid "Ascending" msgstr "Ascendent" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordena per resultat:" #: edit_arith_result_desc msgid "Descending" msgstr "Descendent" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evitar duplicats" #: edit_arith_cond msgid "Conditions:" msgstr "Condicions:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indiferent" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "El primer operand ha de ser més gran que el segon" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "El primer operand ha de ser menor que el segon" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Altres condicions" #: edit_autocp msgid "Automatic content generator:" msgstr "Generador automàtic de contingut:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Seleccio del tipus de generador automàtic de contingut per aquesta activitat." #: edit_autocp_block msgid "Content generator" msgstr "Generador de contingut" #: edit_autocp_btn msgid "Settings..." msgstr "Configuració..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configura els paràmetres del generador de contingut" #: edit_data msgid "Edit data" msgstr "Edició de dades" #: edit_act msgid "Activity edit" msgstr "Edició de l'activitat" #: edit_acp msgid "Content provider edit" msgstr "Edició del generador de contingut" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Error en crear el generador automàtic de contingut!" #: edit_project_author_group msgid "Creation" msgstr "Creació" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descripció" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interfície d'usuari" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descripció:" #: m_Edit msgid "Edit" msgstr "Edita" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "V*" #: edit_act_newActivity msgid "New activity..." msgstr "Nova activitat..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "M#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Insereix" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Visualitza" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Projecte" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Edita les propietats del projecte" #: action_editMedia_caption msgid "Media" msgstr "Mediateca" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Edita la biblioteca de recursos multimèdia del projecte" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Activitats" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Edita les activitats" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Seqüències" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Edita les sequencies d'activitats" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "El projecte actual ha estat modificat. Voleu desar els canvis?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descriptors" #: edit_media_new msgid "New media object..." msgstr "Nou objecte multimèdia..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Afegeix una imatge o un objecte multimedia a la mediateca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Llindar de puntuació:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Ves per aquest camí quan la puntuació global sigui igual o superior a..." #: edit_seq_time msgid "Time threshold:" msgstr "Llindar de temps:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Per seguir aquest camí cal haver realitzat les activitats en un temps " "inferior a..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "" "Segueix aquest camí sempre que la puntuació global sigui inferior a..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Segueix aquest camí sempre que el temps emprat en les activitats sigui " "superior a..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Salts condicionals" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Especifica salts que seran executats només si es donen determinades " "condicions" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Indica les condicions per saltar a un nivell superior" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Salt inferior:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Salt superior:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Indica les condicions per saltar a un nivell inferior" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Acció assignada al botó d'avançar" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Acció assignada al botó de retrocedir" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Indica el destí del salt" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Acció a realitzar" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Activitat associada a aquest element de seqüència" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Etiqueta emprada per referir-se a aquest element de seqüència (camp opcional)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descripció de l'element de seqüència (camp opcional)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Activa o desactiva el botó de pas d'activitat" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Avançar automàticament en acabar l'activitat" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Nombre de segons a esperar abans de realitzar el pas automátic" #: edit_color_dlgTitle msgid "Select color" msgstr "Selecció del color" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Si us plau, espereu mentre es canvia el nom del recurs..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Amplada:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Amplada de les cel·les (en píxels)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Alçada:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Alçada de les cel·les (en píxels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Paraules amagades:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Llista de les paraules que s'han amagat al plafó" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Emprar el plafó B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Fes servir un segon plafó, que es mostrarà a mesura que es trobin les " "paraules" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Selecció del tipus de generador de formes del plafó" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Nombre de columnes del plafó" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Nombre de files del plafó" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Separadors transparents" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Mostra els separadors (cel·les negres) com a forats transparents" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Barreges:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Nombre de vegades que es barrejaran les peces" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copia atributs a..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Atributs" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplica a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Finestra principal" #: edit_act_copy_style_play msgid "Play window" msgstr "Finestra de joc" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Activitats a modificar:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copia atributs" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Copia a altres activitats alguns dels atributs de l'activitat actual" #: edit_new_project_name msgid "Project name:" msgstr "Nom del projecte:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nom curt i descriptiu del projecte" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nom del fitxer:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nom del fitxer del projecte, sense extensió" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Carpeta:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nom de la carpeta on es guardarà el projecte" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Navega..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Creació d'un nou projecte JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Error: Tant el projecte com el fitxer i la carpeta han de tenir noms vàlids." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "En aquesta carpeta ja hi ha un altre projecte Clic3.0 o JClic. Per evitar " "confusions es recomana mantenir cada projecte en una carpeta independent, " "tot i que això no és un requisit imprescindible. Realment voleu crear el nou " "projecte en aquesta carpeta?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Error: Ha estat impossible crear la carpeta que heu indicat!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "No heu seleccionat cap activitat! Per fer servir aquesta funció cal " "seleccionar a la llista l'activitat o activitats a les que s'aplicaran els " "atributs indicats." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copiant atributs a:" #: edit_act_copy_margin msgid "Margin" msgstr "Marge" #: edit_act_copy_bgColor msgid "Background color" msgstr "Color de fons" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradient" #: edit_act_copy_bgImage msgid "Background image" msgstr "Imatge de fons" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Vora" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Fons transparent" #: edit_act_copy_position msgid "Position" msgstr "Posició" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Missatges" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Estil del missatge inicial" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Estil del missatge final" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Estil del missatge d'error" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Informes" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Incloure l'activitat als informes" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Enregistrar accions" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interfície d'usuari" #: edit_act_copy_skin msgid "Skin" msgstr "Entorn visual" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sons d'esdeveniment" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Comptadors" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Comptador de temps" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Temps màxim" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Comptador d'intents" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Nombre màxim d'intents" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Comptador d'encerts" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Nombre de vegades que cal barrejar" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botons" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Botó d'ajuda" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Botó d'informació" #: edit_act_copy_grids msgid "Grids" msgstr "Plafons" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Estil del plafó A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Estil del plafó B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Estil dels plafons de text" #: edit_act_copy_text msgid "Text activities" msgstr "Activitats de text" #: edit_act_copy_fontFace msgid "Font face" msgstr "Tipus de lletra" #: edit_act_copy_fontSize msgid "Font size" msgstr "Mida de lletra" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Estil de lletra" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Color del text principal" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Color de les incògnites" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Color dels errors" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Espai entre tabuladors" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Estil del missatge previ" #: edit_act_changeType msgid "Change activity type" msgstr "Canvia el tipus d'activitat" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nom complet de la classe que es farà servir per construir l'activitat " "(usuaris avançats!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Altres..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Els usuaris/es avançats/es poden crear també altres tipus d'activitats JClic " "no registrades. Escriviu a sota el nom complet de la classe, precedida pel " "del paquet (per exemple: \"com.acme.activities.FooActivity\"). Les noves " "activitats han d'extendre edu.xtec.jclic.Activity, i han de ser accessibles " "al carregador de classes de la màquina virtual de Java." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nom de l'activitat:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Cada activitat ha de tenir un nom únic en el projecte" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Atenció: El " "canvi de tipus pot comportar la pèrdua d'alguns objectes i atributs de " "l'activitat que s'està editant. Feu servir aquesta funció amb " "cura!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Ubicació del codi JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "URL que apunta a una carpeta on estiguin ubicats els fitxers de programa i " "els scripts del JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Codi HTML previ:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Text o codi HTML que apareixerà abans de l'applet" #: applet_post_text msgid "HTML code after:" msgstr "Codi HTML posterior:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Text o codi HTML que apareixerà després de l'applet" #: applet_size msgid "Applet size:" msgstr "Mida de l'applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Amplada i alçada de l'applet, en valor absolut o percentual." #: applet_page_title msgid "Page title:" msgstr "Títol de la pàgina:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Text que es mostrarà a dalt de la finestra del navegador" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "La pàgina web \"%s\" ha estat creada amb èxit." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Voleu obrir-la ara amb el navegador?" #: action_createHTML_caption msgid "Create web page..." msgstr "Crea una pàgina web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Creació d'una pàgina HTML amb un applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Crea una pàgina HTML amb un applet que contingui el projecte actual" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nom del fitxer:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nom del fitxer HTML que es crearà" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valors per defecte emprats en la creació de pàgines web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Color de fons:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Color de fons de la pàgina web" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centrat" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Situa l'applet centrat horitzontalment" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Amplada de l'applet (en valor absolut o percentual)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Alçada de l'applet (en valor absolut o percentual)" #: applet_exitUrl msgid "On exit, go to:" msgstr "En sortir, anar a:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL cap on es redirigirà la navegació en sortir del JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Marc d'informació:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "Nom del marc emprat per mostrar el contingut lligat al botó \"info\"" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Crea un instal·lador del projecte..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Crea un fitxer d'instal·lació del projecte per al JClic player" #: installer_caption msgid "Edit project installer script" msgstr "Edició del fitxer d'instal·lació del projecte" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Títol:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Títol del projecte que es mostrarà a l'assistent d'instal·lació" #: installer_authors msgid "Autors:" msgstr "Autors/es:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autors/es del projecte (text curt)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Carpeta:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nom de carpeta que suggerirà l'assistent d'instal·lació" #: installer_files msgid "Files to be copied:" msgstr "Fitxers a copiar:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Fitxers que es copiaran durant la instal·lació" #: installer_files_available msgid "Available files" msgstr "Fitxers disponibles" #: installer_files_selected msgid "Selected files" msgstr "Fitxers seleccionats" #: installer_files_add msgid ">> add >>" msgstr ">> afegeix >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Afegeix el fitxer seleccionat a la llista" #: installer_files_remove msgid "<< remove <<" msgstr "<< treu <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Treu el fitxer seleccionat de la llista" #: installer_button msgid "Launch button" msgstr "Botó d'activació" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propietats del botó que es mostrarà a la biblioteca de projectes" #: installer_button_project msgid "Main project:" msgstr "Projecte principal:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Projecte JClic associat al botó" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etiqueta:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Breu etiqueta de text, que apareixerà dins del botó" #: installer_button_icon msgid "Icon:" msgstr "Icona:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Imatge que mostrará el botó. Deixeu-ho en blanc per mostrar la icona per " "defecte del JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descripció" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Text d'ajuda emergent que mostrarà el botó" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Error: Cal indicar el títol del projecte" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Error: Cal indicar el nom de la carpeta on s'instal·larà el projecte" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Error: No heu seleccionat cap fitxer" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Error: Cal indicar el text del botó d'activació" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Error: El projecte assignat al botó d'activació no es troba a la llista de " "fitxers a copiar" #: applet_page_full msgid "Full-page applet" msgstr "L'applet ocupa tota la pàgina" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "L'applet té unes dimensions específiques" #: edit_text_align_left msgid "Align text left" msgstr "Aliniar el text a l'esquerra" #: edit_text_align_center msgid "Center text" msgstr "Text centrat" #: edit_text_align_right msgid "Align text right" msgstr "Aliniar el text a la dreta" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Crea una incògnita o suprimeix-la" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Insereix una cel·la" #: edit_text_act_content msgid "Content" msgstr "Contingut" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Estil" #: edit_cell_size msgid "Cell size:" msgstr "Dimensions:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Les següents activitats mai no arribaran a executarse, degut a que no " "apareixen a cap seqüència d'activitats del projecte:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Els següents objectes de la mediateca no es fan servir directament en cap " "activitat:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "Voleu afegir-les al final de la darrera sequència d'activitats?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Voleu eliminar-los?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Retirada d'objectes multimèdia no utilitzats" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Activitats òrfenes" #: edit_media_refreshAll msgid "Update all media content" msgstr "Actualitza el contingut de tots els recursos" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Actualitza tots els recursos tornant a carregar els seus fitxers" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Actualitzant recursos..." #: edit_media_exportAll msgid "Export all media" msgstr "Exporta tots els recursos" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Enregistra en fitxers el contingut de tots els recursos" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Seleciona" #: edit_shape_addPoint msgid "Add point" msgstr "Afegeix un punt" #: edit_shape_deletePoint msgid "Delete" msgstr "Elimina" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Dibuixa un rectangle" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Dibuixa una el·lipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Dibuixa un polígon" #: edit_shape_toLine msgid "Convert to line" msgstr "Converteix en línia" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Converteix en corba de Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Converteix en quàdrica" #: edit_shape_rLeft msgid "Rotate left" msgstr "Gira a l'esquerra" #: edit_shape_rRight msgid "Rotate right" msgstr "Gira a la dreta" #: edit_shape_expand msgid "Expand" msgstr "Expandeix" #: edit_shape_contract msgid "Contract" msgstr "Contreu" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Apropa" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Allunya" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Ajunta punts propers" #: edit_shape_showPoints msgid "Show points" msgstr "Mostra punts" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Mostra/Amaga els punts" #: edit_shape_gridSize msgid "Grid size:" msgstr "Reixeta:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Mostra o amaga la reixeta" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Radi de l'imant:" #: edit_shape_elements msgid "Defined elements" msgstr "Elements definits" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nom de l'element seleccionat" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Radi d'acció de l'imant quan es troba activat" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Mida de la reixeta" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Activitat:" #: edit_mc_sequence msgid "Sequence:" msgstr "Seqüència:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Projecte:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Selecció de l'activitat" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Selecció de la seqüència" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Dades insuficients!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Color de les fletxes:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Color emprat per l'editor per dibuixar les fletxes (no és exacte, ja que es " "fa servir una màscara XOR de bits)" #: edit_act_editActivity msgid "Edit..." msgstr "Edita..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Edita l'activitat seleccionada" #: action_saveFileAs_caption msgid "Save as..." msgstr "Anomena i desa..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Desa el projecte amb un nom diferent" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportament" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportament" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Arrossega" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Arrossega els objectes en comptes d'unir-los amb una línia" #: edit_act_behavior_order msgid "Check solving order" msgstr "Comprova l'ordre de resolució" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Les caselles s'han de resoldre ordenadament" #: edit_act_scramble msgid "Scramble" msgstr "Barreja" #: action_importActivities_caption msgid "Import activities..." msgstr "Importa activitats..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importa activitats d'un altre projecte" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "El fitxer que heu seleccionat correspon al projecte actual. La importació " "d'activitats només es pot fer entre projectes diferents. Si us plau, " "seleccioneu un altre fitxer de projecte." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" "Seleccioneu una o més activitats per a importar-les al projecte actual:" #: import_importing msgid "Importing..." msgstr "S'està important..." #: import_checkdep msgid "Checking dependencies..." msgstr "S'estan comprovant les dependències..." #: import_impmedia msgid "Importing media\\:" msgstr "S'estan important recursos:" #: import_impact msgid "Importing activity\\:" msgstr "S'està important l'activitat:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Seleccioneu el projecte JClic del qual desitgeu importar activitats" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marques d'etiqueta" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marca d'inici:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marca que indica inici d'etiqueta" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marca d'acabament:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marca que indica acabament d'etiqueta" #: edit_tagRep_file msgid "File" msgstr "Fitxer" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Fitxer o URL:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Nom o URL del fitxer que conté els valors que substituiran les etiquetes" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Codificació:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Tipus de codificació emprada en el fitxer" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Navega..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Navega pel sistema de fitxers" #: edit_tagRep_title msgid "Tag replacing" msgstr "Substitució d'etiquetes" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Neteja estils de text..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Atenció: Aquesta acció netejarà els atributs especials de caràcter aplicats " "al document, retornant-lo al seu estil principal. L'operació no es pot " "desfer. Voleu fer-ho?" #: img_max_size msgid "Maximum size of images:" msgstr "Mida màxima de les imatges:" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "Amplada màxima de les imatges que s'importen a la mediateca." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "Alçada màxima de les imatges que s'importen a la mediateca." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "La imatge \"%s\" té unes dimensions de %s píxels, que excedeixen el màxim " "permès pel JClic Author (%s). Voleu redimensionar-la?" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_zh_TW.po0000644000175000017500000017043311377161311023575 0ustar # Traditional Chinese translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2009-04-12 15:34+0000\n" "Last-Translator: tclin \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "描述" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "名稱:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "報告" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "" #: edit_act_code msgid "Code:" msgstr "編碼:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" #: edit_act_reportActions msgid "Report user actions" msgstr "" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "計數器" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "計時器" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "顯示/隱藏 計時器" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "積分" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "顯示/隱藏 積分" #: edit_act_maxTime msgid "Max time:" msgstr "最長時間:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" #: edit_act_countdown msgid "Countdown" msgstr "" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "" #: edit_act_maxActions msgid "Max tries:" msgstr "" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "按鈕" #: edit_act_helpBtn msgid "Help" msgstr "幫助" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "顯示/隱藏 按鈕" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "顯示答案" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "顯示訊息:" #: edit_act_infoBtn msgid "Information" msgstr "資訊" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" #: edit_act_mainWindow msgid "Main window:" msgstr "" #: edit_act_gameWindow msgid "Game window:" msgstr "" #: edit_act_margin msgid "Margin:" msgstr "邊界:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "" #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "背景顏色:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "改變背景顏色。" #: edit_gradient_startColor msgid "Start color:" msgstr "開始顏色:" #: edit_gradient_endColor msgid "End color:" msgstr "結束顏色:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "選擇開始的顏色" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "選擇結束的顏色" #: edit_gradient_cycles msgid "Cycles:" msgstr "循環:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "" #: edit_gradient_orientation msgid "Orientation:" msgstr "方向:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "" #: edit_act_gradient msgid "Gradient:" msgstr "漸層:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "使用漸層顏色" #: edit_color_opacity msgid "Opacity" msgstr "不透明" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "" #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "漸層" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "使用預設值(空漸層)" #: edit_act_image msgid "Image:" msgstr "影像:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "描述" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "名稱及描述" #: edit_act_tiledBgImg msgid "Tiled" msgstr "拼貼" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "預覽:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "邊框" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "" #: edit_act_transparent msgid "Transparent" msgstr "透明" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "視窗有透明背景" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "寬度:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "高度:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "置中" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "使用者介面" #: edit_act_image_tooltip msgid "Select an image" msgstr "" #: edit_act_text msgid "Text:" msgstr "文字:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "" #: edit_font_face msgid "Typeface:" msgstr "" #: edit_font_size msgid "Size:" msgstr "大小:" #: edit_font_bold msgid "Bold" msgstr "粗體" #: edit_font_italic msgid "Italic" msgstr "斜體" #: edit_font_underline msgid "Underline" msgstr "底線" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "樣式:" #: edit_cell_title msgid "Cell contents" msgstr "儲存格內容" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "訊息" #: edit_act_msg_initial msgid "Initial message:" msgstr "開始訊息" #: edit_act_msg_final msgid "Final message:" msgstr "完成訊息" #: edit_act_msg_prev msgid "Previous message:" msgstr "前一則訊息" #: edit_act_msg_error msgid "Error message:" msgstr "錯誤訊息:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" #: edit_align msgid "Align:" msgstr "" #: edit_act_textColor msgid "Text color:" msgstr "文字顏色:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "" #: edit_act_shadowColor msgid "Shadow color:" msgstr "陰影顏色:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "" #: edit_act_shadow msgid "Shadow" msgstr "陰影" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "" #: edit_act_borderColor msgid "Border color:" msgstr "邊框顏色:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "" #: edit_act_altColor msgid "Alternative color:" msgstr "" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" #: edit_cell_marked msgid "Marked" msgstr "" #: edit_cell_disabled msgid "Disabled" msgstr "已停用" #: edit_cell_alt msgid "Alternative" msgstr "" #: edit_cell_textMargin msgid "Internal margin:" msgstr "" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "" #: edit_cell_borderWidth msgid "Border width:" msgstr "" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "" #: edit_cell_markerWidth msgid "Marker width:" msgstr "" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "" #: edit_act_testAction msgid "Preview activity" msgstr "" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "" #: edit_act_panels_options msgid "Options" msgstr "" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "" #: edit_act_panels_panel msgid "Panel" msgstr "" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "" #: edit_media_exists_1 msgid "The file" msgstr "" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "" #: edit_act_shaper msgid "Shaper:" msgstr "" #: edit_act_shaper_err msgid "Shaper error:" msgstr "" #: edit_act_num_cols msgid "Columns:" msgstr "" #: edit_act_num_rows msgid "Rows:" msgstr "" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "" #: edit_act_toothRandom msgid "Random distribution" msgstr "" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "" #: edit_act_panels_text msgid "Text" msgstr "" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "" #: action_saveFile_caption msgid "Save..." msgstr "" #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "" #: action_saveFile_tooltip msgid "Save the current project" msgstr "" #: action_docTree_caption msgid "Document tree..." msgstr "" #: action_docTree_keys msgid "T*" msgstr "" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "" #: edit_docTree_title msgid "Document tree" msgstr "" #: edit_media_referencedBy msgid "Referenced by:" msgstr "" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "" #: edit_mc_type_unknown msgid "Unknown" msgstr "" #: edit_mc_type_sound msgid "Play sound" msgstr "" #: edit_mc_type_video msgid "Play video" msgstr "" #: edit_mc_type_midi msgid "Play MIDI" msgstr "" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "" #: edit_mc_type_record msgid "Record sound" msgstr "" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "" #: edit_mc_type_run_external msgid "Run program" msgstr "" #: edit_mc_type_url msgid "Show URL" msgstr "" #: edit_mc_type_exit msgid "End" msgstr "" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "" #: edit_mc_level msgid "Priority level:" msgstr "" #: edit_mc_file msgid "File:" msgstr "" #: edit_mc_externalParam msgid "Parameters:" msgstr "" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "" #: edit_mc_recBuffer msgid "Record tape:" msgstr "" #: edit_mc_stretch msgid "Stretch size" msgstr "" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "" #: edit_mc_location_from_box msgid "Cell" msgstr "" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "" #: edit_mc_location_from_frame msgid "Frame" msgstr "" #: edit_mc_loop msgid "Loop playback" msgstr "" #: edit_mc_autostart msgid "Auto start" msgstr "" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "" #: edit_mc_title msgid "Multimedia and active content" msgstr "" #: edit_mc_label msgid "Active content:" msgstr "" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "" #: edit_mc_pos_window msgid "Centered over window" msgstr "" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "" #: edit_act_panels_controls msgid "Controls" msgstr "" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "" #: edit_act_gridLayout msgid "Grid layout:" msgstr "" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "" #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" #: edit_act_showAllArrows msgid "Show all arrows" msgstr "" #: edit_act_alt msgid "Alternative content:" msgstr "" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" #: edit_act_alt_toggle msgid "ALT" msgstr "" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "" #: edit_act_grid msgid "Grid" msgstr "" #: edit_act_grid_A msgid "Grid A" msgstr "" #: edit_act_grid_B msgid "Grid B" msgstr "" #: edit_act_grid_layout msgid "Layout" msgstr "" #: edit_act_grid_relationship msgid "Relationship" msgstr "" #: edit_seq_activity_header msgid "activity" msgstr "" #: edit_seq_tag_header msgid "tag" msgstr "" #: edit_seq_jump_header msgid "jump to" msgstr "" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "" #: edit_seq_auto msgid "Move on automatically" msgstr "" #: edit_seq_delay msgid "Delay:" msgstr "" #: edit_seq_action_fwd msgid "Go forward" msgstr "" #: edit_seq_action_back msgid "Go bak" msgstr "" #: edit_seq_action_jump msgid "Jump to..." msgstr "" #: edit_seq_action_stop msgid "Stop" msgstr "" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "" #: edit_seq_action_exit msgid "Exit JClic" msgstr "" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "" #: edit_seq_action msgid "Action:" msgstr "" #: edit_seq_button_enabled msgid "Show button" msgstr "" #: edit_seq_project msgid "JClic Project:" msgstr "" #: edit_act_absolute msgid "Absolute position" msgstr "" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "" #: edit_seq_newElement msgid "New sequence element..." msgstr "" #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "" #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" #: edit_seq_jump_msg msgid "Jump target:" msgstr "" #: edit_seq_jump_title msgid "Jump target" msgstr "" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "" #: edit_act_prompt_class msgid "Type of activity:" msgstr "" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "" #: edit_act_newActivity_class msgid "Java class name:" msgstr "" #: edit_text_act_format msgid "Format" msgstr "" #: edit_text_act_answer msgid "Answer" msgstr "" #: edit_text_act_popup msgid "Pop up" msgstr "" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "" #: edit_list_newValue msgid "New text:" msgstr "" #: edit_list_addElement msgid "Add new list element" msgstr "" #: edit_list_modifyValue msgid "Modify selected text" msgstr "" #: edit_text_act_target msgid "Target" msgstr "" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "" #: edit_text_act_fillingChar msgid "Filling character" msgstr "" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "" #: edit_text_act_iniLen msgid "Initial length:" msgstr "" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" #: edit_text_act_iniText msgid "Initial text:" msgstr "" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "" #: edit_text_act_list msgid "Show a list of options:" msgstr "" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" #: edit_text_act_check_title msgid "Correction options" msgstr "" #: edit_text_act_popup_no msgid "No pop up" msgstr "" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "" #: edit_text_act_mainStyle msgid "Main style:" msgstr "" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "" #: edit_text_act_colors msgid "Colors:" msgstr "" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "" #: edit_text_act_styleSample_target msgid "target" msgstr "" #: edit_text_act_styleSample_error msgid "error" msgstr "" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "" #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "" #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "" #: edit_text_act_edit_target msgid "Target..." msgstr "" #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "" #: edit_text_act_checkCase msgid "Match case" msgstr "" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "" #: edit_text_act_checkOptions msgid "Criteria" msgstr "" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "" #: edit_text_act_check_bt msgid "Correction..." msgstr "" #: edit_text_act_checkButton msgid "Correction button" msgstr "" #: edit_text_act_checkProgress msgid "Progress" msgstr "" #: edit_text_act_typeBtn msgid "Type..." msgstr "" #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "" #: edit_text_act_orderWords msgid "Order words" msgstr "" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "" #: edit_text_act_type_title msgid "Activity type" msgstr "" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" #: edit_text_act_identWords msgid "Identify words" msgstr "" #: edit_text_act_identChars msgid "Identify characters" msgstr "" #: edit_media_change_name msgid "Change name..." msgstr "" #: edit_media_change_file msgid "Change file..." msgstr "" #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "" #: edit_media_type msgid "Media type:" msgstr "" #: edit_media_size msgid "File size:" msgstr "" #: edit_media_show_type msgid "Files of type:" msgstr "" #: edit_media_preview msgid "Preview media" msgstr "" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "" #: edit_media_rename msgid "Change resource name" msgstr "" #: edit_media_rename_title msgid "Rename" msgstr "" #: edit_media_rename_prompt msgid "New name:" msgstr "" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "" #: err_media_chfile_different msgid "File must be of same type" msgstr "" #: edit_media_font_error msgid "Unable to load font!" msgstr "" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "" #: edit_media_refresh_file msgid "Update media content from file" msgstr "" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "" #: edit_project_title_tooltip msgid "Project's title" msgstr "" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "" #: edit_project_tooltip msgid "Edit project properties" msgstr "" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "" #: edit_project_description_tooltip msgid "General description of the project" msgstr "" #: edit_project_area msgid "Areas:" msgstr "" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "" #: edit_project_level msgid "Levels:" msgstr "" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "" #: edit_project_descriptors msgid "Descriptors:" msgstr "" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "" #: edit_project_languages msgid "Languages:" msgstr "" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "" #: edit_project_languages_modify msgid "Change the selected language" msgstr "" #: edit_project_languages_add msgid "Add language" msgstr "" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "" #: edit_project_author_rol msgid "Rol:" msgstr "" #: edit_project_author_organization msgid "Organization:" msgstr "" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "" #: edit_project_author_info msgid "Author info:" msgstr "" #: edit_project_author_add msgid "Add author to list" msgstr "" #: edit_project_author_edit msgid "Edit author info" msgstr "" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "" #: edit_project_org_name_tooltip msgid "School name" msgstr "" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "" #: edit_project_org_url_tooltip msgid "School website" msgstr "" #: edit_project_org_address msgid "Address:" msgstr "" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "" #: edit_project_org_pc msgid "PC:" msgstr "" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "" #: edit_project_org_city msgid "City:" msgstr "" #: edit_project_org_city_tooltip msgid "School city" msgstr "" #: edit_project_org_country msgid "Country:" msgstr "" #: edit_project_org_state msgid "State:" msgstr "" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "" #: edit_project_org msgid "School/s:" msgstr "" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "" #: edit_project_org_info msgid "Organization info:" msgstr "" #: edit_project_org_add msgid "Add organization" msgstr "" #: edit_project_org_edit msgid "Edit organization data" msgstr "" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "" #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "" #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "" #: edit_project_rev_date msgid "Date:" msgstr "" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "" #: edit_project_rev msgid "Revisions:" msgstr "" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "" #: edit_project_rev_add msgid "Add revision record" msgstr "" #: edit_project_rev_edit msgid "Edit revision record" msgstr "" #: edit_project_rev_info msgid "Revision data" msgstr "" #: edit_media_objects msgid "objects" msgstr "" #: edit_media_object msgid "object" msgstr "" #: edit_evsounds_start msgid "Start of activity:" msgstr "" #: edit_evsounds_click msgid "Click on object:" msgstr "" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "" #: edit_evsounds_default msgid "default sound" msgstr "" #: edit_evsounds_disabled msgid "disabled" msgstr "" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" #: action_newProject_caption msgid "New project..." msgstr "" #: action_newProject_keys msgid "NN" msgstr "" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "" #: edit_arith_op_with msgid "With:" msgstr "" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "" #: edit_arith_op_fromList msgid "One from the list:" msgstr "" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "" #: edit_arith_op_decimals msgid "Decimals:" msgstr "" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "" #: edit_arith_op_dec1 msgid "#.#" msgstr "" #: edit_arith_op_dec2 msgid "#.##" msgstr "" #: edit_arith_firstOp msgid "First operand" msgstr "" #: edit_arith_secondOp msgid "Second operand" msgstr "" #: edit_arith_title msgid "Arith2 for JClic" msgstr "" #: edit_arith_operations msgid "Operations:" msgstr "" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "" #: edit_arith_operations_plus msgid "Plus" msgstr "" #: edit_arith_operations_minus msgid "Minus" msgstr "" #: edit_arith_operations_multiply msgid "Multiply" msgstr "" #: edit_arith_operations_divide msgid "Divide" msgstr "" #: edit_arith_unknown msgid "Unknown:" msgstr "" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "" #: edit_arith_result msgid "Result:" msgstr "" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "" #: edit_arith_result_random msgid "Random" msgstr "" #: edit_arith_result_asc msgid "Ascending" msgstr "" #: edit_arith_result_order msgid "Order by result:" msgstr "" #: edit_arith_result_desc msgid "Descending" msgstr "" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "" #: edit_arith_cond msgid "Conditions:" msgstr "" #: edit_arith_cond_ind msgid "Indifferent" msgstr "" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "" #: edit_autocp msgid "Automatic content generator:" msgstr "" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" #: edit_autocp_block msgid "Content generator" msgstr "" #: edit_autocp_btn msgid "Settings..." msgstr "" #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "" #: edit_data msgid "Edit data" msgstr "" #: edit_act msgid "Activity edit" msgstr "" #: edit_acp msgid "Content provider edit" msgstr "" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "" #: edit_project_author_group msgid "Creation" msgstr "" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "" #: m_Edit msgid "Edit" msgstr "" #: m_Edit_Mnemonic msgid "E" msgstr "" #: edit_media_preview_keys msgid "P*" msgstr "" #: edit_act_newActivity msgid "New activity..." msgstr "" #: edit_act_newActivity_keys msgid "A*" msgstr "" #: edit_act_testAction_keys msgid "P#10" msgstr "" #: edit_seq_newElement_keys msgid "S*" msgstr "" #: m_Insert msgid "Insert" msgstr "" #: m_Insert_Mnemonic msgid "I" msgstr "" #: m_View msgid "View" msgstr "" #: m_View_Mnemonic msgid "V" msgstr "" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "" #: action_editProject_keys msgid "PP" msgstr "" #: action_editProject_tooltip msgid "Edit project settings" msgstr "" #: action_editMedia_caption msgid "Media" msgstr "" #: action_editMedia_keys msgid "MM" msgstr "" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "" #: edit_project_descriptors_block msgid "Descriptors" msgstr "" #: edit_media_new msgid "New media object..." msgstr "" #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "" #: edit_media_new_keys msgid "M*" msgstr "" #: edit_seq_threshold msgid "Score threshold:" msgstr "" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" #: edit_seq_time msgid "Time threshold:" msgstr "" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "" #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" #: edit_seq_condJump msgid "Conditional jumps" msgstr "" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "" #: edit_color_dlgTitle msgid "Select color" msgstr "" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "" #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "" #: edit_act_copy_attributes msgid "Attributes" msgstr "" #: edit_act_copy_dest msgid "Apply to:" msgstr "" #: edit_act_copy_style_main msgid "Main window" msgstr "" #: edit_act_copy_style_play msgid "Play window" msgstr "" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "" #: edit_act_copyAttributes_keys msgid "T" msgstr "" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "" #: edit_new_project_name msgid "Project name:" msgstr "" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "" #: edit_new_project_title msgid "Create new JClic project" msgstr "" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "" #: edit_act_copy_margin msgid "Margin" msgstr "" #: edit_act_copy_bgColor msgid "Background color" msgstr "" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "" #: edit_act_copy_bgImage msgid "Background image" msgstr "" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "" #: edit_act_copy_position msgid "Position" msgstr "" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "" #: edit_act_copy_skin msgid "Skin" msgstr "" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "" #: edit_act_copy_maxTime msgid "Max. time" msgstr "" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "" #: edit_act_copy_btnHelp msgid "Help button" msgstr "" #: edit_act_copy_btnInfo msgid "Information button" msgstr "" #: edit_act_copy_grids msgid "Grids" msgstr "" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "" #: edit_act_copy_text msgid "Text activities" msgstr "" #: edit_act_copy_fontFace msgid "Font face" msgstr "" #: edit_act_copy_fontSize msgid "Font size" msgstr "" #: edit_act_copy_fontStyle msgid "Font style" msgstr "" #: edit_act_copy_textColour msgid "Main text colour" msgstr "" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "" #: edit_act_changeType msgid "Change activity type" msgstr "" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" #: edit_act_newActivity_other msgid "Other..." msgstr "" #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" #: applet_codebase msgid "Location of JClic code:" msgstr "" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" #: applet_prev_text msgid "HTML code before:" msgstr "" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "" #: applet_post_text msgid "HTML code after:" msgstr "" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "" #: applet_size msgid "Applet size:" msgstr "" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "" #: applet_page_title msgid "Page title:" msgstr "" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "" #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "" #: action_createHTML_caption msgid "Create web page..." msgstr "" #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "" #: action_createHTML_keys msgid "H*" msgstr "" #: settings_applet msgid "Applet" msgstr "" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "" #: applet_exitUrl msgid "On exit, go to:" msgstr "" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "" #: applet_infoFrame msgid "Info frame name:" msgstr "" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" #: action_createInstaller_caption msgid "Create project installer..." msgstr "" #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "" #: installer_caption msgid "Edit project installer script" msgstr "" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "" #: installer_authors msgid "Autors:" msgstr "" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "" #: installer_files msgid "Files to be copied:" msgstr "" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "" #: installer_files_available msgid "Available files" msgstr "" #: installer_files_selected msgid "Selected files" msgstr "" #: installer_files_add msgid ">> add >>" msgstr "" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "" #: installer_files_remove msgid "<< remove <<" msgstr "" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "" #: installer_button msgid "Launch button" msgstr "" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "" #: installer_button_project msgid "Main project:" msgstr "" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "" #: installer_button_icon msgid "Icon:" msgstr "" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" #: applet_page_full msgid "Full-page applet" msgstr "" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "" #: edit_text_align_left msgid "Align text left" msgstr "" #: edit_text_align_center msgid "Center text" msgstr "" #: edit_text_align_right msgid "Align text right" msgstr "" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "" #: edit_text_act_content msgid "Content" msgstr "" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "" #: edit_cell_size msgid "Cell size:" msgstr "" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "" #: edit_media_refreshAll msgid "Update all media content" msgstr "" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "" #: edit_media_refreshAll_keys msgid "R*" msgstr "" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "" #: edit_media_exportAll msgid "Export all media" msgstr "" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "" #: edit_media_exportAll_keys msgid "X*" msgstr "" #: edit_shape_select msgid "Select" msgstr "" #: edit_shape_addPoint msgid "Add point" msgstr "" #: edit_shape_deletePoint msgid "Delete" msgstr "" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "" #: edit_shape_toLine msgid "Convert to line" msgstr "" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "" #: edit_shape_rLeft msgid "Rotate left" msgstr "" #: edit_shape_rRight msgid "Rotate right" msgstr "" #: edit_shape_expand msgid "Expand" msgstr "" #: edit_shape_contract msgid "Contract" msgstr "" #: edit_shape_zoomIn msgid "Zoom in" msgstr "" #: edit_shape_zoomOut msgid "Zoom out" msgstr "" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "" #: edit_shape_showPoints msgid "Show points" msgstr "" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "" #: edit_shape_gridSize msgid "Grid size:" msgstr "" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "" #: edit_shape_elements msgid "Defined elements" msgstr "" #: edit_shape_elemName msgid "Name of the selected element" msgstr "" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "" #: edit_mc_sequence msgid "Sequence:" msgstr "" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "" #: edit_mc_project msgid "Project:" msgstr "" #: edit_mc_activity_selection msgid "Choose activity" msgstr "" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "" #: edit_act_arrowColor msgid "Arrow color:" msgstr "" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" #: edit_act_editActivity msgid "Edit..." msgstr "" #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "" #: action_saveFileAs_caption msgid "Save as..." msgstr "" #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "" #: edit_act_behavior_drag msgid "Drag objects" msgstr "" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "" #: edit_act_behavior_order msgid "Check solving order" msgstr "" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "" #: edit_act_scramble msgid "Scramble" msgstr "" #: action_importActivities_caption msgid "Import activities..." msgstr "" #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" #: import_importing msgid "Importing..." msgstr "" #: import_checkdep msgid "Checking dependencies..." msgstr "" #: import_impmedia msgid "Importing media\\:" msgstr "" #: import_impact msgid "Importing activity\\:" msgstr "" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "" #: edit_tagRep_tags msgid "Tag marks" msgstr "" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "" #: edit_tagRep_file msgid "File" msgstr "" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" #: edit_tagRep_charset msgid "Charset\\:" msgstr "" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "" #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "" #: edit_tagRep_title msgid "Tag replacing" msgstr "" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "" #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" #: img_max_size msgid "Maximum size of images:" msgstr "" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_ar.po0000644000175000017500000016712611377161311023151 0ustar # Arabic translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2008-07-13 15:30+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "" #: edit_act_code msgid "Code:" msgstr "" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" #: edit_act_reportActions msgid "Report user actions" msgstr "" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "" #: edit_act_maxTime msgid "Max time:" msgstr "" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" #: edit_act_countdown msgid "Countdown" msgstr "" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "" #: edit_act_maxActions msgid "Max tries:" msgstr "" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "" #: edit_act_helpBtn msgid "Help" msgstr "" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "" #: edit_act_infoBtn msgid "Information" msgstr "" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" #: edit_act_mainWindow msgid "Main window:" msgstr "" #: edit_act_gameWindow msgid "Game window:" msgstr "" #: edit_act_margin msgid "Margin:" msgstr "" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "" #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "" #: edit_gradient_startColor msgid "Start color:" msgstr "" #: edit_gradient_endColor msgid "End color:" msgstr "" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "" #: edit_gradient_cycles msgid "Cycles:" msgstr "" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "" #: edit_gradient_orientation msgid "Orientation:" msgstr "" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "" #: edit_act_gradient msgid "Gradient:" msgstr "" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "" #: edit_color_opacity msgid "Opacity" msgstr "" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "" #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "" #: edit_act_image msgid "Image:" msgstr "" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "" #: edit_act_tiledBgImg msgid "Tiled" msgstr "" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "" #: edit_act_transparent msgid "Transparent" msgstr "" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "" #: edit_act_image_tooltip msgid "Select an image" msgstr "" #: edit_act_text msgid "Text:" msgstr "" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "" #: edit_font_face msgid "Typeface:" msgstr "" #: edit_font_size msgid "Size:" msgstr "" #: edit_font_bold msgid "Bold" msgstr "" #: edit_font_italic msgid "Italic" msgstr "" #: edit_font_underline msgid "Underline" msgstr "" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "" #: edit_cell_title msgid "Cell contents" msgstr "" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "" #: edit_act_msg_initial msgid "Initial message:" msgstr "" #: edit_act_msg_final msgid "Final message:" msgstr "" #: edit_act_msg_prev msgid "Previous message:" msgstr "" #: edit_act_msg_error msgid "Error message:" msgstr "" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" #: edit_align msgid "Align:" msgstr "" #: edit_act_textColor msgid "Text color:" msgstr "" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "" #: edit_act_shadowColor msgid "Shadow color:" msgstr "" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "" #: edit_act_shadow msgid "Shadow" msgstr "" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "" #: edit_act_borderColor msgid "Border color:" msgstr "" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "" #: edit_act_altColor msgid "Alternative color:" msgstr "" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" #: edit_cell_marked msgid "Marked" msgstr "" #: edit_cell_disabled msgid "Disabled" msgstr "" #: edit_cell_alt msgid "Alternative" msgstr "" #: edit_cell_textMargin msgid "Internal margin:" msgstr "" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "" #: edit_cell_borderWidth msgid "Border width:" msgstr "" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "" #: edit_cell_markerWidth msgid "Marker width:" msgstr "" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "" #: edit_act_testAction msgid "Preview activity" msgstr "" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "" #: edit_act_panels_options msgid "Options" msgstr "" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "" #: edit_act_panels_panel msgid "Panel" msgstr "" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "" #: edit_media_exists_1 msgid "The file" msgstr "" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "" #: edit_act_shaper msgid "Shaper:" msgstr "" #: edit_act_shaper_err msgid "Shaper error:" msgstr "" #: edit_act_num_cols msgid "Columns:" msgstr "" #: edit_act_num_rows msgid "Rows:" msgstr "" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "" #: edit_act_toothRandom msgid "Random distribution" msgstr "" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "" #: edit_act_panels_text msgid "Text" msgstr "" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "" #: action_saveFile_caption msgid "Save..." msgstr "" #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "" #: action_saveFile_tooltip msgid "Save the current project" msgstr "" #: action_docTree_caption msgid "Document tree..." msgstr "" #: action_docTree_keys msgid "T*" msgstr "" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "" #: edit_docTree_title msgid "Document tree" msgstr "" #: edit_media_referencedBy msgid "Referenced by:" msgstr "" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "" #: edit_mc_type_unknown msgid "Unknown" msgstr "" #: edit_mc_type_sound msgid "Play sound" msgstr "" #: edit_mc_type_video msgid "Play video" msgstr "" #: edit_mc_type_midi msgid "Play MIDI" msgstr "" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "" #: edit_mc_type_record msgid "Record sound" msgstr "" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "" #: edit_mc_type_run_external msgid "Run program" msgstr "" #: edit_mc_type_url msgid "Show URL" msgstr "" #: edit_mc_type_exit msgid "End" msgstr "" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "" #: edit_mc_level msgid "Priority level:" msgstr "" #: edit_mc_file msgid "File:" msgstr "" #: edit_mc_externalParam msgid "Parameters:" msgstr "" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "" #: edit_mc_recBuffer msgid "Record tape:" msgstr "" #: edit_mc_stretch msgid "Stretch size" msgstr "" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "" #: edit_mc_location_from_box msgid "Cell" msgstr "" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "" #: edit_mc_location_from_frame msgid "Frame" msgstr "" #: edit_mc_loop msgid "Loop playback" msgstr "" #: edit_mc_autostart msgid "Auto start" msgstr "" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "" #: edit_mc_title msgid "Multimedia and active content" msgstr "" #: edit_mc_label msgid "Active content:" msgstr "" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "" #: edit_mc_pos_window msgid "Centered over window" msgstr "" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "" #: edit_act_panels_controls msgid "Controls" msgstr "" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "" #: edit_act_gridLayout msgid "Grid layout:" msgstr "" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "" #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" #: edit_act_showAllArrows msgid "Show all arrows" msgstr "" #: edit_act_alt msgid "Alternative content:" msgstr "" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" #: edit_act_alt_toggle msgid "ALT" msgstr "" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "" #: edit_act_grid msgid "Grid" msgstr "" #: edit_act_grid_A msgid "Grid A" msgstr "" #: edit_act_grid_B msgid "Grid B" msgstr "" #: edit_act_grid_layout msgid "Layout" msgstr "" #: edit_act_grid_relationship msgid "Relationship" msgstr "" #: edit_seq_activity_header msgid "activity" msgstr "" #: edit_seq_tag_header msgid "tag" msgstr "" #: edit_seq_jump_header msgid "jump to" msgstr "" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "" #: edit_seq_auto msgid "Move on automatically" msgstr "" #: edit_seq_delay msgid "Delay:" msgstr "" #: edit_seq_action_fwd msgid "Go forward" msgstr "" #: edit_seq_action_back msgid "Go bak" msgstr "" #: edit_seq_action_jump msgid "Jump to..." msgstr "" #: edit_seq_action_stop msgid "Stop" msgstr "" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "" #: edit_seq_action_exit msgid "Exit JClic" msgstr "" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "" #: edit_seq_action msgid "Action:" msgstr "" #: edit_seq_button_enabled msgid "Show button" msgstr "" #: edit_seq_project msgid "JClic Project:" msgstr "" #: edit_act_absolute msgid "Absolute position" msgstr "" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "" #: edit_seq_newElement msgid "New sequence element..." msgstr "" #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "" #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" #: edit_seq_jump_msg msgid "Jump target:" msgstr "" #: edit_seq_jump_title msgid "Jump target" msgstr "" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "" #: edit_act_prompt_class msgid "Type of activity:" msgstr "" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "" #: edit_act_newActivity_class msgid "Java class name:" msgstr "" #: edit_text_act_format msgid "Format" msgstr "" #: edit_text_act_answer msgid "Answer" msgstr "" #: edit_text_act_popup msgid "Pop up" msgstr "" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "" #: edit_list_newValue msgid "New text:" msgstr "" #: edit_list_addElement msgid "Add new list element" msgstr "" #: edit_list_modifyValue msgid "Modify selected text" msgstr "" #: edit_text_act_target msgid "Target" msgstr "" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "" #: edit_text_act_fillingChar msgid "Filling character" msgstr "" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "" #: edit_text_act_iniLen msgid "Initial length:" msgstr "" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" #: edit_text_act_iniText msgid "Initial text:" msgstr "" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "" #: edit_text_act_list msgid "Show a list of options:" msgstr "" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" #: edit_text_act_check_title msgid "Correction options" msgstr "" #: edit_text_act_popup_no msgid "No pop up" msgstr "" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "" #: edit_text_act_mainStyle msgid "Main style:" msgstr "" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "" #: edit_text_act_colors msgid "Colors:" msgstr "" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "" #: edit_text_act_styleSample_target msgid "target" msgstr "" #: edit_text_act_styleSample_error msgid "error" msgstr "" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "" #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "" #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "" #: edit_text_act_edit_target msgid "Target..." msgstr "" #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "" #: edit_text_act_checkCase msgid "Match case" msgstr "" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "" #: edit_text_act_checkOptions msgid "Criteria" msgstr "" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "" #: edit_text_act_check_bt msgid "Correction..." msgstr "" #: edit_text_act_checkButton msgid "Correction button" msgstr "" #: edit_text_act_checkProgress msgid "Progress" msgstr "" #: edit_text_act_typeBtn msgid "Type..." msgstr "" #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "" #: edit_text_act_orderWords msgid "Order words" msgstr "" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "" #: edit_text_act_type_title msgid "Activity type" msgstr "" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" #: edit_text_act_identWords msgid "Identify words" msgstr "" #: edit_text_act_identChars msgid "Identify characters" msgstr "" #: edit_media_change_name msgid "Change name..." msgstr "" #: edit_media_change_file msgid "Change file..." msgstr "" #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "" #: edit_media_type msgid "Media type:" msgstr "" #: edit_media_size msgid "File size:" msgstr "" #: edit_media_show_type msgid "Files of type:" msgstr "" #: edit_media_preview msgid "Preview media" msgstr "" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "" #: edit_media_rename msgid "Change resource name" msgstr "" #: edit_media_rename_title msgid "Rename" msgstr "" #: edit_media_rename_prompt msgid "New name:" msgstr "" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "" #: err_media_chfile_different msgid "File must be of same type" msgstr "" #: edit_media_font_error msgid "Unable to load font!" msgstr "" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "" #: edit_media_refresh_file msgid "Update media content from file" msgstr "" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "" #: edit_project_title_tooltip msgid "Project's title" msgstr "" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "" #: edit_project_tooltip msgid "Edit project properties" msgstr "" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "" #: edit_project_description_tooltip msgid "General description of the project" msgstr "" #: edit_project_area msgid "Areas:" msgstr "" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "" #: edit_project_level msgid "Levels:" msgstr "" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "" #: edit_project_descriptors msgid "Descriptors:" msgstr "" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "" #: edit_project_languages msgid "Languages:" msgstr "" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "" #: edit_project_languages_modify msgid "Change the selected language" msgstr "" #: edit_project_languages_add msgid "Add language" msgstr "" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "" #: edit_project_author_rol msgid "Rol:" msgstr "" #: edit_project_author_organization msgid "Organization:" msgstr "" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "" #: edit_project_author_info msgid "Author info:" msgstr "" #: edit_project_author_add msgid "Add author to list" msgstr "" #: edit_project_author_edit msgid "Edit author info" msgstr "" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "" #: edit_project_org_name_tooltip msgid "School name" msgstr "" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "" #: edit_project_org_url_tooltip msgid "School website" msgstr "" #: edit_project_org_address msgid "Address:" msgstr "" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "" #: edit_project_org_pc msgid "PC:" msgstr "" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "" #: edit_project_org_city msgid "City:" msgstr "" #: edit_project_org_city_tooltip msgid "School city" msgstr "" #: edit_project_org_country msgid "Country:" msgstr "" #: edit_project_org_state msgid "State:" msgstr "" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "" #: edit_project_org msgid "School/s:" msgstr "" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "" #: edit_project_org_info msgid "Organization info:" msgstr "" #: edit_project_org_add msgid "Add organization" msgstr "" #: edit_project_org_edit msgid "Edit organization data" msgstr "" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "" #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "" #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "" #: edit_project_rev_date msgid "Date:" msgstr "" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "" #: edit_project_rev msgid "Revisions:" msgstr "" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "" #: edit_project_rev_add msgid "Add revision record" msgstr "" #: edit_project_rev_edit msgid "Edit revision record" msgstr "" #: edit_project_rev_info msgid "Revision data" msgstr "" #: edit_media_objects msgid "objects" msgstr "" #: edit_media_object msgid "object" msgstr "" #: edit_evsounds_start msgid "Start of activity:" msgstr "" #: edit_evsounds_click msgid "Click on object:" msgstr "" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "" #: edit_evsounds_default msgid "default sound" msgstr "" #: edit_evsounds_disabled msgid "disabled" msgstr "" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" #: action_newProject_caption msgid "New project..." msgstr "" #: action_newProject_keys msgid "NN" msgstr "" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "" #: edit_arith_op_with msgid "With:" msgstr "" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "" #: edit_arith_op_fromList msgid "One from the list:" msgstr "" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "" #: edit_arith_op_decimals msgid "Decimals:" msgstr "" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "" #: edit_arith_op_dec1 msgid "#.#" msgstr "" #: edit_arith_op_dec2 msgid "#.##" msgstr "" #: edit_arith_firstOp msgid "First operand" msgstr "" #: edit_arith_secondOp msgid "Second operand" msgstr "" #: edit_arith_title msgid "Arith2 for JClic" msgstr "" #: edit_arith_operations msgid "Operations:" msgstr "" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "" #: edit_arith_operations_plus msgid "Plus" msgstr "" #: edit_arith_operations_minus msgid "Minus" msgstr "" #: edit_arith_operations_multiply msgid "Multiply" msgstr "" #: edit_arith_operations_divide msgid "Divide" msgstr "" #: edit_arith_unknown msgid "Unknown:" msgstr "" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "" #: edit_arith_result msgid "Result:" msgstr "" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "" #: edit_arith_result_random msgid "Random" msgstr "" #: edit_arith_result_asc msgid "Ascending" msgstr "" #: edit_arith_result_order msgid "Order by result:" msgstr "" #: edit_arith_result_desc msgid "Descending" msgstr "" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "" #: edit_arith_cond msgid "Conditions:" msgstr "" #: edit_arith_cond_ind msgid "Indifferent" msgstr "" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "" #: edit_autocp msgid "Automatic content generator:" msgstr "" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" #: edit_autocp_block msgid "Content generator" msgstr "" #: edit_autocp_btn msgid "Settings..." msgstr "" #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "" #: edit_data msgid "Edit data" msgstr "" #: edit_act msgid "Activity edit" msgstr "" #: edit_acp msgid "Content provider edit" msgstr "" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "" #: edit_project_author_group msgid "Creation" msgstr "" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "" #: m_Edit msgid "Edit" msgstr "" #: m_Edit_Mnemonic msgid "E" msgstr "" #: edit_media_preview_keys msgid "P*" msgstr "" #: edit_act_newActivity msgid "New activity..." msgstr "" #: edit_act_newActivity_keys msgid "A*" msgstr "" #: edit_act_testAction_keys msgid "P#10" msgstr "" #: edit_seq_newElement_keys msgid "S*" msgstr "" #: m_Insert msgid "Insert" msgstr "" #: m_Insert_Mnemonic msgid "I" msgstr "" #: m_View msgid "View" msgstr "" #: m_View_Mnemonic msgid "V" msgstr "" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "" #: action_editProject_keys msgid "PP" msgstr "" #: action_editProject_tooltip msgid "Edit project settings" msgstr "" #: action_editMedia_caption msgid "Media" msgstr "" #: action_editMedia_keys msgid "MM" msgstr "" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "" #: edit_project_descriptors_block msgid "Descriptors" msgstr "" #: edit_media_new msgid "New media object..." msgstr "" #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "" #: edit_media_new_keys msgid "M*" msgstr "" #: edit_seq_threshold msgid "Score threshold:" msgstr "" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" #: edit_seq_time msgid "Time threshold:" msgstr "" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "" #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" #: edit_seq_condJump msgid "Conditional jumps" msgstr "" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "" #: edit_color_dlgTitle msgid "Select color" msgstr "" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "" #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "" #: edit_act_copy_attributes msgid "Attributes" msgstr "" #: edit_act_copy_dest msgid "Apply to:" msgstr "" #: edit_act_copy_style_main msgid "Main window" msgstr "" #: edit_act_copy_style_play msgid "Play window" msgstr "" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "" #: edit_act_copyAttributes_keys msgid "T" msgstr "" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "" #: edit_new_project_name msgid "Project name:" msgstr "" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "" #: edit_new_project_title msgid "Create new JClic project" msgstr "" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "" #: edit_act_copy_margin msgid "Margin" msgstr "" #: edit_act_copy_bgColor msgid "Background color" msgstr "" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "" #: edit_act_copy_bgImage msgid "Background image" msgstr "" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "" #: edit_act_copy_position msgid "Position" msgstr "" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "" #: edit_act_copy_skin msgid "Skin" msgstr "" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "" #: edit_act_copy_maxTime msgid "Max. time" msgstr "" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "" #: edit_act_copy_btnHelp msgid "Help button" msgstr "" #: edit_act_copy_btnInfo msgid "Information button" msgstr "" #: edit_act_copy_grids msgid "Grids" msgstr "" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "" #: edit_act_copy_text msgid "Text activities" msgstr "" #: edit_act_copy_fontFace msgid "Font face" msgstr "" #: edit_act_copy_fontSize msgid "Font size" msgstr "" #: edit_act_copy_fontStyle msgid "Font style" msgstr "" #: edit_act_copy_textColour msgid "Main text colour" msgstr "" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "" #: edit_act_changeType msgid "Change activity type" msgstr "" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" #: edit_act_newActivity_other msgid "Other..." msgstr "" #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" #: applet_codebase msgid "Location of JClic code:" msgstr "" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" #: applet_prev_text msgid "HTML code before:" msgstr "" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "" #: applet_post_text msgid "HTML code after:" msgstr "" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "" #: applet_size msgid "Applet size:" msgstr "" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "" #: applet_page_title msgid "Page title:" msgstr "" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "" #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "" #: action_createHTML_caption msgid "Create web page..." msgstr "" #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "" #: action_createHTML_keys msgid "H*" msgstr "" #: settings_applet msgid "Applet" msgstr "" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "" #: applet_exitUrl msgid "On exit, go to:" msgstr "" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "" #: applet_infoFrame msgid "Info frame name:" msgstr "" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" #: action_createInstaller_caption msgid "Create project installer..." msgstr "" #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "" #: installer_caption msgid "Edit project installer script" msgstr "" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "" #: installer_authors msgid "Autors:" msgstr "" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "" #: installer_files msgid "Files to be copied:" msgstr "" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "" #: installer_files_available msgid "Available files" msgstr "" #: installer_files_selected msgid "Selected files" msgstr "" #: installer_files_add msgid ">> add >>" msgstr "" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "" #: installer_files_remove msgid "<< remove <<" msgstr "" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "" #: installer_button msgid "Launch button" msgstr "" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "" #: installer_button_project msgid "Main project:" msgstr "" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "" #: installer_button_icon msgid "Icon:" msgstr "" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" #: applet_page_full msgid "Full-page applet" msgstr "" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "" #: edit_text_align_left msgid "Align text left" msgstr "" #: edit_text_align_center msgid "Center text" msgstr "" #: edit_text_align_right msgid "Align text right" msgstr "" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "" #: edit_text_act_content msgid "Content" msgstr "" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "" #: edit_cell_size msgid "Cell size:" msgstr "" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "" #: edit_media_refreshAll msgid "Update all media content" msgstr "" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "" #: edit_media_refreshAll_keys msgid "R*" msgstr "" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "" #: edit_media_exportAll msgid "Export all media" msgstr "" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "" #: edit_media_exportAll_keys msgid "X*" msgstr "" #: edit_shape_select msgid "Select" msgstr "" #: edit_shape_addPoint msgid "Add point" msgstr "" #: edit_shape_deletePoint msgid "Delete" msgstr "" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "" #: edit_shape_toLine msgid "Convert to line" msgstr "" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "" #: edit_shape_rLeft msgid "Rotate left" msgstr "" #: edit_shape_rRight msgid "Rotate right" msgstr "" #: edit_shape_expand msgid "Expand" msgstr "" #: edit_shape_contract msgid "Contract" msgstr "" #: edit_shape_zoomIn msgid "Zoom in" msgstr "" #: edit_shape_zoomOut msgid "Zoom out" msgstr "" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "" #: edit_shape_showPoints msgid "Show points" msgstr "" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "" #: edit_shape_gridSize msgid "Grid size:" msgstr "" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "" #: edit_shape_elements msgid "Defined elements" msgstr "" #: edit_shape_elemName msgid "Name of the selected element" msgstr "" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "" #: edit_mc_sequence msgid "Sequence:" msgstr "" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "" #: edit_mc_project msgid "Project:" msgstr "" #: edit_mc_activity_selection msgid "Choose activity" msgstr "" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "" #: edit_act_arrowColor msgid "Arrow color:" msgstr "" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" #: edit_act_editActivity msgid "Edit..." msgstr "" #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "" #: action_saveFileAs_caption msgid "Save as..." msgstr "" #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "" #: edit_act_behavior_drag msgid "Drag objects" msgstr "" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "" #: edit_act_behavior_order msgid "Check solving order" msgstr "" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "" #: edit_act_scramble msgid "Scramble" msgstr "" #: action_importActivities_caption msgid "Import activities..." msgstr "" #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" #: import_importing msgid "Importing..." msgstr "" #: import_checkdep msgid "Checking dependencies..." msgstr "" #: import_impmedia msgid "Importing media\\:" msgstr "" #: import_impact msgid "Importing activity\\:" msgstr "" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "" #: edit_tagRep_tags msgid "Tag marks" msgstr "" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "" #: edit_tagRep_file msgid "File" msgstr "" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" #: edit_tagRep_charset msgid "Charset\\:" msgstr "" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "" #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "" #: edit_tagRep_title msgid "Tag replacing" msgstr "" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "" #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" #: img_max_size msgid "Maximum size of images:" msgstr "" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_el.po0000644000175000017500000031457111377161311023145 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-16 11:44+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Περιγραφή" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Ονομασία δραστηριότητας" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Όνομα :" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Περιγραφή δραστηριότητας" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Αναφορές" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Συμπερίληψη αυτής της δραστηριότητας στις αναφορές" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "" "Συμπερίληψη των αποτελεσμάτων αυτής της δραστηριότητας στις αναφορές των " "χρηστών" #: edit_act_code msgid "Code:" msgstr "Κωδικός:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Προαιρετική χρήση κωδικού για ταξινόμηση και αναζήτηση στις αναφορές της " "βάσης δεδομένων." #: edit_act_reportActions msgid "Report user actions" msgstr "Αναφορά ενεργειών χρήστη" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" "Εγγραφή των λεπτομερειών όλων των ενεργειών που έγιναν από τους χρήστες" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Μετρητές" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Χρονόμετρο" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Εμφάνιση/απόκρυψη χρονόμετρου" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Μετρητής προσπαθειών" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Εμφάνιση/απόκρυψη μετρητή προσπαθειών" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Μετρητής βαθμολογίας" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Εμφάνιση/απόκρυψη μετρητή βαθμολογίας" #: edit_act_maxTime msgid "Max time:" msgstr "Μέγιστος χρόνος:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Μέγιστος χρόνος για τη διεκπεραίωση της δραστηριότητας σε δευτερόλεπτα, ή 0 " "για απεριόριστο χρόνο." #: edit_act_countdown msgid "Countdown" msgstr "Αντίστροφη μέτρηση" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "Ο μετρητής ξεκινά από τη μέγιστη τιμή και μειώνεται ως το 0." #: edit_act_maxActions msgid "Max tries:" msgstr "Μέγιστος αριθμός προσπαθειών:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" "Μέγιστος αριθμός επιτρεπόμενων προσπαθειών, ή 0 για απεριόριστες προσπάθειες." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Πλήκτρα" #: edit_act_helpBtn msgid "Help" msgstr "Βοήθεια" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Εμφάνιση/απόκρυψη πλήκτρου βοήθειας" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Εμφάνιση λύσης" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Εμφάνιση αυτού του μηνύματος:" #: edit_act_infoBtn msgid "Information" msgstr "Πληροφορίες" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Εμφάνιση/Απόκρυψη πλήκτρου πληροφοριών" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Εμφάνιση αυτού του URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Εκτέλεση αυτής της εντολής:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Εμφάνιση της διεύθυνσης της ιστοσελίδας με πάτημα του πλήκτρου πληροφοριών" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Η γραμμή εντολών εκτελείται με πάτημα του πλήκτρου πληροφοριών" #: edit_act_mainWindow msgid "Main window:" msgstr "Κύριο παράθυρο:" #: edit_act_gameWindow msgid "Game window:" msgstr "Παράθυρο παιχνιδιού;" #: edit_act_margin msgid "Margin:" msgstr "Περιθώριο:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Οριζόντια και κάθετη χωρική ανάπτυξη μεταξύ των αντικειμένων." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Χρώμα φόντου:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Αλλαγή χρώματος φόντου:" #: edit_gradient_startColor msgid "Start color:" msgstr "Χρώμα αρχής:" #: edit_gradient_endColor msgid "End color:" msgstr "Χρώμα τέλους:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Επιλογή του χρώματος αρχής" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Επιλογή του χρώματος τέλους" #: edit_gradient_cycles msgid "Cycles:" msgstr "Κύκλοι:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Αριθμός επαναλήψεων διαβάθμισης στην επιφάνεια" #: edit_gradient_orientation msgid "Orientation:" msgstr "Προσανατολισμός:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Προσανατολισμός διαβάθμισης υπολογισμένος σε μοίρες οριζοντίως" #: edit_act_gradient msgid "Gradient:" msgstr "Διαβάθμιση:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Χρήση διαβάθμισης χρωμάτων" #: edit_color_opacity msgid "Opacity" msgstr "Αδιαφάνεια" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Καθορισμός της τιμής του καναλιού alpha (αδιαφάνεια) του χρώματος." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Διαβάθμιση" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Χρήση προκαθορισμένων τιμών (μηδενική διαβάθμιση)" #: edit_act_image msgid "Image:" msgstr "Εικόνα:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Περιγραφή" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Όνομα και περιγραφή" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Σε παράθεση" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Χρωματισμός της επιφάνειας της εικόνας με επανάληψη κατά μήκος των αξόνων Χ " "και Y όπου χρειάζεται." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Προεπισκόπηση:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Περίγραμμα" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Σχεδιασμός μιας γραμμής περιγράμματος γύρω από το παράθυρο" #: edit_act_transparent msgid "Transparent" msgstr "Διαφάνεια" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "Το παράθυρο έχει διαφανές φόντο" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Πλάτος:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Ύψος:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Το πλάτος του αντικειμένου υπολογισμένο σε εικονοστοιχεία" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Το ύψος του αντικειμένου υπολογισμένο σε εικονοστοιχεία" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Κεντραρισμένο" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "Το αντικείμενο θα κεντραριστεί πάνω από το κύριο παράθυρο" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Απόλυτη οριζόντια θέση" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Απόλυτη κάθετη θέση" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Διεπαφή χρήστη" #: edit_act_image_tooltip msgid "Select an image" msgstr "Επιλογή μιας εικόνας" #: edit_act_text msgid "Text:" msgstr "Κείμενο:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Κείμενο που θα εμφανίζεται μέσα στο αντικείμενο" #: edit_font_face msgid "Typeface:" msgstr "Γραμματοσειρά" #: edit_font_size msgid "Size:" msgstr "Μέγεθος:" #: edit_font_bold msgid "Bold" msgstr "Έντονα" #: edit_font_italic msgid "Italic" msgstr "Πλάγια" #: edit_font_underline msgid "Underline" msgstr "Υπογράμμιση" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Στυλ:" #: edit_cell_title msgid "Cell contents" msgstr "Περιεχόμενα κελιού" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Μηνύματα" #: edit_act_msg_initial msgid "Initial message:" msgstr "Αρχικό μήνυμα:" #: edit_act_msg_final msgid "Final message:" msgstr "Τελικό μήνυμα:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Προηγούμενο μήνυμα:" #: edit_act_msg_error msgid "Error message:" msgstr "Μήνυμα σφάλματος:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Μήνυμα που εμφανίζεται με την έναρξη της δραστηριότητας" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Μήνυμα που εμφανίζεται όταν η δραστηριότητα ολοκληρωθεί" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "" "Μήνυμα που εμφανίζεται όταν η δραστηριότητα ολοκληρώνεται με σφάλματα." #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Μήνυμα που εμφανίζεται πριν την έναρξη της δραστηριότητας (μόνο σε " "συγκεκριμένους τύπους δραστηριοτήτων)" #: edit_align msgid "Align:" msgstr "Στοίχιση:" #: edit_act_textColor msgid "Text color:" msgstr "Χρώμα κειμένου:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Χρώμα κειμένου" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Χρώμα σκίασης:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "" "Χρώμα που χρησιμοποιείται για τη σκίαση του κειμένου, όταν τίθεται σε " "εφαρμογή" #: edit_act_shadow msgid "Shadow" msgstr "Σκιά" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Κείμενο με σκιά" #: edit_act_borderColor msgid "Border color:" msgstr "Χρώμα περιγράμματος:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Χρώμα περιγράμματος κελιού" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Κατάσταση χρώματος ανενεργή" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Χρώμα που χρησιμοποιείται όταν το κελί είναι απενεργοποιημένο" #: edit_act_altColor msgid "Alternative color:" msgstr "Εναλλακτικό χρώμα:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Χρώμα που χρησιμοποιείται για την εγγραφή εναλλακτικού περιεχομένου σε " "ολοκληρωμένα κελιά" #: edit_cell_marked msgid "Marked" msgstr "Σημειωμένο" #: edit_cell_disabled msgid "Disabled" msgstr "Απενεργοποιημένο" #: edit_cell_alt msgid "Alternative" msgstr "Εναλλακτικό" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Εσωτερικό περιθώριο" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Διάστημα μεταξύ περιγράμματος και κειμένου ενός κελιού." #: edit_cell_borderWidth msgid "Border width:" msgstr "Πλάτος περιγράμματος:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Πλάτος γραμμής για το σχεδιασμό πρότυπου περιγράμματος" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Πλάτος γραφίδας;" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Πλάτος γραμμής περιγράμματος όταν το κελί είναι σημαδεμένο ή επιλεγμένο" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Προεπισκόπηση σε \"εναλλακτική\" κατάσταση" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Προεπισκόπηση σε \"απενεργοποιημένη\" κατάσταση" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Προεπισκόπηση σε \"σημειωμένη\" κατάσταση" #: edit_act_testAction msgid "Preview activity" msgstr "Προεπισκόπηση δραστηριότητας" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Προεπισκόπηση και δοκιμή δραστηριότητας" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Περιγραφή" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Τίτλος και περιγραφή της δραστηριότητας" #: edit_act_panels_options msgid "Options" msgstr "Επιλογές" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Επιλογές της δραστηριότητας" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Παράθυρο" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Αναλογία, μέγεθος και θέση του παραθύρου της δραστηριότητας" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Μηνύματα" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Περιεχόμενο μηνυμάτων της δραστηριότητας" #: edit_act_panels_panel msgid "Panel" msgstr "Πίνακας" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Περιεχόμενα πίνακα" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Στυλ" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Καθορίστε το χρώμα, τη γραμματοσειρά και το μέγεθος των κελιών" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Στυλ:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Το κείμενο να μην επικαλύπτει την εικόνα" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Αποφυγή επικάλυψης εικόνας από το κείμενο" #: edit_media_exists_1 msgid "The file" msgstr "Το αρχείο" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "υπάρχει ήδη στη βιβλιοθήκη πολυμέσων!" #: edit_act_shaper msgid "Shaper:" msgstr "Σχεδιαστής:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Σφάλμα σχεδιαστή:" #: edit_act_num_cols msgid "Columns:" msgstr "Στήλες:" #: edit_act_num_rows msgid "Rows:" msgstr "Γραμμές:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Ύψος δοντιού:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Πλάτος δοντιού:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Τυχαία διανομή" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Ιδιότητες σχεδιαστή" #: edit_act_panels_text msgid "Text" msgstr "Κείμενο" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Κείμενο δραστηριότητας" #: action_saveFile_caption msgid "Save..." msgstr "Αποθήκευση..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Αποθήκευση τρέχοντος έργου" #: action_docTree_caption msgid "Document tree..." msgstr "Δενδροειδής διάταξη έργου..." #: action_docTree_keys msgid "T*" msgstr "T*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Εμφάνιση δενδροειδούς διάταξης του έργου" #: edit_docTree_title msgid "Document tree" msgstr "Δενδροειδής διάταξη έργου" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Αναφέρεται:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Προσοχή:

Αυτό το έργο " "συνδέεται με άλλα έργα.
Θέλετε να εξερευνήσετε τις συνδέσεις και να " "φορτώσετε άλλα σχετικά αρχεία;

(Προτείνεται να απαντήσετε ΝΑΙ όταν " "εισάγεται δραστηριότητες του Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Τύπος:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Άγνωστο" #: edit_mc_type_sound msgid "Play sound" msgstr "Αναπαραγωγή ήχου" #: edit_mc_type_video msgid "Play video" msgstr "Αναπαραγωγή βίντεο" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Αναπαραγωγή MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Αναπαραγωγή CD ήχου" #: edit_mc_type_record msgid "Record sound" msgstr "Ηχογράφηση ήχου" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Αναπαραγωγή ηχογραφημένου ήχου" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Μετάβαση στη δραστηριότητα" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Μετάβαση στην ακολουθία" #: edit_mc_type_run_external msgid "Run program" msgstr "Εκτέλεση προγράμματος" #: edit_mc_type_url msgid "Show URL" msgstr "Εμφάνιση URL" #: edit_mc_type_exit msgid "End" msgstr "Τέλος" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Επιστροφή" #: edit_mc_level msgid "Priority level:" msgstr "Επίπεδο προτεραιότητας:" #: edit_mc_file msgid "File:" msgstr "Αρχείο:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Παράμετροι:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Από:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Προς:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Μέγιστο μήκος:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Εγγραφή κασέτας:" #: edit_mc_stretch msgid "Stretch size" msgstr "Τέντωμα μεγέθους" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Τοποθεσία:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Από:" #: edit_mc_location_from_box msgid "Cell" msgstr "Κελί" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Παράθυρο" #: edit_mc_location_from_frame msgid "Frame" msgstr "Πλαίσιο" #: edit_mc_loop msgid "Loop playback" msgstr "Επανάληψη" #: edit_mc_autostart msgid "Auto start" msgstr "Αυτόματη εκκίνηση" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Ποντίκι σύλληψης" #: edit_mc_title msgid "Multimedia and active content" msgstr "Πολυμέσα και ενεργό περιεχόμενο" #: edit_mc_label msgid "Active content:" msgstr "Ενεργό περιεχόμενο" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Επιλογή αντικειμένου πολυμέσων" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Βιβλιοθήκη πολυμέσων" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Στοίχιση στο κέντρο του κελιού" #: edit_mc_pos_window msgid "Centered over window" msgstr "Κεντράρισμα στο παράθυρο" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Καθορισμός θέσης:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Λανθασμένη δενδροειδής δομή ή δεδομένα" #: edit_act_panels_controls msgid "Controls" msgstr "Στοιχεία ελέγχου" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Επιλογές για πλήκτρα και μετρητές" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Τύπος:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Διάταξη πλέγματος:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Σχετική θέση πίνακα Α και Β" #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Αντίστροφη ανάλυση" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "Η δραστηριότητα ολοκληρώνεται όταν όλα τα καθορισμένα στοιχεία από το \"Β\" " "έχουν συσχετιστεί" #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Εμφάνιση όλων των βελών" #: edit_act_alt msgid "Alternative content:" msgstr "Εναλλακτικό περιεχόμενο:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" "Περιεχόμενο που εμφανίζεται σε ολοκληρωμένα και σε μη προσδιορισμένα κελιά." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Επεξεργασία εναλλακτικού περιεχομένου" #: edit_act_grid msgid "Grid" msgstr "Πλέγμα" #: edit_act_grid_A msgid "Grid A" msgstr "Πλέγμα Α" #: edit_act_grid_B msgid "Grid B" msgstr "Πλέγμα Β" #: edit_act_grid_layout msgid "Layout" msgstr "Διάταξη" #: edit_act_grid_relationship msgid "Relationship" msgstr "Σχέση" #: edit_seq_activity_header msgid "activity" msgstr "δραστηριότητα" #: edit_seq_tag_header msgid "tag" msgstr "ετικέτα" #: edit_seq_jump_header msgid "jump to" msgstr "μετάβαση σε" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Δραστηριότητα:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Ετικέτα:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Περιγραφή:" #: edit_seq_auto msgid "Move on automatically" msgstr "Αυτόματη μετακίνηση" #: edit_seq_delay msgid "Delay:" msgstr "Καθυστέρηση:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Μετάβαση μπροστά" #: edit_seq_action_back msgid "Go bak" msgstr "Πίσω" #: edit_seq_action_jump msgid "Jump to..." msgstr "Μετάβαση σε" #: edit_seq_action_stop msgid "Stop" msgstr "Διακοπή" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Επιστροφή" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Έξοδος από JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Μπροστά:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Πίσω:" #: edit_seq_action msgid "Action:" msgstr "Ενέργεια:" #: edit_seq_button_enabled msgid "Show button" msgstr "Προβολή κουμπιού" #: edit_seq_project msgid "JClic Project:" msgstr "Έργο Jclic:" #: edit_act_absolute msgid "Absolute position" msgstr "Θέση τιμής" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "" "Το αντικείμενο θα τοποθετηθεί στην καθορισμένη θέση των συντεταγμένων Χ και Υ" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Τοποθεσία:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Νέα ακολουθία στοιχείου" #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Εισαγωγή νέου στοιχείου στην ακολουθία της δραστηριότητας" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Παρακαλώ επιλέξτε μια δραστηριότητα για τη νέα ακολουθία στοιχείου" #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "Δεν μπορεί να δημιουργηθεί μια καινούργια ακολουθία χωρίς δραστηριότητα!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Το έργο δεν έχει δραστηριότητες! Αδυναμία δημιουργίας ακολουθίας στοιχείων " "σε κενό έργο." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Στόχος μετακίνησης:" #: edit_seq_jump_title msgid "Jump target" msgstr "Στόχος μετακίνησης" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Πρόσθηκη νέας δραστηριότητας στο έργο" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Τύπος δραστηριότητας" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Όνομα" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" "Παρακαλώ επιλέξτε τον τύπο της δραστηριότητας που θα δημιουργήσετε και δώστε " "ένα όνομα:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Πρέπει να επιλέξετε τύπο δραστηριότητας!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Πρέπει να ορίσετε ένα όνομα για την δραστηριότητα!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Αδύνατη η δημιουργία δραστηριότητας" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Όνομα κατηγορίας Java:" #: edit_text_act_format msgid "Format" msgstr "Μορφή" #: edit_text_act_answer msgid "Answer" msgstr "Απάντηση" #: edit_text_act_popup msgid "Pop up" msgstr "Αναδυόμενο παράθυρο" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Έγκυρες απαντήσεις" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Προσθήκη νέας λίστας στοιχείων" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Επεξεργασία επιλεγμένης λίστας στοιχείων" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Διαγραφή επιλεγμένης λίστας στοιχείων" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Μετακίνηση πάνω" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Μετακίνηση κάτω" #: edit_list_newValue msgid "New text:" msgstr "Νέο κείμενο:" #: edit_list_addElement msgid "Add new list element" msgstr "Προσθήκη νέας λίστας στοιχείων" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Μετατροπή επιλεγμένου κειμένου" #: edit_text_act_target msgid "Target" msgstr "Προορισμός" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Μέγιστο μήκος:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Μέγιστος αριθμός χαρακτήρων της απάντησης:" #: edit_text_act_fillingChar msgid "Filling character" msgstr "Γέμισμα χαρακτήρα" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Οι χαρακτήρες χρησιμοποιούνται για να δηλώνουν το κενό" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Αρχικό μήκος:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Ο αριθμός των συμπληρωμένων χαρακτήρων θα εμφανιστεί κατά την έναρξη της " "δραστηριότητας." #: edit_text_act_iniText msgid "Initial text:" msgstr "Αρχικό κείμενο:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "" "Το κείμενο εμφανίζεται στο έγγραφο κατά την έναρξη της δραστηριότητας." #: edit_text_act_list msgid "Show a list of options:" msgstr "Εμφάνιση λίστας επιλογών:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" "Εμφάνιση λίστας επιλογών από την οποία ο χρήστης μπορεί να επιλέξει μία:" #: edit_text_act_check_title msgid "Correction options" msgstr "Επιλογές διόρθωσης" #: edit_text_act_popup_no msgid "No pop up" msgstr "Φραγή αναδυόμενων παραθύρων" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Αυτόματη ανάδυση παραθύρου" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Ανάδυση παραθύρου σε περίπτωση λάθους" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Ανάδυση παραθύρου με F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Τύπος:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Καθυστέρηση ανάδυσης παραθύρου:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Μέγιστος χρόνος:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Μόνο ήχος" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "Πρέπει να επιλέξετε ένα απόσπασμα κειμένου αν στοχεύετε στη δημιουργία ενός " "νέου κειμένου!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "Το κείμενο δεν μπορεί να περιλαμβάνει παράγραφο που δεν διαθέτει στηλοθέτες." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Οι στόχοι δεν μπορούν να τοποθετηθούν" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Ο προορισμός δεν μπορεί να περιέχει κελιά" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Χρώμα χαρτιού:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Επεξεργασία στυλ εγγράφου..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Κύριο στυλ:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Διάστημα στηλοθέτη:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Διαστήματα μεταξύ στηλοθετών:" #: edit_text_act_colors msgid "Colors:" msgstr "Χρώματα:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Προορισμός χρωμάτων:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Χρώματα σφαλμάτων:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Προεπισκόπηση:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Τυπικό κείμενο" #: edit_text_act_styleSample_target msgid "target" msgstr "στόχος" #: edit_text_act_styleSample_error msgid "error" msgstr "σφάλμα" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "τυπικό κείμενο" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "τυπικό κείμενο." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Προειδοποίηση: Αυτή η ενέργεια θα υπερισχύσει από τον τρέχοντα επιλεγμένο " "στόχο. Θέλετε να συνεχίσετε;" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Προηγούμενη οθόνη..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Καμία εμφάνιση κειμένου πριν την έναρξη της δραστηριότητας" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Εμφάνιση πλήρους κειμένου της άσκησης." #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Εμφάνιση αυτού του κειμένου:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Μέγιστος χρόνος:" #: edit_text_act_edit_target msgid "Target..." msgstr "Στόχος..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Εμφάνιση πλήκτρου διόρθωσης" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Πλήκτρο κειμένου;" #: edit_text_act_checkCase msgid "Match case" msgstr "Ταίριασμα πεζών/κεφαλαίων" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Εξέταση τονισμού και ειδικών χαρακτήρων" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Εξέταση σημείων στίξης" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Επιτρέπονται επαναλαμβανόμενα διαστήματα" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Κριτήρια" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Μετάβαση στον επόμενο στόχο όταν συμπληρωθεί" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Μετάβαση μόνο μετά σωστή πρόβλεψη" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Επισήμανση λαθών, γράμμα προς γράμμα" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Παράμετροι ανάλυσης αλγορίθμων:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Βήματα:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Πεδίο εξερεύνησης:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Έλεγχος" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Ανάλυση απάντησης" #: edit_text_act_check_bt msgid "Correction..." msgstr "Διόρθωση..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Πλήκτρο διόρθωσης" #: edit_text_act_checkProgress msgid "Progress" msgstr "Πρόοδος" #: edit_text_act_typeBtn msgid "Type..." msgstr "Τύπος..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ταξινόμηση παραγράφων" #: edit_text_act_orderWords msgid "Order words" msgstr "Ταξινόμηση λέξεων" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Αναδιάταξη λέξεων μέσα στις παραγράφους" #: edit_text_act_type_title msgid "Activity type" msgstr "Είδος δραστηριότητας" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Αυτή η ενέργεια θα αφαιρέσει όλους τους υπάρχοντες στόχους. Θέλετε να " "συνεχίσετε;" #: edit_text_act_identWords msgid "Identify words" msgstr "Αναγνώριση λέξεων" #: edit_text_act_identChars msgid "Identify characters" msgstr "Αναγνώριση χαρακτήρων" #: edit_media_change_name msgid "Change name..." msgstr "Αλλαγή ονόματος..." #: edit_media_change_file msgid "Change file..." msgstr "Αλλαγή αρχείου..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Αποθήκευση σε συμπιεσμένο (.zip) αρχείο" #: edit_media_type msgid "Media type:" msgstr "Είδος πολυμέσου:" #: edit_media_size msgid "File size:" msgstr "Μέγεθος αρχείου:" #: edit_media_show_type msgid "Files of type:" msgstr "Τύποι αρχείων:" #: edit_media_preview msgid "Preview media" msgstr "Προεπισκόπηση πολυμέσων" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Προεπισκόπηση πηγών πολυμέσων" #: edit_media_rename msgid "Change resource name" msgstr "Αλλαγή ονόματος πηγής:" #: edit_media_rename_title msgid "Rename" msgstr "Μετονομασία" #: edit_media_rename_prompt msgid "New name:" msgstr "Νέο όνομα:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Μη έγκυρο όνομα πηγής!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Υπάρχει μια ακόμη πηγή με αυτό το όνομα! Κάθε πηγή πρέπει να έχει ένα " "μοναδικό όνομα." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Μη έγκυρο αρχείο!" #: err_media_chfile_different msgid "File must be of same type" msgstr "Το αρχείο πρέπει να είναι του ίδιου είδους" #: edit_media_font_error msgid "Unable to load font!" msgstr "Αδυναμία φόρτωσης γραμματοσειράς!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Αποθήκευση αρχείου (εξαγωγή από ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Ενημέρωση περιεχομένου πολυμέσων από αρχείο" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Αυτό δεν είναι ένα \"πραγματικό\" αρχείο, αλλά ένα αντικείμενο που βρίσκεται " "σε ένα συμπιεσμένο πακέτο. Για να χρησιμοποιήσετε αυτή τη δυνατότητα, πρέπει " "να εμφανιστεί ένα αρχείο με το ίδιο όνομα στον φάκελο όπου βρίσκεται το " "συμπιεσμένο αρχείο." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Δραστηριότητες" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Ακολουθίες" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Βιβλιοθήκη πολυμέσων" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" "Διαχείριση εικόνων και άλλων πολυμέσων που χρησιμοποιούνται σε αυτό το έργο" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Δημιουργία και επεξεργασία δραστηριοτήτων έργου" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Δημιουργία και επεξεργασία ακολουθιών δραστηριοτήτων" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Τίτλος:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Τίτλος έργου" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Έργο" #: edit_project_tooltip msgid "Edit project properties" msgstr "Επεξεργασία ιδιοτήτων του έργου" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Περιγραφή:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Γενική περιγραφή του έργου" #: edit_project_area msgid "Areas:" msgstr "Γνωστικές περιοχές:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Διδακτικά αντικείμενα του έργου" #: edit_project_level msgid "Levels:" msgstr "Γνωστικά επίπεδα:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Εκπαιδευτικά επίπεδα του έργου" #: edit_project_descriptors msgid "Descriptors:" msgstr "Λέξεις κλειδιά:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Λέξεις κλειδιά για το έργο (διαχωρισμένες με κόμμα)" #: edit_project_languages msgid "Languages:" msgstr "Γλώσσες:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Γλώσσες που χρησιμοποιούνται στο έργο" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Αλλαγή επιλεγμένης γλώσσας" #: edit_project_languages_add msgid "Add language" msgstr "Προσθήκη γλώσσας" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "ISO-639 κωδικός γλώσσας:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Συγγραφείς:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Άτομα που συνεισέφεραν στη δημιουργία αυτού του έργου" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Όνομα" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "Ηλεκτρονική διεύθυνση:" #: edit_project_author_rol msgid "Rol:" msgstr "Ρόλος:" #: edit_project_author_organization msgid "Organization:" msgstr "Οργανισμός:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Σχόλια:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Όνομα συγγραφέα (απαιτείται)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Ηλεκτρονική διεύθυνση συγγραφέων (προαιρετικό)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Ρόλος ατόμου στο έργο: δημιουργός, συνεργάτης, προμηθευτής εικόνων, ήχων... " "(προαιρετικό)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Σχολείο, πανεπιστήμιο, σύλλογος....(προαιρετικό)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Προσωπική ιστοσελίδα (προαιρετικό)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Πεδίο για άλλες πληροφορίες (προαιρετικό)" #: edit_project_author_info msgid "Author info:" msgstr "Πληροφορίες συγγραφέα:" #: edit_project_author_add msgid "Add author to list" msgstr "Προσθήκη συγγραφέα στη λίστα" #: edit_project_author_edit msgid "Edit author info" msgstr "Επεξεργασία πληροφοριών συγγραφέα" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Όνομα:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Όνομα σχολείου" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "Ηλεκτρονική διεύθυνση:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Ηλεκτρονιθκή διεύθυνση σχολείου" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Ιστοσελίδα σχολείου" #: edit_project_org_address msgid "Address:" msgstr "Διεύθυνση:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Ταχυδρομική διεύθυνση" #: edit_project_org_pc msgid "PC:" msgstr "Η/Υ:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Ταχυδρομικός κώδικας" #: edit_project_org_city msgid "City:" msgstr "Πόλη:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Πόλη" #: edit_project_org_country msgid "Country:" msgstr "Χώρα:" #: edit_project_org_state msgid "State:" msgstr "Πολιτεία:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Σχόλια:" #: edit_project_org msgid "School/s:" msgstr "Σχολεία:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Σχολείο ή άλλο ίδρυμα που συμμετέχει στο έργο!" #: edit_project_org_info msgid "Organization info:" msgstr "Πληροφορίες οργανισμού:" #: edit_project_org_add msgid "Add organization" msgstr "Προσθήκη οργανισμού" #: edit_project_org_edit msgid "Edit organization data" msgstr "Επεξεργασία δεδομένων οργανισμού" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Χώρα, ομοσπονδία, ένωση ..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Ομοσπονδιακή πολιτεία, κοινότητα, περιοχή ..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Άλλες πληροφορίες..." #: edit_project_rev_date msgid "Date:" msgstr "Ημερομηνία" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Ημερομηνία αναθεώρησης" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Συγγραφείς:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Συγγραφείς αναθεώρησης" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Περιγραφή:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Σύντομη περιγραφή των αλλαγών που έγιναν" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Σχόλια:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Άλλες σχετικές πληροφορίες" #: edit_project_rev msgid "Revisions:" msgstr "Αναθεωρήσεις:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Ιστορικό των κυριότερων τροποποιήσεων που έγιναν στο έργο" #: edit_project_rev_add msgid "Add revision record" msgstr "Προσθήκη καταγραφής αναθεωρήσεων" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Επεξεργασία καταγραφής αναθεωρήσεων" #: edit_project_rev_info msgid "Revision data" msgstr "Δεδομένα αναθεώρησης" #: edit_media_objects msgid "objects" msgstr "αντικείμενα" #: edit_media_object msgid "object" msgstr "αντικείμενο" #: edit_evsounds_start msgid "Start of activity:" msgstr "Έναρξη δραστηριότητας:" #: edit_evsounds_click msgid "Click on object:" msgstr "Κάντε κλικ στο αντικείμενο:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Εσφαλμένη ενέργεια:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Σωστή ενέργεια:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Η δραστηριότητα ολοκληρώθηκε με λάθη:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Η δραστηριότητα ολοκληρώθηκε σωστά:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Σφάλμα: Το πεδίο περιγραφής δεν μπορεί να μείνει κενό:" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Επεξεργασία ήχου συμβάντων" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Ήχοι συμβάντων:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Καθορίστε συγκεκριμένο ήχο για κάθε συμβάν του JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Ήχοι συμβάντων:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Καθορίστε συγκεκριμένο ήχο για κάθε συμβάν του JClic" #: edit_evsounds_default msgid "default sound" msgstr "Προεπιλεγμένος ήχος" #: edit_evsounds_disabled msgid "disabled" msgstr "απενεργοποιημένο" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Ενεργοποίηση ή απενεργοποίηση ήχου για αυτό το συμβάν" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Κάνε κλικ για να επιλέξεις ήχο για αυτό το συμβάν ή αποεπέλεξε για να " "χρησιμοποιήσεις τον προεπιλεγμένο ήχο" #: action_newProject_caption msgid "New project..." msgstr "Νέο έργο" #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Δημιουργία νέου έργου Jclic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Από:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Ελάχιστη τιμή τελεστή" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Προς:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Μέγιστη τιμή τελεστή" #: edit_arith_op_with msgid "With:" msgstr "Με:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Εάν επιλεγεί, ο τελεστής μπορεί επίσης να πάρει αυτή την τιμή" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Ένα από τη λίστα:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Λίστα πιθανών τιμών τελεστών" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Δεκαδικά:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Αριθμός δεκαδικών ψηφίων τελεστή" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (ακέραιος)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#.#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#.##" #: edit_arith_firstOp msgid "First operand" msgstr "Αρχικός τελεστής" #: edit_arith_secondOp msgid "Second operand" msgstr "Δεύτερος τελεστής" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 for JClic" #: edit_arith_operations msgid "Operations:" msgstr "Πράξεις:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Επέλεξε το είδος των ενεργειών για να εκτελεστούν" #: edit_arith_operations_plus msgid "Plus" msgstr "Πρόσθεση" #: edit_arith_operations_minus msgid "Minus" msgstr "Αφαίρεση" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Πολλαπλασιασμός" #: edit_arith_operations_divide msgid "Divide" msgstr "Διαίρεση" #: edit_arith_unknown msgid "Unknown:" msgstr "Άγνωστο:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Επέλεξε το αντικείμενο που θα λειτουργεί ως ο άγνωστος" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "Το αποτέλεσμα είναι ο άγνωστος" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "Ο δεύτερος τελεστής είναι ο άγνωστος" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "Ο πρώτος τελεστής είναι ο άγνωστος" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "Άγνωστη λειτουργία" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Γράψε το αποτέλεσμα στη αρχή της έκφρασης" #: edit_arith_result msgid "Result:" msgstr "Αποτέλεσμα:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Μην μεταφέρεις" #: edit_arith_result_random msgid "Random" msgstr "Τυχαίο" #: edit_arith_result_asc msgid "Ascending" msgstr "Αύξουσα" #: edit_arith_result_order msgid "Order by result:" msgstr "Ταξινόμηση κατά αποτέλεσμα" #: edit_arith_result_desc msgid "Descending" msgstr "Φθίνουσα" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Αποφυγή διπλότυπων" #: edit_arith_cond msgid "Conditions:" msgstr "Συνθήκες:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "όμοια" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "Ο πρώτος τελεστής πρέπει να είναι μεγαλύτερος από τον δεύτερο" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "Ο πρώτος τελεστής πρέπει να είναι μικρότερος από τον δεύτερο" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Άλλες συνθήκες" #: edit_autocp msgid "Automatic content generator:" msgstr "Αυτόματος δημιουργός περιεχομένων:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Επιλογή τύπου δημιουργού αυτόματου περιεχομένου για αυτή τη δραστηριότητα." #: edit_autocp_block msgid "Content generator" msgstr "Δημιουργός περιεχομένων" #: edit_autocp_btn msgid "Settings..." msgstr "Ρυθμίσεις..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Διαμόρφωση ρυθμίσεων πάροχου περιεχομένου" #: edit_data msgid "Edit data" msgstr "Επεξεργασία δεδομένων" #: edit_act msgid "Activity edit" msgstr "Επεξεργασία δραστηριότητας" #: edit_acp msgid "Content provider edit" msgstr "Επεξεργασία παροχέα περιεχομένων" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Σφάλμα στη δημιουργία πάροχου περιεχομένου!" #: edit_project_author_group msgid "Creation" msgstr "Δημιουργία" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Περιγραφή" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Διεπαφή χρήστη" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Περιγραφή:" #: m_Edit msgid "Edit" msgstr "Επεξεργασία" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Νέα δραστηριότητα..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Εισαγωγή" #: m_Insert_Mnemonic msgid "I" msgstr "Ι" #: m_View msgid "View" msgstr "Προβολή" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Έργο" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Επεξεργασία ρυθμίσεων έργου" #: action_editMedia_caption msgid "Media" msgstr "Μέσα" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Επεξεργασία της βιβλιοθήκης πολυμέσων του έργου" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Δραστηριότητες" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Επεξεργασία δραστηριοτήτων" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Ακολουθίες" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Επεξεργασία ακολουθιών δραστηριοτήτων" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "Το παρόν έργο έχει τροποποιηθεί. Θέλετε να αποθηκεύσετε τις αλλαγές;" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Παιδαγωγικά χαρακτηριστικά" #: edit_media_new msgid "New media object..." msgstr "Νέο αντικείμενο πολυμέσων..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Προσθήκη νέας εικόνας ή αντικειμένου πολυμέσων στην βιβλιοθήκη" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Κατώτατο όριο βαθμολογίας:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Ακολουθήστε αυτή τη διαδρομή, όταν η συνολική βαθμολογία είναι ίση ή " "μεγαλύτερη από..." #: edit_seq_time msgid "Time threshold:" msgstr "Αφετηρία χρόνου:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Για να ακολουθήσετε αυτή τη διαδρομή, ο χρόνος που αναλώθηκε για τις " "δραστηριότητες πρέπει να είναι μικρότερος από..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "" "Ακολουθήστε αυτή τη διαδρομή όταν η συνολική βαθμολογία είναι χαμηλότερη " "από..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Ακολουθήστε αυτή τη διαδρομή, όταν ο χρόνος που αναλώθηκε για τις " "δραστηριότητες είναι μεγαλύτερος από..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Εξαρτημένα βήματα" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Καθορίστε ειδικά βήματα που πρέπει να εκτελεστούν μόνο κάτω από " "συγκεκριμένους όρους" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Καθορίστε τους όρους για μετάβαση σε ανώτερο επίπεδο" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Μετάβαση κάτω:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Μετάβαση άνω:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Καθορίστε τους όρους για μετάβαση σε κατώτερο επίπεδο" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Ενέργεια που ανατέθηκε στο πλήκτρο \"επόμενο\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Ενέργεια που ανατέθηκε στο πλήκτρο \"προηγούμενο\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Καθορίστε το στόχο της μετάβασης" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Ένέργεια που πρέπει να γίνει" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Ενέργεια που ανατέθηκε σε αυτό το στοιχείο της ακολουθίας" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Ετικέτα που χρησιμοποιείται ως παραπομπή για αυτό το στοιχείο της ακολουθίας " "(προαιρετικό πεδίο)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Περιγραφή στοιχείου ακολουθίας (προαιρετικό πεδίο)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Ενεργοποίηση ή απενεργοποίηση πλήκτρου βέλους" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Αυτόματη μετακίνηση όταν η δραστηριότητα ολοκληρώνεται" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Δευτερόλεπτα αναμονής πριν την αυτόματη μετακίνηση" #: edit_color_dlgTitle msgid "Select color" msgstr "Επιλογή χρώματος" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Παρακαλώ περιμένετε ενόσω η πηγή μετανομάζεται..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Πλάτος:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Πλάτος κελιού (σε εικονοστοιχεία)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Ύψος:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Ύψος κελιού (σε pixels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Κρυμμένες λέξεις:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Λίστα κρυμμένων λέξεων του πίνακα" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Χρήση του πίνακα Β" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Τα περιεχόμενα του δεύτερου πίνακα θα εμφανίζονται ως λέξεις που βρέθηκαν" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Επιλέξτε τη μορφή του σχεδιαστή που θα χρησιμοποιηθεί στον πίνακα" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Αριθμός στηλών του πίνακα" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Αριθμός γραμμών του πίνακα" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Όρια διαφάνειας" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "" "Αντιμετώπιση των ορίων (μαύρα πλαίσια) ως αδύνατα σημεία της διαφάνειας" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Μείγματα\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Πόσες φορές θα γίνει ανακάτωμα" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Αντιγραφή χαρακτηριστικών στο..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Χαρακτηριστικά" #: edit_act_copy_dest msgid "Apply to:" msgstr "Εφαρμογή σε:" #: edit_act_copy_style_main msgid "Main window" msgstr "Κύριο παράθυρο" #: edit_act_copy_style_play msgid "Play window" msgstr "Παράθυρο αναπαραγωγής" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Δραστηριότητες που πρέπει να τροποποιηθούν:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Αντιγραφή ιδιοτήτων" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "" "Αντιγραφή χαρακτηριστικών της τρέχουσας δραστηριότητας σε άλλες " "δραστηριότητες" #: edit_new_project_name msgid "Project name:" msgstr "Όνομα έργου:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Σύντομο περιγραφικό όνομα του έργου" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Όνομα αρχείου:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Όνομα αρχείου του έργου, χωρίς επέκταση" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Φάκελος:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Όνομα φακέλου όπου θα αποθηκευτεί το έργο" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Περιήγηση..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Δημιουργία νέου έργου JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Σφάλμα: Το έργο, το αρχείο και ο φάκελος πρέπει να έχουν έγκυρα ονόματα." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Αυτός ο φάκελος περιέχει ήδη ένα άλλο έργο του Clic 3.0 ή του JClic. Για να " "αποφύγετε την αναστάτωση, είναι προτιμότερο να διατηρείτε κάθε έργο σε " "ξεχωριστό φάκελο, αν και αυτό δεν είναι αυστηρός κανόνας. Θέλετε πραγματικά " "να δημιουργήσετε το νέο έργο σε αυτόν τον φάκελο;" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Σφάλμα: Αδύνατη η δημιουργία του επιλεγμένου φακέλου!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Σφάλμα: Δεν επιλέχθηκε δραστηριότητα! Για να εφαρμοστούν τα υποδεικνυόμενα " "χαρακτηριστικά, πρέπει να επιλέξετε από τη λίστα τη δραστηριότητα ή τις " "δραστηριότητες στις οποίες θα γίνει η εφαρμογή." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Αντιγραφή ιδιοτήτων στο:" #: edit_act_copy_margin msgid "Margin" msgstr "Περιθώριο" #: edit_act_copy_bgColor msgid "Background color" msgstr "Χρώμα υποβάθρου" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Διαβάθμιση" #: edit_act_copy_bgImage msgid "Background image" msgstr "Εικόνα φόντου" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Περίγραμμα" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Φόντο διαφάνειας" #: edit_act_copy_position msgid "Position" msgstr "Θέση" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Μηνύματα" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Στυλ αρχικού μηνύματος" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Στυλ τελικού μηνύματος" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Στυλ μηνύματος σφάλματος" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Αναφορές" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Συμπεριέλαβε την δραστηριότητα στις αναφορές" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Καταγραφή ενεργειών" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Διεπαφή χρήστη" #: edit_act_copy_skin msgid "Skin" msgstr "Θέμα" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Ήχοι συμβάντων" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Μετρητές" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Χρονόμετρο" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Μέγιστος χρόνος" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Μετρητής προσπαθειών" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Μέσιστες προσπάθειες" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Μετρητής βαθμολογίας" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Πόσες φορές θα γίνει το ανακάτωμα" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Πλήκτρα" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Πλήκτρο βοήθειας" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Πλήκτρο πληροφορίας" #: edit_act_copy_grids msgid "Grids" msgstr "Πλέγματα" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Στυλ πλέγματος Α" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Στυλ πλέγματος Β" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Στυλ πλεγμάτων κειμένων" #: edit_act_copy_text msgid "Text activities" msgstr "Δραστηριότητες κειμένου" #: edit_act_copy_fontFace msgid "Font face" msgstr "Στοιχείο γραμματοσειράς" #: edit_act_copy_fontSize msgid "Font size" msgstr "Μέγεθος γραμματοσειράς" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Στυλ γραμματοσειράς" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Χρώμα κύριου κειμένου" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "" "Επιλέξτε το σχέδιο εργασίας του JClic από όπου θα εισαχθούν οι δραστηριότητες" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Χρώμα σφαλμάτων" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Διάστημα στηλοθέτη" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Στυλ προηγούμενου μηνύματος" #: edit_act_changeType msgid "Change activity type" msgstr "Αλλαγή τύπου δραστηριότητας" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Πλήρες όνομα είδους που θα χρησιμοποιηθεί για τη δημιουργία της " "δραστηριότητας (μόνο για προχωρημένους χρήστες!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Άλλο..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Οι προχωρημένοι χρήστες μπορούν επίσης να δημιουργήσουν δικές τους " "δραστηριότητες για το JClic. Γράψτε το πλήρες όνομα του είδους με το πρόθημα " "του πακέτου (π.χ. \"com.acme.activities.FooActivity\"). Τα είδη των " "δραστηριοτήτων πρέπει να έχουν επέκταση edu.xtec.jclic.Activity και " "πρέπει να είναι προσπελάσιμα από τη JVM." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Ονομασία δραστηριότητας" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Κάθε δραστηριότητα πρέπει να έχει ένα μοναδικό όνομα στο έργο" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Προσοχή: Η αλλαγή του τύπου της δραστηριότητας " "μπορεί να προκαλέσει απώλεια χαρακτηριστικών και αντικειμένων της τρέχουσας " "δραστηριότητας. Χρησιμοποιήστε το με προσοχή!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Τοποθεσία κωδικού του JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "URL που στοχεύει σε έναν φάκελο με τα αρχεία και τα σενάρια του JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Κώδικας HTML πριν:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Κείμενο ή κώδικας HTML που πρέπει να τοποθετηθεί πριν την εφαρμογή" #: applet_post_text msgid "HTML code after:" msgstr "Κώδικας HTML μετά:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Κείμενο ή κώδικας HTML που πρέπει να τοποθετηθεί μετά την εφαρμογή" #: applet_size msgid "Applet size:" msgstr "Μέγεθος εφαρμογής:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Πλάτος και ύψος της εφαρμογής, σε απόλυτες ή ποσοστιαίες τιμές." #: applet_page_title msgid "Page title:" msgstr "Τίτλος σελίδας:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Κείμενο που θα εμφανίζεται στο επάνω μέρος του φυλλομετρητή" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "Η ιστοσελίδα \"%s\" έχει δημιουργηθεί με επιτυχία." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Θέλετε να το ανοίξετε με τον φυλλομετρητή τώρα;" #: action_createHTML_caption msgid "Create web page..." msgstr "Δημιουργία ιστοσελίδας.." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Δημιουργία μιας HTML ιστοσελίδας με μικροεφαρμογή του Jclic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" "Δημιουργία μιας HTML ιστοσελίδας με μικροεφαρμογή που εμπεριέχεται στο " "τρέχον έργο" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Όνομα αρχείου:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Όνομα του HTML αρχείου που θα δημιουργηθεί" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Μικροεφαρμογή" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Προεπιλεγμένες τιμές για τη δημιουργία ιστοσελίδων" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Χρώμα φόντου:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Χρώμα φόντου HTML ιστοσελίδας" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Κεντραρισμένο" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Τοποθετήστε την εφαρμογή κεντραρισμένη οριζόντια" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Πλάτος εφαρμογής (απόλυτη ή ποσοστιαία τιμή)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Ύψος εφαρμογής (απόλυτη ή ποσοστιαία τιμή)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Κατά την έξοδο, μετάβαση σε:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "" "URL στην οποία θα ανακατευθύνεται η περιήγηση κατά την έξοδο του JClic." #: applet_infoFrame msgid "Info frame name:" msgstr "Όνομα πλαισίου πληροφοριών:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Όνομα πλαισίου που χρησιμοποιείται για την εμφάνιση περιεχομένου σχετικού με " "το πλήκτρο \"πληροφορίες" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Δημιουργία εγκαταστάτη έργου..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "" "Δημιουργία σεναρίου εγκατάστασης έργου για τον αναπαραγωγέα του JClic" #: installer_caption msgid "Edit project installer script" msgstr "Επεξεργασία σεναρίου εγκαταστάτη έργου" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Τίτλος:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Τίτλος έργου που θα εμφανιστεί στον οδηγό εγκατάστασης" #: installer_authors msgid "Autors:" msgstr "Δημιουργοί:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Δημιουργός/οί του έργου (σύντομο κείμενο)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Φάκελος:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Όνομα φακέλου που προτείνεται από τον οδηγό εγκατάστασης" #: installer_files msgid "Files to be copied:" msgstr "Άρχεια για αντιγραφή:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Αρχεία που θα αντιγραφούν από τον εγκαταστάτη" #: installer_files_available msgid "Available files" msgstr "Διαθέσιμα αρχεία" #: installer_files_selected msgid "Selected files" msgstr "Επιλεγμένα αρχεία" #: installer_files_add msgid ">> add >>" msgstr ">> προσθήκη >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Προσθήκη επιλεγμένου αρχείου στη λίστα" #: installer_files_remove msgid "<< remove <<" msgstr "<<διαγραφή<<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Διαγραφή επιλεγμένου αρχείου από τη λίστα" #: installer_button msgid "Launch button" msgstr "Κουμπί έναρξης" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "" "Οι ιδιότητες το κουμπιού παρουσιάζονται στη βιβλιοθήκη του προγράμματος" #: installer_button_project msgid "Main project:" msgstr "Κύριο έργο" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Έργο του JClic που θα φορτωθεί με το πλήκτρο" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Ετικέτα:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "" "Ετικέτα σύντομου κειμένου που θα εμφανίζεται στο εσωτερικό του πλήκτρου" #: installer_button_icon msgid "Icon:" msgstr "Εικονίδιο:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Εικόνα που θα χρησιμοποιηθεί ως εικονίδιο πλήκτρου. Αν μείνει κενό θα " "χρησιμοποιηθεί το προεπιλεγμένο εικονίδιο του JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Περιγραφή" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Συμβουλή οθόνης που εμφανίζεται με το πλήκτρο" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Σφάλμα: Λείπει ο τίτλος του έργου" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Σφάλμα: Λείπει το όνομα φακέλου" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Σφάλμα: Μη επιλεγμένα αρχεία" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Σφάλμα: Λείπει η ετικέτα κειμένου του πλήκτρου φόρτωσης" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Σφάλμα: Το έργο που έχει ανατεθεί στο πλήκτρο φόρτωσης, δεν υπάρχει στη " "λίστα των προς αντιγραφή αρχείων" #: applet_page_full msgid "Full-page applet" msgstr "Μικροεφαρμογή πλήρους σελίδας" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "Μικροεφαρμογή με καθορισμένες διαστάσεις" #: edit_text_align_left msgid "Align text left" msgstr "Στοίχιση κειμένου αριστερά" #: edit_text_align_center msgid "Center text" msgstr "Στοίχιση κειμένου στο κέντρο" #: edit_text_align_right msgid "Align text right" msgstr "Στοίχιση κειμένου δεξιά" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Δημιουργία ή αφαίρεση στόχου" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Εισαγωγή ενός κελιού" #: edit_text_act_content msgid "Content" msgstr "Περιεχόμενο" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Στυλ" #: edit_cell_size msgid "Cell size:" msgstr "Μέγεθος κελιού:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Οι δραστηριότητες που ακολουθούν δεν περιλαμβάνονται σε καμία ακολουθία " "δραστηριοτήτων του έργου. Αυτό σημαίνει πως δεν θα εμφανίζονται:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Τα παρακάτω αντικείμενα πολυμέσων δεν χρησιμοποιούνται απευθείας σε καμία " "δραστηριότητα:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "" "Θέλεις να προστεθούν στο τέλος της ακολουθίας της τελευταίας δραστηριότητας;" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Θέλεις να τα αφαιρέσεις;" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Διαγραφή μη χρησιμοποιημένων αντικειμένων πολυμέσων" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Ορφανές δραστηριότητες" #: edit_media_refreshAll msgid "Update all media content" msgstr "Αναβάθμιση όλων των μέσων" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "" "Ενημέρωση όλων των πολυμεσικών αντικειμένων με επαναφόρτωση των αρχείων τους" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Αναβάθμιση μέσων..." #: edit_media_exportAll msgid "Export all media" msgstr "Εξαγωγή όλων των μέσων" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Αποθήκευση σε αρχείο όλων των περιεχομένων των πολυμεσικών στοιχείων" #: edit_media_exportAll_keys msgid "X*" msgstr "Χ*" #: edit_shape_select msgid "Select" msgstr "Επιλογή" #: edit_shape_addPoint msgid "Add point" msgstr "Προσθήκη σημείου" #: edit_shape_deletePoint msgid "Delete" msgstr "Διαγραφή" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Σχεδίαση τετραπλεύρου" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Σχεδίαση έλλειψης" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Σχεδίαση πολυγώνου" #: edit_shape_toLine msgid "Convert to line" msgstr "Μετατροπή σε γραμμή" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Μετατροπή σε καμπύλη Bezier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Μετατροπή σε δευτεροβάθμια καμπύλη" #: edit_shape_rLeft msgid "Rotate left" msgstr "Περιστροφή αριστερά" #: edit_shape_rRight msgid "Rotate right" msgstr "Περιστροφή δεξιά" #: edit_shape_expand msgid "Expand" msgstr "Ανάπτυξη" #: edit_shape_contract msgid "Contract" msgstr "Απομάκρυνση" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Μεγέθυνση" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Σμίκρυνση" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Σύνδεση κοντινών σημείων" #: edit_shape_showPoints msgid "Show points" msgstr "Εμφάνιση σημείων" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Εμφάνιση/Απόκρυψη σημείων" #: edit_shape_gridSize msgid "Grid size:" msgstr "Μέγεθος πλέγματος:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Εμφάνιση/Απόκρυψη πλέγματος" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Ακτίνα μαγνήτη:" #: edit_shape_elements msgid "Defined elements" msgstr "Καθορισμένα στοιχεία" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Όνομα του επιλεγμένου αντικειμένου" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Ακτίνα δράσης του μαγνήτη, όταν ενεργοποιείται" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Μέγεθος πλέγματος" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Δραστηριότητα:" #: edit_mc_sequence msgid "Sequence:" msgstr "Ακολουθία:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Έργο:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Επιλογή δραστηριότητας" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Επιλογή ακολουθίας" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Ανεπαρκή δεδομένα!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Χρώμα βέλους:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Χρώμα που χρησιμοποιείται από τον συντάκτη για τον σχεδιασμό των βελών (όχι " "ακριβώς, επειδή χρησιμοποιείται μια XOR μάσκα)" #: edit_act_editActivity msgid "Edit..." msgstr "Επεξεργασία..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Επεξεργασία της επιλεγμένης δραστηριότητας" #: action_saveFileAs_caption msgid "Save as..." msgstr "Αποθήκευση ως..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Αποθήκευση της τρέχουσας εργασίας με διαφορετικό όνομα" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Συμπεριφορά" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Συμπεριφορά" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Σύρσιμο αντικειμένων" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Σύρε τα αντικείμενα αντί να χρησιμοποιήσεις τη γραμμή ένωσης" #: edit_act_behavior_order msgid "Check solving order" msgstr "Έλεγχος σειράς λύσεων" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Τα κελιά πρέπει να λυθούν με σειρά" #: edit_act_scramble msgid "Scramble" msgstr "Ανακάτωμα όλων" #: action_importActivities_caption msgid "Import activities..." msgstr "Εισαγωγή δραστηριοτήτων..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Εισαγωγή δραστηριοτήτων από άλλο σχέδιο εργασίας" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "Το επιλεγμένο αρχείο αντιστοιχεί στο τρέχον έργο. Δραστηριότητες μπορούν να " "εισαχθούν μόνο μεταξύ διαφορετικών έργων. Παρακαλώ επιλέξτε ένα άλλο αρχείο " "έργου." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" "Επιλέξτε μια ή περισσότερες δραστηριότητες για εισαγωγή στο ενεργό σχέδιο " "εργασίας" #: import_importing msgid "Importing..." msgstr "Εισαγωγή..." #: import_checkdep msgid "Checking dependencies..." msgstr "Έλεγχος εξαρτήσεων" #: import_impmedia msgid "Importing media\\:" msgstr "Εισαγωγή μέσων" #: import_impact msgid "Importing activity\\:" msgstr "Εισαγόμενη δραστηριότητα" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "" "Επιλέξτε το σχέδιο εργασίας του JClic από όπου θα εισαχθούν οι δραστηριότητες" #: edit_tagRep_tags msgid "Tag marks" msgstr "Σημάνσεις ετικέτας" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Αρχή σήμανσης" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Σήμανση που χρησιμοποιείται στην αρχή της σήμανσης" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Τέλος σήμανσης" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Σήμανση που χρησιμοποιείται στο τέλος της σήμανσης" #: edit_tagRep_file msgid "File" msgstr "Αρχείο" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Αρχείο ή ιστοτόπος" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Όνομα ή URL του αρχείου που περιέχει τις τιμές, οι οποίες θα αντικαταστήσουν " "τις ετικέτες" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Σετ χαρακτήρων" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Κωδικοποιημένοι χαρακτήρες χρησιμοποιούνται στο αρχείο" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Περιήγηση..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Περιήγηση στο σύστημα αρχείων" #: edit_tagRep_title msgid "Tag replacing" msgstr "Αντικατάσταση ετικέτας" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Αφαίρεση στυλ κειμένου..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Προσοχή\\: Αυτή η ενέργεια θα αφαιρέσει τα ιδιαίτερα χαρακτηριστικά του " "κειμένου που εφαρμόζονται στο έγγραφο και θα εφαρμόσει το κύριο στυλ. Αυτή η " "ενέργεια δεν μπορεί να αναιρεθεί. Θέλετε οπωσδήποτε να το κάνετε;" #: img_max_size msgid "Maximum size of images:" msgstr "Μέγιστο μέγεθος εικόνων:" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "Μέγιστο πλάτος εικόνων που εισάγονται στη βιβλιοθήκη πολυμέσων." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "Μέγιστο ύψος εικόνων που εισάγονται στη βιβλιοθήκη πολυμέσων." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "Η εικόνα \"%s\" έχει μέγεθος %s εικονοστοιχείων. Αυτό ξεπερνάει το μέγιστο " "μέγεθος που επιτρέπεται από το JClic Author (%s). Θέλετε να αλλάξετε το " "μέγεθος;" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_ast.po0000644000175000017500000024313411377161311023330 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # Xandru Armesto , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2009-09-30 14:00+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descripción" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nome de la xera" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nome:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descripción de la xera" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Informes" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Incluyir esta xera nos informes" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Incluyir los resultaos d'esta xera nos informes d'usuariu" #: edit_act_code msgid "Code:" msgstr "Códigu:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Códigu opcional utilizáu p'agrupar y peñerar na base de datos d'informes." #: edit_act_reportActions msgid "Report user actions" msgstr "Rexistrar tamién les aiciones" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Rexistrar los detalles de toles aiciones feches polos usuarios." #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Cuntadores" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Cuntador de tiempu" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Amosar/anubrir el contador de tiempu." #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Cuntador de intentos" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Amosar/anubrir el contador de intentos." #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Cuntador d'aciertos" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Amosar/anubrir el contador d'aciertos." #: edit_act_maxTime msgid "Max time:" msgstr "Tiempu máximu:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Tiempu máximu pa resolver la xera, en segundos. El 0 significa tiempu " "ilimitáu." #: edit_act_countdown msgid "Countdown" msgstr "Cuenta atrás" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "El cuntador entama col valor máximu, decreciendo fasta 0." #: edit_act_maxActions msgid "Max tries:" msgstr "Intentos máx.:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Númberu máximu d'intentos permitíos, o 0 pa ilimitáu." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botones" #: edit_act_helpBtn msgid "Help" msgstr "Aida" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Amosar/anubrir el botón d'aida" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Amosar la solución" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Amosar esti mensaxe:" #: edit_act_infoBtn msgid "Information" msgstr "Información" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Amosar/anubrir el botón d'información" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Amosar esta URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Executar el comandu:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Direición de la páxina web que se va amosar al calcar nel botón " "d'información." #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" "Llínia de comandos que va executar al calcar nel botón d'información." #: edit_act_mainWindow msgid "Main window:" msgstr "Ventana principal:" #: edit_act_gameWindow msgid "Game window:" msgstr "Ventana de xuegu:" #: edit_act_margin msgid "Margin:" msgstr "Marxe:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espaciu vertical y horizontal ente oxetos visuales." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Color de fondu:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Camudar el color de fondu." #: edit_gradient_startColor msgid "Start color:" msgstr "Color d'aniciu:" #: edit_gradient_endColor msgid "End color:" msgstr "Color final:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Escoyeta del color d'aniciu" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Escoyeta del color final" #: edit_gradient_cycles msgid "Cycles:" msgstr "Ciclos:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Númberu de repeticiones del gradiente sobro la superficie a pintar." #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientación:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientación del gradiente, midida en graos sobro la horizontal." #: edit_act_gradient msgid "Gradient:" msgstr "Gradiente:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Usar un gradiente de colores" #: edit_color_opacity msgid "Opacity" msgstr "Opacidá" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Axusta'l valor de la canal alfa (opacidá) de color." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradiente" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Usar los valores por defeutu (gradiente nulu)" #: edit_act_image msgid "Image:" msgstr "Imaxe:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descripción" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nome y descripción" #: edit_act_tiledBgImg msgid "Tiled" msgstr "En mosaicu" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Pinta tola superficie cola imaxe, repitiéndola a lo llargo de les exes X ya " "Y tantes vegaes como faiga falta." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Vista previa:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Borde" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Dibuxar una llinia de berbesu al rodiu de la ventana" #: edit_act_transparent msgid "Transparent" msgstr "Tresparente" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "La ventana tien el fondu tresparente" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Anchor:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altor:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Anchu del oxetu, en píxeles" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Altor del oxetu, en píxeles" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrada" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "El oxetu asítiase centráu respeutu de la ventana principal" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Posición horizontal absoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Posición vertical absoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interface d'usuariu" #: edit_act_image_tooltip msgid "Select an image" msgstr "Esbillar una imaxe" #: edit_act_text msgid "Text:" msgstr "Testu:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Testu que se va amosar nesti oxetu" #: edit_font_face msgid "Typeface:" msgstr "Triba:" #: edit_font_size msgid "Size:" msgstr "Tamañu:" #: edit_font_bold msgid "Bold" msgstr "Negrina" #: edit_font_italic msgid "Italic" msgstr "Cursiva" #: edit_font_underline msgid "Underline" msgstr "Sorayáu" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estilu:" #: edit_cell_title msgid "Cell contents" msgstr "Conteníu de la caxella" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Mensaxes" #: edit_act_msg_initial msgid "Initial message:" msgstr "Mensax d'aniciu:" #: edit_act_msg_final msgid "Final message:" msgstr "Mensax final:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Mensax previu:" #: edit_act_msg_error msgid "Error message:" msgstr "Mensax de fallu:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Mensax que s'amuesa al entamjar la xera" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Mensax que s'amuesa al finar la xera" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Mensax que s'amuesa al finar la xera con fallos" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Mensax que s'amuesa enantes d'entamar (namás en delles tribes de xeres)" #: edit_align msgid "Align:" msgstr "Orientación:" #: edit_act_textColor msgid "Text color:" msgstr "Color del testu:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Color utilizáu pa dibuxar el testu" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Color de la solombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Color utilizáu na solombra del testu, si esiste." #: edit_act_shadow msgid "Shadow" msgstr "Solombra" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Dibuxar el testu con solombra" #: edit_act_borderColor msgid "Border color:" msgstr "Color del berbesu:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Color utilizáu pa dibuxar el berbesu de la caxella" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Color de estáu inactivu:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Color utilizáu cuando la caxella ta desactivada" #: edit_act_altColor msgid "Alternative color:" msgstr "Color alternativu:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Color col que s'amuesa el conteníu alternativu de les caxelles una vegada " "solucionadas." #: edit_cell_marked msgid "Marked" msgstr "Marcada" #: edit_cell_disabled msgid "Disabled" msgstr "Desactivada" #: edit_cell_alt msgid "Alternative" msgstr "Alternativa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Marxe internu:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Espaciu ente los berbesos de la celda y el testu." #: edit_cell_borderWidth msgid "Border width:" msgstr "Anchor del berbesu:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Anchor del trazu utilizáu pa dibuxar el berbesu." #: edit_cell_markerWidth msgid "Marker width:" msgstr "Anchor del marcador:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Anchor del trazu utilizáu pa dibuxar el berbesu cuando la caxella " "s'alcuentra marcada o escoyida." #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Vista previa n'estáu \"alternativa\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Vista previa n'estáu \"desactivada\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Vista previa n'estáu \"marcada\"" #: edit_act_testAction msgid "Preview activity" msgstr "Vista previa de la xera" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Prebar cómo furrula la xera" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descripción" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Títulu y descripción de la xera" #: edit_act_panels_options msgid "Options" msgstr "Opciones" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opciones de la xera" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Ventana" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspeutu, tamañu y posición de la ventana na que corre la xera" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Mensaxes" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Conteníu de los mensaxes de la xera" #: edit_act_panels_panel msgid "Panel" msgstr "Panel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Conteníu del panel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estilu" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Axustar el color, triba y tamañu de lletra de les caxelles" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estilu:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Evitar sobreposición imaxe/testu" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Intentar evitar que testu ya imaxe se solapen" #: edit_media_exists_1 msgid "The file" msgstr "El ficheru" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "yá s'alcuentra na mediateca!" #: edit_act_shaper msgid "Shaper:" msgstr "Xenerador de formes:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Error nel xenerador de formes:" #: edit_act_num_cols msgid "Columns:" msgstr "Columnes:" #: edit_act_num_rows msgid "Rows:" msgstr "Fileres:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Altor de los dientes:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Anchor de los dientes:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribución aleatoria" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propiedaes del xenerador de formes" #: edit_act_panels_text msgid "Text" msgstr "Testu" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Testu de la xera" #: action_saveFile_caption msgid "Save..." msgstr "Guardar..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Guardar el proyeutu actual" #: action_docTree_caption msgid "Document tree..." msgstr "Árbol del documentu..." #: action_docTree_keys msgid "T*" msgstr "T*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Amosar el documentu del proyeutu en forma d'árbol" #: edit_docTree_title msgid "Document tree" msgstr "Árbol del documentu" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Referenciáu por:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Atención:

Esti proyeutu " "enllaza con otros proyeutos.
¿Quies esplorar los enllaces y cargar tolos " "ficheros rellacionaos?

(Recomiéndase responder cuando se ta " "importando un paquete de xeres de Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Triba:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Desconocíu" #: edit_mc_type_sound msgid "Play sound" msgstr "Interpretar soníu" #: edit_mc_type_video msgid "Play video" msgstr "Interpretar video" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Interpretar MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Interpretar CD audio" #: edit_mc_type_record msgid "Record sound" msgstr "Grabar soníu" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Interpretar grabación" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Dir a la xera" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Dir a la secuencia" #: edit_mc_type_run_external msgid "Run program" msgstr "Arrancar un programa" #: edit_mc_type_url msgid "Show URL" msgstr "Amosar la URL" #: edit_mc_type_exit msgid "End" msgstr "Finar" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Volver" #: edit_mc_level msgid "Priority level:" msgstr "Nivel de prioridá:" #: edit_mc_file msgid "File:" msgstr "Ficheru:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parámetros:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Dende:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Fasta:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Duración máx.:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Cinta de grabación:" #: edit_mc_stretch msgid "Stretch size" msgstr "Axustar tamañu" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Allugamientu:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Dende:" #: edit_mc_location_from_box msgid "Cell" msgstr "Celda" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Ventana" #: edit_mc_location_from_frame msgid "Frame" msgstr "Marcu" #: edit_mc_loop msgid "Loop playback" msgstr "Repetir indefinidamente" #: edit_mc_autostart msgid "Auto start" msgstr "Arranque automáticu" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Capturar mur" #: edit_mc_title msgid "Multimedia and active content" msgstr "Conteníu activu y multimedia" #: edit_mc_label msgid "Active content:" msgstr "Conteníu activu:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Escoyeta del oxetu multimedia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Mediateca de recursos" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centráu na celda" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centráu na ventana" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Especificar posición:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "¡Los datos o la d'árbol son incorrectos.!" #: edit_act_panels_controls msgid "Controls" msgstr "Controles" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opciones de botones y cuntadores" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Triba:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Configuración de la rexella:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posición relativa de los paneles A y B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Resolución inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "La xera consideraráse resuelta cuando tolos elementos de \"B\" tean " "empareyaos." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Amosar toles fleches" #: edit_act_alt msgid "Alternative content:" msgstr "Conteníu alternativu:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Conteníu que s'amuesa nes caxelles yá resueltes y nes non asignaes." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Editar el conteníu alternativu" #: edit_act_grid msgid "Grid" msgstr "Panel" #: edit_act_grid_A msgid "Grid A" msgstr "Panel A" #: edit_act_grid_B msgid "Grid B" msgstr "Panel B" #: edit_act_grid_layout msgid "Layout" msgstr "Distribución" #: edit_act_grid_relationship msgid "Relationship" msgstr "Rellaciones" #: edit_seq_activity_header msgid "activity" msgstr "xera" #: edit_seq_tag_header msgid "tag" msgstr "etiqueta" #: edit_seq_jump_header msgid "jump to" msgstr "blincu a" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Xera:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etiqueta:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descripción:" #: edit_seq_auto msgid "Move on automatically" msgstr "Avance automáticu" #: edit_seq_delay msgid "Delay:" msgstr "Retardu:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Dir p'alantre" #: edit_seq_action_back msgid "Go bak" msgstr "Dir p'atrás" #: edit_seq_action_jump msgid "Jump to..." msgstr "Blincar a..." #: edit_seq_action_stop msgid "Stop" msgstr "Parar" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Tornar" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Colar de JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Flecha p'alantre:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Flecha p'atrás:" #: edit_seq_action msgid "Action:" msgstr "Aición:" #: edit_seq_button_enabled msgid "Show button" msgstr "Amosar botón" #: edit_seq_project msgid "JClic Project:" msgstr "Proyeutu JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posición absoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "L'oxetu va asitiase nes coordenaes X ya Y que se conseñen" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Allugamientu:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Nuevu elementu de secuencia..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Inxertar un nuevu elementu na secuencia de xera" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Escueyi una xera pal nuevu elementu de secuencia." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "¡No se pue criar un elementu nuevu de secuencia ensin conseñar la xera!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "¡Nesti proyeutu nun hai xera denguna! Nun se puen criar elementos de " "secuencia nun proyeutu baleru." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Destín del blincu:" #: edit_seq_jump_title msgid "Jump target" msgstr "Destín del blincu" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Amestar una xera nueva al proyeutu" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Triba de xera:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nome:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Escueyi la triba de xera que quies criar y pon-y un nome:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "¡Hai qu'escoyer una triba de xera!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "¡Hai qu'indicar un nome pa la xera!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "¡Nun se pudo criar la xera!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Nome de la clas Java:" #: edit_text_act_format msgid "Format" msgstr "Formatu" #: edit_text_act_answer msgid "Answer" msgstr "Rempuesta" #: edit_text_act_popup msgid "Pop up" msgstr "Ventana emerxente" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Rempuestes correutes:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Amestar un elementu nuevu a la llista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Editar l'elementu escoyíu" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Esborrar l'elementu escoyíu de la llista" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Mover p'arriba" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Mover p'abaxo" #: edit_list_newValue msgid "New text:" msgstr "Testu nuevu:" #: edit_list_addElement msgid "Add new list element" msgstr "Amestar un elementu nuevu a la llista" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Camudar el testu escoyíu" #: edit_text_act_target msgid "Target" msgstr "Destín" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Llargor máximu:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Númberu máximu de carauteres permitíos na rempuesta." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Caráuter de rellenu" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Caráuter utilizáu pa indicar la incógnita" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Llargor d'ainiciu:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Númberu de carauteres de rellenu que se van amosar nel aniciu la xera." #: edit_text_act_iniText msgid "Initial text:" msgstr "Testu d'aniciu:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Testu que se va amosar na incógnita al entamar la xera." #: edit_text_act_list msgid "Show a list of options:" msgstr "Amosar una llista de opciones:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "Amosar la llista d'opciones que l'usuariu tien d'escoyer." #: edit_text_act_check_title msgid "Correction options" msgstr "Opciones d'evaluación" #: edit_text_act_popup_no msgid "No pop up" msgstr "Ensin ventana emerxente" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Ventana emerxente automática" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Ventana emerxente cuando hai fallos" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Ventana emerxente calcando F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Triba:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Retardu d'apaición:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Tiempu máximu:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Namás interpretar soníu" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "Pa criar una incógnita nueva fai falta escoyer un fragmentu de testu." #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "El testu de les incógnites nun puede incluyir retornos de párrafu nin " "tabulaciones." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "¡Les incógnites nun se puen solapar" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "¡Les incógnites nun pueden tener caxelles!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Color del papel:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Editar los estilos del documentu..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Estilu principal:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Espaciu de tabulador:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espacios ente marques de tabulación:" #: edit_text_act_colors msgid "Colors:" msgstr "Colores:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Colores de les incógnitas:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Colores d'errores:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Vista preliminar:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Testu normal" #: edit_text_act_styleSample_target msgid "target" msgstr "incógnita" #: edit_text_act_styleSample_error msgid "error" msgstr "error" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "testu normal" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "testu normal." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Atención: esta aición va suprimir la incógnita escoyida. ¿De xuru que lo " "quies facer?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Pantalla previa..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Nun amosar testu dengún enantes d'entamar la xera" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Amosar el testu completu del exerciciu" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Amosar esti testu:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Tiempu máximu:" #: edit_text_act_edit_target msgid "Target..." msgstr "Incógnita..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Amosar botón d'evaluación" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Testu del botón:" #: edit_text_act_checkCase msgid "Match case" msgstr "Comprobar mayúscules / minúscules" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Considerar acentos y carauteres especiales" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Considerar les marques de puntuación" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permitir espacios repetíos" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Criterios" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Pasar automáticamente a la incógnita siguiente" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Pasar namás si se respuende correcho" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Conseñar los fallos lletra a lletra" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parámetros del algoritmu d'analís:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Pasos:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Campu d'esploración:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Comprobar" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Analís de les rempuestes" #: edit_text_act_check_bt msgid "Correction..." msgstr "Correición..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Botón de correición" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progresu" #: edit_text_act_typeBtn msgid "Type..." msgstr "Triba..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordenar párrafos" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordenar palabres" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Baraxar palabres ente párrafos" #: edit_text_act_type_title msgid "Activity type" msgstr "Triba de xera" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Esta aición va esborrar toles incógnites definíes. ¿De xuru que lo quies " "facer?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identificar palabres" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identificar carauteres" #: edit_media_change_name msgid "Change name..." msgstr "Camudar nome..." #: edit_media_change_file msgid "Change file..." msgstr "Camudar el ficheru..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Guardar nel ficheru ZIP" #: edit_media_type msgid "Media type:" msgstr "Triba de recursu:" #: edit_media_size msgid "File size:" msgstr "Tamañu del ficheru:" #: edit_media_show_type msgid "Files of type:" msgstr "Triba de ficheros:" #: edit_media_preview msgid "Preview media" msgstr "Previsualizar oxetu" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Previsualización del recursu multimedia" #: edit_media_rename msgid "Change resource name" msgstr "Camudar el nome del recursu" #: edit_media_rename_title msgid "Rename" msgstr "Renomar" #: edit_media_rename_prompt msgid "New name:" msgstr "Nome nuevu:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "¡Nome de recursu non válidu!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Yá hai otru recursu con esti nome. Los recursos tienen de tener un nome " "únicu nel proyeutu." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "¡Ficheru incorreutu!" #: err_media_chfile_different msgid "File must be of same type" msgstr "El ficheru tien de ser de la mesma triba" #: edit_media_font_error msgid "Unable to load font!" msgstr "¡Nun se pudo cargar la fonte de lletra!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Guardar el ficheru (extrayelu del ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Anovar el conteníu del recursu dende'l ficheru" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Esti nun ye un ficheru \"real\", sinón un oxetu allugáu nel interior de un " "contenedor ZIP. Pa usar esta función fai falta qu'esista un ficheru col " "mesmu nome na carpeta onde s'atopa'l ficheru ZIP." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Xeres" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Secuencies" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Mediateca" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Xestión de les imáxenes y otros recursos usaos nel proyeutu." #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Creación y edición de les xeres del proyeutu" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Creación y edición de secuencies de xeres" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Títulu:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Títulu del proyeutu" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Proyeutu" #: edit_project_tooltip msgid "Edit project properties" msgstr "Edición de les propiedaes del proyeutu" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descripción:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descripción xeneral del proyeutu" #: edit_project_area msgid "Areas:" msgstr "Áries:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Áries curriculares pa les que s'empobina'l proyeutu" #: edit_project_level msgid "Levels:" msgstr "Niveles:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Niveles y ciclos educativos pa los que s'empobina'l proyeutu" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descriptores:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descriptores del proyeutu (separtaos por comes)" #: edit_project_languages msgid "Languages:" msgstr "Llingües:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Llingües usaes nel proyeutu" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Camudar la llingua escoyida" #: edit_project_languages_add msgid "Add language" msgstr "Amestar llingua" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Códigos de llingua ISO-639:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Persones que participaren na creación del proyeutu" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nome:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "Corréu electrónicu:" #: edit_project_author_rol msgid "Rol:" msgstr "Papel:" #: edit_project_author_organization msgid "Organization:" msgstr "Organización:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nome del autor/a (campu obligatorio)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Direición de corréu electrónicu del autor/a (opcional)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Papel de la persona nel proyeutu: autor, collaborador, illustrador, " "soníos... (opcional)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Escuela, universidá, asociación... (campu opcional)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Páxina web personal (campu opcional)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Otres carauterístiques (campu opcional)" #: edit_project_author_info msgid "Author info:" msgstr "Datos del autor/a:" #: edit_project_author_add msgid "Add author to list" msgstr "Amestar un autor a la llista" #: edit_project_author_edit msgid "Edit author info" msgstr "Camudar los datos del autor/a" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nome:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nome de la escuela" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "Corréu electrónicu:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Direición de corréu electrónicu de la escuela" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Direición web de la escuela" #: edit_project_org_address msgid "Address:" msgstr "Direición:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Direición postal de la escuela" #: edit_project_org_pc msgid "PC:" msgstr "CP:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Códigu postal" #: edit_project_org_city msgid "City:" msgstr "Ciudá:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Ciudá de la escuela" #: edit_project_org_country msgid "Country:" msgstr "País:" #: edit_project_org_state msgid "State:" msgstr "Estáu:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_org msgid "School/s:" msgstr "Escuela/es:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Escuela u otra institución que participare nel proyeutu" #: edit_project_org_info msgid "Organization info:" msgstr "Datos de la organización:" #: edit_project_org_add msgid "Add organization" msgstr "Amestar organización" #: edit_project_org_edit msgid "Edit organization data" msgstr "Camudar los datos de la organización" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "País, federación, xunión..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Estáu federal, comunidá, rexón..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Otros datos..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Data de la revisión" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autores/as:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autores/as de la revisión" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descripción:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breve descripción de los cambeos realizados" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Información adicional" #: edit_project_rev msgid "Revisions:" msgstr "Revisiones:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Historial de los cambeos principales fechos nel proyeutu" #: edit_project_rev_add msgid "Add revision record" msgstr "Amestar un rexistru de revisión" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Camudar el rexistru de la revisión" #: edit_project_rev_info msgid "Revision data" msgstr "Datos de la revisión" #: edit_media_objects msgid "objects" msgstr "oxetos" #: edit_media_object msgid "object" msgstr "oxetu" #: edit_evsounds_start msgid "Start of activity:" msgstr "Aniciu de xera:" #: edit_evsounds_click msgid "Click on object:" msgstr "Calcar nun oxetu:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Aición errónea:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Aición correuta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Xera finada con fallos:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Xera finada correutamente:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Error: La descripción nun quedar erma" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Edición de los soníos d'eventos" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Soníos d'eventos:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Coseñar soníos específicos pa cada eventu de JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Soníos d'eventos:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Coseñar soníos específicos pa cada eventu de JClic" #: edit_evsounds_default msgid "default sound" msgstr "soníu por defeutu" #: edit_evsounds_disabled msgid "disabled" msgstr "desactiváu" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Activa o desactiva'l soníu pa esti eventu" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Calcar pa escoyer el soníu arreyáu a esti eventu, o desmarcar pa usar el " "soníu por defeutu" #: action_newProject_caption msgid "New project..." msgstr "Proyeutu nuevu..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Criar un proyeutu JClic nuevu" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Dende:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valor mínimu del operador" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Fasta:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valor máximu del operador" #: edit_arith_op_with msgid "With:" msgstr "Con:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Si se marca, l'operador pue tener tamién esti valor" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Ún de la llista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Llista de posibles valores del operador" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimales:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Númberu de decimales del operando" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (enteru)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#,#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#,##" #: edit_arith_firstOp msgid "First operand" msgstr "Primer operando" #: edit_arith_secondOp msgid "Second operand" msgstr "Segundu operando" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 pa JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operaciones:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Selecciona la triba d'operaciones a efectuar" #: edit_arith_operations_plus msgid "Plus" msgstr "Sumes" #: edit_arith_operations_minus msgid "Minus" msgstr "Restes" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplicaciones" #: edit_arith_operations_divide msgid "Divide" msgstr "Divisiones" #: edit_arith_unknown msgid "Unknown:" msgstr "Incógnita:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Escueyi l'elementu que va facer d'incógnita" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "El resultáu ye la incógnita" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "El segundu operador ye la incógnita" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "El primer operador ye la incógnita" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "La operación ye la incógnita" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Escribir la expressión entamando pel resultáu" #: edit_arith_result msgid "Result:" msgstr "Resultáu:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Ensin llevar" #: edit_arith_result_random msgid "Random" msgstr "Aleatoriu" #: edit_arith_result_asc msgid "Ascending" msgstr "Ascendente" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordenar per resultáu:" #: edit_arith_result_desc msgid "Descending" msgstr "Descendente" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evitar duplicaos" #: edit_arith_cond msgid "Conditions:" msgstr "Condiciones:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indiferente" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "El primer operador tien de ser mayor que'l segundu" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "El primer operador tien de ser menor que'l segundu" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Otres condiciones" #: edit_autocp msgid "Automatic content generator:" msgstr "xenerador automáticu de conteníu:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Escoyeta de la triba de xenerador automáticu de conteníu pa esta xera." #: edit_autocp_block msgid "Content generator" msgstr "Xenerador de conteníu" #: edit_autocp_btn msgid "Settings..." msgstr "Preferencies..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configuración de los parámetros del xenerador de conteníu" #: edit_data msgid "Edit data" msgstr "Edición de datos" #: edit_act msgid "Activity edit" msgstr "Edición de la xera" #: edit_acp msgid "Content provider edit" msgstr "Edición del xenerador de conteníu" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "¡Error de creación del xenerador automáticu de conteníu!" #: edit_project_author_group msgid "Creation" msgstr "Creación" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descripción" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interfaz d'usuariu" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descripción:" #: m_Edit msgid "Edit" msgstr "Edición" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Xera nueva..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Inxertar" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Ver" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Proyeutu" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Editar les propiedaes del proyeutu" #: action_editMedia_caption msgid "Media" msgstr "Mediateca" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Edición de la mediateca del proyeutu" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Xeres" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Edición de les xeres" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Secuencies" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Edición de les secuencies de xeres" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "Esti proyeutu camudó. ¿Quies guardar los cambeos?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descriptores" #: edit_media_new msgid "New media object..." msgstr "Oxetu multimedia nuevu..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Amestar una imaxe o un oxetu multimedia a la mediateca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Umbral de puntuación:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Siguir esti camín cuando la puntuación global seya mayor o igual que..." #: edit_seq_time msgid "Time threshold:" msgstr "Umbral de tiempu:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Pa siguir esti camín hai que tener feches les xeres nun tiempu inferior a..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "" "Sigui esti camín siempres que la puntuación global seya inferior a..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Sigui esti camín siempres que'l tiempu emplegáu nes xeres seya superior a..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Blincos condicionales" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Conseñar blincos que s'executen namás si se dan unes condiciones determinaes" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Conseñar les condiciones pa blincar a un nivel superior" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Blincu inferior:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Blincu superior:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Conseñar les condiciones pa blincar a un nivel inferior" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Aición asociada al botón \"siguiente\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Aición asociada al botón \"anterior\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Conseñar el destín del blincu" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Aición a facer" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Xera asociada a esti elementu de la secuencia" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Etiqueta emplegada pa referise a esti elementu de la secuencia (campu " "opcional)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descripción del elementu de secuencia (campu opcional)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Activar o desactivar el botón de pasu de xera" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Avanzar automáticamente al acabar la xera" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Númberu de segundos a esperar enantes de facer el pasu automáticu" #: edit_color_dlgTitle msgid "Select color" msgstr "Escoyeta del color" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Por favor, espere mientres se camuda'l nome del recursu..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Anchor:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Anchor de les caxelles (en píxeles)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Altor:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Altor de les caxelles (en píxeles)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Pallabres tapecíes:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Llista de les palabres tapecíes nel panel" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Usar el panel B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "El conteníu del segundu panel va ser amosáu según se vayan atopando les " "palabres" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Escoyeta de la triba de xenerador de formes del panel" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Númberu de columnes del panel" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Númberu de fileres del panel" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Separtadores tresparentes" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Amosar los separtadores (caxelles prietes) como furacos tresparentes" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Mestures\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Númberu de vegaes que se mecerán les pieces" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copiar atributos a..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Atributos:" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplicar a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Ventana principal" #: edit_act_copy_style_play msgid "Play window" msgstr "Ventana de xuegu" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Xeres a camudar:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copiar atributos" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Copiar a otres xeres dellos de los atributos d'esta xera" #: edit_new_project_name msgid "Project name:" msgstr "Nome del proyeutu:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nome curtiu y descriptivu del proyeutu" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nome del ficheru:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nome del ficheru del proyeutu, ensin estensión" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Carpeta:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nome de la carpeta na que se va guardar el proyeutu" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Restolar..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Creación d'un proyeutu JClic nuevu" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Error: Tanto'l proyeutu como'l ficheru y la carpeta tienen de tener nomes " "válidos." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Nesta carpeta yá hai otru proyeutu Clic3.0 o JClic. Pa evitar tracamundios " "recomiéndase caltener cada proyeutu nuna carpeta independiente, anque nun ye " "imprescindible. ¿De xuru que quies criar el proyeutu nuevu nesta carpeta?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Error: ¡Nun fue ha criase la carpeta conseñada!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Error: ¡Nun s'escoyó xera nenguna. Pa usar esta función hai qu' escoyer na " "llista la xera o xeres a les que se van aplicara los atributos conseñaos." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copiando atributos a:" #: edit_act_copy_margin msgid "Margin" msgstr "Marxe" #: edit_act_copy_bgColor msgid "Background color" msgstr "Color de fondu" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradiente" #: edit_act_copy_bgImage msgid "Background image" msgstr "Imaxe de fondu" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Berbesu" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Fondu tresparente" #: edit_act_copy_position msgid "Position" msgstr "Posición" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Mensaxes" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Estilu del mensaxe d'aniciu" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Estilu del mensaxe final" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Estilu del mensaxe de fallu" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Informes" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Incluyir la xera nos informes" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Rexistrar aiciones" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interfaz d'usuariu" #: edit_act_copy_skin msgid "Skin" msgstr "Entornu visual" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Soníos d'eventu" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Cuntadores" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Cuntador de tiempu" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Tiempu máximu" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Cuntador d'intentos" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Númberu máximu d'intentos" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Cuntador d'aciertos" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Númberu de vegaes qu'hai que baraxar" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botones" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Botón d'aida" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Botón d'información" #: edit_act_copy_grids msgid "Grids" msgstr "Paneles" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Estilu del panel A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Estilu del panel B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Estilu de los paneles de testu" #: edit_act_copy_text msgid "Text activities" msgstr "Xeres de testu" #: edit_act_copy_fontFace msgid "Font face" msgstr "Triba de lletra" #: edit_act_copy_fontSize msgid "Font size" msgstr "Tamañu de lletra" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Estilu de lletra" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Color del testu principal" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Escueyi les xeres del proyeutu JClic que van ser importaes" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Color de los fallos" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Espaciu de tabulador" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Estilu del mensax previu" #: edit_act_changeType msgid "Change activity type" msgstr "Camudar la triba de xera" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nome completu de la clas que se va emplegar pa construir la xera (¡namás pa " "usuarios avanzaos!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Otres..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Los usuarios/es avanzaos/es pueden criar tamién otres tribes de xeres JClic " "nun rexistraes. Escribi debaxo'l nome completu de la clas, precedida pol del " "paquete (por exemplu: \"com.acme.activities.FooActivity\"). Les xeres nueves " "tienen d'estender edu.xtec.jclic.Activity, y tienen de ser accesibles al " "cargador de clases de la máquina virtual de Java." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nome de la xera" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Cada xera tien de tener un nome único nel proyeutu" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Atención: " "El cambéu de la triba pue causar la perda de dellos de los atributos y " "oxetos de la xera que se ta editando. ¡Utilice la función con munchu " "cuidáu!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Allugamientu del códigu JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "URL qu'apunta a una carpeta na que tean allugaos los ficheros del programa " "de JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Códigu HTML previu:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Testu o códigu HTML que va aparecer enantes del applet" #: applet_post_text msgid "HTML code after:" msgstr "Códigu HTML posterior:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Testu o códigu HTML que va aparecer dempués del applet" #: applet_size msgid "Applet size:" msgstr "Tamañu del applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Anchor y altor del applet, en valores absolutos o porcentuales." #: applet_page_title msgid "Page title:" msgstr "Títulu de la páxina:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "" "Testu que se va amosar na parte superior de la ventana del restolador" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "La páxina web \"%s\" crióse con ésitu." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "¿Quies abrirla agora col restolador?" #: action_createHTML_caption msgid "Create web page..." msgstr "Criar páxina web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Creación d'una páxina HTML con un applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Creación d'una páxina HTML con un applet que tenga esti proyeutu." #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nome del ficheru:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nome del ficheru HTML a criar" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valores por defeutu usados na creación de páxines web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Color de fondu:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Color de fondu de la páxina web" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centráu" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Allugar el applet centráu horizontalmente" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Anchor del applet (en valor absolutu o porcentual)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Altor del applet (en valor absolutu o porcentual)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Al colar, dir pa:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL pa onde se va empobinar la navegación al colar de JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Marcu d'información:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Nome del marcu emplegáu p'amosar el conteníu incluyíu nel botón \"info\"" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Criar instalador del proyeutu..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Creación d'un ficheru d'instalación del proyeutu pa JClic player" #: installer_caption msgid "Edit project installer script" msgstr "Edición del ficheru d'instalación del proyeutu" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Títulu:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Títulu del proyeutu que se va amosar nel asistente d'instalación" #: installer_authors msgid "Autors:" msgstr "Autores/as:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autores/as del proyeutu (testu curtiu)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Carpeta:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nome de carpeta que va suxerir l'asistente d'instalación" #: installer_files msgid "Files to be copied:" msgstr "Ficheros a copiar:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Ficheros que se van copiar na instalación" #: installer_files_available msgid "Available files" msgstr "Ficheros disponibles" #: installer_files_selected msgid "Selected files" msgstr "Ficheros seleicionaos" #: installer_files_add msgid ">> add >>" msgstr ">> amestar >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Amestar el ficheru escoyíu a la llista" #: installer_files_remove msgid "<< remove <<" msgstr "<< quitar <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Quitar el ficheru escoyíu de la llista" #: installer_button msgid "Launch button" msgstr "Botón d'activación" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propiedaes del botón que se va amosar na biblioteca de proyeutos" #: installer_button_project msgid "Main project:" msgstr "Proyeutu principal:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Proyeutu JClic asociáu al botón" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etiqueta:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Etiqueta de testu curtia, que va apaecer dientro del botón" #: installer_button_icon msgid "Icon:" msgstr "Iconu:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Imaxe que va amosar el botón. Dexar ermo pa usar l'iconu por defeutu de " "JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descripción" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Testu d'aida emerxente que va amosar el botón" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Error: Hai que conseñar el títulu del proyeutu" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Error: Hai que conseñar el nome de la carpeta" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Error: Nun tien escoyíu ficheru dengún" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "" "Error: Hai que conseñar el testu de la etiqueta del botón d'activación" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Error: El proyeutu asociáu al botón d'activación nun s'alcuentra ente los " "ficheros a copiar" #: applet_page_full msgid "Full-page applet" msgstr "L'applet ocupa tola páxina" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "L'applet tien dimensiones específiques" #: edit_text_align_left msgid "Align text left" msgstr "Alliniar el testu a la esquierda" #: edit_text_align_center msgid "Center text" msgstr "Testu centráu" #: edit_text_align_right msgid "Align text right" msgstr "Alliniar el testu a la drecha" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Criar una incógnita o suprimila" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Inxertar una celda" #: edit_text_act_content msgid "Content" msgstr "Conteníu" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Estilu" #: edit_cell_size msgid "Cell size:" msgstr "Dimensiones de la celda:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Les xeres siguientes enxamás van llegar a executase, darréu que nun apaecen " "en secuencia d'actividades del proyeutu denguna:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Los oxetos siguientes de la mediateca nun s'empleguen direutamente en xera " "denguna:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "¿Quies amestales al final de la secuencia cabera de xeres?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "¿Quies esborralos?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Esborrar de oxetos multimedia nun emplegaos" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Xeres güérfanes" #: edit_media_refreshAll msgid "Update all media content" msgstr "Anovar el conteníu de tolos recursos" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Anovar tolos recursos volviendo a cargar los ficheros" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Anovando recursos..." #: edit_media_exportAll msgid "Export all media" msgstr "Esportar tolos recursos" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Grabar en ficheros el conteníu de tolos recursos" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Esbillar" #: edit_shape_addPoint msgid "Add point" msgstr "Amestar un puntu" #: edit_shape_deletePoint msgid "Delete" msgstr "Esborrar" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Dibuxar un rectángulo" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Dibuxar una elipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Dibuxar un polígonu" #: edit_shape_toLine msgid "Convert to line" msgstr "Convertir nuna llinia" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Convertir nuna curva Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Convertir nuna curva cuádrica" #: edit_shape_rLeft msgid "Rotate left" msgstr "Xirar a la esquierda" #: edit_shape_rRight msgid "Rotate right" msgstr "Xirar a la drecha" #: edit_shape_expand msgid "Expand" msgstr "Espander" #: edit_shape_contract msgid "Contract" msgstr "Contrayer" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Averar" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Alloñar" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Xunta puntos averaos" #: edit_shape_showPoints msgid "Show points" msgstr "Amosar puntos" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Amosar/Anubrir los puntos" #: edit_shape_gridSize msgid "Grid size:" msgstr "Tamañu de la rexella:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Amosar / Anubrir la rexella" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Radiu del imán:" #: edit_shape_elements msgid "Defined elements" msgstr "Elementos definíos" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nome del elementu escoyíu" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Radiu d'aición del imán, cuando ta activáu" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Tamañu de la rexella" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Xera:" #: edit_mc_sequence msgid "Sequence:" msgstr "Secuencia:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Proyeutu:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Escoyeta de la xera" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Escoyeta de la secuencia" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "¡Datos insuficientes!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Color de les fleches:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Color utilizáu pol editor pa dibuxar les fleches (nun ye esauto, darréu que " "s'emplega una máscara XOR de bits)" #: edit_act_editActivity msgid "Edit..." msgstr "Editar..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Editar la xera escoyida" #: action_saveFileAs_caption msgid "Save as..." msgstr "Guardar como..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Guardar el proyeutu con un nome distinto" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportamientu" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportamientu" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Arrastrar" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Arrastrar los oxetos en llugar de xunilos con una llinia" #: edit_act_behavior_order msgid "Check solving order" msgstr "Comprobar orde de resolución" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Les celdes tienen de resolvese n'orde" #: edit_act_scramble msgid "Scramble" msgstr "Baraxar" #: action_importActivities_caption msgid "Import activities..." msgstr "Importar xeres..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importar xeres d'otru proyeutu" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "El ficheru escoyíu correspuende a esti proyeutu. La importación de xeres " "namás se pue facer ente proyeutos estremaos. Por favor, escueyi otru " "proyeutu." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "Escueyi una o más xeres pa importales a esti proyeutu\\:" #: import_importing msgid "Importing..." msgstr "Importando..." #: import_checkdep msgid "Checking dependencies..." msgstr "Comprobando dependencies..." #: import_impmedia msgid "Importing media\\:" msgstr "Importando medios\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importando la xera\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Escueyi'l proyeutu JClic del que quies importar xeres" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marques d'etiquetes" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marca d'aniciu\\:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marca qu'indica aniciu d'etiqueta" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marca final\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marca qu'indica final d'etiqueta" #: edit_tagRep_file msgid "File" msgstr "Ficheru" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Ficheru o URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Nome o URL del ficheru que contién los valores que van sostituyir les " "etiquetes" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Codificación\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Triba de codificación emplegada nel ficheru" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Guetar..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Guetar nel sistema de ficheros" #: edit_tagRep_title msgid "Tag replacing" msgstr "Sostitución d'etiquetes" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Llimpiar estilos de testu..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Atención: Esta aición va llimpiar los atributos especiales de caráuter " "qu'esisten nel documentu, tornándolu al estilu principal. Esta operación nun " "se pue desfacer. ¿Quies realizala?" #: img_max_size msgid "Maximum size of images:" msgstr "" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_eu.po0000644000175000017500000024166511377161311023161 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-18 06:49+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Deskribapena" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Jardueraren izena" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Izena:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Jardueraren deskribapena" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Txostenak" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Jarduera hau txostenetan sartu" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Jarduera honen emaitzak erabiltzaileen txostenetan sartu" #: edit_act_code msgid "Code:" msgstr "Kodea:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Aukerazko kodea txostenen datu-basean saikapenak eta bilaketak egiteko." #: edit_act_reportActions msgid "Report user actions" msgstr "Erabiltzaileen ekintzak jaso" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Erregistratu erabiltzaileek egindako ekintza guztien xehetasunak" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Kontagailuak" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Denbora-kontagailua" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Erakutsi/ezkutatu denbora-kontagailua" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Saiakera-kontagailua" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Erakutsi/ezkutatu saiakera-kontagailua" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Puntuazio-kontagailua" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Erakutsi/ezkutatu puntuazio-kontagailua" #: edit_act_maxTime msgid "Max time:" msgstr "Gehienezko denbora:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Jarduera egiteko gehienezko denbora, segundutan, edo 0 denbora-mugarik ez " "ezartzeko." #: edit_act_countdown msgid "Countdown" msgstr "Atzerako kontaketa" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "Kontagailua balore handienetik hasten da, 0raino jaitsiz." #: edit_act_maxActions msgid "Max tries:" msgstr "Gehieneko saiakerak:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Baimendutako saiakeren gehieneko kopurua, edo 0 mugagabeak izateko" #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botoiak" #: edit_act_helpBtn msgid "Help" msgstr "Laguntza" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Erakutsi/ezkutatu laguntza-botoia" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Erakutsi erantzuna" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Erakutsi mezu hau:" #: edit_act_infoBtn msgid "Information" msgstr "Informazioa" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Erakutsi/ezkutatu informazio-botoia" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Erakutsi URL hau:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Exekutatu komandoa" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Informazio-botoiari sakatuta erakutsi beharreko web-gunearen helbidea" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Informazio-botoiari sakatuta exekutatuko den komando-lerroa" #: edit_act_mainWindow msgid "Main window:" msgstr "Leiho nagusia:" #: edit_act_gameWindow msgid "Game window:" msgstr "Jolas-leihoa:" #: edit_act_margin msgid "Margin:" msgstr "Marjina:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Ikusteko objektuen arteko espazio horizontala eta bertikala" #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Atzealdeko kolorea:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Aldatu atzealdeko kolorea" #: edit_gradient_startColor msgid "Start color:" msgstr "Hasierako kolorea:" #: edit_gradient_endColor msgid "End color:" msgstr "Amaierako kolorea:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Hasierako kolorearen aukeraketa" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Amaierako kolorearen aukeraketa" #: edit_gradient_cycles msgid "Cycles:" msgstr "Zikloak:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Gradientearen errepikapenak margotzeko azalearen gainean" #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientazioa:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Gradientearen orientazioa, gradutan neurtua horizontalarekiko" #: edit_act_gradient msgid "Gradient:" msgstr "Gradientea:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Erabili kolore-gradientea" #: edit_color_opacity msgid "Opacity" msgstr "Opakutasuna" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Kolorearen alfa kanalaren balorea (opakutasuna) zehazten du" #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradientea" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Berezko baloreak erabili" #: edit_act_image msgid "Image:" msgstr "Irudia:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Deskribapena" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Izena eta deskribapena" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Mosaikoan" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Irudiaren azalera osoa margotzen du, X eta Y ardatzen inguruan behar beste " "aldiz errepikatuz" #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Aurrebista:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Ertza" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Marraztu lerro bat ertzean leiho inguruan" #: edit_act_transparent msgid "Transparent" msgstr "Gardena" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "Leihoak atzeko aldea gardena du" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Zabalera" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altuera:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Objektuaren zabalera, pixeletan neurtua" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Objektuaren altuera, pixeletan neurtua" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Zentratuta" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "Objetktuak zentratuta egon behar du leiho nagusian" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Kokapen erabat horizontala" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Kokapen erabat bertikala" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Erabiltzailearen interfazea" #: edit_act_image_tooltip msgid "Select an image" msgstr "Aukeratu irudi bat" #: edit_act_text msgid "Text:" msgstr "Testua:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Objektu honen barruan erakutsi beharreko testua" #: edit_font_face msgid "Typeface:" msgstr "Mota:" #: edit_font_size msgid "Size:" msgstr "Tamaina:" #: edit_font_bold msgid "Bold" msgstr "Lodia" #: edit_font_italic msgid "Italic" msgstr "Etzana" #: edit_font_underline msgid "Underline" msgstr "Azpimarratu" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estiloa:" #: edit_cell_title msgid "Cell contents" msgstr "Gelaxkaren edukia" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Mezuak" #: edit_act_msg_initial msgid "Initial message:" msgstr "Hasierako mezua" #: edit_act_msg_final msgid "Final message:" msgstr "Amaierako mezua" #: edit_act_msg_prev msgid "Previous message:" msgstr "Aurreko mezua:" #: edit_act_msg_error msgid "Error message:" msgstr "Errore-mezua:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Jarduera hasten denean erakutsi beharreko mezua" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Jarduera bukatutakoan erakutsi beharreko mezua" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "" "Jarduera hainbat errorerekin bukatzen denean erakutsi beharreko mezua" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Jarduera hasi aurretik erakusten den mezua (jarduera-mota jakin batzuetan " "baino ez)" #: edit_align msgid "Align:" msgstr "Lerrokatu:" #: edit_act_textColor msgid "Text color:" msgstr "Testuaren kolorea:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Testua marrazteko erabilitako kolorea" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Itzalaren kolorea:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Testuaren itzala marrazteko erabilitako kolorea, baldin bada" #: edit_act_shadow msgid "Shadow" msgstr "Itzala" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Testua itzalarekin marraztu" #: edit_act_borderColor msgid "Border color:" msgstr "Ertzaren kolorea:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Gelaxkaren ertza marrazteko erabilitako kolorea" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Inaktibo-egoeraren kolorea" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Gelaxka desgaituta dagoenean erabilitako kolorea" #: edit_act_altColor msgid "Alternative color:" msgstr "Ordezko kolorea:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Gelaxken ordezko edukia erakusteko kolorea, behin erantzuna emandakoan" #: edit_cell_marked msgid "Marked" msgstr "Markatua" #: edit_cell_disabled msgid "Disabled" msgstr "Desgaituta" #: edit_cell_alt msgid "Alternative" msgstr "Ordezkoa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Barneko ertza:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Gelaxkaren eta testuaren ertzen arteko espazioa" #: edit_cell_borderWidth msgid "Border width:" msgstr "Ertzaren zabalera:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Ertza margotzeko erabilitako marraren lodiera" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Markatzailearen lodiera:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Ertza margotzeko erabilitako marraren lodiera, gelaxka markatuta edo " "aukeratuta dagoenean" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Aurreikusi \"ordezkoa\" egoeran" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Aurreikusi \"desgaituta\" egoeran" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Aurreikusi \"markatuta\" egoeran" #: edit_act_testAction msgid "Preview activity" msgstr "Jarduera aurreikusi" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Jarduera aurreikusi eta probatu" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Deskribapena" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Jardueraren izenburua eta deskribapena" #: edit_act_panels_options msgid "Options" msgstr "Aukerak" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Jardueraren aukerak" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Leihoa" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Jarduera-leihoaren itxura, tamaina eta kokapena" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Mezuak" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Jarduera-mezuen edukia" #: edit_act_panels_panel msgid "Panel" msgstr "Panela" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Panelaren edukia" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estiloa" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Aukeratu gelaxken kolorea, mota eta tamaina" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estiloa:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Ekidin irudia eta testua gainjartzea" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Saiatu ekiditen irudia eta testua gainjartzea" #: edit_media_exists_1 msgid "The file" msgstr "Fitxategia" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "dagoeneko badago media-biltegian!" #: edit_act_shaper msgid "Shaper:" msgstr "Piezak:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Errorea piezan:" #: edit_act_num_cols msgid "Columns:" msgstr "Zutabeak:" #: edit_act_num_rows msgid "Rows:" msgstr "Lerroak:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Hortzen altuera:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Hortzen zabalera:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Ausazko banaketa" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Piezen ezaugarriak" #: edit_act_panels_text msgid "Text" msgstr "Testua" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Jardueraren testua" #: action_saveFile_caption msgid "Save..." msgstr "Gorde..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "HH" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Gorde oraingo proiektua" #: action_docTree_caption msgid "Document tree..." msgstr "Dokumentuaren zuhaitza..." #: action_docTree_keys msgid "T*" msgstr "I*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Erakutsi proiektuaren dokumentua zuhaitz moduan" #: edit_docTree_title msgid "Document tree" msgstr "Dokumentuaren zuhaitza" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Noren erreferentzia:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Kontuz:

Proiektu hau beste " "batzuekin lotuta dago.
Estekak arakatu eta lotutako fitxategi guztiak " "bilatu nahi al dituzu?

(Ez da gomendagarria BAI erantzutea Clic 3.0 " "jarduerak inportatzean)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Mota:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Ezezaguna" #: edit_mc_type_sound msgid "Play sound" msgstr "Soinua erreproduzitu" #: edit_mc_type_video msgid "Play video" msgstr "Bideoa erreproduzitu" #: edit_mc_type_midi msgid "Play MIDI" msgstr "MIDI erreproduzitu" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Audio CD-a erreproduzitu" #: edit_mc_type_record msgid "Record sound" msgstr "Grabatu soinua" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Grabatutako soinua erreproduzitu" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Joan jarduerara" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Joan sekuentziara" #: edit_mc_type_run_external msgid "Run program" msgstr "Programa abiarazi" #: edit_mc_type_url msgid "Show URL" msgstr "Erakutsi URLa" #: edit_mc_type_exit msgid "End" msgstr "Amaitu" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Itzuli" #: edit_mc_level msgid "Priority level:" msgstr "Lehentasun-maila:" #: edit_mc_file msgid "File:" msgstr "Fitxategia:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parametroak:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Hemendik:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Hona:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Geh. iraupena:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Grabazio-zinta:" #: edit_mc_stretch msgid "Stretch size" msgstr "Sartzen ez bada, konprimitu" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Kokapena:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Hemendik:" #: edit_mc_location_from_box msgid "Cell" msgstr "Gelaxka" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Leihoa" #: edit_mc_location_from_frame msgid "Frame" msgstr "Markoa" #: edit_mc_loop msgid "Loop playback" msgstr "Errepikatu etengabe" #: edit_mc_autostart msgid "Auto start" msgstr "Hasiera automatikoa" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Sagua harrapatu" #: edit_mc_title msgid "Multimedia and active content" msgstr "Eduki aktiboa eta multimedia" #: edit_mc_label msgid "Active content:" msgstr "Eduki aktiboa:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Aukeratu objektu multimedia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Media-biltegia" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Gelaxkan zentratuta" #: edit_mc_pos_window msgid "Centered over window" msgstr "Leihoan zentratuta" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Zehaztu kokapena:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Zuhaitzaren egitura edo datuak ez dira zuzenak!" #: edit_act_panels_controls msgid "Controls" msgstr "Kontrolak" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Botoi eta kontagailuen ezarpenak" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Mota:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Panelen banaketa:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "A eta B panelen kokapen erlatiboa" #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Alderantzizko erresoluzioa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "Jarduera bukatutzat emango da \"B\"ri ezarritako elementu guztiak egindakoan." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Erakutsi gezi guztiak" #: edit_act_alt msgid "Alternative content:" msgstr "Ordezko edukia:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Burututako edo ezarri gabeko gelaxketan erakutsitako edukia" #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Editatu ordezko edukia" #: edit_act_grid msgid "Grid" msgstr "Taula" #: edit_act_grid_A msgid "Grid A" msgstr "A taula" #: edit_act_grid_B msgid "Grid B" msgstr "B taula" #: edit_act_grid_layout msgid "Layout" msgstr "Diseinua" #: edit_act_grid_relationship msgid "Relationship" msgstr "Erlazioa" #: edit_seq_activity_header msgid "activity" msgstr "jarduera" #: edit_seq_tag_header msgid "tag" msgstr "etiketa" #: edit_seq_jump_header msgid "jump to" msgstr "jauzi hona:" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Jarduera:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etiketa:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Deskribapena:" #: edit_seq_auto msgid "Move on automatically" msgstr "Aurrera joan automatikoki" #: edit_seq_delay msgid "Delay:" msgstr "Denbora-tartea:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Joan aurrera" #: edit_seq_action_back msgid "Go bak" msgstr "Joan atzera" #: edit_seq_action_jump msgid "Jump to..." msgstr "Jauzi hona..." #: edit_seq_action_stop msgid "Stop" msgstr "Gelditu" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Itzuli" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Itxi JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Aurrera gezia:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Atzera gezia:" #: edit_seq_action msgid "Action:" msgstr "Ekintza:" #: edit_seq_button_enabled msgid "Show button" msgstr "Erakutsi botoia" #: edit_seq_project msgid "JClic Project:" msgstr "JClic Proiektua:" #: edit_act_absolute msgid "Absolute position" msgstr "Kokapen absolutua" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "Objektua adierazitako X eta Y koordenadetan ezarriko da" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Kokapena:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Sekuentzia-elementu berria..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Sartu elementu berria jarduera-sekuentzian" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Mesedez, aukeratu jarduera bat sekuentzia-elementu berrirako." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "Jarduerarik gabe ezin da sekuentzia-elementu berririk sortu!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Proiketu honek ez du jarduerarik! Ezin, beraz, elementu-sekuentziarik sortu " "hutsik dagoen proiektuan." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Jauziaren helmuga:" #: edit_seq_jump_title msgid "Jump target" msgstr "Jauziaren helmuga" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Gaineratu jarduera proiektuari" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Jarduera-mota:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Izena:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Mesedez, aukeratu sortu beharreko jarduera-mota eta eman izena:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Jarduera-mota bat aukeratu behar duzu!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Jarduerari izena eman behar diozu!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Ezin da jarduerarik sortu!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Java mota:" #: edit_text_act_format msgid "Format" msgstr "Formatua" #: edit_text_act_answer msgid "Answer" msgstr "Erantzuna" #: edit_text_act_popup msgid "Pop up" msgstr "Pop up" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Balio duten erantzunak:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Zerrrendako elementu berria gaineratu" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Editatu aukeratutako zerrendako elementua" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Ezabatu aukeratutako zerrendako elementua" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Eraman gora" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Eraman behera" #: edit_list_newValue msgid "New text:" msgstr "Testu berria:" #: edit_list_addElement msgid "Add new list element" msgstr "Gaineratu zerrendako elementu berria" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Aldatu aukeratutako testua" #: edit_text_act_target msgid "Target" msgstr "Helburua" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Geh. iraupena:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Erantzunaren gehienezko karaktere-kopurua." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Bete-lanetarako karakterea" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Zuriunea adierazteko erabilitako karaktera" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Hasierako iraupena:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Jardueraren hasieran erakutsiko diren bete-lanetarako karaktere-kopurua." #: edit_text_act_iniText msgid "Initial text:" msgstr "Hasierako testua:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Jarduera hasieran zuriunean erakutsitako testua." #: edit_text_act_list msgid "Show a list of options:" msgstr "Erakutsi aukera-zerrenda:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" "Erakutsi aukera-zerrenda. Hortik aukeratu beharko du bat erabiltzaileak." #: edit_text_act_check_title msgid "Correction options" msgstr "Zuzenketarako aukerak" #: edit_text_act_popup_no msgid "No pop up" msgstr "Pop up-ik ez" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Pop up-ak automatikoki" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Errorerako pop up-a" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Pop up-a F1ekin" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Mota:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Itxaroteko pop up-a:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Geh. denbora:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Soinua bakarrik" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "Testu zati bat aukeratu behar duzu helburu testu berria sortzeko!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "Helburu testuak ezin du paragrafo-jauzirik eta tabuladorerik izan." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Ezezagunak ezin dira pilatu" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Ezezagunek ezin dute gelaxkarik izan!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Paperaren kolorea:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Editatu dokumentuaren estiloak..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Hasierako estiloa:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tabuladorea:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Tabuladore-marken arteko espazioak:" #: edit_text_act_colors msgid "Colors:" msgstr "Koloreak:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Ezezagunen koloreak:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Errorea koloreetan:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Aurrebista:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Testu estandarra" #: edit_text_act_styleSample_target msgid "target" msgstr "helburua" #: edit_text_act_styleSample_error msgid "error" msgstr "errorea" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "testu estandarra" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "testu estandarra." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Kontuz: Ekintza honek une honetan aukeratutako helburua kenduko du. Aurrera " "egin nahi al duzu?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Aurreko pantaila..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Ez erakutsi testurik jarduera hasi arte" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Erakutsi ariketaren testu osoa" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Erakutsi testu hau:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Geh. denbora:" #: edit_text_act_edit_target msgid "Target..." msgstr "Helburua..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Erakutsi zuzenketarako botoia" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Botoiaren testua:" #: edit_text_act_checkCase msgid "Match case" msgstr "Larria/xeheak" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Azentuak eta karaktere bereziak kontuan izan" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Kontuan hartu puntuazio-markak" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Baimendu errepikatutako espazioak" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Irizpideak" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Hurrengo ezezagunera jauzi egin automatikoki" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Erantzun zuzenarren ondoren bakarrik mugitu" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Adierazi erroreak letraz letra" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Analisi-algoritmoaren parametroak:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Pausoak:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Arakatu eremua:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Egiaztatu" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Erantzunen azterketa" #: edit_text_act_check_bt msgid "Correction..." msgstr "Zuzenketa..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Zuzenketa-botoia" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progresioa" #: edit_text_act_typeBtn msgid "Type..." msgstr "Mota..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Paragrafoen ordena" #: edit_text_act_orderWords msgid "Order words" msgstr "Hitzen ordena" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Hitzak nahastu paragrafo artean" #: edit_text_act_type_title msgid "Activity type" msgstr "Jarduera-mota" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Une honetan definitutako ezezagun guztiak ezabatuko ditu ekintza honek. Hori " "egin nahi al duzu?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identifikatu hitzak" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identifikatu karaktereak" #: edit_media_change_name msgid "Change name..." msgstr "Aldatu izena..." #: edit_media_change_file msgid "Change file..." msgstr "Aldatu fitxategia..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Gorde ZIP fitxategian" #: edit_media_type msgid "Media type:" msgstr "Media-mota:" #: edit_media_size msgid "File size:" msgstr "Fitxategiaren tamaina:" #: edit_media_show_type msgid "Files of type:" msgstr "Mota honetako fitxategiak:" #: edit_media_preview msgid "Preview media" msgstr "Aurreikusi media" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Aurreikusi media-baliabidea" #: edit_media_rename msgid "Change resource name" msgstr "Aldatu baliabidearen izena" #: edit_media_rename_title msgid "Rename" msgstr "Izena aldatu" #: edit_media_rename_prompt msgid "New name:" msgstr "Izen berria:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Baliabide-izen okerra!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Bada izen hori duen beste baliabide bat! Baliabide bakoitzak izen ezberdin " "bat behar du." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Fitxategi okerra!" #: err_media_chfile_different msgid "File must be of same type" msgstr "Fitxategiak mota berekoa izan behar du" #: edit_media_font_error msgid "Unable to load font!" msgstr "Ezin izan da letra-mota kargatu!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Fitxategia gorde (ZIPetik atera)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Baliabidearen edukia fitxategitik eguneratu" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Hau ez da \"benetako\" fitxategi bat, ZIP edukiontzi batean kokatutako " "objektu bat baizik. Funtzio hau erabiltzeko, izen bereko fitxategiak ZIP " "fitxategia dagoen direktorio berean egon behar du." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Jarduerak" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Sekuentziak" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Media-biltegia" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" "Proiektuan erabilitako irudiak eta bestelako media fitxategiak kudeatu" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Proiektu-jarduerak sortu eta editatu" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Jarduera-sekuentziak sortu eta editatu" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Izenburua:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Proiektuaren izenburua" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Proiektua" #: edit_project_tooltip msgid "Edit project properties" msgstr "Editatu proiektuaren ezaugarriak" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Deskribapena:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Proiektuaren deskribapen orokorra" #: edit_project_area msgid "Areas:" msgstr "Atalak:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Proiektuaren kurrikulu-atalak" #: edit_project_level msgid "Levels:" msgstr "Mailak:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Proiektuaren hezkuntza-mailak" #: edit_project_descriptors msgid "Descriptors:" msgstr "Deskribatzaileak:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Proiektuaren deskribatzaileak (komaz banatuta)" #: edit_project_languages msgid "Languages:" msgstr "Hizkuntzak:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Proiektuan erabilitako hizkuntzak" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Aldatu aukeratutako hizkuntza" #: edit_project_languages_add msgid "Add language" msgstr "Gaineratu hizkuntza" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "ISO-639 hizkuntza-kodeak:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Egileak:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Proiektua sortzen ari direnak" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Izena:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "e-posta:" #: edit_project_author_rol msgid "Rol:" msgstr "Rola:" #: edit_project_author_organization msgid "Organization:" msgstr "Erakundea:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Iruzkinak:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL-a:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Egilearen izena (derrigorrezkoa)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Egilearen e-posta (aukerakoa)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Pertsonen rolak proiektuan: egilea, laguntzailea, marrazkilaria, soinuak... " "(aukerakoa)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Eskola, unibertsitatea, elkartea... (aukerakoa)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Web-orri pertsonala (aukerakoa)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Bestelako informaziorako eremua (aukerakoa)" #: edit_project_author_info msgid "Author info:" msgstr "Egilearen informazioa:" #: edit_project_author_add msgid "Add author to list" msgstr "Gaineratu egilea zerrendara" #: edit_project_author_edit msgid "Edit author info" msgstr "Editatu egilearen informazioa" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Izena:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Eskolaren izena" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "e-posta:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Eskolaren e-posta helbidea" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL-a:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Eskolaren web-gunea" #: edit_project_org_address msgid "Address:" msgstr "Helbidea" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Eskolaren posta-helbidea" #: edit_project_org_pc msgid "PC:" msgstr "PC:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Posta-kodea" #: edit_project_org_city msgid "City:" msgstr "Herria:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Eskola dagoen hiria" #: edit_project_org_country msgid "Country:" msgstr "Herrialdea/Estatua:" #: edit_project_org_state msgid "State:" msgstr "Herrialdea:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Iruzkinak:" #: edit_project_org msgid "School/s:" msgstr "Eskola/k:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Proiektuan ari den eskola edota beste erakundea" #: edit_project_org_info msgid "Organization info:" msgstr "Erakundearen informazioa:" #: edit_project_org_add msgid "Add organization" msgstr "Gaineratu erakundea" #: edit_project_org_edit msgid "Edit organization data" msgstr "Editatu erakundearen datuak" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Estatua" #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Herrialdea" #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Bestelako informazioa..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Berrikusketaren data" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Egileak:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Berrikusketaren egileak" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Deskribapena:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Egindako aldaketen deskribapen laburra" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Iruzkinak:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Bestelako informazio garrantzitsua" #: edit_project_rev msgid "Revisions:" msgstr "Berrikusketak:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Proiektuari egindako aldaketa nagusien historiala" #: edit_project_rev_add msgid "Add revision record" msgstr "Berrikusketa-erregistroa gaineratu" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Berrikusketa-erregistroa editatu" #: edit_project_rev_info msgid "Revision data" msgstr "Berrikusketa-data" #: edit_media_objects msgid "objects" msgstr "objektuak" #: edit_media_object msgid "object" msgstr "objektua" #: edit_evsounds_start msgid "Start of activity:" msgstr "Jardueraren hasiera:" #: edit_evsounds_click msgid "Click on object:" msgstr "Sakatu objetktuari:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Okerreko ekintza:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Ekintza zuzena:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Hainbat okerrekin bukatutako jarduera:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Egoki bukatutako jarduera:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Errorea: deskribapenerako eremua ezin da hutsik utzi!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Editatu ekintzaren soinuak" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Ekintzaren soinuak:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Ezarri soinu zehatzak JClic ekintza bakoitzerako" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Ekintzaren soinuak:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Ezarri soinu zehatzak JClic ekintza bakoitzerako" #: edit_evsounds_default msgid "default sound" msgstr "berezko soinua" #: edit_evsounds_disabled msgid "disabled" msgstr "ezgaituta" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Gaitu edo ezgaitu ekintza honetarako soinua" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Sakatu ekintza honetarako soinua aukeratzeko, edo markatu gabe utzi berezko " "soinua erabiltzeko" #: action_newProject_caption msgid "New project..." msgstr "Proiektu berria..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Sortu JClic proiektu berria" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Hemendik:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Operatzailearen gutxieneko balorea" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Hona:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Operatzailearen gehienezko balorea" #: edit_arith_op_with msgid "With:" msgstr "Honekin:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Markatuta, operatzaileak balore hau ere izan dezake" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Zerrendako bat:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Operatzaileak izan ditzakeen baloreen zerrenda" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Hamarrenak:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Operatzailearen hamarren-kopurua" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (osoa)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#.#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#.##" #: edit_arith_firstOp msgid "First operand" msgstr "Lehen operatzailea" #: edit_arith_secondOp msgid "Second operand" msgstr "Bigarren operatzailea" #: edit_arith_title msgid "Arith2 for JClic" msgstr "JClic-erako Arith2" #: edit_arith_operations msgid "Operations:" msgstr "Eragiketak:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Aukeratu egin beharreko eragiketa-mota" #: edit_arith_operations_plus msgid "Plus" msgstr "Plus" #: edit_arith_operations_minus msgid "Minus" msgstr "Minus" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Biderkatu" #: edit_arith_operations_divide msgid "Divide" msgstr "Zatitu" #: edit_arith_unknown msgid "Unknown:" msgstr "Ezezaguna:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Aukeratu zein elementu izango den ezezaguna" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "Emaitza da ezezaguna" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "Bigarren operatzailea da ezezaguna" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "Lehen operatzailea da ezezaguna" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "Eragiketa da ezezaguna" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Emaitza espresioaren hasieran idatzi" #: edit_arith_result msgid "Result:" msgstr "Emaitza:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "\"Eraman\" gabe" #: edit_arith_result_random msgid "Random" msgstr "Ausazkoa" #: edit_arith_result_asc msgid "Ascending" msgstr "Gorantz" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordenatu emaitzaren arabera:" #: edit_arith_result_desc msgid "Descending" msgstr "Beherantz" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Ekidin bikoizpenak" #: edit_arith_cond msgid "Conditions:" msgstr "Baldintzak:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Berdin da" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "Lehenengo operatzaileak bigarrenak baino handiagoa izan behar du" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "Lehenengo operatzaileak bigarrenak baino txikiagoa izan behar du" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Bestelako baldintzak" #: edit_autocp msgid "Automatic content generator:" msgstr "Eduki-sortzaile automatikoa:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "Aukeratu jarduera honetarako eduki-sortzaile automatikoa." #: edit_autocp_block msgid "Content generator" msgstr "Eduki-sortzailea" #: edit_autocp_btn msgid "Settings..." msgstr "Ezarpenak..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Eduki-sortzailearen ezarpenak ezarri" #: edit_data msgid "Edit data" msgstr "Editatu datua" #: edit_act msgid "Activity edit" msgstr "Editatu jarduera" #: edit_acp msgid "Content provider edit" msgstr "Eduki-sortzailearen edizioa" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Errorea eduki-sortzaile automatikoa sortzean!" #: edit_project_author_group msgid "Creation" msgstr "Sorrera" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Deskribapena" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Erabiltzailearen interfazea" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Deskribapena:" #: m_Edit msgid "Edit" msgstr "Editatu" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "A*" #: edit_act_newActivity msgid "New activity..." msgstr "Jarduera berria..." #: edit_act_newActivity_keys msgid "A*" msgstr "J*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Txertatu" #: m_Insert_Mnemonic msgid "I" msgstr "T*" #: m_View msgid "View" msgstr "Ikusi" #: m_View_Mnemonic msgid "V" msgstr "I" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Proiektua" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Editatu proiektuaren ezarpenak" #: action_editMedia_caption msgid "Media" msgstr "Media" #: action_editMedia_keys msgid "MM" msgstr "BB" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Editatu proiektuaren multimedia-biltegia" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Jarduerak" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "JJ" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Jarduerak editatu" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Sekuentziak" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Jarduera-sekuentziak editatu" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "" "Oraingo proiektua aldatu egin da. Gorde egin nahi al dituzu aldaketak?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Deskribatzaileak" #: edit_media_new msgid "New media object..." msgstr "Media-objektu berria..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Gaineratu irudi edo multimedia-objektu berria biltegian" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Atalase-puntuazioa:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "Egin hau puntuazio orokorra honen berdina edo handiagoa denean..." #: edit_seq_time msgid "Time threshold:" msgstr "Atalase-denbora:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Bide honi segitzeko, jarduerak ondorengo denbora-tartea baino lehen egin " "behar izan dira:" #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Egin hau puntuazio orokorra hau baino txikiagoa denean..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Segitu bide honi, jardueretan emandako denbora hau baino luzeagoa bada:" #: edit_seq_condJump msgid "Conditional jumps" msgstr "Baldintzatutako jauziak" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "Baldintza zehatzetan egin behar diren jauzi bereziak ezarri" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Ezarri goragoko maila baterako jauzia egiteko baldintzak" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Beherako jauzia:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Gorako jauzia:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Ezarri beherako maila baterako jauzia egiteko baldintzak" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "\"Hurrengoa\" botoiari ezarritako ekintza" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "\"Aurrekoa\" botoiari ezarritako ekintza" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Jauziaren helmuga adierazi" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Egin beharreko ekintza" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Sekuentzia-elementu honi egokitutako jarduera" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Sekuentziako elementu honi erreferentzia egiteko erabilitako etiketa " "(aukerako eremua)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Sekuentzia-elementuaren deskribapena (aukerako eremua)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Jardueretan aurrera egiteko botoia gaitu edo ezgaitu" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Mugitu automatikoki jarduera bukatzean" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Zenbat segundu itxaron behar da automatikoki mugitu aurretik" #: edit_color_dlgTitle msgid "Select color" msgstr "Aukeratu kolorea" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Mesedez, itxaron baliabidea berrizendatu arte" #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Zabalera:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Gelaxkaren zabalera (pixeletan)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Altuera:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Gelaxkaren altuera (pixeletan)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Ezkutuko hitzak:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Panelean ezarritako ezkutuko hitzen zerrenda" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Erabili B panela" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "Bigarren paneleko edukian hitzak dauden daudenean erakutsiko dira" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Aukeratu panelean erabili beharreko pieza-mota" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Panelaren zutabe-kopurua" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Panelaren lerro-kopurua" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Banatzaile gardenak" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Erakutsi banatzaileak (laukitxo beltzak) zulo garden gisa" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Nahasketak\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Piezak zenbat aldiz nahastuko diren" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Kopiatu ezaugarriak hona..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Ezaugarriak" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplikatu honi:" #: edit_act_copy_style_main msgid "Main window" msgstr "Leiho nagusia" #: edit_act_copy_style_play msgid "Play window" msgstr "Jolas-leihoa" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Aldatu beharreko jarduerak:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Kopiatu ezaugarriak" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Kopiatu oraingo jardueraren ezaugarriak beste jarduera batzuei" #: edit_new_project_name msgid "Project name:" msgstr "Proiektuaren izena:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Proiektua deskribatzeko izen laburra" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Fitxategiaren izena:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Proiektu- fitxategiaren izena, luzapenik gabe" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Karpeta:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Proiektua gordetzeko karpetaren izena" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Arakatu..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Sortu JClic proiektu berria" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Errorea: Proiektu, fitxategi eta direktorioek izen onargarria izan behar " "dute." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Karpeta honek badu beste Clic 3.0 edo JClic proiektu bat dagoeneko. Ez " "nahasteko, hobe da proiektu bakoitza aparteko karpeta batean gordetzea, " "baina ez da derrigorrezkoa. Benetan gorde nahi al duzu proiektu berria " "karpeta honetan?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Errorea: ezin da sortu adierazitako karpeta!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Errorea: Ez da jarduerarik aukeratu! Funtzio hau erabiltzeko zerrendatik " "jardueraren bat aukeratu behar duzu aipatutako ezaugarriak horri/horiei " "aplikatzeko." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Kopiatu ezaugarriak hona:" #: edit_act_copy_margin msgid "Margin" msgstr "Marjina" #: edit_act_copy_bgColor msgid "Background color" msgstr "Atzeko aldearen kolorea" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradientea" #: edit_act_copy_bgImage msgid "Background image" msgstr "Atzeko aldearen irudia" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Ertza" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Atzeko alde gardena" #: edit_act_copy_position msgid "Position" msgstr "Kokapena" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Mezuak" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Hasierako mezuaren estiloa" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Bukaerako mezuaren estiloa" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Errore-mezuaren estiloa" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Txostenak" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Txostenetan jarduera sartu" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Ekintzak erregistratu" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Erabiltzailearen interfazea" #: edit_act_copy_skin msgid "Skin" msgstr "Itxura" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Ekintza-soinuak" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Kontagailuak" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Denbora-kontagailua" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Gehinezko denbora" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Saiakera-kontagailua" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Gehi. saiakera-kopurua" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Puntuazio-kontagailua" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Zenbat aldiz nahastu behar den" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botoiak" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Laguntza-botoia" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Informazio-botoia" #: edit_act_copy_grids msgid "Grids" msgstr "Taulak" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "A taularen estiloa" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "B taularen estiloa" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Testu-panelen estiloa" #: edit_act_copy_text msgid "Text activities" msgstr "Testu-jarduerak" #: edit_act_copy_fontFace msgid "Font face" msgstr "Letra-tipoaren izena" #: edit_act_copy_fontSize msgid "Font size" msgstr "Letra-tamaina" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Letra-tipoaren estiloa" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Testu nagusiaren kolorea" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Aukeratu zein JClic proiektutatik inportatu behar diren jarduerak" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Errore-kolorea" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Tabuladoreen arteko espazioa" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Aurreko mezuaren estiloa" #: edit_act_changeType msgid "Change activity type" msgstr "Aldatu jarduera-mota" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Jarduera egiteko erabiliko den motaren izen osoa (erabiltzaile aurreratuak " "bakarrik!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Bestelakoa..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Erabiltzaile aurreratuek erregistratu gabeko beste JClic jarduera-mota " "batzuk ere sor ditzakete. Idatzi azpian motaren izen osoa, aurretik " "paketearena duela (adibidez, \"com.acme.activities.FooActivity\"). Jarduera-" "motek edu.xtec.jclic.Activity zabaldu behar dute eta JVM " "bilatzailearekin eskuratzeko moduan egon behar dute." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Jardueraren izena:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Jarduera bakoitzak izen bat izan behar du proiektuan" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Adi: Mota " "aldaketak editatzen ari den jardueraren ezaugarri eta objektuak galtzea ekar " "dezake. Kontu handiz erabili funtzio hau!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "JClic kodearen kokapena:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "JClic programaren fitxategiak dauden karpetara zuzenduko duen URL-a" #: applet_prev_text msgid "HTML code before:" msgstr "Aurreko HTML kodea:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Aplikazioaren aurretik ipini beharreko testua edo HTML kodea" #: applet_post_text msgid "HTML code after:" msgstr "Ondorengo HTML kodea:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Aplikazioaren ondoren ipini beharreko testua edo HTML kodea" #: applet_size msgid "Applet size:" msgstr "Aplikazioaren tamaina:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "" "Applet-aren zabalera eta altuera, balore absolutuetan edo ehunekoetan." #: applet_page_title msgid "Page title:" msgstr "Orriaren izenburua:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Nabigatzailearen leihoaren goiko aldean erakutsi beharreko testua" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "\"%s\" web-orria egoki sortu da." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Orain nabigatzailearekin irekitzea nahi al duzu?" #: action_createHTML_caption msgid "Create web page..." msgstr "Sortu web-orria..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Sortu HTML orri bat JClic aplikazioarekin" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Sortu HTML orri bat oraingo proiektua duen aplikazioarekin" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Fitxategi-izena:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Sortu beharreko HTML fitxategiaren izena" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Aplikazioa" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Web-orria sortzeko erabilitako berezko baloreak" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Atzealdeko kolorea:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "HTML orriaren atzealdeko kolorea" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Erdian" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Applet-a erdian ipini horizontalean" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Applet-aren zabalera (balore absolutuan edo ehunekoetan)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Applet-aren altuera (balore absolutuan edo ehunekoetan)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Irtetean, joan hona:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "JClic-etik irtetean zein URL-tara zuzendu behar den nabigazioa" #: applet_infoFrame msgid "Info frame name:" msgstr "Informazio-markoaren izena:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "\"Informazioa\" botoiko edukia erakusteko markoaren izena" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Proiektuaren instalatzailea sortu..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Proiektuaren instalaziorako fitxategia sortu JClic player-erako" #: installer_caption msgid "Edit project installer script" msgstr "Editatu proiektuaren instalazio-script-a" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Izenburua:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Instalazio-laguntzailean erakutsiko den proiektuaren izenburua" #: installer_authors msgid "Autors:" msgstr "Egileak:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Proiektuaren egilea/k (izen laburra)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Karpeta:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Instalaziorako laguntzaileak aholkatuko duen karpetaren izena" #: installer_files msgid "Files to be copied:" msgstr "Kopiatu behareko fitxategiak:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Instalatzaileak kopiatu beharreko fitxategiak" #: installer_files_available msgid "Available files" msgstr "Eskura dauden fitxategiak" #: installer_files_selected msgid "Selected files" msgstr "Aukeratutako fitxategiak" #: installer_files_add msgid ">> add >>" msgstr ">>gaineratu>>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Gaineratu aukeratutako fitxategia zerrendara" #: installer_files_remove msgid "<< remove <<" msgstr "<\n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Beschreibung" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Name der Übung" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Name:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Beschreibung der Übung" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Berichte" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Aktuelle Übung in Bericht aufnehmen" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Ergebnis dieser Übung in Userbericht aufnehmen" #: edit_act_code msgid "Code:" msgstr "Code:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "Optionaler Code zum Gruppieren und Suchen in der Berichtdatenbank." #: edit_act_reportActions msgid "Report user actions" msgstr "Bericht über Aktionen der User" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Details aller User-Aktionen aufzeichnen" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Zähler" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Zeituhr:" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Zeituhr anzeigen/verbergen" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Versuche zählen" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Zähler anzeigen/verbergen" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Ergebniszähler" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Ergebniszähler anzeigen/verbergen" #: edit_act_maxTime msgid "Max time:" msgstr "Zeitlimit:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Zeitlimit zum Lösen der Aufgabe in Sekunden oder 0 für unbegrenzte " "Übungsdauer eingeben." #: edit_act_countdown msgid "Countdown" msgstr "Countdown" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "Zähler zählt vom Maximalwert auf Null herunter" #: edit_act_maxActions msgid "Max tries:" msgstr "Höchstanzahl zulässiger Versuche:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" "Höchstanzahl von Versuchen oder 0 für unbegrenzte Anzahl von Versuchen " "eingeben" #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Schaltflächen" #: edit_act_helpBtn msgid "Help" msgstr "Hilfe" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Hilfetaste anzeigen/verbergen" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Lösung anzeigen" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Diese Nachricht anzeigen:" #: edit_act_infoBtn msgid "Information" msgstr "Information" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Info-Taste anzeigen/verbergen" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Folgenden URL anzeigen:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Folgenden Befehl ausführen:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "Bei Klick auf Info-Taste wird diese Website angezeigt" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Bei Klick auf Info-Taste Befehl ausführen." #: edit_act_mainWindow msgid "Main window:" msgstr "Hauptfenster:" #: edit_act_gameWindow msgid "Game window:" msgstr "Spielfenster:" #: edit_act_margin msgid "Margin:" msgstr "Rahmen:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Horizontaler und vertikaler Abstand zwischen angezeigten Objekten." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Hintergrundfarbe:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Hintergrundfarbe ändern." #: edit_gradient_startColor msgid "Start color:" msgstr "Startfarbe:" #: edit_gradient_endColor msgid "End color:" msgstr "Endfarbe :" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Auswahl der Startfarbe" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Auswahl der Endfarbe" #: edit_gradient_cycles msgid "Cycles:" msgstr "Zyklen:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Anzahl der Wiederholungen des Farbverlaufs auf der Arbeitsfläche" #: edit_gradient_orientation msgid "Orientation:" msgstr "Ausrichtung:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Winkel des Farbverlaufs über der Horizontalen" #: edit_act_gradient msgid "Gradient:" msgstr "Farbverlauf:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Farbverlauf anwenden" #: edit_color_opacity msgid "Opacity" msgstr "Transparenz" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Wert für transparente alpha-Farbe:." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Farbverlauf" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Standardeinstellungen verwenden (Null Gradient)" #: edit_act_image msgid "Image:" msgstr "Grafik:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Beschreibung" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Name und Beschreibung" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Kacheln" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Gesamte Oberfläche mit Grafik kacheln, die sich entlang der XY-Achse so oft " "wie benötigt wiederholt." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Vorschau:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Rahmen" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Linie als Fensterrahmen" #: edit_act_transparent msgid "Transparent" msgstr "Transparent" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "Fenster mit transparentem Hintergrund" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Breite:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Höhe:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Breite des Objekts in Pixel" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Objekthöhe in Pixel" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Zentriert" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "Objekt wird oberhalb des Hauptfensters zentriert" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Absolute horizontale Position" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Absolute vertikale Position" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Benutzeroberfläche" #: edit_act_image_tooltip msgid "Select an image" msgstr "Grafik auswählen" #: edit_act_text msgid "Text:" msgstr "Text:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Angezeigter Text innerhalb des Objekts" #: edit_font_face msgid "Typeface:" msgstr "Schriftart:" #: edit_font_size msgid "Size:" msgstr "Schritgröße:" #: edit_font_bold msgid "Bold" msgstr "Fett" #: edit_font_italic msgid "Italic" msgstr "Kursiv" #: edit_font_underline msgid "Underline" msgstr "Unterstrich" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Stil:" #: edit_cell_title msgid "Cell contents" msgstr "Zellinhalt" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Nachrichten" #: edit_act_msg_initial msgid "Initial message:" msgstr "Nachricht am Beginn:" #: edit_act_msg_final msgid "Final message:" msgstr "Nachricht am Ende:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Vorhergehende Nachricht:" #: edit_act_msg_error msgid "Error message:" msgstr "Fehlermeldung:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Angezeigte Nachricht beim Starten der Übung" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Angezeigte Nachricht am Ende der Übung" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Angezeigter Text, wenn Übung fehlerhaft beendet wurde" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Nachricht, die vor dem Starten der Übung angezeigt wird (nur bei einigen " "Übungsvarianten)" #: edit_align msgid "Align:" msgstr "Ausrichtung:" #: edit_act_textColor msgid "Text color:" msgstr "Textfarbe:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Gewünschte Textfarbe" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Farbe des Schattens:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Farbe für Textschatten, wenn verfügbar" #: edit_act_shadow msgid "Shadow" msgstr "Schatten" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Schrift mit Schatten versehen" #: edit_act_borderColor msgid "Border color:" msgstr "Rahmenfarbe:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Farbe des Zellrahmens" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Farbe für Inaktivität:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Farbe für deaktivierte Zellen" #: edit_act_altColor msgid "Alternative color:" msgstr "Alternative Farbe:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "Farbe der alternativen Inhalte in bearbeiteten Zellen" #: edit_cell_marked msgid "Marked" msgstr "Markiert" #: edit_cell_disabled msgid "Disabled" msgstr "Deaktiviert" #: edit_cell_alt msgid "Alternative" msgstr "Alternative" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Innerer Rahmen:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Abstand zwischen Zellrand und Text." #: edit_cell_borderWidth msgid "Border width:" msgstr "Rahmenbreite:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Breite für Standardrand" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Breite des Textmarkers:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "Strichbreite des Rahmens wenn die Zelle markiert der ausgewählt ist." #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Vorschau: alternative Ansicht" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Vorschau: deaktiviert" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Vorschau: markiert" #: edit_act_testAction msgid "Preview activity" msgstr "Vorherige Übung" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Übung in der Vorschau testen" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Beschreibung" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Titel und Beschreibung der Übung" #: edit_act_panels_options msgid "Options" msgstr "Optionen" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Übungsoptionen" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Fenster" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Erscheinungsbild, Größe und Position des Übungsfensters" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Nachrichten" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Inhalt der Nachrichten" #: edit_act_panels_panel msgid "Panel" msgstr "Tafel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Inhalt der Tafel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Stil" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Farbe, Schriftart und Schriftgröße der Zelle einstellen" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Stil:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Text darf Bild nicht überlagern" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Versuchen Sie zu vermeiden, dass der Text die Grafik überlagert" #: edit_media_exists_1 msgid "The file" msgstr "Datei" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "bereits in der Mediathek vorhanden" #: edit_act_shaper msgid "Shaper:" msgstr "Formengenerator:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Fehler bei Formauswahl:" #: edit_act_num_cols msgid "Columns:" msgstr "Spalten:" #: edit_act_num_rows msgid "Rows:" msgstr "Zeilen:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Zahnhöhe:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Zahnbreite:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Zufallsprinzip" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Formeigenschaften" #: edit_act_panels_text msgid "Text" msgstr "Text" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Text der Übung" #: action_saveFile_caption msgid "Save..." msgstr "Speichern..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Aktuelles Projekt speichern" #: action_docTree_caption msgid "Document tree..." msgstr "Dokumentstruktur..." #: action_docTree_keys msgid "T*" msgstr "T*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Projektdokumente in Baumansicht anzeigen" #: edit_docTree_title msgid "Document tree" msgstr "Dokumentenstruktur" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Quellenangabe:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Achtung:

Projekt ist mit " "anderen Projekten verlinkt.
Möchten Sie alle verlinkten Dateien " "importieren?

(Es wird empfohlen mitJA zu antworten, wenn Clic 3.0-" "Übungen importiert werden)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Typ:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Unbekannt" #: edit_mc_type_sound msgid "Play sound" msgstr "Sound abspielen" #: edit_mc_type_video msgid "Play video" msgstr "Video abspielen" #: edit_mc_type_midi msgid "Play MIDI" msgstr "MIDI abspielen" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Audio CD abspielen" #: edit_mc_type_record msgid "Record sound" msgstr "Sound aufnehmen" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Soundaufnahme abspielen" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Zu Übung gehen" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Zu Sequenz gehen" #: edit_mc_type_run_external msgid "Run program" msgstr "Programm starten" #: edit_mc_type_url msgid "Show URL" msgstr "URL anzeigen" #: edit_mc_type_exit msgid "End" msgstr "Ende" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Zurück" #: edit_mc_level msgid "Priority level:" msgstr "Prioritätsstufe:" #: edit_mc_file msgid "File:" msgstr "Datei:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parameter:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Aus:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Bis:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Maximale Länge:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Aufnahme:" #: edit_mc_stretch msgid "Stretch size" msgstr "Komprimieren wenn zu groß" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Position:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Aus:" #: edit_mc_location_from_box msgid "Cell" msgstr "Zelle" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Fenster" #: edit_mc_location_from_frame msgid "Frame" msgstr "Frame" #: edit_mc_loop msgid "Loop playback" msgstr "Sound Durchlauf" #: edit_mc_autostart msgid "Auto start" msgstr "Autostart" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Mausefalle" #: edit_mc_title msgid "Multimedia and active content" msgstr "Multimedia und Active X-Files" #: edit_mc_label msgid "Active content:" msgstr "Aktiver Inhalt:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Multimedia Objekt auswählen" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Mediathek" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Zentriert über Zelle" #: edit_mc_pos_window msgid "Centered over window" msgstr "Zentriert über Fenster" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Position angeben:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Falscher Pfad oder Datei!" #: edit_act_panels_controls msgid "Controls" msgstr "Kontrolle" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Optionen für Schaltflächen und Zähler" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Typ:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Erscheinungsbild der Tafel:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Relative Position der Tafeln A und B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Umgekehrte Auflösung" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "Die Übung ist erfolgreich beendet, wenn alle angegebenen Elemente von \"B\" " "richtig zugeordnet wurden." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Alle Pfeile anzeigen" #: edit_act_alt msgid "Alternative content:" msgstr "Alternativer Text:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" "Angezeigte Inhalte der zu bearbeitenden und nicht zu bearbeitenden Zellen" #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Alternativen Text bearbeiten" #: edit_act_grid msgid "Grid" msgstr "Tafel" #: edit_act_grid_A msgid "Grid A" msgstr "Tafel A" #: edit_act_grid_B msgid "Grid B" msgstr "Tafel B" #: edit_act_grid_layout msgid "Layout" msgstr "Layout" #: edit_act_grid_relationship msgid "Relationship" msgstr "Verhältnis" #: edit_seq_activity_header msgid "activity" msgstr "Übung" #: edit_seq_tag_header msgid "tag" msgstr "Textmarke" #: edit_seq_jump_header msgid "jump to" msgstr "Gehe zu" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Übung:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Textmarke:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Beschreibung:" #: edit_seq_auto msgid "Move on automatically" msgstr "Automatisch zur nächsten Übung" #: edit_seq_delay msgid "Delay:" msgstr "Verzögerung:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Weiter" #: edit_seq_action_back msgid "Go bak" msgstr "Zurück" #: edit_seq_action_jump msgid "Jump to..." msgstr "Gehe zu..." #: edit_seq_action_stop msgid "Stop" msgstr "Stopp" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Zurück zu..." #: edit_seq_action_exit msgid "Exit JClic" msgstr "JClic verlassen" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Pfeil vorwärts:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Pfeil zurück:" #: edit_seq_action msgid "Action:" msgstr "Aktion:" #: edit_seq_button_enabled msgid "Show button" msgstr "Schaltfläche anzeigen" #: edit_seq_project msgid "JClic Project:" msgstr "JClic Projekt:" #: edit_act_absolute msgid "Absolute position" msgstr "Absolute Position" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "Position des Objekts durch XY-Koordinaten definiert" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Position:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Neues Element der Lernsequenz..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Neues Element in Lernsequenz einfügen" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Übung für neues Element der Lernsequenz auswählen." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "Es kann keine neue Element der Lernsequenz ohne Übungen erstellt werden!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Projekt enthält keine Übungen. In einem leeren Projekt können keine " "Lernsequenzen erstellt werden." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Ziel:" #: edit_seq_jump_title msgid "Jump target" msgstr "Ziel" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Neue Übung zum Projekt hinzufügen" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Übungstyp:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Name:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" "Wählen Sie einen Übungstyp aus und geben Sie einen Namen für die neue Übung " "ein:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Sie müssen einen Übungstyp auswählen!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Sie müssen einen Übungsnamen angeben!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Übung kann nicht erstellt werden!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Bezeichnung der Java-Klasse:" #: edit_text_act_format msgid "Format" msgstr "Format" #: edit_text_act_answer msgid "Answer" msgstr "Antwort" #: edit_text_act_popup msgid "Pop up" msgstr "Pop up-Fenster" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Gültige Antworten:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Neues Element aus der Liste hinzufügen" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Ausgewähltes Element bearbeiten" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Ausgewähltes Element aus der Liste löschen" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Hinauf verschieben" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Hinunter verschieben" #: edit_list_newValue msgid "New text:" msgstr "Neuer Text:" #: edit_list_addElement msgid "Add new list element" msgstr "Neues Element aus der Liste hinzufügen" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Textauswahl bearbeiten" #: edit_text_act_target msgid "Target" msgstr "Ziel" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Maximale Länge:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Höchstanzahl der Buchstaben in der Antwort" #: edit_text_act_fillingChar msgid "Filling character" msgstr "Schriftart für Lücken" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Schriftart zum Ausfüllen der Lücken auswählen" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Ausgangslänge:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "Anzahl der Buchstaben, die zu Beginn der Übung angezeigt werden." #: edit_text_act_iniText msgid "Initial text:" msgstr "Starttext:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Text, der bei Beginn der Übung in der Lücke angezeigt wird." #: edit_text_act_list msgid "Show a list of options:" msgstr "Liste mit Optionen anzeigen:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "Liste mit Optionen anzeigen, aus denen der User auswählen kann." #: edit_text_act_check_title msgid "Correction options" msgstr "Evaluationskriterien" #: edit_text_act_popup_no msgid "No pop up" msgstr "Keine Pop-up-Fenster" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Pop up-Fenster automatisch öffnen" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Pop up-Fenster bei Fehlern" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Pop up-Fenster mit F1 öffnen" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Typ:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Verzögerung vor Öffnen des Pop up-Fensters:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Max. Dauer:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Nur Sound" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "Textfragment auswählen um neuen Zieltext zu erstellen!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "Zieltext darf keinen Umbruch oder oder Einzug beinhalten" #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Verschachtelung nicht erlaubt!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Zieltext darf keine Tabelle beinhalten!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Hintergrundfarbe:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Dokumentlayout bearbeiten" #: edit_text_act_mainStyle msgid "Main style:" msgstr "Standardeigenschaften:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tabulatorabstand:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Abstand zwischen Tabstopps:" #: edit_text_act_colors msgid "Colors:" msgstr "Farben:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Zielfarben:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Farbe für falsche Eingabe:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Voransicht:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Standardtext" #: edit_text_act_styleSample_target msgid "target" msgstr "Ziel" #: edit_text_act_styleSample_error msgid "error" msgstr "Fehler" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "Standardtext" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "Standardtext" #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Achtung: Dieser Schritt löscht das ausgewählte Ziel. Möchten Sie fortfahren?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Vorherige Ansicht..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Vor Übungsstart keinen Text anzeigen" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Kompletten Übungstext anzeigen" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Diesen Text anzeigen:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Max. Dauer:" #: edit_text_act_edit_target msgid "Target..." msgstr "Ziel..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Schaltfläche \"Korrigieren\" anzeigen" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Text der Schaltfläche:" #: edit_text_act_checkCase msgid "Match case" msgstr "Groß- und Kleinschreibung überprüfen" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Akzente und Sonderzeichen berücksichtigen" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Satzzeichen berücksichtigen" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Mehrfach-Leerstellen zulassen" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Kriterien" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Nach Ausfüllen zur nächsten Frage weitergehen" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Nur bei richtiger Antwort weiter" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Falsche Wörter buchstabieren" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parameter der Algorhythmen analysieren:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Schritte:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Bearbeitungsfeld:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Check" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Analyse der Antworten" #: edit_text_act_check_bt msgid "Correction..." msgstr "Korrektur..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Schaltfläche \"Korrigieren\"" #: edit_text_act_checkProgress msgid "Progress" msgstr "Fortschritt" #: edit_text_act_typeBtn msgid "Type..." msgstr "Typ..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Absätze ordnen" #: edit_text_act_orderWords msgid "Order words" msgstr "Wörter ordnen" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Wörter in Absätzen vermischen" #: edit_text_act_type_title msgid "Activity type" msgstr "Übungstyp" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Durch diesen Schritt löschen Sie alle aktuellen Zieldefinitionen. Wollen Sie " "fortfahren?" #: edit_text_act_identWords msgid "Identify words" msgstr "Wörter finden" #: edit_text_act_identChars msgid "Identify characters" msgstr "Buchstaben finden" #: edit_media_change_name msgid "Change name..." msgstr "Umbenennen..." #: edit_media_change_file msgid "Change file..." msgstr "Datei ändern..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Gezippt speichern" #: edit_media_type msgid "Media type:" msgstr "Medientyp:" #: edit_media_size msgid "File size:" msgstr "Dateigröße:" #: edit_media_show_type msgid "Files of type:" msgstr "Dateityp:" #: edit_media_preview msgid "Preview media" msgstr "Objekt in der Vorschau ansehen" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Mediendatei in der Vorschau ansehen" #: edit_media_rename msgid "Change resource name" msgstr "Datei umbenennen" #: edit_media_rename_title msgid "Rename" msgstr "Umbenennen" #: edit_media_rename_prompt msgid "New name:" msgstr "Neuer Name:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Ungültiger Dateiname!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Datei gleichen Namens bereits vorhanden. Jede Datei muss einen eigenen " "unverwechselbaren Namen besitzen." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Ungültiger Dateiname!" #: err_media_chfile_different msgid "File must be of same type" msgstr "Gleicher Dateityp erforderlich" #: edit_media_font_error msgid "Unable to load font!" msgstr "Schrift kann nicht geladen werden!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Datei speichern (entzippen)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Multimediadatei durch Datei aktualisieren" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Das ist keine \"echte\" Datei, sondern ein Objekt aus einem ZIP-Ordner. Um " "diese Anwendung nutzen zu können, muss eine gleichnamige Datei im selben " "Ordner wie die gezippte Datei befinden." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Übungen" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Sequenzen" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Mediathek" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Grafiken und andere Multimediadateien des Projekts verwalten" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Übungen zu Projekt erstellen und bearbeiten" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Lernsequenzen erstellen und bearbeiten" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Titel:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Projekttitel" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Projekt" #: edit_project_tooltip msgid "Edit project properties" msgstr "Projekteigenschaften bearbeiten" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Beschreibung:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Kurze Projektbeschreibung" #: edit_project_area msgid "Areas:" msgstr "Fächer:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Fächer:" #: edit_project_level msgid "Levels:" msgstr "Levels:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Lehrplanbezug des Projekts" #: edit_project_descriptors msgid "Descriptors:" msgstr "Schlüsselwörter:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Schlüsselwörter (durch Beistriche getrennt)" #: edit_project_languages msgid "Languages:" msgstr "Sprachen:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Projektsprachen" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Spracheinstellung ändern" #: edit_project_languages_add msgid "Add language" msgstr "Spache hinzufügen:" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "ISO-639 Sprachcodes:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autor/innen:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Projektteilnehmer/innen" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Name:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "e-Mail:" #: edit_project_author_rol msgid "Rol:" msgstr "Funktion:" #: edit_project_author_organization msgid "Organization:" msgstr "Organisation:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Kommentar:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Name des Autors/der Autorin (muss angegeben werden)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "e-Mail des Autors/der Autorin (kann frei gelassen werden)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Projektfunktion: Autor/in, Mitarbeiter/in, Zeichnungen, Sound ... (kann frei " "bleiben)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Schule, Universität, Verein ... (kann frei bleiben)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Private Homepage (kann frei gelassen werden)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Feld für weitere Informationen (kann frei bleiben)" #: edit_project_author_info msgid "Author info:" msgstr "Zum Autor/zu Autorin:" #: edit_project_author_add msgid "Add author to list" msgstr "Autor/in zur Liste hinzufügen" #: edit_project_author_edit msgid "Edit author info" msgstr "Autor Info bearbeiten" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Name:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Name der Schule" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "e-Mail:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "e-Mail Adresse der Schule" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Schulhomepage" #: edit_project_org_address msgid "Address:" msgstr "Adresse:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Postadresse:" #: edit_project_org_pc msgid "PC:" msgstr "PLZ:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Postleitzahl" #: edit_project_org_city msgid "City:" msgstr "Stadt:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Schulstandort" #: edit_project_org_country msgid "Country:" msgstr "Land:" #: edit_project_org_state msgid "State:" msgstr "Staat:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Kommentar:" #: edit_project_org msgid "School/s:" msgstr "Schule/n:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Am Projekt beteiligte Partnerschule/n oder -institution/en" #: edit_project_org_info msgid "Organization info:" msgstr "Infos zur Organisation:" #: edit_project_org_add msgid "Add organization" msgstr "Organisation hinzufügen" #: edit_project_org_edit msgid "Edit organization data" msgstr "Daten der Organisation bearbeiten" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Land, Bundesstaat, Bundesland..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Bundesland, Gemeinde, Region..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Zusatzinformationen..." #: edit_project_rev_date msgid "Date:" msgstr "Datum:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Überarbeitungsdatum" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autor/innen:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autor/innen der Überarbeitung" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Beschreibung:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Kurze Beschreibung der Änderungen" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Kommentar:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Zusätzliche Informationen" #: edit_project_rev msgid "Revisions:" msgstr "Überarbeitungen:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Protokoll der wichtigsten am Projekt vorgenommenen Änderungen" #: edit_project_rev_add msgid "Add revision record" msgstr "Überarbeitungsstatistik hinzufügen" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Überarbeitungsstatistik bearbeiten" #: edit_project_rev_info msgid "Revision data" msgstr "Überarbeitungsdatum" #: edit_media_objects msgid "objects" msgstr "Objekte" #: edit_media_object msgid "object" msgstr "Objekt" #: edit_evsounds_start msgid "Start of activity:" msgstr "Start der Übung:" #: edit_evsounds_click msgid "Click on object:" msgstr "Objekt anklicken:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Falsche Aktion:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Korrekte Aktion:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Übung fehlerhaft beendet:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Übung korrekt absolviert" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Fehler: Formularfeld muss ausgefüllt werden!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Ereignissounds bearbeiten" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Ereignissounds:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Spezielle Sounds für verschiedene Ereignisse einsetzen" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Ereignissounds:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Spezielle Sounds für jede JClic-Aktion" #: edit_evsounds_default msgid "default sound" msgstr "Standardsound" #: edit_evsounds_disabled msgid "disabled" msgstr "deaktiviert" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Sound für dieses Ereignis aktivieren oder deaktivieren." #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Ausgewählten Sound für dieses Ereignis auswählen oder Standardsound verwenden" #: action_newProject_caption msgid "New project..." msgstr "Neues Projekt..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Neues JClic-Projekt erstellen" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Von:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Mindestwert des Operators" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Bis:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Höchstwert des Operators" #: edit_arith_op_with msgid "With:" msgstr "Mit:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Wenn aktiv, kann der Operator auch diesen Wert haben" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Auswahl aus der Liste" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Anzeigen möglicher Werte des Operators" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Dezimalen:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Anzahl der Dezimalstellen des Operanden" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (integer)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#.#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#.##" #: edit_arith_firstOp msgid "First operand" msgstr "Erster Operand" #: edit_arith_secondOp msgid "Second operand" msgstr "Zweiter Operand" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 für JClic" #: edit_arith_operations msgid "Operations:" msgstr "Rechnungsarten:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Rechnungsart auswählen" #: edit_arith_operations_plus msgid "Plus" msgstr "Addieren" #: edit_arith_operations_minus msgid "Minus" msgstr "Subtrahieren" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplizieren" #: edit_arith_operations_divide msgid "Divide" msgstr "Dividieren" #: edit_arith_unknown msgid "Unknown:" msgstr "Unbekannte:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Element auswählen, das eine Unbekannte sein soll" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "Resultat ist eine Unbekannte" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "Zweiter Operator ist eine Unbekannte" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "Erster Operator ist eine Unbekannte" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "Operation ist eine Unbekannte" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Ergebnis an den Anfang des Ausdrucks schreiben" #: edit_arith_result msgid "Result:" msgstr "Ergebnis" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Nicht übersteigen" #: edit_arith_result_random msgid "Random" msgstr "Zufallsprinzip" #: edit_arith_result_asc msgid "Ascending" msgstr "Aufsteigend" #: edit_arith_result_order msgid "Order by result:" msgstr "Nach Ergebnis sortieren:" #: edit_arith_result_desc msgid "Descending" msgstr "Absteigend" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Duplikate vermeiden" #: edit_arith_cond msgid "Conditions:" msgstr "Bedingungen:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Egal" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "Der erste Operator muss größer sein als der zweite" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "Der erste Operator muss kleiner sein als der zweite" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Andere Bedingungen" #: edit_autocp msgid "Automatic content generator:" msgstr "Automatischer Content-Generator:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "Content-Generator Typ für diese Übung auswählen." #: edit_autocp_block msgid "Content generator" msgstr "Content-Generator" #: edit_autocp_btn msgid "Settings..." msgstr "Einstellungen..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Einstellungen des Content-Providers konfigurieren" #: edit_data msgid "Edit data" msgstr "Daten bearbeiten" #: edit_act msgid "Activity edit" msgstr "Übung bearbeiten" #: edit_acp msgid "Content provider edit" msgstr "Content-Provider bearbeiten" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Fehler beim Eintragen des Content-Providers!" #: edit_project_author_group msgid "Creation" msgstr "Urheber" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Beschreibung" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Benutzeroberfläche" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Beschreibung:" #: m_Edit msgid "Edit" msgstr "Bearbeiten" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Neue Übung..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Einfügen" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Anzeigen" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Projekt" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Projekteinstellungen bearbeiten" #: action_editMedia_caption msgid "Media" msgstr "Multimedia" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Multimediadateien der Projektbibliothek bearbeiten" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Übungen" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Übungen bearbeiten" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Sequenzen" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Übungssequenzen bearbeiten" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "" "Am aktuellen Projekt wurden Änderungen vorgenommen. Änderungen speichern?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Schlüsselwörter" #: edit_media_new msgid "New media object..." msgstr "Neues Multimedia Objekt" #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Neue Grafik oder Multimediadatei zur Mediathek hinzufügen" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Punktelimit:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "Hier weiter, wenn Gesamtpunktezahl gleich oder höher als..." #: edit_seq_time msgid "Time threshold:" msgstr "Zeitlimit:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "Hier weiter nur wenn Übungsdauer nicht länger als..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Hier weiter, wenn Gesamtpunktezahl geringer als..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "Hier weiter, wenn Bearbeitungsdauer länger als..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "If-Anweisung" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "Spezielle Erfordernisse für Wechsel der Schwierigkeitsstufe angeben" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Voraussetzungen für Vorrücken auf höhere Stufe angeben" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Stufe tiefer:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Stufe höher:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Voraussetzungen für Wechsel auf tiefere Stufe angeben" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Der Schaltfläche \"Weiter\" zugewiesene Aktion" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Der Schaltfläche \"Zurück\" zugewiesene Aktion" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Ziel angeben" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Vorgeschriebene Aktion" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Diesem Teil der Sequenz zugewiesene Übung" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Textmarke dient zur Identifikation des Elements der Lernsequenz (kann frei " "bleiben)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Beschreibung des Elements der Lernsequenz (kann frei bleiben)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Pfeiltaste aktivieren/deaktivieren" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Automatisch zur nächsten Übung, wenn eine Übung beendet ist" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Wartezeit in Sekunden vor automatischem Wechsel" #: edit_color_dlgTitle msgid "Select color" msgstr "Farbe auswählen" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Datei wird umbenannt. Bitte warten..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Breite:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Zellbreite (in Pixel)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Höhe:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Zellhöhe (in Pixel)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Versteckte Wörter:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Liste der versteckten Wörter auf der Tafel anzeigen" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Tafel B verwenden" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Der Inhalt einer zweiten Tafel wird angezeigt, sobald Wörter gefunden sind" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Form auswählen, die für die Anzeigetafel verwendet werden soll." #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Spaltenanzahl der Tabelle" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Zeilenanzahl der Tabelle" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Transparente Begrenzungen" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Begrenzungen (Blackboxes) als transparente Lücken anzeigen" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Versuche:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Erlaubte Mischversuche" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Eigenschaften in folgenden Ordner kopieren...." #: edit_act_copy_attributes msgid "Attributes" msgstr "Eigenschaften" #: edit_act_copy_dest msgid "Apply to:" msgstr "Anwenden auf:" #: edit_act_copy_style_main msgid "Main window" msgstr "Hauptfenster" #: edit_act_copy_style_play msgid "Play window" msgstr "Spielfenster" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Übungen, die bearbeitet werden sollen:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Eigenschaften der Kopie" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Eigenschaften der aktuellen Übung auf andere Übungen übertragen" #: edit_new_project_name msgid "Project name:" msgstr "Name des Projekts:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Kurzer, aussagekräftiger Name des Projekts" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Dateiname:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Name der Projektdatei ohne Dateierweiterung" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Ordner:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Name des Ordners, in dem das Projekt gespeichert werden soll" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Durchsuchen..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Neues JClic Projekt erstellen" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Fehler: Projekt, Datei und Ordner müssen gültige Bezeichnungen haben. " "Namenfelder dürfen nicht frei bleiben." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Dieser Ordner enthält bereits ein anderes Clic 3.0 oder JClic Projekt. Um " "Verwechslungen zu vermeiden, wird empfohlen, jedes einzelne Projekt in einem " "separaten Ordner zu speichern. Dies ist allerdings nicht verpflichtend. " "Möchten Sie das neue Projekt wirklich in diesem Ordner erstellen?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Fehler: Gewünschter Ordner kann nicht erstellt werden!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Fehler: Keine Übung ausgewählt! Um diese Funktion nützen zu können, müssen " "Sie aus der Liste die Aktivität(en) auswählen, auf die die gewünschten " "Eigenschaften angewendet werden sollen." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Eigenschaften in folgenden Ordner kopieren:" #: edit_act_copy_margin msgid "Margin" msgstr "Rand" #: edit_act_copy_bgColor msgid "Background color" msgstr "Hintergrundfarbe" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Farbverlauf" #: edit_act_copy_bgImage msgid "Background image" msgstr "Hintergrundbild" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Rahmen" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Transparenter Hintergrund" #: edit_act_copy_position msgid "Position" msgstr "Position" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Nachrichten" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Erscheinungsbild der Nachricht am Beginn" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Erscheinungsbild der Nachricht am Ende" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Erscheinungsbild der Fehlermeldungen" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Berichte" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Alle Aktionen in Berichte aufnehmen" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Aktionen aufzeichnen" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Benutzeroberfläche" #: edit_act_copy_skin msgid "Skin" msgstr "Skin" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sounds:" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Zähler" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Zeituhr" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Maximale Dauer" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Versuche zählen" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Höchstanzahl zulässiger Versuche" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Zähler" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Mischversuche" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Buttons" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Hilfetaste" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Info-Button" #: edit_act_copy_grids msgid "Grids" msgstr "Tafeln" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Stil von Tafel A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Stil von Tafel B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Erscheinungsbild der Textfelder" #: edit_act_copy_text msgid "Text activities" msgstr "Textbasierte Übungen" #: edit_act_copy_fontFace msgid "Font face" msgstr "Schriftart" #: edit_act_copy_fontSize msgid "Font size" msgstr "Schriftgröße" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Schriftstil" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Standard Textfarbe" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Farbe der Zielelemente" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Anzeigefarbe der Fehler" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Tabstoppposition" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Erscheinungsbild der vorhergehenden Nachricht" #: edit_act_changeType msgid "Change activity type" msgstr "Übungstyp ändern" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Voller Name der Java-Klasse, die zum Erstellen der Übung verwendet wurde " "(nur für fortgeschrittene User!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Andere..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Fortgeschrittene User können auch eigene, unregistrierte Typen von JClic-" "Übungen erstellen. Schreiben Sie nur das Java Paket und den vollen Namen der " "Java-Klasse darunter (z.B. \"com.acme.activities.FooActivity\"). Übungs-" "Klassen müssen die Endung edu.xtec.jclic.Activity aufweisen und mit " "dem JVM classloader zu öffnen sein." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Name der Übung:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "" "Jede Übung muss einen eigenen, unverwechselbaren Namen innerhalb des " "Projekts besitzen" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Warning:Warnung: Durch das Ändern des Übungstyps können " "aktuelle Übungseigenschaften und Objekte verloren gehen. " "

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "JClic-Quellcode:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "URL verweist auf Folder mit JClic-Dateien und Skripts" #: applet_prev_text msgid "HTML code before:" msgstr "HTML-Code davor:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Text oder HTML-Code vor Erscheinen des Applets" #: applet_post_text msgid "HTML code after:" msgstr "HTML-Code danach:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Text oder HTML-Code nach Erscheinen des Applets" #: applet_size msgid "Applet size:" msgstr "Applet-Format:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Breite und Höhe des Applets (absolut oder in Prozenten)." #: applet_page_title msgid "Page title:" msgstr "Seitentitel:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Textanzeige in der Kopfzeile des Browserfensters" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "Webseite \"%s\" erfolgreich erstellt" #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Im Browser ansehen?" #: action_createHTML_caption msgid "Create web page..." msgstr "HTML-Seite erstellen..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "HTML-Seite mit JClic-Applet erstellen" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "HTML-Seite mit Applet erstellen, das das aktuelle Projekt enthält" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Dateiname:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Bezeichnung der HTML-Seite, die erstellt werden soll" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Standardeinstellungen bei der Erstellung von Webseiten verwenden" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Hintergrundfarbe:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Hintergrundfarbe der HTML-Seite" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Zentriert" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Java-Applet horizontal zentrieren" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Applet-Breite (absolut oder in Prozenten)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Applet-Höhe (absolut oder in Prozenten)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Nach dem Schließen folgende Datei aufrufen:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL, der nach dem Schließen von JClic geöffnet werden soll" #: applet_infoFrame msgid "Info frame name:" msgstr "Name des Info-Frames:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "Name des Frames, der geöffnet werden soll, um die Infos anzuzeigen." #: action_createInstaller_caption msgid "Create project installer..." msgstr "Project-Installer erstellen..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Projekt-Installer Script für JClic-Player erstellen" #: installer_caption msgid "Edit project installer script" msgstr "Projekt Installer Skript bearbeiten" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Titel:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Projekttitels, der von Installer angezeigt wird" #: installer_authors msgid "Autors:" msgstr "Autor/innen:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autor/innen des Projekts (Kurztext)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Ordner:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Automatisch vorgeschlagener Ordnername" #: installer_files msgid "Files to be copied:" msgstr "Dateien, die kopiert werden sollen:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Dateien, die vom Installer kopiert werden sollen" #: installer_files_available msgid "Available files" msgstr "Verfügbare Dateien" #: installer_files_selected msgid "Selected files" msgstr "Ausgewählte Dateien" #: installer_files_add msgid ">> add >>" msgstr ">> add >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Ausgewählte Datei zu der Liste hinzufügen" #: installer_files_remove msgid "<< remove <<" msgstr "<< remove <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Ausgewählte Datei aus der Liste entfernen" #: installer_button msgid "Launch button" msgstr "Button für Start" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "" "Eigenschaften des Buttons, der in der Projektbibliothek angezeigt wird" #: installer_button_project msgid "Main project:" msgstr "Hauptprojekt:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "JClic-Projekt durch Anklicken der Schaltfläche starten" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Label:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Kurzer Text, der auf dem Button angezeigt werden soll" #: installer_button_icon msgid "Icon:" msgstr "Symbol:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Grafik als Schaltflächensymbol. Frei lassen, wenn JClic-Standard-" "Schaltfläche verwendet werden soll." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Beschreibung" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Bei Klick auf Schaltfläche angezeigte Kurzinfo" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Fehler: Projekttitel fehlt" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Fehler: Ordnerbezeichnung fehlt" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Fehler: Keine Dateien ausgewählt" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Fehler: Text für Startbutton fehlt" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Fehler: Dem Startbutton zugewiesenes Projekt scheint in der Liste der " "Dateien, die kopiert werden sollen, nicht auf" #: applet_page_full msgid "Full-page applet" msgstr "Ganzseitiges Applet" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "Benutzerdefiniertes Applet" #: edit_text_align_left msgid "Align text left" msgstr "Text linksbündig ausrichten" #: edit_text_align_center msgid "Center text" msgstr "Text zentrieren" #: edit_text_align_right msgid "Align text right" msgstr "Text rechtsbündig ausrichten" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Ziel definieren oder löschen" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Zelle einfügen" #: edit_text_act_content msgid "Content" msgstr "Inhalt" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Stil" #: edit_cell_size msgid "Cell size:" msgstr "Zellgröße:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Folgende Übungen scheinen in keiner Übungssequenz des Projekts auf und " "werden daher auch nicht angezeigt:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "Folgende Multimediadateien werden in keiner Übung verwendet:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "" "Möchten Sie diese Dateien im Anschluss an die letzte Übungssequenz " "hinzufügen?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Möchten Sie diese Dateien entfernen?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Nicht benötigte Multimediadateien werden entfernt" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Verwaiste Übuingen" #: edit_media_refreshAll msgid "Update all media content" msgstr "Multimediadateien aktualisieren" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Alle Multimediadateien aktualisieren" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Multimediadateien werden aktualisiert..." #: edit_media_exportAll msgid "Export all media" msgstr "Alle Multimediadateien exportieren" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Inhalt aller Multimediadateien als Datei abspeichern" #: edit_media_exportAll_keys msgid "X*" msgstr "*X`*" #: edit_shape_select msgid "Select" msgstr "Auswählen" #: edit_shape_addPoint msgid "Add point" msgstr "Punkt hinzufügen" #: edit_shape_deletePoint msgid "Delete" msgstr "Löschen" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Rechteck zeichnen" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Ellipse zeichnen" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Polygon zeichnen" #: edit_shape_toLine msgid "Convert to line" msgstr "In Linie umwandeln" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "In Bezier-Kurve konvertieren" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "In quadratische Bezier-Kurve konvertieren" #: edit_shape_rLeft msgid "Rotate left" msgstr "Links drehen" #: edit_shape_rRight msgid "Rotate right" msgstr "Rechts drehen" #: edit_shape_expand msgid "Expand" msgstr "Vergrößern" #: edit_shape_contract msgid "Contract" msgstr "Verbinden" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Zoom in" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Zoom out" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Nähesten Punkt aufsuchen" #: edit_shape_showPoints msgid "Show points" msgstr "Punkte anzeigen" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Punkte anzeigen/verbergen" #: edit_shape_gridSize msgid "Grid size:" msgstr "Rastergröße:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Raster anzeigen/verbergen" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Magnetradius:" #: edit_shape_elements msgid "Defined elements" msgstr "Ausgewählte Objekte" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Name des ausgewählten Objekts" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Aktionsradius des Magnet-Tools, wenn aktiviert" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Rastergröße" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Übung:" #: edit_mc_sequence msgid "Sequence:" msgstr "Sequenz:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Projekt:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Übung auswählen" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Sequenz auswählen" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Unzureichende Eingabe!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Pfeilfarbe:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Vom Editor zum Zeichnen der Pfeile verwendete Farbe (Abweichungen möglich, " "da eine XOR-Bitmaskierung verwendet wird)" #: edit_act_editActivity msgid "Edit..." msgstr "Bearbeiten..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Ausgewählte Übung bearbeiten" #: action_saveFileAs_caption msgid "Save as..." msgstr "Speichern unter..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Aktuelles Projekt unter anderem Namen abspeichern" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Verhalten" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Verhalten" #: edit_act_behavior_drag msgid "Drag objects" msgstr "schleppen" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Drag objects instead of use a connection line" #: edit_act_behavior_order msgid "Check solving order" msgstr "Check solving order" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Cells must be solved in order" #: edit_act_scramble msgid "Scramble" msgstr "Mischversuche" #: action_importActivities_caption msgid "Import activities..." msgstr "Importieren von Übungen" #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "bring Aktivität aus einem anderen Projekt ein" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "die Aktivitäten können nur zwischen verschiedene Projekte importiert werden. " "Bitte wählen ein anderes Projekt aus." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" "Bitte wählen Sie die Übungen aus, die Sie in das aktuelle Projekt einfügen " "möchten\\:" #: import_importing msgid "Importing..." msgstr "Wird eingebracht..." #: import_checkdep msgid "Checking dependencies..." msgstr "Abhängigkeiten werden überprüft..." #: import_impmedia msgid "Importing media\\:" msgstr "Medien werden eingebracht\\:" #: import_impact msgid "Importing activity\\:" msgstr "Aktivität wird eingebracht\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "" "bitte wählen das Jclic Projekt aus, von welchem Aktivitäten eingebracht " "werden" #: edit_tagRep_tags msgid "Tag marks" msgstr "Etikettenmarkierung" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Startmarkierung" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "verwendete Markierung zu Beginn des Etiketts" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Endmarkierung" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Markierung am Ende des Etiketts" #: edit_tagRep_file msgid "File" msgstr "Datei" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Datei oder URL:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Name oder URL der Datei, die die Werte enthalten, die die Etiketten ersetzen." #: edit_tagRep_charset msgid "Charset\\:" msgstr "Zeichensatz\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Zeichenkodierung in dieser Datei" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Durchsuchen..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Dateisystem durchsuchen" #: edit_tagRep_title msgid "Tag replacing" msgstr "Tag ersetzen" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Lösche Textstile" #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Warnung:\\diese Aktion wird die spezifischen Zeichensatzattribute löschen, " "die zu diesem Dokument gehören und zurück zum Hauptstil zurücksetzen. Diese " "Aktion kann nicht rückgängig gemacht werden. Wollen Sie fortfahren?" #: img_max_size msgid "Maximum size of images:" msgstr "" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_fr.po0000644000175000017500000024376611377161311023163 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-17 12:37+0000\n" "Last-Translator: Renaud de Colombel \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Description" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nom de l'activité" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nom\\:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Description de l'activité" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Rapports" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Inclure l'activité dans les rapports" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "" "Inclure les résultats de cette activité dans les rapports utilisateur" #: edit_act_code msgid "Code:" msgstr "Code\\:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Code optionnel utilisé pour grouper et rechercher dans la base de rapports." #: edit_act_reportActions msgid "Report user actions" msgstr "Rapport des actions utilisateurs" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" "Enregistrer le détail de toutes les actions réalisées par les utilisateurs" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Compteurs" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Chronomètre" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Montrer/cacher le chronomètre" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Compteur d'essais" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Montrer/cacher le compteur d'essais" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Score" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Montrer/cacher le score" #: edit_act_maxTime msgid "Max time:" msgstr "Temps max\\:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Temps maximum pour résoudre l'activité, en secondes, ou 0 pour temps " "illimité." #: edit_act_countdown msgid "Countdown" msgstr "Compte à rebours" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "Le compteur démarre à valeur maximale, en décroissant jusque 0." #: edit_act_maxActions msgid "Max tries:" msgstr "Max d'essais\\:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" "Nombre maximum d'essais autorisés, ou 0 pour nombre d'essais illimités." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Boutons" #: edit_act_helpBtn msgid "Help" msgstr "Aide" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Montrer/cacher le bouton d'aide" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Montrer la solution" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Montrer ce message\\:" #: edit_act_infoBtn msgid "Information" msgstr "Information" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Montrer/Cacher le bouton d'information" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Montrer cette URL\\:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Exécuter cette commande\\:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "Adresse de site Web à montrer en cliquant sur le bouton info." #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "Ligne de commande à exécuter en cliquant sur le bouton info." #: edit_act_mainWindow msgid "Main window:" msgstr "Fenêtre principale\\:" #: edit_act_gameWindow msgid "Game window:" msgstr "Fenêtre de travail\\:" #: edit_act_margin msgid "Margin:" msgstr "Marges\\:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espacement vertical et horizontal entre les objets visuels." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Couleur d'arrière-plan\\:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Changer la couleur d'arrière-plan." #: edit_gradient_startColor msgid "Start color:" msgstr "Couleur de démmarage\\:" #: edit_gradient_endColor msgid "End color:" msgstr "Couleur terminale\\:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Sélection de la couleur de démarrage" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Sélection de la couleur terminale" #: edit_gradient_cycles msgid "Cycles:" msgstr "Cycles\\:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Numbre de répétitions du dégradé sur la surface peinte" #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientation\\:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientation du dégradé, mesuré en degrés depuis l'horizontale" #: edit_act_gradient msgid "Gradient:" msgstr "Dégradé\\:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Utiliser le dégradé de couleur" #: edit_color_opacity msgid "Opacity" msgstr "Opacité" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Définir la valeur de couleur du canal alpha (opacité)." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Dégradé" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Utiliser les valeurs par défaut (pas de dégradé)" #: edit_act_image msgid "Image:" msgstr "Image\\:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Description" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nom et description" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Mosaïque" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Peindre toute la surface avec l'image, en la répétant sur l'axe X et Y si " "nécessaire." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Prévisualisation\\:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Bordure" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Dessiner une ligne autour de la fenêtre" #: edit_act_transparent msgid "Transparent" msgstr "Transparence" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "La fenêtre a un arrière-plan transparent" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Largeur\\:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Hauteur\\:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Largeur de l'objet, mesurée en pixels." #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Hauteur de l'objet, mesurée en pixels." #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrer" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "l'objet sera centré sur la fenêtre principale" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X\\:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Position horizontale absolue" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y\\:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Position verticale absolue" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interface utilisateur" #: edit_act_image_tooltip msgid "Select an image" msgstr "Sélectionner une image" #: edit_act_text msgid "Text:" msgstr "Texte\\:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Texte à montrer dans cet objet." #: edit_font_face msgid "Typeface:" msgstr "Police\\:" #: edit_font_size msgid "Size:" msgstr "Taille\\:" #: edit_font_bold msgid "Bold" msgstr "Gras" #: edit_font_italic msgid "Italic" msgstr "Italique" #: edit_font_underline msgid "Underline" msgstr "Souligné" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Style\\:" #: edit_cell_title msgid "Cell contents" msgstr "Contenus de cellule" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Messages" #: edit_act_msg_initial msgid "Initial message:" msgstr "Message initial\\:" #: edit_act_msg_final msgid "Final message:" msgstr "Message final\\:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Message précédent\\:" #: edit_act_msg_error msgid "Error message:" msgstr "Message d'erreur\\:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Message à montrer quand l'activité débute" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Message à montrer quand l'activité se termine" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Message à montrer quand l'activité se termine avec erreurs" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Message à montrer en priorité au démérrage de l'activité (seulement dans " "certains types d'activités)" #: edit_align msgid "Align:" msgstr "Aligner\\:" #: edit_act_textColor msgid "Text color:" msgstr "Couleur du texte\\:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Couleur utilisée pour dessiner le texte\\:" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Couleur de l'ombre\\:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "" "Couleur utilisée pour dessiner l'ombre du texte, quand c'est applicable" #: edit_act_shadow msgid "Shadow" msgstr "Ombre" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Dessiner le texte avec ombre" #: edit_act_borderColor msgid "Border color:" msgstr "Couleur de bordure\\:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Couleur utilisée pour dessiner la bordure de cellule" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Couleur d'état inactif\\:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Couleur utilisée quand la cellule est désactivée" #: edit_act_altColor msgid "Alternative color:" msgstr "Couleur alternative\\:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Couleur utilisée pour dessiner les contenus alternatifs dans les cellules " "résolues." #: edit_cell_marked msgid "Marked" msgstr "Pointé" #: edit_cell_disabled msgid "Disabled" msgstr "Désactivé" #: edit_cell_alt msgid "Alternative" msgstr "Alternatif" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Marge intérieure\\:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Nombre d'espace entre la bordure de cellule et le texte." #: edit_cell_borderWidth msgid "Border width:" msgstr "Largeur de bordure\\:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Largeur du point utilisé pour dessiner la bordure standard" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Epaisseur du marqueur\\:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Largeur du point utilisée pour dessiner la bordure quand la cellule est " "sélectionée ou marquée" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Prévisualiser en état \"alternatif\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Prévisualiser en état \"désactivé\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Prévisualiser en état \"marqué\"" #: edit_act_testAction msgid "Preview activity" msgstr "Prévisualiser l'activité" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Prévisualiser et tester l'activité" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Description" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Titre et description de l'activité" #: edit_act_panels_options msgid "Options" msgstr "Options" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Options de l'activité" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Fenêtre" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspect, taille et position de la fenêtre d'activité" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Messages" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Contenu des messages de l'activité" #: edit_act_panels_panel msgid "Panel" msgstr "Palette" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Contenus de la palette" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Style" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Définir la couleur des cellules, fonte et taille" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Style\\:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Autoriser que le texte recouvre l'image" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Essayer d'autoriser que le texte recouvre l'image" #: edit_media_exists_1 msgid "The file" msgstr "Le fichier" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "existe déjà dans la bibliothèque multimédia\\!" #: edit_act_shaper msgid "Shaper:" msgstr "Forme\\:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Erreur de forme\\:" #: edit_act_num_cols msgid "Columns:" msgstr "Colonnes\\:" #: edit_act_num_rows msgid "Rows:" msgstr "Lignes\\:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Hauteur des dentelures\\:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Largeur de dentelure\\:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Disribution aléatoire" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propriétés du constructeur de formes" #: edit_act_panels_text msgid "Text" msgstr "Texte" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Texte de l'activité" #: action_saveFile_caption msgid "Save..." msgstr "Enregistrer..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Enregistrer le projet courant" #: action_docTree_caption msgid "Document tree..." msgstr "Arborescence du document..." #: action_docTree_keys msgid "T*" msgstr "T*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Montrer le document projet comme arborescence" #: edit_docTree_title msgid "Document tree" msgstr "Arborescence du document" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Référencé par\\:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Attention\\:

Ce projet " "se connecte avec d'autres projets.
Voulez-vous explorer les liens et " "charger tous les fichiers liés ?

(Il est conseillé de répondre OUI " "quand vous importez des activités Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Type\\:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Inconnu" #: edit_mc_type_sound msgid "Play sound" msgstr "Jouer son" #: edit_mc_type_video msgid "Play video" msgstr "Jouer vidéo" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Jouer MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Jouer un CD audio" #: edit_mc_type_record msgid "Record sound" msgstr "Enregistrer son" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Jouer un son enregistrer" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Aller à l'activité" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Aller à la séquence" #: edit_mc_type_run_external msgid "Run program" msgstr "Lancer le programme" #: edit_mc_type_url msgid "Show URL" msgstr "Montrer URL" #: edit_mc_type_exit msgid "End" msgstr "Fin" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Retour" #: edit_mc_level msgid "Priority level:" msgstr "Niveau de priorité\\:" #: edit_mc_file msgid "File:" msgstr "Fichier\\:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Paramètres\\:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "De\\:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "A\\:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Max. longueur\\:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Magnétophone\\:" #: edit_mc_stretch msgid "Stretch size" msgstr "Stretch taille" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Localisation\\:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X\\:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y\\:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "De\\:" #: edit_mc_location_from_box msgid "Cell" msgstr "Cellule" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Fenêtre" #: edit_mc_location_from_frame msgid "Frame" msgstr "CAdre" #: edit_mc_loop msgid "Loop playback" msgstr "Jouer en boucle" #: edit_mc_autostart msgid "Auto start" msgstr "Démarrage automatique" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Capturer souris" #: edit_mc_title msgid "Multimedia and active content" msgstr "Multimedia et contenu actif" #: edit_mc_label msgid "Active content:" msgstr "Contenu actif\\:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Sélection d'objet multimedia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Librairie média" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centré sur la cellule" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centré sur la fenêtre" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Spécifier la position\\:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Structure d'arborescence ou donnée incorrect Incorrect\\!" #: edit_act_panels_controls msgid "Controls" msgstr "Contrôles" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Options pour les boutons et compteurs" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Type\\:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Echelle de la grille\\:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Position relative des panneaux A et B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Résolution inverse" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "L'activité est résolue quand tous les éléments assignés à \"B\" sont " "affichés." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Montrer toutes les flèches" #: edit_act_alt msgid "Alternative content:" msgstr "Contenu alternatif\\:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "Contenu montré dans les cellules résolues et cellules non-assignées." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Editer le contenu alternatif" #: edit_act_grid msgid "Grid" msgstr "Grille" #: edit_act_grid_A msgid "Grid A" msgstr "Grille A" #: edit_act_grid_B msgid "Grid B" msgstr "Grille B" #: edit_act_grid_layout msgid "Layout" msgstr "Calque" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relation" #: edit_seq_activity_header msgid "activity" msgstr "activité" #: edit_seq_tag_header msgid "tag" msgstr "Drapeau" #: edit_seq_jump_header msgid "jump to" msgstr "Sauter à" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Activité\\:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etiquette\\:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Description\\:" #: edit_seq_auto msgid "Move on automatically" msgstr "Déplacer automatiquement" #: edit_seq_delay msgid "Delay:" msgstr "Delai\\:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Aller devant" #: edit_seq_action_back msgid "Go bak" msgstr "Aller derrière" #: edit_seq_action_jump msgid "Jump to..." msgstr "Sauter à..." #: edit_seq_action_stop msgid "Stop" msgstr "Stop" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Retourner" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Quitter JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Flêche avant\\:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Fl^che arrière\\:" #: edit_seq_action msgid "Action:" msgstr "Action\\:" #: edit_seq_button_enabled msgid "Show button" msgstr "Montrer bouton" #: edit_seq_project msgid "JClic Project:" msgstr "Projet JClic\\:" #: edit_act_absolute msgid "Absolute position" msgstr "Position absolue" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "L'objet sera placé aux coordonnées X et Y spécifiées" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Localisation\\:" #: edit_seq_newElement msgid "New sequence element..." msgstr "nouvelle séquence d'activité..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Insérer un nouvel élément dans la séquence d'activité" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Sélectionnez une activité pour la nouvelle séquence." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "Impossible de créer une nouvelle séquence d'éléments sans activité\\!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Ce projet n'a pas d'activités\\! Impossible de créer une séquence d'éléments " "dans un projet vide." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Cible de saut\\:" #: edit_seq_jump_title msgid "Jump target" msgstr "Cible de saut" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Ajouter une nouvelle activité au projet" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Type d'activité\\:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nom\\:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Sélectionnez le type d'activité à créer et donnez-lui un nom\\:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Vous devez sélectionner un type d'activité\\!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Vous devez spécifier un nom pour l'activité\\!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Impossible de créer l'activité\\!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Nom de classe Java class\\:" #: edit_text_act_format msgid "Format" msgstr "Format" #: edit_text_act_answer msgid "Answer" msgstr "Réponse" #: edit_text_act_popup msgid "Pop up" msgstr "Pop up" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Réponses valides\\:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Ajouter une nouvelle liste d'élément" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Editer la liste d'éléments sélectionnée" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Supprimer la liste d'éléments sélectionnée" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Déplacer vers le haut" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Déplacer vers le bas" #: edit_list_newValue msgid "New text:" msgstr "Nouveau texte\\:" #: edit_list_addElement msgid "Add new list element" msgstr "Ajouter une nouvelle liste d'élément" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modifier le texte sélectionné" #: edit_text_act_target msgid "Target" msgstr "Cible" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Max. longueur\\:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Nombre maximum de caractères dans la réponse." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Caractère de remplissage" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Caractère utilisé pour indiquer les blancs" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Longueur initiale\\:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Nombre de carctères de remplissage qui seront affichés au démarrage de " "l'activité." #: edit_text_act_iniText msgid "Initial text:" msgstr "Texte initiale\\:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Texte affiché dans le blanc au démarrage de l'activité." #: edit_text_act_list msgid "Show a list of options:" msgstr "Montrer une liste des options\\:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" "Afficher une liste d'options dans laquelle l'utilisateur doit en choisir une." #: edit_text_act_check_title msgid "Correction options" msgstr "Options de correction" #: edit_text_act_popup_no msgid "No pop up" msgstr "Pas de pop up" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Pop up automatique" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Pop up si erreurs" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Pop up avec F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Type\\:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Pop up delai\\:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Max. temps\\:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Son seulement" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "Vous devez sélectionner un fragment de texte pour créer un nouveau texte " "cible\\!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "Le texte cible ne peut pas inclure de retour chariot ni de tabulation." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Cibles ne peuvent être atteintes\\!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Les cibles ne peuvent contenir de cellules\\!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Couleur de papier\\:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Editer les styles de document..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Style principal\\:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tabulation\\:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espaces entre deux tabulation\\:" #: edit_text_act_colors msgid "Colors:" msgstr "Coleurs\\:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Couleur des cibles\\:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Couleur des erreurs\\:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Prévisualisation\\:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Texte standard" #: edit_text_act_styleSample_target msgid "target" msgstr "cible" #: edit_text_act_styleSample_error msgid "error" msgstr "erreur" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "texte standard" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "texte standard." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Warning\\: Cette action supprimera la cible courante sélectionnée. Voulez-" "vous continuer ?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Ecran précédent..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Ne pas afficher de texte avant de démarrer l'activité" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Afficher le texte complet de l'exercice" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Afficher ce texte\\:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Max. temps\\:" #: edit_text_act_edit_target msgid "Target..." msgstr "Cible..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Montrer le bouton de correction" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Bouton texte\\:" #: edit_text_act_checkCase msgid "Match case" msgstr "Case répondue" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Prendre en compte les accents et caractères spéciaux" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Prendre en compte les marques de ponctuation" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Autoriser les espaces répétés" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Critère" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Déplacer vers nouvelle cible quand c'est rempli" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Déplacer seulement après correcte autorisation" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indiquer les erreurs lettre par lettre" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Paramètres de l'algorithme d'analyse\\:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Etapes\\:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Champ d'exploration\\:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Vérifier" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Analyse de la réponse" #: edit_text_act_check_bt msgid "Correction..." msgstr "Correction..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Bouton de correction" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progression" #: edit_text_act_typeBtn msgid "Type..." msgstr "Type..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Paragraphes ordonnés" #: edit_text_act_orderWords msgid "Order words" msgstr "Ranger les mots" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Shuffle words amongst paragraphs" #: edit_text_act_type_title msgid "Activity type" msgstr "Type d'activité" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Cette action effacera toutes les cibles existantes. Voulez-vous continuer ?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identifier les mots" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identifier les caractères" #: edit_media_change_name msgid "Change name..." msgstr "Changer nom..." #: edit_media_change_file msgid "Change file..." msgstr "Changee fichier..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Enregistrer dans un fichier ZIP" #: edit_media_type msgid "Media type:" msgstr "Type de média\\:" #: edit_media_size msgid "File size:" msgstr "Taille de fichier\\:" #: edit_media_show_type msgid "Files of type:" msgstr "Fichiers de type\\:" #: edit_media_preview msgid "Preview media" msgstr "Prévisualiser média" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Ressource média précédente" #: edit_media_rename msgid "Change resource name" msgstr "Changer nom de ressource" #: edit_media_rename_title msgid "Rename" msgstr "Renommer" #: edit_media_rename_prompt msgid "New name:" msgstr "Nouveau nom\\:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Mauvais nom de ressource\\!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Il y a une autre ressource avec ce nom\\! Chaque ressource doit avoir un nom " "unique." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Mauvais fichier\\!" #: err_media_chfile_different msgid "File must be of same type" msgstr "Le fichier doit être de même type" #: edit_media_font_error msgid "Unable to load font!" msgstr "Impossible de charger la police\\!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Enregistrer fichier (extraire depuis ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Mettre à jour le contenu media depuis un fichier" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Ce n'est pas un fichier \"real\", mais un objet localisé dans un container " "ZIP. Pour utiliser ce produit, un fichier avec le même nom doit être présent " "dans le dossier où le fichier ZIP est localisé." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Activités" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Séquences" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Librairie média" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Gère les images et autres fichiers média utilisés dans le projet." #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Créer et éditer les activités du projet." #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Créer et éditer les séquences d'activités" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Titre\\:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Titre du projet" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Projet" #: edit_project_tooltip msgid "Edit project properties" msgstr "Editer les propriétés du projet" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Description\\:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Description générale du projet" #: edit_project_area msgid "Areas:" msgstr "Domaines\\:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Domaine d'application du projet" #: edit_project_level msgid "Levels:" msgstr "Niveaux\\:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Niveaux pédagogique du projet" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descripteurs\\:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descripteurs du projet (Séparé pau une virgule)" #: edit_project_languages msgid "Languages:" msgstr "Langages\\:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Langages utilisés dans le projet projet" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Changer le langage sélectionné" #: edit_project_languages_add msgid "Add language" msgstr "Ajouter langage" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "ISO-639 langage codes\\:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Auteurs\\:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Personnes intervenant dans la création du projet" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nom\\:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "e-mail\\:" #: edit_project_author_rol msgid "Rol:" msgstr "Rôle\\:" #: edit_project_author_organization msgid "Organization:" msgstr "Organization\\:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Commentaires\\:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL\\:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nom de l'auteur (requis)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "E-mail auteur (optionnel)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Rôle de la personne dans le projet\\: auteur, collaborateur, dessinateurs, " "sons... (optionnel)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Ecole, université, association... (optionnel)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Page web personnelle (optionnel)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Champ pour d'autres informations(optionnel)" #: edit_project_author_info msgid "Author info:" msgstr "Info auteur\\:" #: edit_project_author_add msgid "Add author to list" msgstr "Ajouter auteur à la liste" #: edit_project_author_edit msgid "Edit author info" msgstr "Editer info auteur" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nom\\:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nom de l'école" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "e-mail\\:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Adresse e-mail de l'école" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL\\:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Site Web de l'école" #: edit_project_org_address msgid "Address:" msgstr "Addresse\\:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Snail-mail addresse" #: edit_project_org_pc msgid "PC:" msgstr "PC\\:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Code postal" #: edit_project_org_city msgid "City:" msgstr "Ville\\:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Ville de l'école" #: edit_project_org_country msgid "Country:" msgstr "Département\\:" #: edit_project_org_state msgid "State:" msgstr "Etat\\:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Commentaires\\:" #: edit_project_org msgid "School/s:" msgstr "Ecole/s\\:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Ecole ou autre institution intervenant dans le projet" #: edit_project_org_info msgid "Organization info:" msgstr "Organisation info\\:" #: edit_project_org_add msgid "Add organization" msgstr "Ajouter organisation" #: edit_project_org_edit msgid "Edit organization data" msgstr "Editer donnée organisation" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Région, fédération, union..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Etat, communauté, région..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Autre info..." #: edit_project_rev_date msgid "Date:" msgstr "Date\\:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Date de révision" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Auteurs\\:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Auteurs de la révision" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Description\\:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Brève description des changements effectués" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Commentaires\\:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Autres infos" #: edit_project_rev msgid "Revisions:" msgstr "Révisions\\:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Historique des principales modifications du projet" #: edit_project_rev_add msgid "Add revision record" msgstr "Ajouter un enregistrement révision" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Editer un enregistrement révision" #: edit_project_rev_info msgid "Revision data" msgstr "Donnée de révision" #: edit_media_objects msgid "objects" msgstr "objets" #: edit_media_object msgid "object" msgstr "objet" #: edit_evsounds_start msgid "Start of activity:" msgstr "Démarrer l'activité\\:" #: edit_evsounds_click msgid "Click on object:" msgstr "Cliquer sur l'objet\\:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Action erronée\\:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Action correcte\\:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Activité terminée avec erreurs\\:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Activité terminée OK\\:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Erreur\\: Le champ descriptif ne peut être laissé blanc\\!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Editer l'évènement son" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Evènement sons\\:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Définir dessons spécifiques pour chaque évènement JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Evènement sons\\:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Définir des sons spécifiques pour chaque évènement JClic" #: edit_evsounds_default msgid "default sound" msgstr "Son par défaut" #: edit_evsounds_disabled msgid "disabled" msgstr "désactivé" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Activer ou désactiver le son pour cet évènement" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Cliquez pour sélectionner un son pour cet évènement, ou désélectionnez pour " "utiliser le son pare défaut" #: action_newProject_caption msgid "New project..." msgstr "Nouveau projet..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Créer un nouveau projet JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "De\\:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valeur minimale de l'opérateur" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "To\\:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valeur maximale de l'opérateur" #: edit_arith_op_with msgid "With:" msgstr "Avec\\:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Si sélectionné, l'opérateur peut aussi avoir cette valeur" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Un de cette liste\\:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Liste de valeurs possibles pour l'opérateur" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Décimales\\:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Nombre de décimales de l'opérande" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "\\# (integer)" #: edit_arith_op_dec1 msgid "#.#" msgstr "\\#.\\#" #: edit_arith_op_dec2 msgid "#.##" msgstr "\\#.\\#\\#" #: edit_arith_firstOp msgid "First operand" msgstr "Premier opérande" #: edit_arith_secondOp msgid "Second operand" msgstr "Second opérande" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 pour JClic" #: edit_arith_operations msgid "Operations:" msgstr "Opérations\\:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Sélectionner le type d'opérations à réaliser" #: edit_arith_operations_plus msgid "Plus" msgstr "Addition" #: edit_arith_operations_minus msgid "Minus" msgstr "Soustraction" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplication" #: edit_arith_operations_divide msgid "Divide" msgstr "Division" #: edit_arith_unknown msgid "Unknown:" msgstr "Inconnu\\:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Sélectionner l'item qui sera considéré comme l'inconnue" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "Le résultat est l'inconnue" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "Le second opérateur est l'inconnue" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "Le premier opérateur est l'inconnue" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "L'opération est l'inconnue" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Ecrire le résultat au début de l'expression" #: edit_arith_result msgid "Result:" msgstr "Résultat\\:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Pas de retenue" #: edit_arith_result_random msgid "Random" msgstr "Aléatoire" #: edit_arith_result_asc msgid "Ascending" msgstr "Croissant" #: edit_arith_result_order msgid "Order by result:" msgstr "Ranger par résultat\\:" #: edit_arith_result_desc msgid "Descending" msgstr "Décroissant" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Autoriser les doublons" #: edit_arith_cond msgid "Conditions:" msgstr "Conditions\\:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indifférent" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "Le premier opérateur doit être plus grand que le second" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "Le premier opérateur doit être plus petit que le second" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Autres conditions" #: edit_autocp msgid "Automatic content generator:" msgstr "Générateur de contenu automatique\\:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "Sélectionner le type de contenu automatique pour cette activité." #: edit_autocp_block msgid "Content generator" msgstr "Générateur de contenu" #: edit_autocp_btn msgid "Settings..." msgstr "Paramètres..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configurer les paramètres du fournisseur de contenu" #: edit_data msgid "Edit data" msgstr "Editer donnée" #: edit_act msgid "Activity edit" msgstr "Editer activité" #: edit_acp msgid "Content provider edit" msgstr "Editer le fournisseur de contenu" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Erreur à la création du fournisseur de contenu\\!" #: edit_project_author_group msgid "Creation" msgstr "Création" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Description" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interface utilisateur" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Description\\:" #: m_Edit msgid "Edit" msgstr "Editer" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Nouvelle activité..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P\\#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Insérer" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Vue" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Projet" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Editer les paramètres de projet" #: action_editMedia_caption msgid "Media" msgstr "Média" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Editer la librairie Média du projet" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Activités" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Editer les activités" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Séquences" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Editer les séquences d'activités" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "" "Le projet courant a été modifié. Voulez-vous enregistrer les changements ?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descripteurs" #: edit_media_new msgid "New media object..." msgstr "Nouvel objet média..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Ajouter une nouvelle image ou objet multimédia à la librairie" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Score\\:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "Prendre ce chemin quand le score global est égal ou supérieur à..." #: edit_seq_time msgid "Time threshold:" msgstr "Temps imposé\\:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Pour emprunter ce chemin, le temps passé sur les activités doit être " "inférieur à..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Prendre ce chemin quand le score global est inférieur à..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Prendre ce chemin quand le temps passé sur les activités est supérieur à..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Sauts conditionnels" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Définir des sauts spécifiques à n'exécuter que sous certaines conditions" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Définir les conditions de saut vers le niveau supérieur" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Saut inférieur\\:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Saut supérieur\\:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Définir les conditions de saut vers un niveau inférieur" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Action assignée au bouton \"suivant\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Action assignée au bouton \"précédent\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Définir la cible de saut" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Action à réaliser" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Activité assignée à cet élément de séquence" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Drapeau utilisé pour référencer cet élément de séquence (champ optionnel)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Description de l'élément de séquence (champ optionnel)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Activer ou désactiver le bouton flêche" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Se déplacer automatiquement quand l'activité est terminée" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Secondes à attendre avant le déplacement automatique" #: edit_color_dlgTitle msgid "Select color" msgstr "Sélectionner couleur" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Attendez la ressource va être renommée..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Largeur\\:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Largeur de cellule (en pixels)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Hauteur\\:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Hauteur de cellules (en pixels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Mots cachés\\:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Liste de mots cachés placés dans le cadre" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Utiliser le cadre B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Les contenus du second cadre seront affichés au fur et à mesure que les mots " "seront trouvés" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Sélectionner le type de forme utiliser dans le cadre" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Nombre de colonnes du cadre" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Nombre de lignes du cadre" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Délimiteurs transparents" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Traiter les délimiteurs comme des trous transparents (boites noires)" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Battages\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Nombre de temps de battage" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copier les attributs vers..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Attributs" #: edit_act_copy_dest msgid "Apply to:" msgstr "Appliquer à\\:" #: edit_act_copy_style_main msgid "Main window" msgstr "Fenêtre principale" #: edit_act_copy_style_play msgid "Play window" msgstr "Fenêtre de travail" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Activités à modifier\\:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copier les attributs" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Copier les attributs de l'activité courante vers d'autres activités" #: edit_new_project_name msgid "Project name:" msgstr "Nom du projet\\:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nom court, descriptif du projet" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nom du fichier\\:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nom du fichier projet, sans extension" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Dossier\\:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nom du dossier où le dossier est stocké" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Explorer..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Créer un nouveau projet JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "Erreur\\: Projet, fichier et dossier doivent avoir des noms valides." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Ce dossier contient déjà un autre projet Clic 3.0 ou JClic. Pour éviter " "toute confusion, il est préférable de maintenir chaque projet dans un " "dossier différent, c'est une règle stricte. Voulez-vous réellement créer un " "nouveau projet dans ce dossier ?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Error\\: Impossible de créer le dossier spécifié\\!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Error\\: Pas d'activité sélectionnée\\! Pour utiliser cette fonction vous " "devez sélectionner dans la liste l'activité oules activités pour lesquels " "les attributs spécifiés seront appliqués." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copier les attributs vers\\:" #: edit_act_copy_margin msgid "Margin" msgstr "Marges" #: edit_act_copy_bgColor msgid "Background color" msgstr "Couleur d'arrière-plan" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Dégradé" #: edit_act_copy_bgImage msgid "Background image" msgstr "Image d'arrière-plan" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Bordure" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Arrière-plan transparent" #: edit_act_copy_position msgid "Position" msgstr "Position" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Messages" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Style du message initial" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Style de message terminal" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Style de message d'erreur" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Rapports" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Inclure l'activité dans les rapports" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Enregistrer les actions" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interface utilisateur" #: edit_act_copy_skin msgid "Skin" msgstr "Habillage" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sons évènement" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Compteurs" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Chronomètre" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Max. temps" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Compteur d'essais" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Max. essais" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Score" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Temps de mélange" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Boutons" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Bouton d'aide" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Bouton d'information" #: edit_act_copy_grids msgid "Grids" msgstr "Grilles" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Style de grille A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Style de grille B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Style de grille de textes" #: edit_act_copy_text msgid "Text activities" msgstr "Activités texte" #: edit_act_copy_fontFace msgid "Font face" msgstr "Type de police" #: edit_act_copy_fontSize msgid "Font size" msgstr "Police" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Style de police" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Couleur de texte principal" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Couleur des cibles" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Couleur d'erreurs" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Tabulation" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Style de message précédent" #: edit_act_changeType msgid "Change activity type" msgstr "Changer type d'activité" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Le nom complet de la classe doit être utilisé pour bâtir l'activité " "(utiliateurs avancés seulement\\!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Autre..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Les utilisateurs avancés peuvent aussi créer des types non-enregistrés " "d'activités JClic. Ecrivez juste le nom complet de la classe derrière, " "préfixé par le package (comme \"com.acme.activities.FooActivity\"). Les " "classes d'activités doivent être étendues edu.xtec.jclic.Activity, et " "doivent être accessibles par le JVM chargeur de classe." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nom de l'activité\\:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Chaque activité doit avoir un nom unique dans le projet" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Attention\\: Changer le type de l'activité peut causer la " "perte de quelques objets et attributs. A utiliser avec précaution\\" "!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Localisation du code Jclic\\:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "L'URL pointe vers un dossier contenant les fichiers JClic et les scripts" #: applet_prev_text msgid "HTML code before:" msgstr "HTML code avant\\:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Texte ou code HTML à placer avant l'applet" #: applet_post_text msgid "HTML code after:" msgstr "Code HTML après\\:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Texte ou code HTML à placer après l'applet" #: applet_size msgid "Applet size:" msgstr "Taille de l'applet\\:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Largeur et hauteur de l'applet, en absolu ou en pourcentage." #: applet_page_title msgid "Page title:" msgstr "Titre de page\\:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Texte à montrer en haut de la fenêtre de l'explorer" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "La page Web \"%s\" a été créée avec succès." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Voulez-vous l'ouvrir maintenant avec l'explorer ?" #: action_createHTML_caption msgid "Create web page..." msgstr "Créer une page Web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Créer une page HTML avec l'applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "Créer une page HTML page avec un applet contenant le projet courant" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nom du fichier\\:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nom du fichier HTML à créer" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "" "Valeurs par défaut utilisées par défaut pour la création de pages Web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Couleur d'arrière-plan\\:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Couleur d'arrière-plan de la page HTML" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centré" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Placer l'applet centré horizontalement" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Largeur de l'applet (absolu ou pourcentage)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Hauteur de l'applet (absolu ou pourcentage)" #: applet_exitUrl msgid "On exit, go to:" msgstr "En quittant, allez à\\:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL où rediriger la navigation en quittant JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Nom du cadre info\\:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Nom du cadre utilisé pour montrer le contenu relatif au bouton \"info\"" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Créer un installateur de projet..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Créer un script d'installation de projet pour le player JClic" #: installer_caption msgid "Edit project installer script" msgstr "Editer le script d'installation du projet" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Titre\\:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Titre du projet, à montrer dans l'installateur" #: installer_authors msgid "Autors:" msgstr "Auteurs\\:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Auteurs/s du projet (petit texte)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Dossier\\:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nom du dossier à suggérer par l'installateur" #: installer_files msgid "Files to be copied:" msgstr "Fichiers à copier\\:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Fichiers à copier par l'installateur" #: installer_files_available msgid "Available files" msgstr "Fichiers valables" #: installer_files_selected msgid "Selected files" msgstr "Fichiers sélectionnés" #: installer_files_add msgid ">> add >>" msgstr ">> ajouter >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Ajouter le fichier sélectionné à la liste" #: installer_files_remove msgid "<< remove <<" msgstr "<< retirer <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Retirer le fichier sélectionné de la liste" #: installer_button msgid "Launch button" msgstr "Bouton de lancement" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propriétés du bouton à montrer dans la librairie du projet" #: installer_button_project msgid "Main project:" msgstr "Projet principal\\:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Projet JClic à lancer avec le bouton" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etiquette\\:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Petite étiquette à afficher dans le bouton" #: installer_button_icon msgid "Icon:" msgstr "Icône\\:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Image à utiliser comme icône de bouton. Laissez blanc pour utiliser l'icône " "JClic par défaut." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Description" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Tooltip à montrer avec le bouton" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Error\\: Titre du projet absent" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Error\\: Nom du dossier absent" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Error\\: Pas de fichiers sélectionnés" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Error\\: Texte du bouton de lancement absent" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Error\\: le projet assigné au bouton de lancement n'est pas dans la liste de " "fichiers à copier" #: applet_page_full msgid "Full-page applet" msgstr "Applet plein-page" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "Applet avec des dimensions spécifiques" #: edit_text_align_left msgid "Align text left" msgstr "Aligner le texte à gauche" #: edit_text_align_center msgid "Center text" msgstr "Centrer le texte" #: edit_text_align_right msgid "Align text right" msgstr "Aligner le texte à droite" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Créer ou retirer une cible" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Insérer une cellule" #: edit_text_act_content msgid "Content" msgstr "Contenu" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Style" #: edit_cell_size msgid "Cell size:" msgstr "Taille de cellule\\:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Les activités suivantes n'apparaissent dans aucune séquence d'activités du " "projet, aussi elles ne sont jamais affichées\\:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Les objets média suivants ne sont directement utilisés dans aucune activité\\" ":" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "Voulez-vous les ajouter à la fin de la séquence d'activités ?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Voulez-vous les retirer ?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Retrait des objets média inutilisés" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Orphan activités" #: edit_media_refreshAll msgid "Update all media content" msgstr "Mettre à jour tous les contenus média" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Mettre à jour tous les objets média en rechargeant les fichiers" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Mettre à jour le média..." #: edit_media_exportAll msgid "Export all media" msgstr "Exporter tous les médias" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Enregistrer vers fichiers le contenu de tous les éléments média" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Sélectionner" #: edit_shape_addPoint msgid "Add point" msgstr "Ajouter point" #: edit_shape_deletePoint msgid "Delete" msgstr "supprimer" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Dessiner rectangle" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Dessiner ellipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Dessiner polygone" #: edit_shape_toLine msgid "Convert to line" msgstr "Convertir en ligne" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Convertir en courbe de bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Convertir en courbe quadratique" #: edit_shape_rLeft msgid "Rotate left" msgstr "Rotation à gauche" #: edit_shape_rRight msgid "Rotate right" msgstr "Rotation à droite" #: edit_shape_expand msgid "Expand" msgstr "Etendre" #: edit_shape_contract msgid "Contract" msgstr "Contracter" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Zoom in" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Zoom out" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Joindre les points proches" #: edit_shape_showPoints msgid "Show points" msgstr "Montrer les points" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Montrer/Cacher les points" #: edit_shape_gridSize msgid "Grid size:" msgstr "Taille de la grille\\:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Montrer / cacher la grile" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Magnétisme radiant\\:" #: edit_shape_elements msgid "Defined elements" msgstr "Eléments définis" #: edit_shape_elemName msgid "Name of the selected element" msgstr "nom de l'élément sélectionné" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Action du magnétisme, quand activé" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Taille de la grille" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Activité\\:" #: edit_mc_sequence msgid "Sequence:" msgstr "Séquence\\:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL\\:" #: edit_mc_project msgid "Project:" msgstr "Projet\\:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Choisir activité" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Choisir séquence" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Donnée insuffisante\\!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Couleur de flèche\\:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Couleur utilisée par l'éditeur pour dessiner les flèches (pas exactement, " "car un masque XOR est utilisé)" #: edit_act_editActivity msgid "Edit..." msgstr "Editer..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Editer l'activité sélectionnée" #: action_saveFileAs_caption msgid "Save as..." msgstr "Enregistrer sous..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Enregistrer le projet courant avec un nom différent" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportement" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportement" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Traîner" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Drag cells instead of use a connection line" #: edit_act_behavior_order msgid "Check solving order" msgstr "Check solving order" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Cells must be solved in order" #: edit_act_scramble msgid "Scramble" msgstr "Mélanger" #: action_importActivities_caption msgid "Import activities..." msgstr "Importer des activités..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importer des activités d'un autre projet" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "Le fichier choisi correspond au projet en cours. Des activités peuvent être " "importées seulement entre différents projets. Veuillez choisir un autre " "fichier." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" "Choisissez une ou plusieurs activités pour importer dans le projet en cours\\" ":" #: import_importing msgid "Importing..." msgstr "Importation..." #: import_checkdep msgid "Checking dependencies..." msgstr "Vérification des dépendances..." #: import_impmedia msgid "Importing media\\:" msgstr "Importation des médias\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importation de l'activité\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Choisissez le projet de JClic dont les activités seront importées" #: edit_tagRep_tags msgid "Tag marks" msgstr "Signes utilisés pour les balises" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Signe de départ\\:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Signe utilisé pour ouvrir les balises" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Signe de fin\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Signe utilisé pour fermer les balises" #: edit_tagRep_file msgid "File" msgstr "Fichier" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Fichier ou URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Nom ou URL du fichier qui contient les valeurs qui remplaceront les balises" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Encodage des caractères\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Encodage de caractères utilisé dans le fichier" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Parcourir…" #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Parcourir le système de fichier" #: edit_tagRep_title msgid "Tag replacing" msgstr "Remplacement de balises" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Effacer les styles du texte..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Attention\\: Cette opération effacera les attributs de caractères " "personnalisés de tout le document et y restaurera le style principal. Vous " "ne pourrez pas revenir sur cette action. Souhaitez-vous la confirmer ?" #: img_max_size msgid "Maximum size of images:" msgstr "Taille maximale des images :" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" "Largeur maximale des images importées dans la bibliothèque de médias." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" "Hauteur maximale des images importées dans la bibliothèque de médias." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "L'image \"%s\" a une taille de %s pixels. Cette taille dépasse ce qui est " "permis par JClic Author (%s). Voulez-vous la redimensionner ?" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_pt_BR.po0000644000175000017500000024325411377161311023552 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-17 20:34+0000\n" "Last-Translator: Alexandre R Soares \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descrição" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nome da atividade" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nome:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descrição da atividade" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Relatórios" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Incluir esta atividade nos relatórios" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Incluir os resultados desta atividade no relatório dos usuários" #: edit_act_code msgid "Code:" msgstr "Código:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Código adicional para agrupar e buscar no banco de dados de relatórios." #: edit_act_reportActions msgid "Report user actions" msgstr "Registrar ações dos usuários" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "Registrar os detalhes de todas as ações realizadas pelos usuários." #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Contadores" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Contador de tempo" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Mostrar/ocultar contador de tempo" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Contador de tentativas" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Show/hide the tries counter" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Contador de acertos" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Mostrar/ocultar os acertos." #: edit_act_maxTime msgid "Max time:" msgstr "Tempo máximo:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Tempo máximo para resolver a atividade, em segundos, ou 0 para tempo " "ilimitado." #: edit_act_countdown msgid "Countdown" msgstr "Contagem regressiva" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "O contador é iniciado com um valor máximo, decrescendo até 0." #: edit_act_maxActions msgid "Max tries:" msgstr "Máximo nº de tentativas:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" "Número máximo de tentativas permitido (use 0 para tentativas ilimitadas)." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botões" #: edit_act_helpBtn msgid "Help" msgstr "Ajuda" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Mostrar/ocultar botão de ajuda" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Mostrar solução" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Mostrar essa mensagem:" #: edit_act_infoBtn msgid "Information" msgstr "Informação:" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Mostrar/ocultar o botão de informação adicional" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Mostrar esta URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Execute este comando:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Endereço na web que será acessado ao clicar no botão de informações " "adicionais" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" "Linha de comando a ser executada ao clicar no botão de informações adicionais" #: edit_act_mainWindow msgid "Main window:" msgstr "Janela Principal:" #: edit_act_gameWindow msgid "Game window:" msgstr "Janela de Jogos:" #: edit_act_margin msgid "Margin:" msgstr "Margem:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espaçamento horizontal e vertical entre objetos visuais." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Cor do fundo da tela:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Altere a cor do fundo da tela." #: edit_gradient_startColor msgid "Start color:" msgstr "Cor inicial:" #: edit_gradient_endColor msgid "End color:" msgstr "Cor final:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Escolha a primeira cor" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Escolha a cor final" #: edit_gradient_cycles msgid "Cycles:" msgstr "Ciclos:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Número de repetições do gradiente sobre a superfície de desenho" #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientação:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientação do gradiente, medida em graus sobre a horizontal" #: edit_act_gradient msgid "Gradient:" msgstr "Gradiente:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Use gradiente de cores" #: edit_color_opacity msgid "Opacity" msgstr "Opacidade" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Defina valor do canal alfa de cores (opacidade)." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradiente" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Use os valores padrão (gradiente nulo)" #: edit_act_image msgid "Image:" msgstr "Imagem:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descrição" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nome e descrição" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Ladrilhado" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Pinte toda a superfície com a imagem, repetindo-a ao longo dos eixos X e Y " "conforme necessário." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Pré-visualização:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Contorno" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Desenhe uma linha de contorno ao redor da janela" #: edit_act_transparent msgid "Transparent" msgstr "Transparente" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "A janela possui fundo transparente" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Largura:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altura:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Largura do objeto, medida em pixels" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Altura do objeto, medida em pixels" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centralizado" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "O objeto será centralizado sobre a janela principal" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Localização horizontal absoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Localização vertical absoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interface do usuário" #: edit_act_image_tooltip msgid "Select an image" msgstr "Selecione uma imagem" #: edit_act_text msgid "Text:" msgstr "Texto:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Texto a ser exibido dentro deste objeto" #: edit_font_face msgid "Typeface:" msgstr "Tipo de fonte:" #: edit_font_size msgid "Size:" msgstr "Tamanho:" #: edit_font_bold msgid "Bold" msgstr "Negrito" #: edit_font_italic msgid "Italic" msgstr "Itálico" #: edit_font_underline msgid "Underline" msgstr "Sublinhado" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estilo:" #: edit_cell_title msgid "Cell contents" msgstr "Conteúdo da célula" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Mensagens" #: edit_act_msg_initial msgid "Initial message:" msgstr "Mensagem inicial:" #: edit_act_msg_final msgid "Final message:" msgstr "Mensagem final:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Mensagem anterior:" #: edit_act_msg_error msgid "Error message:" msgstr "Mensagem de erro:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Mensagem a ser exibida quando a atividade iniciar" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Mensagem a ser exibida quando a atividade terminar" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Mensagem a ser exibida quando a atividade terminar com erros" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Mensagem a ser exibida antes do início da atividade (somente em certos tipos " "de atividade)" #: edit_align msgid "Align:" msgstr "Alinhar:" #: edit_act_textColor msgid "Text color:" msgstr "Cor do texto:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Cor usada para escrever o texto" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Cor da sombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Cor da sombra do texto, quando selecionada" #: edit_act_shadow msgid "Shadow" msgstr "Sombreamento" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Escreva o texto com sombreamento" #: edit_act_borderColor msgid "Border color:" msgstr "Cor do contorno:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Cor usada para desenhar o contorno da célula" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Cor utilizada em estado inativo:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Cor utilizada quando a célula estiver desabilitada" #: edit_act_altColor msgid "Alternative color:" msgstr "Cor alternativa:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Cor utilizada para escrever o conteúdo alternativo em células solucionadas." #: edit_cell_marked msgid "Marked" msgstr "Marcado" #: edit_cell_disabled msgid "Disabled" msgstr "Desabilitado" #: edit_cell_alt msgid "Alternative" msgstr "Alternativo" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Margem interna:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Quantidade de espaço entre o contorno da célula e o texto." #: edit_cell_borderWidth msgid "Border width:" msgstr "Largura do contorno:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Largura da linha utilizada para desenhar o contorno padrão" #: edit_cell_markerWidth msgid "Marker width:" msgstr "Largura do marcador:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Largura da linha utilizada para desenhar o contorno quando a célula está " "marcada ou selecionada" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Pré-visualização em estado \"alternativo\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Pré-visualização em estado \"desabilitado\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Pré-visualização em estado \"marcado\"" #: edit_act_testAction msgid "Preview activity" msgstr "Pré-visualização da atividade" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Pré-visualização e teste da atividade" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descrição" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Título e descrição da atividade" #: edit_act_panels_options msgid "Options" msgstr "Opções" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opções da atividade" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Janela" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "Aspecto, tamanho e posição da janela de atividades" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Mensagens" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Conteúdo das mensagens da atividade" #: edit_act_panels_panel msgid "Panel" msgstr "Painel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Conteúdos do painel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estilo" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Defina a cor, a fonte e o tamanho das células" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estilo:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Evite a sobreposição de texto/imagem" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Tente evitar a sobreposição da imagem com o texto" #: edit_media_exists_1 msgid "The file" msgstr "O arquivo" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "já existe na biblioteca de mídia!" #: edit_act_shaper msgid "Shaper:" msgstr "Moldador:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Erro do moldador:" #: edit_act_num_cols msgid "Columns:" msgstr "Colunas:" #: edit_act_num_rows msgid "Rows:" msgstr "Filas:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Altura dos dentes:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Largura dos dentes:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribuição aleatória" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propriedades do moldador" #: edit_act_panels_text msgid "Text" msgstr "Texto" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Texto da atividade" #: action_saveFile_caption msgid "Save..." msgstr "Salvar..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "SS" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Salva (guarda) o projeto atual" #: action_docTree_caption msgid "Document tree..." msgstr "Árvore de documentos..." #: action_docTree_keys msgid "T*" msgstr "A*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Mostre os documentos do projeto na forma de árvore" #: edit_docTree_title msgid "Document tree" msgstr "Árvore de documentos" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Referenciado por:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Aviso:

Este projeto conecta-" "se com outros projetos.
Você quer explorar as conexões (links) e carregar " "todos os arquivos relacionados?

(É aconselhável responder SIM ao " "importar atividades do Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Tipo:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Desconhecido" #: edit_mc_type_sound msgid "Play sound" msgstr "Toque som" #: edit_mc_type_video msgid "Play video" msgstr "Toque vídeo" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Toque MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Toque CD de audio" #: edit_mc_type_record msgid "Record sound" msgstr "Grave som" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Toque som gravado" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Vá para a atividade" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Vá para a sequência" #: edit_mc_type_run_external msgid "Run program" msgstr "Execute o programa" #: edit_mc_type_url msgid "Show URL" msgstr "Mostre a URL" #: edit_mc_type_exit msgid "End" msgstr "Fim" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Retorne" #: edit_mc_level msgid "Priority level:" msgstr "Nível de prioridades:" #: edit_mc_file msgid "File:" msgstr "Arquivo:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parâmetros:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "De:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Até:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Comprimento máximo:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Fita gravada:" #: edit_mc_stretch msgid "Stretch size" msgstr "Tamanho do trajeto" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Localização:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "De:" #: edit_mc_location_from_box msgid "Cell" msgstr "Célula" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Janela" #: edit_mc_location_from_frame msgid "Frame" msgstr "Quadro" #: edit_mc_loop msgid "Loop playback" msgstr "Laço de reprodução" #: edit_mc_autostart msgid "Auto start" msgstr "Início automático" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Capture o mouse" #: edit_mc_title msgid "Multimedia and active content" msgstr "Multimídia e conteúdo ativo" #: edit_mc_label msgid "Active content:" msgstr "Conteúdo ativo:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Seleção de objetos multimídia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Biblioteca de mídias" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centralizado sobre a célula" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centralizado sobre a janela" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Especifique posição:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "Informações ou estruturas de árvore incorretas!" #: edit_act_panels_controls msgid "Controls" msgstr "Controles" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opções para botões e contadores" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Tipo:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Formatação da grade (layout):" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posição relativa dos painéis A e B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Resolução inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "A atividade é solucionada quando todos os elementos selecionados de \"B\" " "corresponderem aos seus pares opostos." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Mostre todas as setas" #: edit_act_alt msgid "Alternative content:" msgstr "Conteúdo alternativo:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" "Conteúdo exibido em células solucionadas e em células não-atribuídas." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Edite o conteúdo alternativo" #: edit_act_grid msgid "Grid" msgstr "Grade" #: edit_act_grid_A msgid "Grid A" msgstr "Grade A" #: edit_act_grid_B msgid "Grid B" msgstr "Grade B" #: edit_act_grid_layout msgid "Layout" msgstr "Formatação (layout)" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relacionamento" #: edit_seq_activity_header msgid "activity" msgstr "atividade" #: edit_seq_tag_header msgid "tag" msgstr "etiqueta" #: edit_seq_jump_header msgid "jump to" msgstr "pule para" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Atividade:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Rótulo:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descrição:" #: edit_seq_auto msgid "Move on automatically" msgstr "Continue automaticamente" #: edit_seq_delay msgid "Delay:" msgstr "Atraso:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Avance" #: edit_seq_action_back msgid "Go bak" msgstr "Volte" #: edit_seq_action_jump msgid "Jump to..." msgstr "Pule para..." #: edit_seq_action_stop msgid "Stop" msgstr "Pare" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Retorne" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Sair do JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Seta adiante:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Seta retorno:" #: edit_seq_action msgid "Action:" msgstr "Ação:" #: edit_seq_button_enabled msgid "Show button" msgstr "Mostre botão" #: edit_seq_project msgid "JClic Project:" msgstr "Projeto do JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posição absoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "O objeto será localizado nas coordenadas X e Y especificadas" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Localização:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Novo elemento na sequência..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Insira um novo elemento na sequência de atividades" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "" "Por favor, selecione uma atividade para o novo elemento da sequência." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "Não é possível criar um novo elemento de sequência sem uma atividade!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "Este projeto não possui atividades! Incapaz de criar elementos de sequência " "em um projeto vazio." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Pular alvo:" #: edit_seq_jump_title msgid "Jump target" msgstr "Pular alvo" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Adicione uma nova atividade ao projeto" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Tipo de atividade:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nome:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "Favor, selecione o tipo de atividade a ser criado e nomeie-o:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "Você deve selecionar um tipo de atividade!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "Você deve especificar um nome para a atividade!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "Incapaz de criar a nova atividade!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Nome da Classe Java:" #: edit_text_act_format msgid "Format" msgstr "Formato" #: edit_text_act_answer msgid "Answer" msgstr "Resposta" #: edit_text_act_popup msgid "Pop up" msgstr "Pop up" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Respostas válidas:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Adicione um novo elemento à lista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Edite o elemento selecionado na lista" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Apague o elemento selecionado na lista" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Mover para cima" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Mover para baixo" #: edit_list_newValue msgid "New text:" msgstr "Novo texto:" #: edit_list_addElement msgid "Add new list element" msgstr "Adicione um novo elemento da lista" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modifique o texto selecionado" #: edit_text_act_target msgid "Target" msgstr "Alvo" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Comprimento máximo:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Quantidade máxima de caracteres na resposta." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Caractere de preenchimento" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Caractere utilizado para indicar uma lacuna" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Comprimento inicial:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Número de caracteres de preenchimento que serão exibidos no início da " "atividade." #: edit_text_act_iniText msgid "Initial text:" msgstr "Texto inicial:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Texto exibido na lacuna durante o início da atividade." #: edit_text_act_list msgid "Show a list of options:" msgstr "Mostrar uma lista de opções:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" "Exibir uma lista de opções a partir da qual o usuário deve selecionar uma." #: edit_text_act_check_title msgid "Correction options" msgstr "Opções de correção" #: edit_text_act_popup_no msgid "No pop up" msgstr "Sem janelas de destaque (pop up)" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Janelas de destaque (pop up) exibidas automaticamente" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Janelas de destaque (pop up) em erros" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Janelas de destaque (pop up) ao comando da tecla F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Tipo:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Atraso da janela de destaque (pop up):" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Tempo máximo:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Somente o som" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "Você deve selecionar um fragmento do texto para criar um novo alvo!" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "Texto-alvo não pode possuir caracteres de \"Enter\" (nova linha) nem de " "\"Tab\" (tabulação)." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Alvos não podem ser aninhados!" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "Alvos não podem conter células!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Cor do papel:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Edite o estilo do documento..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Estilo principal:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Espaço de tabulação (tab):" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espaços entre marcas de tabulação (tab):" #: edit_text_act_colors msgid "Colors:" msgstr "Cores:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Cores do alvo:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Cores de erro:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Pré-visualização:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Texto padrão" #: edit_text_act_styleSample_target msgid "target" msgstr "alvo" #: edit_text_act_styleSample_error msgid "error" msgstr "erro" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "texto padrão" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "texto padrão." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Aviso: Esta ação suprimirá o alvo atualmente selecionado. Você tem certeza " "de que quer continuar?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Tela anterior..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "Não exibir qualquer texto antes de iniciar a atividade" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Exibir o texto completo do exercício" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Exibir este texto:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Tempo máximo:" #: edit_text_act_edit_target msgid "Target..." msgstr "Alvo..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Mostre o botão de correção" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Texto do botão:" #: edit_text_act_checkCase msgid "Match case" msgstr "Coincidir com a palavra inteira" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Considerar acentos e caracteres especiais" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Considerar marcas de pontuação" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permitir espaços repetidos" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Critérios" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Siga para o próximo alvo quando a lacuna for preenchida" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Siga somente quando a resposta estiver correta" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indique os erros letra por letra" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parâmetros do algoritmo de análise:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Passos:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Campos de exploração:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Verifique" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Análise de respostas" #: edit_text_act_check_bt msgid "Correction..." msgstr "Correção..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Botão de correção" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progresso" #: edit_text_act_typeBtn msgid "Type..." msgstr "Tipo..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordenar parágrafos" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordenar palavras" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Embaralhar palavras entre parágrafos" #: edit_text_act_type_title msgid "Activity type" msgstr "Tipos de atividades" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Esta ação irá limpar todos os alvos existentes. Você quer realmente " "prosseguir?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identifique palavras" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identifique caracteres" #: edit_media_change_name msgid "Change name..." msgstr "Mudar nome..." #: edit_media_change_file msgid "Change file..." msgstr "Mudar arquivo..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Salvar em um arquivo zipado (ZIP)" #: edit_media_type msgid "Media type:" msgstr "Tipo de mídia:" #: edit_media_size msgid "File size:" msgstr "Tamanho do arquivo:" #: edit_media_show_type msgid "Files of type:" msgstr "Arquivos do tipo:" #: edit_media_preview msgid "Preview media" msgstr "Pré-visualização da mídia" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Pré-visualização dos recursos da mídia" #: edit_media_rename msgid "Change resource name" msgstr "Mudar nome do recurso" #: edit_media_rename_title msgid "Rename" msgstr "Renomear" #: edit_media_rename_prompt msgid "New name:" msgstr "Novo nome:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "Nome de recurso inválido!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Existe outro recurso com este nome! Cada recurso deve possuir um nome único." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Arquivo inválido!" #: err_media_chfile_different msgid "File must be of same type" msgstr "O arquivo deve ser do mesmo tipo" #: edit_media_font_error msgid "Unable to load font!" msgstr "Incapaz de carregar fonte!" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Salvar arquivo (extrair de um ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Atualizar conteúdo de mídias a partir de um arquivo" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Este não é um arquivo \"real\", mas um objeto localizado em um arquivo ZIP. " "Para utilizar esta função, um arquivo com o mesmo nome deve estar presente " "na pasta em que o arquivo zip está localizado." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Atividades" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Sequências" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Biblioteca de mídias" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Gerenciar imagens e outros arquivos de mídia utilizados no projeto" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Criar e editar atividades do projeto" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Editar e criar sequências de atividades" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Título:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Título do projeto" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Projeto" #: edit_project_tooltip msgid "Edit project properties" msgstr "Editar propriedades do projeto" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descrição:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descrição geral do projeto" #: edit_project_area msgid "Areas:" msgstr "Áreas:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Áreas curriculares do projeto" #: edit_project_level msgid "Levels:" msgstr "Níveis:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Níveis educacionais do projeto" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descrições:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descrições do projeto (separadas por vírgula)" #: edit_project_languages msgid "Languages:" msgstr "Idiomas:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Idiomas utilizados neste projeto" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Altere a língua selecionada" #: edit_project_languages_add msgid "Add language" msgstr "Escolha idioma a ser adicionado" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Código de idioma (ISO-639):" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Pessoas envolvidas na criação do projeto" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nome:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "e-mail:" #: edit_project_author_rol msgid "Rol:" msgstr "Função:" #: edit_project_author_organization msgid "Organization:" msgstr "Organização:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Comentários:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nome do autor (obrigatório)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "E-mail do autor (opcional)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Papel da pessoa no projeto: autor, colaborador, desenhista, sonoplasta... " "(opcional)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Escola, universidade, associação... (opcional)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Página da web pessoal (opcional)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Campo para outras informações (opcional)" #: edit_project_author_info msgid "Author info:" msgstr "Informação do autor:" #: edit_project_author_add msgid "Add author to list" msgstr "Adicionar um autor à lista" #: edit_project_author_edit msgid "Edit author info" msgstr "Editar informações do autor" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nome:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nome da escola" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "e-mail:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Endereço de e-mail da escola" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Página da escola na web" #: edit_project_org_address msgid "Address:" msgstr "Endereço:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Endereço para correspondência" #: edit_project_org_pc msgid "PC:" msgstr "CEP:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Código postal" #: edit_project_org_city msgid "City:" msgstr "Cidade:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Cidade da escola" #: edit_project_org_country msgid "Country:" msgstr "País:" #: edit_project_org_state msgid "State:" msgstr "Estado:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Comentários:" #: edit_project_org msgid "School/s:" msgstr "Escola(s):" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Escola ou outra instituição envolvida no projeto" #: edit_project_org_info msgid "Organization info:" msgstr "Informações da organização:" #: edit_project_org_add msgid "Add organization" msgstr "Adicionar organização" #: edit_project_org_edit msgid "Edit organization data" msgstr "Editar dados da organização" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "País, federação, união..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Estado federado, comunidade, região..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Outras informações..." #: edit_project_rev_date msgid "Date:" msgstr "Data:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Data de revisão" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autores:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autores da revisão" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descrição:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breve descrição das mudanças realizadas" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Comentários:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Outras informações relevantes" #: edit_project_rev msgid "Revisions:" msgstr "Revisões:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Histórico das modificações principais realizadas no projeto" #: edit_project_rev_add msgid "Add revision record" msgstr "Adicionar registro de revisões" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Editar registro de revisões" #: edit_project_rev_info msgid "Revision data" msgstr "Dados de revisão" #: edit_media_objects msgid "objects" msgstr "objetos" #: edit_media_object msgid "object" msgstr "objeto" #: edit_evsounds_start msgid "Start of activity:" msgstr "Início da atividade:" #: edit_evsounds_click msgid "Click on object:" msgstr "Clique no objeto:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Ação equivocada:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Ação correta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Atividade finalizada com erros:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Atividade finalizada sem erros:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Erro: O campo de descrição não pode ser deixado em branco!" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Editar sons eventuais" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Sons eventuais:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Definir sons específicos para cada evento do JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Sons eventuais:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Definir sons específicos para cada evento do JClic" #: edit_evsounds_default msgid "default sound" msgstr "som padrão" #: edit_evsounds_disabled msgid "disabled" msgstr "desabilitado" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Habilitar ou desabilitar o som para este evento" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Clique para selecionar um som para este evento, ou desabilite para utilizar " "o som padrão" #: action_newProject_caption msgid "New project..." msgstr "Novo projeto..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Criar um novo projeto JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "De:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valor mínimo do operador" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Até:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valor máximo do operador" #: edit_arith_op_with msgid "With:" msgstr "Com:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Se habilitado, o operador pode também ter esse valor" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Um a partir da lista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Lista de valores possíveis para o operador" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimais:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Número de decimais do operador" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (inteiro)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#.#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#.##" #: edit_arith_firstOp msgid "First operand" msgstr "Primeiro operador" #: edit_arith_secondOp msgid "Second operand" msgstr "Segundo operador" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 para JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operações:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Selecione o tipo de operações a serem realizadas" #: edit_arith_operations_plus msgid "Plus" msgstr "Adicionar" #: edit_arith_operations_minus msgid "Minus" msgstr "Subtrair" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplicar" #: edit_arith_operations_divide msgid "Divide" msgstr "Dividir" #: edit_arith_unknown msgid "Unknown:" msgstr "Desconhecido:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Selecione o item que agirá como um desconhecido" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "O resultado é o desconhecido" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "O segundo operador é o desconhecido" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "O primeiro operador é o desconhecido" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "A operação é desconhecida" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Escreva o resultado no início da expressão" #: edit_arith_result msgid "Result:" msgstr "Resultado:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Não carregue" #: edit_arith_result_random msgid "Random" msgstr "Aleatório" #: edit_arith_result_asc msgid "Ascending" msgstr "Crescente" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordenar por resultado:" #: edit_arith_result_desc msgid "Descending" msgstr "Decrescente" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evitar duplicados" #: edit_arith_cond msgid "Conditions:" msgstr "Condições:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indiferente" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "O primeiro operador deve ser maior que o segundo" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "O primeiro operador deve ser menor que o segundo" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Outras condições" #: edit_autocp msgid "Automatic content generator:" msgstr "Gerador automático de conteúdo:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Selecione o tipo de gerador de conteúdo automático para esta atividade." #: edit_autocp_block msgid "Content generator" msgstr "Gerador de conteúdo" #: edit_autocp_btn msgid "Settings..." msgstr "Configurações..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configure as especificações do provedor de conteúdo" #: edit_data msgid "Edit data" msgstr "Editar dados" #: edit_act msgid "Activity edit" msgstr "Editar atividade" #: edit_acp msgid "Content provider edit" msgstr "Editar provedor de conteúdo" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "Erro ao criar o provedor de conteúdo!" #: edit_project_author_group msgid "Creation" msgstr "Criação" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descrição" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interface do usuário" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descrição:" #: m_Edit msgid "Edit" msgstr "Editar" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "P*" #: edit_act_newActivity msgid "New activity..." msgstr "Nova atividade..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "P#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Inserir" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Visualizar" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Projeto" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Editar configurações do projeto" #: action_editMedia_caption msgid "Media" msgstr "Mídia" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Editar a biblioteca de mídia do projeto" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Atividades" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Editar as atividades" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Sequências" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Editar as sequências das atividades" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "O atual projeto foi modificado. Você quer salvar as mudanças?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descritores" #: edit_media_new msgid "New media object..." msgstr "Novo objeto de mídia..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Adicione uma nova imagem ou objeto de multimídia à biblioteca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Limite de pontuação:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Selecione este modo quando a pontuação global for igual a / ou maior que..." #: edit_seq_time msgid "Time threshold:" msgstr "Limite de tempo:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Para selecionar este modo, o tempo gasto em atividades deve ser menor que..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Selecione este modo quando a pontuação global for menor que..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Selecione este modo quando o tempo gasto em atividades for maior que..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Pulos condicionais" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Definir pulos especiais a serem executados somente em condições específicas" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Definir condições de pulo para um nível superior" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Pulo Inferior:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Pulo Superior:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Definir condições de pulo para um nível inferior" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Ação definida para o botão \"próximo\"" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Ação definida para o botão \"anterior\"" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Definir o alvo do pulo" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Ação a ser realizada" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Atividade definida para este elemento da sequência" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Etiqueta usada para fazer referência a este elemento de sequência (campo " "opcional)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descrição do elemento da sequência (campo opcional)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Habilitar ou desabilitar o botão de setas" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "" "Seguir para a próxima atividade automaticamente quando a atual for finalizada" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Segundos de espera antes de realizar a mudança automática" #: edit_color_dlgTitle msgid "Select color" msgstr "Selecione uma cor" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Por favor, espere enquanto o recurso está sendo renomeado..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Largura:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Largura da célula (em pixels)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Altura:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Altura da célula (em pixels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Palavras escondidas:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Lista das palavras escondidas localizadas no painel" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Use o painel B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Os conteúdos do segundo painel serão exibidos conforme as palavras forem " "encontradas" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Selecione o tipo de formatador a ser utilizado no painel" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Número de colunas do painel" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Número de linhas do painel" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Delimitadores transparentes" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "Trate os delimitadores (caixas pretas) como buracos transparentes" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Embaralhar\\:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Número de vezes para embaralhar" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copiar atributos para..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Atributos" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplicar a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Janela Principal" #: edit_act_copy_style_play msgid "Play window" msgstr "Janela de Jogos" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Atividades a serem modificadas:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copiar atributos" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "Copiar os atributos da atividade atual para outras atividades" #: edit_new_project_name msgid "Project name:" msgstr "Nome do projeto:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nome descritivo do projeto em poucas palavras" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nome do arquivo:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nome do arquivo do projeto, sem a extensão" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Pasta:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nome da pasta em que o projeto será armazenado" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Procurar..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Criar novo projeto do JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Erro: Projeto, arquivo e pasta devem ter nomes válidos (nomes nulos são " "inválidos)." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "Esta pasta já contém outro projeto do Clic 3.0 ou do JClic. A fim de evitar " "confusões, recomenda-se manter cada projeto em uma pasta separada, mas esta " "não é uma regra. Você realmente quer criar o novo projeto nesta pasta?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Erro: Incapaz de criar a pasta especificada!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Erro: Nenhuma atividade selecionada! Para usar esta função você deve " "selecionar atividades às quais os atributos indicados serão aplicados." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copiando atributos para:" #: edit_act_copy_margin msgid "Margin" msgstr "Margem" #: edit_act_copy_bgColor msgid "Background color" msgstr "Cor do plano de fundo" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradiente" #: edit_act_copy_bgImage msgid "Background image" msgstr "Imagem do plano de fundo" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Borda" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Plano de fundo transparente" #: edit_act_copy_position msgid "Position" msgstr "Posição" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Mensagens" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Estilo da mensagem inicial" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Estilo da mensagem final" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Estilo da mensagem de erro" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Relatórios" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Incluir atividade no relatório" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Registrar ações" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interface do usuário" #: edit_act_copy_skin msgid "Skin" msgstr "Skin (aparência da moldura)" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sons eventuais" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Contadores" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Contador de tempo" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Tempo máximo" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Contador de tentativas" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Máximo de tentativas" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Contador de acertos" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Embaralhar # vezes" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botões" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Botão de Ajuda" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Botão de informação" #: edit_act_copy_grids msgid "Grids" msgstr "Grades" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Estilo da grade A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Estilo da grade B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Estilo das grades de texto" #: edit_act_copy_text msgid "Text activities" msgstr "Atividades de texto" #: edit_act_copy_fontFace msgid "Font face" msgstr "Fonte" #: edit_act_copy_fontSize msgid "Font size" msgstr "Tamanho da fonte" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Estilo da fonte" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Cor principal do texto" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Selecione o projeto jClic do qual as atividades serão importadas" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Cor de erro" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Espaço de tabulação" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Estilo da mensagem anterior" #: edit_act_changeType msgid "Change activity type" msgstr "Alterar tipo de atividade" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nome completo da Classe a ser utilizada para construir a atividade (somente " "para usuários avançados!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Outro..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Usuários avançados podem também criar tipos não-registrados de atividades do " "JClic. Somente escreva abaixo o nome completo da Classe, prefixado pelo " "pacote (como \"com.acme.activities.FooActivity\"). Classes de atividade " "devem extender edu.xtec.jclic.Activity, e devem ser acessíveis para o " "carregador de classes JVM (JVM classloader)." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nome da atividade:" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Cada atividade deve ter um nome único no projeto" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Aviso: " "Alterar o tipo de atividade pode causar perda de alguns atributos e objetos " "da atividade atual. Realize esse procedimento com " "cuidado!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Localização do código do JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "Endereço (URL) apontando para a pasta com os arquivos de programas JClic e " "scripts" #: applet_prev_text msgid "HTML code before:" msgstr "Código HTML anterior:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Texto ou código HTML a ser aplicado antes do applet" #: applet_post_text msgid "HTML code after:" msgstr "Código HTML posterior:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Texto ou código HTML a ser aplicado após o applet" #: applet_size msgid "Applet size:" msgstr "Tamanho do applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "largura e altura do applet, em valores absolutos ou percentuais." #: applet_page_title msgid "Page title:" msgstr "Título da página:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "Texto a ser exibido no topo da janela do navegador" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "A página \"%s\" foi criada com sucesso." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "Você quer abrir a página com o navegador agora?" #: action_createHTML_caption msgid "Create web page..." msgstr "Criar página da web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Criação da página HTML com um applet do JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" "Criar uma página HTML com um applet do JClic contendo o atual projeto" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nome do arquivo:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nome do arquivo HTML a ser criado" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valores padrão utilizados na criação da página da web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Cor do plano de fundo:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Cor do plano de fundo da página HTML" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centralizado" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Exibir o applet centralizado horizontalmente" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Largura do applet (absoluto ou percentual)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Altura do applet (absoluto ou percentual)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Ao sair, vá para:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "Ao sair, redirecionar a navegação do JClic para o endereço (URL)" #: applet_infoFrame msgid "Info frame name:" msgstr "Nome do quadro de informações:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Nome do quadro utilizado para exibir conteúdos relacionados com o botão " "\"informações\"" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Criar instalador do projeto..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Criar um script instalador de projeto para o JClic player" #: installer_caption msgid "Edit project installer script" msgstr "Editar script instalador de projetos" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Título:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Título de projeto, a ser mostrado no auxiliar de instalação" #: installer_authors msgid "Autors:" msgstr "Autores:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autor/es do projeto (texto curto)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Pasta:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nome da pasta a ser sugerido pelo auxiliar de instalação" #: installer_files msgid "Files to be copied:" msgstr "Arquivos a serem copiados:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Arquivos a serem copiados pelo instalador" #: installer_files_available msgid "Available files" msgstr "Arquivos disponíveis" #: installer_files_selected msgid "Selected files" msgstr "Arquivos selecionados" #: installer_files_add msgid ">> add >>" msgstr ">> adicionar >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Adicionar à lista o arquivo selecionado" #: installer_files_remove msgid "<< remove <<" msgstr "<< remover <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Remover da lista o arquivo selecionado" #: installer_button msgid "Launch button" msgstr "Botão de início" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propriedades do botão a ser exibido na biblioteca de projetos" #: installer_button_project msgid "Main project:" msgstr "Projeto principal:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Projeto JClic a ser iniciado pelo botão" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Rótulo:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Rótulo de texto curto, a ser exibido dentro do botão" #: installer_button_icon msgid "Icon:" msgstr "Ícone:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Imagem a ser utilizada como ícone do botão. Deixe em branco para usar o " "ícone padrão do JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descrição" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Dica a ser exibida pelo botão" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Erro: Está faltando o título do projeto" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "Erro: Está faltando o nome da pasta" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Erro: Nenhum arquivo selecionado" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Erro: Está faltando o rótulo de texto do botão de início" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Erro: O projeto definido pelo botão de início não está na lista de arquivos " "a serem copiados" #: applet_page_full msgid "Full-page applet" msgstr "Applet de página cheia" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "Applet com dimensões específicas" #: edit_text_align_left msgid "Align text left" msgstr "Alinhar texto à esquerda" #: edit_text_align_center msgid "Center text" msgstr "Centralizar texto" #: edit_text_align_right msgid "Align text right" msgstr "Alinhar texto à direita" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Criar ou remover alvo" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Inserir uma célula" #: edit_text_act_content msgid "Content" msgstr "Conteúdo" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Estilo" #: edit_cell_size msgid "Cell size:" msgstr "Tamanho da célula:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "As seguintes atividades não aparecem em sequências de atividade do projeto, " "portanto nunca serão exibidas:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Os seguintes objetos de mídia não estão sendo usados diretamente em nenhuma " "atividade:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "Você quer adicioná-los após a última atividade da sequência?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "Você quer removê-los?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Remoção de objetos de mídia não utilizados" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Atividades isoladas" #: edit_media_refreshAll msgid "Update all media content" msgstr "Atualizar todo o conteúdo de mídia" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Atualizar todos os objetos de mídia recarregando estes arquivos" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Atualizando mídia..." #: edit_media_exportAll msgid "Export all media" msgstr "Exportar toda mídia" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Salvar em arquivos todo o conteúdo de todos os elementos de mídia" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Selecione" #: edit_shape_addPoint msgid "Add point" msgstr "Adicione ponto" #: edit_shape_deletePoint msgid "Delete" msgstr "Apague" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Desenhe retângulo" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Desenhe elipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Desenhe polígono" #: edit_shape_toLine msgid "Convert to line" msgstr "Converter para linha" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Converter para curva Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Converter para curva quadratica" #: edit_shape_rLeft msgid "Rotate left" msgstr "Girar esquerda" #: edit_shape_rRight msgid "Rotate right" msgstr "Girar direita" #: edit_shape_expand msgid "Expand" msgstr "Expandir" #: edit_shape_contract msgid "Contract" msgstr "Contrair" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Zoom +" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Zoom -" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Unir os pontos mais próximos" #: edit_shape_showPoints msgid "Show points" msgstr "Mostrar pontos" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Mostrar/ Ocultar os pontos" #: edit_shape_gridSize msgid "Grid size:" msgstr "Tamanho da grade:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Mostrar/ Ocultar a grade" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Raio de Magneto:" #: edit_shape_elements msgid "Defined elements" msgstr "Elementos definidos" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nome do elemento selecionado" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Ativar Raio de Magneto,quando habilitado" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Tamanho da grade" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Atividade:" #: edit_mc_sequence msgid "Sequence:" msgstr "Sequência:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Projeto:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Escolha atividade" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Escolha sequência" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "Dados insuficientes!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Cor da seta:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Cor utilizada pelo editor para desenhar as setas (não exatamente, porque uma " "máscara de bit XOR é utilizada)" #: edit_act_editActivity msgid "Edit..." msgstr "Editar..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Editar a atividade selecionada" #: action_saveFileAs_caption msgid "Save as..." msgstr "Salvar como..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Salva o projeto atual com um nome diferente" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportamento" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Arrastar" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Arrastar células em vez de usar linhas de conexão" #: edit_act_behavior_order msgid "Check solving order" msgstr "Verificar ordem de solução" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "As células devem ser solucionadas em ordem" #: edit_act_scramble msgid "Scramble" msgstr "Embaralhar" #: action_importActivities_caption msgid "Import activities..." msgstr "Importar atividades..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importar atividades de outro projeto" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "O arquivo selecionado corresponde ao projeto atual. Atividades podem ser " "importadas apenas de projetos diferentes. Por favor, escolha outro arquivo " "de projeto." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "Selecione uma ou mais atividades para importar ao projeto atual:" #: import_importing msgid "Importing..." msgstr "Importando..." #: import_checkdep msgid "Checking dependencies..." msgstr "Verificando dependências..." #: import_impmedia msgid "Importing media\\:" msgstr "Importando mídia\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importanto atividade\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Selecione o projeto jClic do qual as atividades serão importadas" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marcas" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marcas de início\\:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marca usada para indicar começo de etiqueta" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marca final\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marca que indica final de etiqueta" #: edit_tagRep_file msgid "File" msgstr "Arquivo" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Arquivo ou URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "Nome ou URL do arquivo com os valores que substituirão as etiquetas" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Codificação de caracteres\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Codificação de caracteres usada no arquivo" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Procurar..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Procurar entre os arquivos" #: edit_tagRep_title msgid "Tag replacing" msgstr "Substituir etiqueta" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Apagar estilos de texto..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Alerta\\: Essa ação irá apagar os atributos de caracteres específicos " "aplicados ao documento, devolvendo-o ao seu estilo principal. Essa ação não " "poderá ser desfeita. Deseja continuar?" #: img_max_size msgid "Maximum size of images:" msgstr "Tamanho máximo das imagens:" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "Largura máxima das imagens importadas para a biblioteca." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "Altura máxima das imagens importadas para a biblioteca." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "A imagem \"%s\" possui %s pixels. Ela está maior que o permitido pelo JClic " "Author (%s). Deseja redimensioná-la?" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_es.po0000644000175000017500000024530411377161311023151 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2010-01-22 18:16+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Descripción" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Nombre de la actividad" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Nombre:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Descripción de la actividad" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Informes" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Incluir esta actividad en los informes" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Incluir los resultados de esta actividad en los informes de usuario" #: edit_act_code msgid "Code:" msgstr "Codigo:" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" "Código opcional utilizado para agrupar y filtrar en la base de datos de " "informes." #: edit_act_reportActions msgid "Report user actions" msgstr "Registrar también las acciones" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" "Registrar los detalles de todas las acciones efectuadas por los usuarios." #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Contadores" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Contador de tiempo" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "Mostrar u ocultar el contador de tiempo." #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Contador de intentos" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "Mostrar u ocultar el contador de intentos." #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Contador de aciertos" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "Mostrar u ocultar el contador de aciertos." #: edit_act_maxTime msgid "Max time:" msgstr "Tiempo máximo:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" "Tiempo máximo permitido para resolver la actividad, en segundos. El cero " "significa tiempo ilimitado." #: edit_act_countdown msgid "Countdown" msgstr "Cuenta atrás" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "El contador empieza al valor máximo, decreciendo hasta cero." #: edit_act_maxActions msgid "Max tries:" msgstr "Intentos máx.:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "Número máximo de intentos permitidos, o cero para ilimitado." #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Botones" #: edit_act_helpBtn msgid "Help" msgstr "Ayuda" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "Mostrar o esconder el botón de ayuda" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "Mostrar la solución" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Mostrar este mensaje:" #: edit_act_infoBtn msgid "Information" msgstr "Información" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "Mostrar u ocultar el botón de información" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "Mostrar esta URL:" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Ejecutar el comando:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" "Dirección de la página web que se mostrará al hacer clic en el botón de " "información." #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" "Linea de órdenes que se ejecutará al hacer clic en el botón de información." #: edit_act_mainWindow msgid "Main window:" msgstr "Ventana principal:" #: edit_act_gameWindow msgid "Game window:" msgstr "Ventana de juego:" #: edit_act_margin msgid "Margin:" msgstr "Margen:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "Espacio vertical y horizontal entre objetos visuales." #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Color de fondo:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Cambiar el color de fondo." #: edit_gradient_startColor msgid "Start color:" msgstr "Color inicial:" #: edit_gradient_endColor msgid "End color:" msgstr "Color final:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "Selección del color inicial" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "Selección del color final" #: edit_gradient_cycles msgid "Cycles:" msgstr "Ciclos:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "Número de repeticiones del gradiente sobre la superficie a pintar." #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientacion:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "Orientación del gradiente, medida en grados sobre la horizontal." #: edit_act_gradient msgid "Gradient:" msgstr "Gradiente:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "Utilizar un gradiente de colores" #: edit_color_opacity msgid "Opacity" msgstr "Opacidad" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "Ajusta el valor del canal alfa (opacidad) de color." #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Gradiente" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "Utilizar los valores por defecto (gradiente nulo)" #: edit_act_image msgid "Image:" msgstr "Imagen:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Descripción" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "Nombre y descripción" #: edit_act_tiledBgImg msgid "Tiled" msgstr "En mosaico" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" "Pinta toda la superficie con la imagen, repitiéndola a lo largo de los ejes " "X e Y tantas veces como sea necesario." #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Vista previa:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Borde" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "Dibujar una linea de borde alrededor de la ventana" #: edit_act_transparent msgid "Transparent" msgstr "Transparente" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "La ventana tiene el fondo transparente" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "Anchura:" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "Altura:" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "Anchura del objeto, indicada en pixels" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "Altura del objeto, en pixels" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "Centrada" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "El objeto se situa centrado respecto a la ventana principal" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "X:" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "Posición horizontal absoluta" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "Y:" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "Posición vertical absoluta" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "Interfaz de usuario" #: edit_act_image_tooltip msgid "Select an image" msgstr "Seleccionar una imagen" #: edit_act_text msgid "Text:" msgstr "Texto:" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "Texto que se mostrará en este objeto" #: edit_font_face msgid "Typeface:" msgstr "Tipo:" #: edit_font_size msgid "Size:" msgstr "Tamaño:" #: edit_font_bold msgid "Bold" msgstr "Negrita" #: edit_font_italic msgid "Italic" msgstr "Cursiva" #: edit_font_underline msgid "Underline" msgstr "Subrayado" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "Estilo:" #: edit_cell_title msgid "Cell contents" msgstr "Contenido de la casilla" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "Mensajes" #: edit_act_msg_initial msgid "Initial message:" msgstr "Mensaje inicial:" #: edit_act_msg_final msgid "Final message:" msgstr "Mensaje final:" #: edit_act_msg_prev msgid "Previous message:" msgstr "Mensaje previo:" #: edit_act_msg_error msgid "Error message:" msgstr "Mensaje de error:" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "Mensaje que se muestra al inicar la actividad" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "Mensaje que se muestra al acabar la actividad" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "Mensaje que se muestra al acabar la actividad con errores" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" "Mensaje que se muestra antes de empezar (solo en ciertos tipos de " "actividades)" #: edit_align msgid "Align:" msgstr "Orientación:" #: edit_act_textColor msgid "Text color:" msgstr "Color del texto:" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "Color utilizado para dibujar el texto" #: edit_act_shadowColor msgid "Shadow color:" msgstr "Color de la sombra:" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "Color utilizado en la sombra del texto, si existe." #: edit_act_shadow msgid "Shadow" msgstr "Sombra" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "Dibujar el texto con sombra" #: edit_act_borderColor msgid "Border color:" msgstr "Color del borde:" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "Color utilizado para dibujar el borde de la casilla" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "Color de estado inactivo:" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "Color utilizado cuando la casilla está desactivada" #: edit_act_altColor msgid "Alternative color:" msgstr "Color alternativo:" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" "Color con el que se muestra el contenido alternativo de las casillas una vez " "solucionadas." #: edit_cell_marked msgid "Marked" msgstr "Marcada" #: edit_cell_disabled msgid "Disabled" msgstr "Desactivada" #: edit_cell_alt msgid "Alternative" msgstr "Alternativa" #: edit_cell_textMargin msgid "Internal margin:" msgstr "Margen interno:" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "Espacio entre los bordes de la celda y el texto." #: edit_cell_borderWidth msgid "Border width:" msgstr "Grosor del borde:" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "Grosor del trazo utilizado para dibujar el borde." #: edit_cell_markerWidth msgid "Marker width:" msgstr "Grosor del marcador:" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" "Grosor del trazo utilizado para dibujar el borde cuando la casilla se " "encuentra marcada o seleccionada." #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "Vista previa de la casilla en estado \"alternativo\"" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "Vista previa en estado \"desactivado\"" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "Vista previa en estado \"marcado\"" #: edit_act_testAction msgid "Preview activity" msgstr "Mostrar actividad" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "Probar el funcionamiento de la actividad" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "Descripción" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "Título y descripción de la actividad" #: edit_act_panels_options msgid "Options" msgstr "Opciones" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "Opciones de la actividad" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "Ventana" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "" "Aspecto, tamaño y posición de la ventana en la que corre la actividad" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "Mensajes" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "Contenido de los mensajes de la actividad" #: edit_act_panels_panel msgid "Panel" msgstr "Panel" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "Contenido del panel" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "Estilo" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "Ajustar el color, tipo y tamaño de letra de las celdas" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "Estilo:" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "Evitar sobreposición imagen/texto" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "Intentar evitar que texto e imagen se solapen" #: edit_media_exists_1 msgid "The file" msgstr "El archivo" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "ya se encuentra en la mediateca!" #: edit_act_shaper msgid "Shaper:" msgstr "Recortador:" #: edit_act_shaper_err msgid "Shaper error:" msgstr "Error en el generador de formas:" #: edit_act_num_cols msgid "Columns:" msgstr "Columnas:" #: edit_act_num_rows msgid "Rows:" msgstr "Filas:" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "Altura de los dientes:" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "Anchura de los dientes:" #: edit_act_toothRandom msgid "Random distribution" msgstr "Distribución aleatoria" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "Propiedades del generador de formas" #: edit_act_panels_text msgid "Text" msgstr "Texto" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "Texto de la actividad" #: action_saveFile_caption msgid "Save..." msgstr "Guardar..." #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "GG" #: action_saveFile_tooltip msgid "Save the current project" msgstr "Guardar el proyecto" #: action_docTree_caption msgid "Document tree..." msgstr "Árbol del documento..." #: action_docTree_keys msgid "T*" msgstr "A*" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "Mostrar el documento del proyecto en forma de árbol" #: edit_docTree_title msgid "Document tree" msgstr "Árbol del documento" #: edit_media_referencedBy msgid "Referenced by:" msgstr "Referenciado por:" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" "Atención:

Este proyecto " "enlaza con otros proyectos.
¿Desea explorar los enlaces y cargar todos " "los archivos relacionados?

(Se recomienda responder SI cuando se " "está importando un paquete de actividades Clic 3.0)" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "Tipo:" #: edit_mc_type_unknown msgid "Unknown" msgstr "Desconocido" #: edit_mc_type_sound msgid "Play sound" msgstr "Interpretar sonido" #: edit_mc_type_video msgid "Play video" msgstr "Interpretar video" #: edit_mc_type_midi msgid "Play MIDI" msgstr "Interpretar MIDI" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "Interpretar CD audio" #: edit_mc_type_record msgid "Record sound" msgstr "Grabar sonido" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "Interpretar grabación" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "Ir a la actividad" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "Ir a la secuencia" #: edit_mc_type_run_external msgid "Run program" msgstr "Ejecutar un programa" #: edit_mc_type_url msgid "Show URL" msgstr "Mostrar la URL" #: edit_mc_type_exit msgid "End" msgstr "Acabar" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "Volver" #: edit_mc_level msgid "Priority level:" msgstr "Nivel de prioridad:" #: edit_mc_file msgid "File:" msgstr "Archivo:" #: edit_mc_externalParam msgid "Parameters:" msgstr "Parámetros:" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "Desde:" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "Hasta:" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "Duración máx.:" #: edit_mc_recBuffer msgid "Record tape:" msgstr "Cinta de grabación:" #: edit_mc_stretch msgid "Stretch size" msgstr "Comprimir si no cabe" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "Posición:" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "X:" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "Y:" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "Desde:" #: edit_mc_location_from_box msgid "Cell" msgstr "Celda" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "Ventana" #: edit_mc_location_from_frame msgid "Frame" msgstr "Marco" #: edit_mc_loop msgid "Loop playback" msgstr "Repetir indefinidamente" #: edit_mc_autostart msgid "Auto start" msgstr "Arranque automático" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "Capturar ratón" #: edit_mc_title msgid "Multimedia and active content" msgstr "Contenido activo y multimedia" #: edit_mc_label msgid "Active content:" msgstr "Contenido activo:" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "Selección del objeto multimedia" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "Biblioteca de recursos" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "Centrado en la celda" #: edit_mc_pos_window msgid "Centered over window" msgstr "Centrado en la ventana" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "Especificar posición:" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "La estructura o los datos del árbol son incorrectos." #: edit_act_panels_controls msgid "Controls" msgstr "Controles" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "Opciones de botones y contadores" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "Tipo:" #: edit_act_gridLayout msgid "Grid layout:" msgstr "Distribución de los paneles:" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "Posición relativa de los paneles A y B." #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "Resolución inversa" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" "La actividad se considerará resuelta cuando todos los elementos de \"B\" " "estén emparejados." #: edit_act_showAllArrows msgid "Show all arrows" msgstr "Mostrar todas las flechas" #: edit_act_alt msgid "Alternative content:" msgstr "Contenido alternativo:" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" "Contenido que se muestra en las casillas ya resueltas o no asignadas." #: edit_act_alt_toggle msgid "ALT" msgstr "ALT" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "Editar el contenido alternativo" #: edit_act_grid msgid "Grid" msgstr "Panel" #: edit_act_grid_A msgid "Grid A" msgstr "Panel A" #: edit_act_grid_B msgid "Grid B" msgstr "Panel B" #: edit_act_grid_layout msgid "Layout" msgstr "Distribución" #: edit_act_grid_relationship msgid "Relationship" msgstr "Relaciones" #: edit_seq_activity_header msgid "activity" msgstr "actividad" #: edit_seq_tag_header msgid "tag" msgstr "etiqueta" #: edit_seq_jump_header msgid "jump to" msgstr "salto a" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "Actividad:" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "Etiqueta:" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "Descripción:" #: edit_seq_auto msgid "Move on automatically" msgstr "Avance automático" #: edit_seq_delay msgid "Delay:" msgstr "Retardo:" #: edit_seq_action_fwd msgid "Go forward" msgstr "Avanzar" #: edit_seq_action_back msgid "Go bak" msgstr "Retroceder" #: edit_seq_action_jump msgid "Jump to..." msgstr "Saltar a..." #: edit_seq_action_stop msgid "Stop" msgstr "Detenerse" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "Volver" #: edit_seq_action_exit msgid "Exit JClic" msgstr "Salir de JClic" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "Flecha adelante:" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "Flecha atrás:" #: edit_seq_action msgid "Action:" msgstr "Acción:" #: edit_seq_button_enabled msgid "Show button" msgstr "Mostrar botón" #: edit_seq_project msgid "JClic Project:" msgstr "Proyecto JClic:" #: edit_act_absolute msgid "Absolute position" msgstr "Posición absoluta" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "El objeto se situará en las coordenadas X e Y que se especifiquen" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "Posición:" #: edit_seq_newElement msgid "New sequence element..." msgstr "Nuevo elemento de secuencia..." #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "Insertar un nuevo elemento en la secuencia de actividades" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "Seleccione una actividad para el nuevo elemento de secuencia." #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" "¡No se puede crear un nuevo elemento de secuencia sin indicar la actividad!" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" "En este proyecto no hay ninguna actividad. No se pueden crear elementos de " "secuencia en un proyecto vacío." #: edit_seq_jump_msg msgid "Jump target:" msgstr "Destino del salto:" #: edit_seq_jump_title msgid "Jump target" msgstr "Destino del salto" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "Añadir una nueva actividad al projecto" #: edit_act_prompt_class msgid "Type of activity:" msgstr "Tipo de actividad:" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "Nombre:" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" "Seleccione el tipo de actividad que desea crear y asígnele un nombre:" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "¡Hay que seleccionar un tipo de actividad!" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "¡Hay que indicar un nombre para la actividad!" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "¡No se ha podido crear la actividad!" #: edit_act_newActivity_class msgid "Java class name:" msgstr "Clase Java:" #: edit_text_act_format msgid "Format" msgstr "Formato" #: edit_text_act_answer msgid "Answer" msgstr "Respuesta" #: edit_text_act_popup msgid "Pop up" msgstr "Ventana emergente" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "Respuestas válidas:" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "Añadir un nuevo elemento a la lista" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "Modificar el elemento seleccionado" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "Eliminar el elemento seleccionado de la lista" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "Mover arriba" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "Mover abajo" #: edit_list_newValue msgid "New text:" msgstr "Nuevo texto:" #: edit_list_addElement msgid "Add new list element" msgstr "Añadir un nuevo elemento de texto" #: edit_list_modifyValue msgid "Modify selected text" msgstr "Modificación del texto seleccionado" #: edit_text_act_target msgid "Target" msgstr "Incógnita" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "Longitud máxima:" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "Número máximo de caracteres permitidos en la respuesta." #: edit_text_act_fillingChar msgid "Filling character" msgstr "Carácter de relleno" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "Carácter utilizado para indicar la incógnita" #: edit_text_act_iniLen msgid "Initial length:" msgstr "Longitud inicial:" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" "Número de caracteres de relleno que se mostraran al inicio de la actividad." #: edit_text_act_iniText msgid "Initial text:" msgstr "Texto inicial:" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "Texto que se mostrará en la incógnita al iniciar la actividad." #: edit_text_act_list msgid "Show a list of options:" msgstr "Mostrar una lista de opciones:" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "El usuario/a deberá elegir una opción en una lista." #: edit_text_act_check_title msgid "Correction options" msgstr "Opciones de evaluación" #: edit_text_act_popup_no msgid "No pop up" msgstr "Sin ventana emergente" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "Aparición automática" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "Aparición en errores" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "Aparición con F1" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "Tipo:" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "Retardo de aparicion:" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "Tiempo máximo:" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "Solamente interpretar sonido" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" "Para crear una nueva incógnita es necesario seleccionar un fragmento de " "texto." #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" "El texto de las incógnitas no puede incluir retornos de párrafo ni " "tabuladores." #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "Las incógnitas no se pueden solapar" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "¡Las incógnitas no pueden contener celdas!" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "Color del papel:" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "Editar los estilos del documento..." #: edit_text_act_mainStyle msgid "Main style:" msgstr "Estilo principal:" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "Tab space:" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "Espacios entre marcas de tabulador:" #: edit_text_act_colors msgid "Colors:" msgstr "Colores:" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "Colores de las incógnitas:" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "Colores de error:" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "Vista preliminar:" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "Texto normal" #: edit_text_act_styleSample_target msgid "target" msgstr "incógnita" #: edit_text_act_styleSample_error msgid "error" msgstr "error" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "texto normal" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "texto normal." #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" "Atención: esta acción suprimirá la incógnita actualmente seleccionada. " "¿Seguro que desea hacerlo?" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "Ventana previa..." #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "No mostrar ningún texto antes de empezar la actividad" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "Mostrar el texto completo del ejercicio" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "Mostrar este texto:" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "Tiempo màximo:" #: edit_text_act_edit_target msgid "Target..." msgstr "Incógnita..." #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "Mostrar botón de evaluación" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "Texto del botón:" #: edit_text_act_checkCase msgid "Match case" msgstr "Comprobar mayúsculas / minúsculas" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "Considerar acentos y caracteres especiales" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "Considerar los símbolos de puntuación" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "Permitir espacios repetidos" #: edit_text_act_checkOptions msgid "Criteria" msgstr "Criterios" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "Saltar automáticamente a la siguiente incógnita" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "Avanzar solo si se responde correctamente" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "Indicar la posición de los errores" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "Parámetros del algoritmo de análisis:" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "Pasos:" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "Campo de exploración:" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "Evaluación" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "Análisis de las respuestas" #: edit_text_act_check_bt msgid "Correction..." msgstr "Evaluación..." #: edit_text_act_checkButton msgid "Correction button" msgstr "Botón de evaluación" #: edit_text_act_checkProgress msgid "Progress" msgstr "Progreso" #: edit_text_act_typeBtn msgid "Type..." msgstr "Tipo..." #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "Ordenar párrafos" #: edit_text_act_orderWords msgid "Order words" msgstr "Ordenar palabras" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "Barajar palabras entre párrafos" #: edit_text_act_type_title msgid "Activity type" msgstr "Tipo de actividad" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" "Esta acción suprimirá todas las incógnitas actualmente definidas. ¿Seguro " "que desea hacerlo?" #: edit_text_act_identWords msgid "Identify words" msgstr "Identificar palabras" #: edit_text_act_identChars msgid "Identify characters" msgstr "Identificar caracteres" #: edit_media_change_name msgid "Change name..." msgstr "Cambiar nombre..." #: edit_media_change_file msgid "Change file..." msgstr "Cambiar el archivo..." #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "Guardarlo en el archivo ZIP" #: edit_media_type msgid "Media type:" msgstr "Tipo de recurso:" #: edit_media_size msgid "File size:" msgstr "Tamaño del archivo:" #: edit_media_show_type msgid "Files of type:" msgstr "Tipo de archivos:" #: edit_media_preview msgid "Preview media" msgstr "Visualizar objeto" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "Previsualización del recurso multimedia" #: edit_media_rename msgid "Change resource name" msgstr "Cambiar el nombre del recurso" #: edit_media_rename_title msgid "Rename" msgstr "Renombrar" #: edit_media_rename_prompt msgid "New name:" msgstr "Nuevo nombre:" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "¡Nombre de recurso no válido!" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" "Ya existe otro recurso con este nombre. Los recursos deben tener un nombre " "único en el proyecto." #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "Archivo incorrecto" #: err_media_chfile_different msgid "File must be of same type" msgstr "File must be of same type" #: edit_media_font_error msgid "Unable to load font!" msgstr "No se pudo cargar el tipo de letra." #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "Guardar el archivo (extraerlo del ZIP)" #: edit_media_refresh_file msgid "Update media content from file" msgstr "Actualizar el contenido del recurso desde el archivo" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" "Este no es un archivo real, sino un objeto situado en el interior de un " "contenedor ZIP. Para utilizar esta función es necesario que exista un " "archivo con el mismo nombre en la carpeta donde se halla el archivo ZIP." #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "Actividades" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "Secuencias" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "Mediateca" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "Gestión de las imágenes y otros recursos utilizados en el proyecto." #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "Creación y edición de las actividades del proyecto" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "Creación y edición de secuencias de actividades" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "Título:" #: edit_project_title_tooltip msgid "Project's title" msgstr "Título del proyecto" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "Proyecto" #: edit_project_tooltip msgid "Edit project properties" msgstr "Edición de las propiedades del proyecto" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "Descripción:" #: edit_project_description_tooltip msgid "General description of the project" msgstr "Descripción general del proyecto" #: edit_project_area msgid "Areas:" msgstr "Areas:" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "Áreas curriculares a las que se orienta el proyecto" #: edit_project_level msgid "Levels:" msgstr "Niveles:" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "Niveles y ciclos educativos a los que se orienta el proyecto" #: edit_project_descriptors msgid "Descriptors:" msgstr "Descriptores:" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "Descriptores del proyecto (separados por comas)" #: edit_project_languages msgid "Languages:" msgstr "Idiomas:" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "Idiomas utilizados en el proyecto" #: edit_project_languages_modify msgid "Change the selected language" msgstr "Cambio del idioma seleccionado" #: edit_project_languages_add msgid "Add language" msgstr "Añadir idioma" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "Códigos de idioma ISO-639:" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "Autores/as:" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "Personas que han participado en la creación del proyecto" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "Nombre:" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "Correo electrónico:" #: edit_project_author_rol msgid "Rol:" msgstr "Rol:" #: edit_project_author_organization msgid "Organization:" msgstr "Organización:" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "URL:" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "Nombre del autor/a (campo obligatorio)" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "Dirección de correo electrónico del autor/a (opcional)" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" "Rol de la persona en el proyecto: autor, colaborador, dibujos, sonidos... " "(opcional)" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "Escuela, universidad, asociación... (campo opcional)" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "Página web personal (campo opcional)" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "Otras características (campo opcional)" #: edit_project_author_info msgid "Author info:" msgstr "Datos del autor/a:" #: edit_project_author_add msgid "Add author to list" msgstr "Añadir un autor a la lista" #: edit_project_author_edit msgid "Edit author info" msgstr "Modificación de los datos del autor/a" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "Nombre:" #: edit_project_org_name_tooltip msgid "School name" msgstr "Nombre de la escuela" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "Correo electrónico:" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "Dirección de correo electrónico de la escuela" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "URL:" #: edit_project_org_url_tooltip msgid "School website" msgstr "Dirección web de la escuela" #: edit_project_org_address msgid "Address:" msgstr "Dirección:" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "Dirección postal de la escuela" #: edit_project_org_pc msgid "PC:" msgstr "CP:" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "Código postal" #: edit_project_org_city msgid "City:" msgstr "Localidad:" #: edit_project_org_city_tooltip msgid "School city" msgstr "Localidad de la escuela" #: edit_project_org_country msgid "Country:" msgstr "Pais:" #: edit_project_org_state msgid "State:" msgstr "Estado:" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_org msgid "School/s:" msgstr "Centro/s:" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "Escuelas y otras instituciones que han participado en el proyecto" #: edit_project_org_info msgid "Organization info:" msgstr "Datos de la organización:" #: edit_project_org_add msgid "Add organization" msgstr "Añadir una nueva organización" #: edit_project_org_edit msgid "Edit organization data" msgstr "Modificar los datos de la organización" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "Estado, pais, federación..." #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "Estado federal, nacionalidad, comunidad, región..." #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "Otros datos..." #: edit_project_rev_date msgid "Date:" msgstr "Fecha:" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "Fecha de la revisión" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "Autores/as:" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "Autores/as de la revisión" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "Descripción:" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "Breve descripción de los cambios realizados" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "Comentarios:" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "Información adicional" #: edit_project_rev msgid "Revisions:" msgstr "Revisiones:" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "Historial de las principales modificaciones efectuadas al proyecto" #: edit_project_rev_add msgid "Add revision record" msgstr "Añadir un registro de revisión" #: edit_project_rev_edit msgid "Edit revision record" msgstr "Edición de los datos de la revisión" #: edit_project_rev_info msgid "Revision data" msgstr "Características de la revisión" #: edit_media_objects msgid "objects" msgstr "objetos" #: edit_media_object msgid "object" msgstr "objeto" #: edit_evsounds_start msgid "Start of activity:" msgstr "Inicio de actividad:" #: edit_evsounds_click msgid "Click on object:" msgstr "Hacer clic en un objeto:" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "Acción errónea:" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "Acción correcta:" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "Actividad finalizada con errores:" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "Actividad correctamente finalizada:" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "Error: La descripción no se puede dejar en blanco" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "Edición de los sonidos de evento" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "Sonidos de evento:" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Asignar sonidos específicos a cada evento de JClic" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "Sonidos de evento:" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "Asignar sonidos específicos a cada evento de JClic" #: edit_evsounds_default msgid "default sound" msgstr "sonido por defecto" #: edit_evsounds_disabled msgid "disabled" msgstr "desactivado" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "Activa o desactiva el sonido para este evento" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" "Haga clic para seleccionar el sonido ligado a este evento, o desmarque para " "utilizar el sonido por defecto" #: action_newProject_caption msgid "New project..." msgstr "Nuevo proyecto..." #: action_newProject_keys msgid "NN" msgstr "NN" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "Crear un nuevo proyecto JClic" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "Desde:" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "Valor mínimo del operando" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "Hasta:" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "Valor máximo del operando" #: edit_arith_op_with msgid "With:" msgstr "Con:" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "Si se marca, el operando puede tener también este valor" #: edit_arith_op_fromList msgid "One from the list:" msgstr "Uno de la lista:" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "Lista de posibles valores del operando" #: edit_arith_op_decimals msgid "Decimals:" msgstr "Decimales:" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "Número de decimales del operando" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "# (entero)" #: edit_arith_op_dec1 msgid "#.#" msgstr "#,#" #: edit_arith_op_dec2 msgid "#.##" msgstr "#,##" #: edit_arith_firstOp msgid "First operand" msgstr "Primer operando" #: edit_arith_secondOp msgid "Second operand" msgstr "Segundo operando" #: edit_arith_title msgid "Arith2 for JClic" msgstr "Arith2 para JClic" #: edit_arith_operations msgid "Operations:" msgstr "Operaciones:" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "Selecciona el tipo de operaciones a efectuar" #: edit_arith_operations_plus msgid "Plus" msgstr "Sumas" #: edit_arith_operations_minus msgid "Minus" msgstr "Restas" #: edit_arith_operations_multiply msgid "Multiply" msgstr "Multiplicaciones" #: edit_arith_operations_divide msgid "Divide" msgstr "Divisiones" #: edit_arith_unknown msgid "Unknown:" msgstr "Incógnita:" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "Selecciona el elemento que hará de incógnita" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "La incógnita es el resultado" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "La incógnita es el segundo operando" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "El primer operando es la incógnita" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "La operación es la incógnita" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "Escribir la expressión empezando por el resultado" #: edit_arith_result msgid "Result:" msgstr "Resultado:" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "Sin \"llevar\"" #: edit_arith_result_random msgid "Random" msgstr "Aleatorio" #: edit_arith_result_asc msgid "Ascending" msgstr "Ascendente" #: edit_arith_result_order msgid "Order by result:" msgstr "Ordenar por resultado:" #: edit_arith_result_desc msgid "Descending" msgstr "Descendente" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "Evitar duplicados" #: edit_arith_cond msgid "Conditions:" msgstr "Condiciones:" #: edit_arith_cond_ind msgid "Indifferent" msgstr "Indiferente" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "El primer operando debe ser mayor que el segundo" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "El primer operando debe ser menor que el segundo" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "Otras condiciones" #: edit_autocp msgid "Automatic content generator:" msgstr "Generador automático de contenido:" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" "Selección del tipo de generador automático de contenido para esta actividad." #: edit_autocp_block msgid "Content generator" msgstr "Generador de contenido" #: edit_autocp_btn msgid "Settings..." msgstr "Configuración..." #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "Configuración de los parámetros del generador de contenido" #: edit_data msgid "Edit data" msgstr "Edición de datos" #: edit_act msgid "Activity edit" msgstr "Edición de la actividad" #: edit_acp msgid "Content provider edit" msgstr "Edición del generador de contenido" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "¡Error de creación del generador automático de contenido!" #: edit_project_author_group msgid "Creation" msgstr "Creación" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "Descripción" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "Interfaz de usuario" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "Descripción:" #: m_Edit msgid "Edit" msgstr "Edición" #: m_Edit_Mnemonic msgid "E" msgstr "E" #: edit_media_preview_keys msgid "P*" msgstr "V*" #: edit_act_newActivity msgid "New activity..." msgstr "Nueva actividad..." #: edit_act_newActivity_keys msgid "A*" msgstr "A*" #: edit_act_testAction_keys msgid "P#10" msgstr "M#10" #: edit_seq_newElement_keys msgid "S*" msgstr "S*" #: m_Insert msgid "Insert" msgstr "Insertar" #: m_Insert_Mnemonic msgid "I" msgstr "I" #: m_View msgid "View" msgstr "Ver" #: m_View_Mnemonic msgid "V" msgstr "V" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "Proyecto" #: action_editProject_keys msgid "PP" msgstr "PP" #: action_editProject_tooltip msgid "Edit project settings" msgstr "Editar las propiedades del proyecto" #: action_editMedia_caption msgid "Media" msgstr "Mediateca" #: action_editMedia_keys msgid "MM" msgstr "MM" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "Edición de la biblioteca multimedia del proyecto" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "Actividades" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "AA" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "Edición de las actividades" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "Secuencias" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "SS" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "Edición de las secuencias de actividades" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "El proyecto actual ha sido modificado. ¿Desea guardar los cambios?" #: edit_project_descriptors_block msgid "Descriptors" msgstr "Descriptores" #: edit_media_new msgid "New media object..." msgstr "Nuevo objeto multimedia..." #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "Añadir una imagen o un objeto multimedia a la mediateca" #: edit_media_new_keys msgid "M*" msgstr "M*" #: edit_seq_threshold msgid "Score threshold:" msgstr "Umbral de puntuación:" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" "Seguir este camino cuando la puntuación global sea mayor o igual que..." #: edit_seq_time msgid "Time threshold:" msgstr "Umbral de tiempo:" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" "Para seguir este camino hay que haber realizado las actividades en un tiempo " "inferior a..." #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "Sigue este camino siempre que la puntuación global sea inferior a..." #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" "Seguir este camino siempre que el tiempo empleado en las actividades sea " "superior a..." #: edit_seq_condJump msgid "Conditional jumps" msgstr "Saltos condicionales" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" "Especificar saltos que se ejecutaran únicamente si se dan determinadas " "condiciones" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "Indicar las condiciones para saltar a un nivel superior" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "Salto inferior:" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "Salto superior:" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "Indicar las condiciones para saltar a un nivel inferior" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "Acción asignada al botón de avanzar" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "Acción asignada al botón de retroceder" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "Indicar el destino del salto" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "Acción a realizar" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "Actividad asociada a este elemento de secuencia" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" "Etiqueta utilizada para referirse a este elemento de secuencia (campo " "opcional)" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "Descripción del elemento de secuencia (campo opcional)" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "Activar o desactivar el botón de paso de actividad" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "Avanzar automáticamente al acabar la actividad" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "Número de segundos a esperar antes de realizar el paso automático" #: edit_color_dlgTitle msgid "Select color" msgstr "Selección del color" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "Por favor, espere mientras se cambia el nombre del recurso..." #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "Ancho:" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "Anchura de las celdas (en pixels)" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "Alto:" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "Altura de las celdas (en pixels)" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "Palabras escondidas:" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "Lista de las palabras escondidas en el panel" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "Utilizar el panel B" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" "Usar un segundo panel, que se mostrará a medida que se vayan encontrando las " "palabras" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "Selección del tipo de generador de formas del panel" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "Número de columnas del panel" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "Número de filas del panel" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "Separadores transparentes" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "" "Mostrar los separadores (casillas negras) como agujeros transparentes" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "Mezclas:" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "Número de veces que se mezclaran las piezas" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "Copiar atributos a..." #: edit_act_copy_attributes msgid "Attributes" msgstr "Atributos:" #: edit_act_copy_dest msgid "Apply to:" msgstr "Aplicar a:" #: edit_act_copy_style_main msgid "Main window" msgstr "Ventana principal" #: edit_act_copy_style_play msgid "Play window" msgstr "Ventana de juego" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "Actividades a modificar:" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "Copiar atributos" #: edit_act_copyAttributes_keys msgid "T" msgstr "T" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "" "Copiar a otras actividades algunos de los atributos de la actividad actual" #: edit_new_project_name msgid "Project name:" msgstr "Nombre del proyecto:" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "Nombre corto y descriptivo del proyecto" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "Nombre del archivo:" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "Nombre del archivo del proyecto, sin extensión" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "Carpeta:" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "Nombre de la carpeta en la que se guardará el proyecto" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "Navegar..." #: edit_new_project_title msgid "Create new JClic project" msgstr "Creación de un nuevo proyecto JClic" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" "Error: Tanto el proyecto como el archivo y la carpeta deben tener nombres " "válido." #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" "En esta carpeta existe ya otro proyecto Clic3.0 o JClic. Para evitar " "confusiones se recomienda mantener cada proyecto en una carpeta " "independiente, aunque no es un requisito imprescindible. ¿Realmente desea " "crear el nuevo proyecto en esta carpeta?" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "Error: ¡No fue posible crear la carpeta indicada!" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" "Error: No se ha seleccionado ninguna actividad. Para utilizar esta función " "es necesario seleccionar en la lista la actividad o actividades a las que se " "aplicaran los atributos indicados." #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "Copiando atributos a:" #: edit_act_copy_margin msgid "Margin" msgstr "Margen" #: edit_act_copy_bgColor msgid "Background color" msgstr "Color de fondo" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "Gradiente" #: edit_act_copy_bgImage msgid "Background image" msgstr "Imagen de fondo" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "Borde" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "Fondo transparente" #: edit_act_copy_position msgid "Position" msgstr "Posició" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "Mensajes" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "Estilo del mensaje inicial" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "Estilo del mensaje final" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "Estilo del mensaje de error" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "Informes" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "Incluir la actividad en los informes" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "Registrar acciones" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "Interfaz de usuario" #: edit_act_copy_skin msgid "Skin" msgstr "Entorno visual" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "Sonidos de evento" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "Contadores" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "Contador de tiempo" #: edit_act_copy_maxTime msgid "Max. time" msgstr "Tiempo máximo" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "Contador de intentos" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "Número máximo de intentos" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "Contador de aciertos" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "Número de veces que hay que barajar" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "Botones" #: edit_act_copy_btnHelp msgid "Help button" msgstr "Botón de ayuda" #: edit_act_copy_btnInfo msgid "Information button" msgstr "Botón de información" #: edit_act_copy_grids msgid "Grids" msgstr "Paneles" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "Estilo del panel A" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "Estilo del panel B" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "Estilo de los paneles de texto" #: edit_act_copy_text msgid "Text activities" msgstr "Actividades de texto" #: edit_act_copy_fontFace msgid "Font face" msgstr "Tipo de letra" #: edit_act_copy_fontSize msgid "Font size" msgstr "Tamaño de letra" #: edit_act_copy_fontStyle msgid "Font style" msgstr "Estilo de letra" #: edit_act_copy_textColour msgid "Main text colour" msgstr "Color del texto principal" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "Color de las incógnitas" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "Color de los errores" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "Espacio entre tabuladores" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "Estilo del mensaje previo" #: edit_act_changeType msgid "Change activity type" msgstr "Cambiar el tipo de actividad" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" "Nombre completo de la clase que se utilizará para construir la actividad " "(usuarios avanzados!)" #: edit_act_newActivity_other msgid "Other..." msgstr "Otras..." #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" "Los usuarios/as avanzados/as pueden crear también otros tipos de actividades " "JClic no registradas. Escriba debajo el nombre completo de la clase, " "precedida por el del paquete (por ejemplo: " "\"com.acme.activities.FooActivity\"). Las nuevas actividades deben extender " "edu.xtec.jclic.Activity, y han de ser accesibles al cargador de clases de la " "máquina virtual de Java." #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "Nombre de la actividad" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "Cada actividad debe tener un nombre único en el proyecto" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" "

Atención: " "El cambio del tipo puede causar la pérdida de algunos de los atributos y " "objetos de la actividad que se está editando. ¡Utilice está función con " "cuidado!

 

" #: applet_codebase msgid "Location of JClic code:" msgstr "Ubicación del código JClic:" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" "URL que apunta a una carpeta en la que estén ubicados los archivos de " "programa de JClic" #: applet_prev_text msgid "HTML code before:" msgstr "Código HTML previo:" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "Texto o código HTMl que aparecerá antes del applet" #: applet_post_text msgid "HTML code after:" msgstr "Código HTML posterior:" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "Texto o código HTMl que aparecerá después del applet" #: applet_size msgid "Applet size:" msgstr "Tamaño del applet:" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "Anchura y altura del applet, en valores absolutos o porcentuales." #: applet_page_title msgid "Page title:" msgstr "Título de la página:" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "" "Texto que se mostrará en la parte superior de la ventana del navegador" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "La página web \"%s\" ha sido creada con éxito." #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "¿Desea abrirla ahora con el navegador?" #: action_createHTML_caption msgid "Create web page..." msgstr "Crear página web..." #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "Creación de una página HTML con un applet JClic" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" "Creación de una página HTML con un applet que contenga el proyecto actual." #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "Nombre del archivo:" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "Nombre del archivo HTML a crear" #: action_createHTML_keys msgid "H*" msgstr "H*" #: settings_applet msgid "Applet" msgstr "Applet" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "Valores por defecto usados en la creación de páginas web" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "Color de fondo:" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "Color de fondo de la página web" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "Centrado" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "Situar el applet centrado horizontalmente" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "Anchura del applet (en valor absoluto o porcentual)" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "Altura del applet (en valor absoluto o porcentual)" #: applet_exitUrl msgid "On exit, go to:" msgstr "Al salir, ir a:" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "URL hacia el que se redirigirá la navegación al salir de JClic" #: applet_infoFrame msgid "Info frame name:" msgstr "Marco de información:" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" "Name of the frame used to show the content related to the \"info\" button" #: action_createInstaller_caption msgid "Create project installer..." msgstr "Crear instalador del proyecto..." #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "I*" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "Creación de un archivo de instalación del proyecto para JClic player" #: installer_caption msgid "Edit project installer script" msgstr "Edición del archivo de instalación del proyecto" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "Título:" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "Título del proyecto que se mostrará en el asistente de instalación" #: installer_authors msgid "Autors:" msgstr "Autores/as:" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "Autores/as del proyecto (texto corto)" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "Carpeta:" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "Nombre de carpeta que sugerirá el asistente de instalación" #: installer_files msgid "Files to be copied:" msgstr "Archivos a copiar:" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "Archivos que se copiaran durante la instalación" #: installer_files_available msgid "Available files" msgstr "Archivos disponibles" #: installer_files_selected msgid "Selected files" msgstr "Archivos seleccionados" #: installer_files_add msgid ">> add >>" msgstr ">> añadir >>" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "Añadir el archivo seleccionado a la lista" #: installer_files_remove msgid "<< remove <<" msgstr "<< quitar <<" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "Quitar el archivo seleccionado de la lista" #: installer_button msgid "Launch button" msgstr "Botón de activación" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "Propiedades del botón que se mostrará en la biblioteca de proyectos" #: installer_button_project msgid "Main project:" msgstr "Proyecto principal:" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "Proyecto JClic asociado botón" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "Etiqueta:" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "Breve etiqueta de texto, que aparecerá dentro del botón" #: installer_button_icon msgid "Icon:" msgstr "Icono:" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" "Imagen que mostrará el botón. Dejar en blanco para usar el icono por defecto " "de JClic." #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "Descripció" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "Texto de ayuda emergente que mostrará el botón" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "Error: Hay que indicar el título del proyecto" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "" "Error: Hay que indicar el nombre de la carpeta en la que se instalará el " "proyecto" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "Error: No ha seleccionado ningún archivo" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "Error: Hay que indicar el texto del botón de activación" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" "Error: El proyecto asignado al botón de activación no se encuentra entre los " "archivos a copiar" #: applet_page_full msgid "Full-page applet" msgstr "El applet ocupa toda la página" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "El applet tiene unas dimensiones específicas" #: edit_text_align_left msgid "Align text left" msgstr "Alinear el texto a la izquierda" #: edit_text_align_center msgid "Center text" msgstr "Texto centrado" #: edit_text_align_right msgid "Align text right" msgstr "Alinear el texto a la derecha" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "Crear una incógnita o suprimirla" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "Insertar una celda" #: edit_text_act_content msgid "Content" msgstr "Contenido" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "Estilo" #: edit_cell_size msgid "Cell size:" msgstr "Dimensiones:" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" "Las siguientes actividades nunca llegaran a ejecutarse, debido a que no " "aparecen en ninguna secuencia de actividades del proyecto:" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" "Los siguientes objetos de la mediateca no se utilizan directamente en " "ninguna actividad:" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "¿Desea añadirlas al final de la última secuencia de actividades?" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "¿Desea eliminarlos?" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "Retirada de objetos multimedia no utilizados" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "Actividades huérfanas" #: edit_media_refreshAll msgid "Update all media content" msgstr "Actualizar el contenido de todos los recursos" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "Actualiza todos los recursos volviendo a cargar sus archivos" #: edit_media_refreshAll_keys msgid "R*" msgstr "R*" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "Actualizando recursos..." #: edit_media_exportAll msgid "Export all media" msgstr "Exportar todos los recursos" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "Grabar en archivos el contenido de todos los recursos" #: edit_media_exportAll_keys msgid "X*" msgstr "X*" #: edit_shape_select msgid "Select" msgstr "Seleccionar" #: edit_shape_addPoint msgid "Add point" msgstr "Añadir un punto" #: edit_shape_deletePoint msgid "Delete" msgstr "Eliminar" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "Dibujar un rectángulo" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "Dibujar una elipse" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "Dibujar un polígono" #: edit_shape_toLine msgid "Convert to line" msgstr "Convertir en línea" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "Convertir en curva de Bézier" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "Convertir en cuádrica" #: edit_shape_rLeft msgid "Rotate left" msgstr "Girar a la izquierda" #: edit_shape_rRight msgid "Rotate right" msgstr "Girar a la derecha" #: edit_shape_expand msgid "Expand" msgstr "Expandir" #: edit_shape_contract msgid "Contract" msgstr "Contraer" #: edit_shape_zoomIn msgid "Zoom in" msgstr "Acercar" #: edit_shape_zoomOut msgid "Zoom out" msgstr "Alejar" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "Junta puntos cercanos" #: edit_shape_showPoints msgid "Show points" msgstr "Mostrar puntos" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "Mostrar/Ocultar los puntos" #: edit_shape_gridSize msgid "Grid size:" msgstr "Rejilla:" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "Mostrar / Ocultar la rejilla" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "Radio del imán:" #: edit_shape_elements msgid "Defined elements" msgstr "Elementos definidos" #: edit_shape_elemName msgid "Name of the selected element" msgstr "Nombre del elemento seleccionado" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "Radio de acción del imán, cuando está activado" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "Tamaño de la rejilla" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "Actividad:" #: edit_mc_sequence msgid "Sequence:" msgstr "Secuencia:" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "URL:" #: edit_mc_project msgid "Project:" msgstr "Proyecto:" #: edit_mc_activity_selection msgid "Choose activity" msgstr "Selección de la actividad" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "Selección de la secuencia" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "¡Datos insuficientes!" #: edit_act_arrowColor msgid "Arrow color:" msgstr "Color de las flechas:" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" "Color utilizado por el editor para dibujar las flechas (no es exacto, ya que " "se utiliza una máscara XOR de bits)" #: edit_act_editActivity msgid "Edit..." msgstr "Editar..." #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "Editar la actividad seleccionada" #: action_saveFileAs_caption msgid "Save as..." msgstr "Guardar como..." #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "AA" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "Guardar el proyecto con un nombre distinto" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "Comportamiento" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "Comportamiento" #: edit_act_behavior_drag msgid "Drag objects" msgstr "Arrastrar" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "Arrastrar los objetos en lugar de unirlos con una linea" #: edit_act_behavior_order msgid "Check solving order" msgstr "Comprobar orden de resolución" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "Las casillas deben resolverse ordenadamente" #: edit_act_scramble msgid "Scramble" msgstr "Barajar" #: action_importActivities_caption msgid "Import activities..." msgstr "Importar actividades..." #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "I*" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "Importar actividades de otro proyecto" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" "El archivo que ha seleccionado corresponde al proyecto actual. La " "importación de actividades solo puede realizarse entre proyectos distintos. " "Por favor, seleccione otro archivo de proyecto." #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" "Seleccione una o más actividades para importarlas al proyecto actual\\:" #: import_importing msgid "Importing..." msgstr "Importando..." #: import_checkdep msgid "Checking dependencies..." msgstr "Comprobando dependencias..." #: import_impmedia msgid "Importing media\\:" msgstr "Importando medios\\:" #: import_impact msgid "Importing activity\\:" msgstr "Importando la actividad\\:" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "Seleccione el proyecto JClic del cual desea importar actividades" #: edit_tagRep_tags msgid "Tag marks" msgstr "Marcas" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "Marca de inicio\\:" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "Marca que indica inicio de etiqueta" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "Marca final\\:" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "Marca que indica final de etiqueta" #: edit_tagRep_file msgid "File" msgstr "Archivo" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "Archivo o URL\\:" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" "Nombre o URL del archivo que contiene los valores que substituirán a las " "etiquetas" #: edit_tagRep_charset msgid "Charset\\:" msgstr "Codificación\\:" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "Tipo de codificación utilizada en el archivo" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Buscar..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "Buscar en el sistema de archivos" #: edit_tagRep_title msgid "Tag replacing" msgstr "Substitución de etiquetas" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "Limpiar estilos de texto..." #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" "Atención: Esta acción limpiará los atributos especiales de carácter " "existentes en el documento, devolviéndolo a su estilo principal. La " "operación no se puede deshacer. ¿Desea realizarla?" #: img_max_size msgid "Maximum size of images:" msgstr "Tamaño máximo de las imágenes:" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "Anchura máxima de las imágenes al importarlas en la mediateca." #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "Altura máxima de las imágenes al importarlas en la mediateca." #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" "La imagen \"%s\" tiene unas dimensiones de %s pixels, que exceden el máximo " "permitido por JClic Author (%s). ¿Desea redimensionarla?" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-author/AuthorMessages_cs.po0000644000175000017500000017020511377161311023144 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2010-01-13 23:10+0200\n" "PO-Revision-Date: 2009-12-24 22:29+0000\n" "Last-Translator: Konki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic Author messages #: edit_act_description_block msgctxt "edit_act_description_block" msgid "Description" msgstr "Popis" #: edit_act_name_tooltip msgid "Name of the activity" msgstr "Název aktivity" #: edit_act_name msgctxt "edit_act_name" msgid "Name:" msgstr "Název:" #: edit_act_description_tooltip msgid "Description of the activity" msgstr "Popis aktivity" #: edit_act_reports_block msgctxt "edit_act_reports_block" msgid "Reports" msgstr "Sestavy" #: edit_act_includeInReports msgid "Include this activity in reports" msgstr "Zahrň aktivity v Sestavách" #: edit_act_includeInReports_tooltip msgid "Include the results of this activity in users' reports" msgstr "Zahrň výsledky aktivity v uživatelských sestavách" #: edit_act_code msgid "Code:" msgstr "Kód" #: edit_act_code_tooltip msgid "Optional code used to group and search in the reports database." msgstr "" #: edit_act_reportActions msgid "Report user actions" msgstr "Report uživatelských akcí" #: edit_act_reportActions_tooltip msgid "Register the details of all the actions performed by users" msgstr "" #: edit_act_counters_block msgctxt "edit_act_counters_block" msgid "Counters" msgstr "Počítadla" #: edit_act_timeCounter msgctxt "edit_act_timeCounter" msgid "Time counter" msgstr "Počítadlo času" #: edit_act_timeCounter_tooltip msgid "Show/hide the time conter" msgstr "" #: edit_act_actionsCounter msgctxt "edit_act_actionsCounter" msgid "Tries counter" msgstr "Zkušební počítadlo" #: edit_act_actionsCounter_tooltip msgid "Show/hide the tries counter" msgstr "" #: edit_act_scoreCounter msgctxt "edit_act_scoreCounter" msgid "Score counter" msgstr "Počítadlo skóre" #: edit_act_scoreCounter_tooltip msgid "Show/hide the score counter." msgstr "" #: edit_act_maxTime msgid "Max time:" msgstr "Maximální čas:" #: edit_act_maxTime_tooltip msgid "" "Maximum time to to solve the activity, in seconds, or 0 for unlimited time." msgstr "" #: edit_act_countdown msgid "Countdown" msgstr "Odpočet" #: edit_act_countdown_tooltip msgid "The counter starts at máximum value, decreasing to 0." msgstr "" #: edit_act_maxActions msgid "Max tries:" msgstr "Max pokusů:" #: edit_act_maxActions_tooltip msgid "Maximum number of tries allowed, or 0 for unlimited tries." msgstr "" #: edit_act_buttons_block msgctxt "edit_act_buttons_block" msgid "Buttons" msgstr "Tlačítka" #: edit_act_helpBtn msgid "Help" msgstr "Nápověda" #: edit_act_helpBtn_tooltip msgid "Show/hide help button" msgstr "" #: edit_act_helpBtn_solution msgid "Show solution" msgstr "" #: edit_act_helpBtn_msg msgid "Show this message:" msgstr "Ukázat tuto zprávu:" #: edit_act_infoBtn msgid "Information" msgstr "Informace" #: edit_act_infoBtn_tooltip msgid "Show/Hide the button of information" msgstr "" #: edit_act_infoBtn_url msgid "Show this URL:" msgstr "" #: edit_act_infoBtn_cmd msgid "Execute this command:" msgstr "Vykonat tento příkaz:" #: edit_act_infoBtn_url_tooltip msgid "Web site address to show when click on the info button" msgstr "" #: edit_act_infoBtn_cmd_tooltip msgid "Command line to be executed on click to the info button." msgstr "" #: edit_act_mainWindow msgid "Main window:" msgstr "Vlastní okno:" #: edit_act_gameWindow msgid "Game window:" msgstr "Herní okno:" #: edit_act_margin msgid "Margin:" msgstr "Okraj:" #: edit_act_margin_tooltip msgid "Horizontal and vertical spacing between visual objects." msgstr "" #: edit_act_bgColor msgctxt "edit_act_bgColor" msgid "Background color:" msgstr "Barva pozadí:" #: edit_act_bgColor_tooltip msgid "Change the background color." msgstr "Změnit barvu pozadí." #: edit_gradient_startColor msgid "Start color:" msgstr "Spustit barvu:" #: edit_gradient_endColor msgid "End color:" msgstr "Konec barvy:" #: edit_gradient_startColor_tooltip msgid "Selection of the start color" msgstr "" #: edit_gradient_endColor_tooltip msgid "Selection of the end color" msgstr "" #: edit_gradient_cycles msgid "Cycles:" msgstr "Cykly:" #: edit_gradient_cycles_tooltip msgid "Number of repetitions of the gradient over the paint surface" msgstr "" #: edit_gradient_orientation msgid "Orientation:" msgstr "Orientace:" #: edit_gradient_orientation_tooltip msgid "Gradient's orientation, measured in degrees over the horizontal" msgstr "" #: edit_act_gradient msgid "Gradient:" msgstr "Přechod:" #: edit_act_gradient_tooltip msgid "Use gradient of colours" msgstr "" #: edit_color_opacity msgid "Opacity" msgstr "Průhlednost" #: edit_color_opacity_tooltip msgid "Set the color's alpha channel (opacity) value." msgstr "" #: edit_gradient_title msgctxt "edit_gradient_title" msgid "Gradient" msgstr "Přechod" #: edit_gradient_default msgid "Use default values (null gradient)" msgstr "" #: edit_act_image msgid "Image:" msgstr "Obrázek:" #: edit_act_descriptionTab msgctxt "edit_act_descriptionTab" msgid "Description" msgstr "Popiska" #: edit_act_descriptionTab_tooltip msgid "Name and description" msgstr "" #: edit_act_tiledBgImg msgid "Tiled" msgstr "Dlaždice" #: edit_act_tiledBgImg_tooltip msgid "" "Paint all the surface with the image, repeating it along the X and Y axis as " "needed." msgstr "" #: edit_act_preview msgctxt "edit_act_preview" msgid "Preview:" msgstr "Náhled:" #: edit_act_border msgctxt "edit_act_border" msgid "Border" msgstr "Okraj" #: edit_act_border_tooltip msgid "Draw a line border arround the window" msgstr "" #: edit_act_transparent msgid "Transparent" msgstr "" #: edit_act_transparent_tooltip msgid "Window has transparent background" msgstr "" #: edit_act_width msgctxt "edit_act_width" msgid "Width:" msgstr "" #: edit_act_height msgctxt "edit_act_height" msgid "Height:" msgstr "" #: edit_act_width_tooltip msgid "Width of the object, measured in pixels" msgstr "" #: edit_act_height_tooltip msgid "Height of the object, measured in pixels" msgstr "" #: edit_act_centered msgctxt "edit_act_centered" msgid "Centered" msgstr "" #: edit_act_centered_tooltip msgid "The object will be centered over the main window" msgstr "" #: edit_act_x msgctxt "edit_act_x" msgid "X:" msgstr "" #: edit_act_x_tooltip msgid "Absolute horizontal location" msgstr "" #: edit_act_y msgctxt "edit_act_y" msgid "Y:" msgstr "" #: edit_act_y_tooltip msgid "Absolute vertical location" msgstr "" #: edit_act_ui_block msgctxt "edit_act_ui_block" msgid "User interface" msgstr "" #: edit_act_image_tooltip msgid "Select an image" msgstr "" #: edit_act_text msgid "Text:" msgstr "" #: edit_act_text_tooltip msgid "Text to be shown inside this object" msgstr "" #: edit_font_face msgid "Typeface:" msgstr "" #: edit_font_size msgid "Size:" msgstr "" #: edit_font_bold msgid "Bold" msgstr "" #: edit_font_italic msgid "Italic" msgstr "" #: edit_font_underline msgid "Underline" msgstr "" #: edit_font_style msgctxt "edit_font_style" msgid "Style:" msgstr "" #: edit_cell_title msgid "Cell contents" msgstr "" #: edit_act_messages msgctxt "edit_act_messages" msgid "Messages" msgstr "" #: edit_act_msg_initial msgid "Initial message:" msgstr "" #: edit_act_msg_final msgid "Final message:" msgstr "" #: edit_act_msg_prev msgid "Previous message:" msgstr "" #: edit_act_msg_error msgid "Error message:" msgstr "" #: edit_act_msg_initial_tooltip msgid "Message to be shown when the activity starts" msgstr "" #: edit_act_msg_final_tooltip msgid "Message to be shown when the activity is finished" msgstr "" #: edit_act_msg_error_tooltip msgid "Message to be shown when the activity ends with errors" msgstr "" #: edit_act_msg_prev_tooltip msgid "" "Message to be shown prior to the start of the activity (only in certain " "types of activities)" msgstr "" #: edit_align msgid "Align:" msgstr "" #: edit_act_textColor msgid "Text color:" msgstr "" #: edit_act_textColor_tooltip msgid "Color used to draw text" msgstr "" #: edit_act_shadowColor msgid "Shadow color:" msgstr "" #: edit_act_shadowColor_tooltip msgid "Color used for drawing the text's shadow, when appliable" msgstr "" #: edit_act_shadow msgid "Shadow" msgstr "" #: edit_act_shadow_tooltip msgid "Draw text with shadow" msgstr "" #: edit_act_borderColor msgid "Border color:" msgstr "" #: edit_act_borderColor_tooltip msgid "Color used to draw the cell's border" msgstr "" #: edit_act_inactiveColor msgid "Inactive state color:" msgstr "" #: edit_act_inactiveColor_tooltip msgid "Color used when the cell is disabled" msgstr "" #: edit_act_altColor msgid "Alternative color:" msgstr "" #: edit_act_altColor_tooltip msgid "Color used to draw the alternative content in solved cells." msgstr "" #: edit_cell_marked msgid "Marked" msgstr "" #: edit_cell_disabled msgid "Disabled" msgstr "" #: edit_cell_alt msgid "Alternative" msgstr "" #: edit_cell_textMargin msgid "Internal margin:" msgstr "" #: edit_cell_textMargin_tooltip msgid "Amount of space between cell's border and text." msgstr "" #: edit_cell_borderWidth msgid "Border width:" msgstr "" #: edit_cell_borderWidth_tooltip msgid "Width of the stroke used to draw the standard border" msgstr "" #: edit_cell_markerWidth msgid "Marker width:" msgstr "" #: edit_cell_markerWidth_tooltip msgid "" "Width of the stroke used to draw the border when the cell is marked or " "selected" msgstr "" #: edit_cell_alt_tooltip msgid "Preview in \"alternative\" state" msgstr "" #: edit_cell_disabled_tooltip msgid "Preview in \"disabled\" state" msgstr "" #: edit_cell_marked_tooltip msgid "Preview in \"marked\" state" msgstr "" #: edit_act_testAction msgid "Preview activity" msgstr "" #: edit_act_testAction_tooltip msgid "Preview and test the activity" msgstr "" #: edit_act_panels_description msgctxt "edit_act_panels_description" msgid "Description" msgstr "" #: edit_act_panels_description_tooltip msgid "Title and description of the activity" msgstr "" #: edit_act_panels_options msgid "Options" msgstr "" #: edit_act_panels_options_tooltip msgid "Options of the activity" msgstr "" #: edit_act_panels_frame msgctxt "edit_act_panels_frame" msgid "Window" msgstr "" #: edit_act_panels_frame_tooltip msgid "Aspect, size and position of the activity window" msgstr "" #: edit_act_panels_messages msgctxt "edit_act_panels_messages" msgid "Messages" msgstr "" #: edit_act_panels_messages_tooltip msgid "Content of the activity messages" msgstr "" #: edit_act_panels_panel msgid "Panel" msgstr "" #: edit_act_panels_panel_tooltip msgid "Contents of the panel" msgstr "" #: edit_style_title msgctxt "edit_style_title" msgid "Style" msgstr "" #: edit_style_tooltip msgid "Set the cells color, font and size" msgstr "" #: edit_act_style msgctxt "edit_act_style" msgid "Style:" msgstr "" #: edit_act_overlap msgid "Avoid text overlap image" msgstr "" #: edit_act_overlap_tooltip msgid "Try to avoid text overlapping over image" msgstr "" #: edit_media_exists_1 msgid "The file" msgstr "" #: edit_media_exists_2 msgid "already exists in the media library!" msgstr "" #: edit_act_shaper msgid "Shaper:" msgstr "" #: edit_act_shaper_err msgid "Shaper error:" msgstr "" #: edit_act_num_cols msgid "Columns:" msgstr "" #: edit_act_num_rows msgid "Rows:" msgstr "" #: edit_act_toothHeightFactor msgid "Tooth height:" msgstr "" #: edit_act_toothWidthFactor msgid "Tooth width:" msgstr "" #: edit_act_toothRandom msgid "Random distribution" msgstr "" #: edit_act_shaper_properties msgid "Shaper properties" msgstr "" #: edit_act_panels_text msgid "Text" msgstr "" #: edit_act_panels_text_tooltip msgid "Text of the activity" msgstr "" #: action_saveFile_caption msgid "Save..." msgstr "" #: action_saveFile_keys msgctxt "action_saveFile_keys" msgid "SS" msgstr "" #: action_saveFile_tooltip msgid "Save the current project" msgstr "" #: action_docTree_caption msgid "Document tree..." msgstr "" #: action_docTree_keys msgid "T*" msgstr "" #: action_docTree_tooltip msgid "Show the project's document as a tree" msgstr "" #: edit_docTree_title msgid "Document tree" msgstr "" #: edit_media_referencedBy msgid "Referenced by:" msgstr "" #: msg_prompt_loadReferences msgid "" "Warning:

This project " "connects with other projects.
Do you want to explore the links and to " "load all the related files?

(It's advisable to answer YES when " "importing Clic 3.0 activities)" msgstr "" #: edit_mc_type msgctxt "edit_mc_type" msgid "Type:" msgstr "" #: edit_mc_type_unknown msgid "Unknown" msgstr "" #: edit_mc_type_sound msgid "Play sound" msgstr "" #: edit_mc_type_video msgid "Play video" msgstr "" #: edit_mc_type_midi msgid "Play MIDI" msgstr "" #: edit_mc_type_cdaudio msgid "Play CD audio" msgstr "" #: edit_mc_type_record msgid "Record sound" msgstr "" #: edit_mc_type_play_recorded msgid "Play recorded sound" msgstr "" #: edit_mc_type_run_activity msgid "Go to activity" msgstr "" #: edit_mc_type_run_sequence msgid "Go to sequence" msgstr "" #: edit_mc_type_run_external msgid "Run program" msgstr "" #: edit_mc_type_url msgid "Show URL" msgstr "" #: edit_mc_type_exit msgid "End" msgstr "" #: edit_mc_type_return msgctxt "edit_mc_type_return" msgid "Return" msgstr "" #: edit_mc_level msgid "Priority level:" msgstr "" #: edit_mc_file msgid "File:" msgstr "" #: edit_mc_externalParam msgid "Parameters:" msgstr "" #: edit_mc_from msgctxt "edit_mc_from" msgid "From:" msgstr "" #: edit_mc_to msgctxt "edit_mc_to" msgid "To:" msgstr "" #: edit_mc_length msgctxt "edit_mc_length" msgid "Max. length:" msgstr "" #: edit_mc_recBuffer msgid "Record tape:" msgstr "" #: edit_mc_stretch msgid "Stretch size" msgstr "" #: edit_mc_location msgctxt "edit_mc_location" msgid "Location:" msgstr "" #: edit_mc_location_x msgctxt "edit_mc_location_x" msgid "X:" msgstr "" #: edit_mc_location_y msgctxt "edit_mc_location_y" msgid "Y:" msgstr "" #: edit_mc_location_from msgctxt "edit_mc_location_from" msgid "From:" msgstr "" #: edit_mc_location_from_box msgid "Cell" msgstr "" #: edit_mc_location_from_window msgctxt "edit_mc_location_from_window" msgid "Window" msgstr "" #: edit_mc_location_from_frame msgid "Frame" msgstr "" #: edit_mc_loop msgid "Loop playback" msgstr "" #: edit_mc_autostart msgid "Auto start" msgstr "" #: edit_mc_catchmouse msgid "Catch mouse" msgstr "" #: edit_mc_title msgid "Multimedia and active content" msgstr "" #: edit_mc_label msgid "Active content:" msgstr "" #: edit_media_dlg_title msgid "Multimedia object selection" msgstr "" #: edit_media_title msgctxt "edit_media_title" msgid "Media library" msgstr "" #: edit_mc_pos_cell msgid "Centered over cell" msgstr "" #: edit_mc_pos_window msgid "Centered over window" msgstr "" #: edit_mc_pos_absolute msgid "Specify position:" msgstr "" #: edit_tree_badFormat msgid "Incorrect tree structure or data!" msgstr "" #: edit_act_panels_controls msgid "Controls" msgstr "" #: edit_act_panels_controls_tooltip msgid "Options for buttons and counters" msgstr "" #: edit_act_class msgctxt "edit_act_class" msgid "Type:" msgstr "" #: edit_act_gridLayout msgid "Grid layout:" msgstr "" #: edit_act_gridLayout_tooltip msgid "Relative postion of the panels A and B." msgstr "" #: edit_act_inverseResolution msgid "Inverse resolution" msgstr "" #: edit_act_inverseResolution_tooltip msgid "" "The activity is solved when all assigned elements of \"B\" are matched." msgstr "" #: edit_act_showAllArrows msgid "Show all arrows" msgstr "" #: edit_act_alt msgid "Alternative content:" msgstr "" #: edit_act_alt_tooltip msgid "Content shown in solved cells and non-assigned cells." msgstr "" #: edit_act_alt_toggle msgid "ALT" msgstr "" #: edit_act_alt_toggle_tooltip msgid "Edit the alternative content" msgstr "" #: edit_act_grid msgid "Grid" msgstr "" #: edit_act_grid_A msgid "Grid A" msgstr "" #: edit_act_grid_B msgid "Grid B" msgstr "" #: edit_act_grid_layout msgid "Layout" msgstr "" #: edit_act_grid_relationship msgid "Relationship" msgstr "" #: edit_seq_activity_header msgid "activity" msgstr "" #: edit_seq_tag_header msgid "tag" msgstr "" #: edit_seq_jump_header msgid "jump to" msgstr "" #: edit_seq_activity msgctxt "edit_seq_activity" msgid "Activity:" msgstr "" #: edit_seq_tag msgctxt "edit_seq_tag" msgid "Label:" msgstr "" #: edit_seq_description msgctxt "edit_seq_description" msgid "Description:" msgstr "" #: edit_seq_auto msgid "Move on automatically" msgstr "" #: edit_seq_delay msgid "Delay:" msgstr "" #: edit_seq_action_fwd msgid "Go forward" msgstr "" #: edit_seq_action_back msgid "Go bak" msgstr "" #: edit_seq_action_jump msgid "Jump to..." msgstr "" #: edit_seq_action_stop msgid "Stop" msgstr "" #: edit_seq_action_return msgctxt "edit_seq_action_return" msgid "Return" msgstr "" #: edit_seq_action_exit msgid "Exit JClic" msgstr "" #: edit_seq_arrow_fwd msgid "Forward arrow:" msgstr "" #: edit_seq_arrow_back msgid "Back arrow:" msgstr "" #: edit_seq_action msgid "Action:" msgstr "" #: edit_seq_button_enabled msgid "Show button" msgstr "" #: edit_seq_project msgid "JClic Project:" msgstr "" #: edit_act_absolute msgid "Absolute position" msgstr "" #: edit_act_absolute_tooltip msgid "The object will be placed at the specified X and Y co-ordinates" msgstr "" #: edit_act_location msgctxt "edit_act_location" msgid "Location:" msgstr "" #: edit_seq_newElement msgid "New sequence element..." msgstr "" #: edit_seq_newElement_tooltip msgid "Insert a new element into the activity sequence" msgstr "" #: edit_seq_newElement_msg msgid "Please select an activity for the new sequence element." msgstr "" #: edit_seq_newElement_error_noAct msgid "Cannot create a new sequence element without activity!" msgstr "" #: edit_seq_newElement_error_emptyList msgid "" "This project has no activities! Unable to create sequence elements in an " "empty project." msgstr "" #: edit_seq_jump_msg msgid "Jump target:" msgstr "" #: edit_seq_jump_title msgid "Jump target" msgstr "" #: edit_act_newActivity_tooltip msgid "Add a new activity to project" msgstr "" #: edit_act_prompt_class msgid "Type of activity:" msgstr "" #: edit_act_prompt_name msgctxt "edit_act_prompt_name" msgid "Name:" msgstr "" #: edit_act_newActivity_msg msgid "Please select the type of activity to create and give it a name:" msgstr "" #: edit_act_newActivity_error_noAct msgid "You must select an activity type!" msgstr "" #: edit_act_newActivity_error_noName msgid "You must especify a name for the activity!" msgstr "" #: edit_act_newActivity_error_creating msgid "Unable to create activity!" msgstr "" #: edit_act_newActivity_class msgid "Java class name:" msgstr "" #: edit_text_act_format msgid "Format" msgstr "" #: edit_text_act_answer msgid "Answer" msgstr "" #: edit_text_act_popup msgid "Pop up" msgstr "" #: edit_text_act_answer_label msgid "Valid answers:" msgstr "" #: edit_list_newElement_tooltip msgid "Add a new list element" msgstr "" #: edit_list_editElement_tooltip msgid "Edit the selected list element" msgstr "" #: edit_list_deleteElement_tooltip msgid "Delete the selected list element" msgstr "" #: edit_list_upBtn_tooltip msgid "Move up" msgstr "" #: edit_list_downBtn_tooltip msgid "Move down" msgstr "" #: edit_list_newValue msgid "New text:" msgstr "" #: edit_list_addElement msgid "Add new list element" msgstr "" #: edit_list_modifyValue msgid "Modify selected text" msgstr "" #: edit_text_act_target msgid "Target" msgstr "" #: edit_text_act_maxLen msgctxt "edit_text_act_maxLen" msgid "Max. length:" msgstr "" #: edit_text_act_maxLen_tooltip msgid "Maximum amount of characters in the answer." msgstr "" #: edit_text_act_fillingChar msgid "Filling character" msgstr "" #: edit_text_act_fillingChar_tooltip msgid "Character used to indicate the blank" msgstr "" #: edit_text_act_iniLen msgid "Initial length:" msgstr "" #: edit_text_act_iniLen_tooltip msgid "" "Number of filling chars that will be displayed at the beginning of the " "activity." msgstr "" #: edit_text_act_iniText msgid "Initial text:" msgstr "" #: edit_text_act_iniText_tooltip msgid "Text displayed in the blank at the beggining of the activity." msgstr "" #: edit_text_act_list msgid "Show a list of options:" msgstr "" #: edit_text_act_list_tooltip msgid "Display a list of options from which the user must select one." msgstr "" #: edit_text_act_check_title msgid "Correction options" msgstr "" #: edit_text_act_popup_no msgid "No pop up" msgstr "" #: edit_text_act_popup_always msgid "Pop up automatically" msgstr "" #: edit_text_act_popup_onError msgid "Pop up in errors" msgstr "" #: edit_text_act_popup_onDemand msgid "Pop up with F1" msgstr "" #: edit_text_act_popup_type msgctxt "edit_text_act_popup_type" msgid "Type:" msgstr "" #: edit_text_act_popup_delay msgid "Pop up delay:" msgstr "" #: edit_text_act_popup_maxTime msgctxt "edit_text_act_popup_maxTime" msgid "Max. time:" msgstr "" #: edit_text_act_popup_onlyPlay msgid "Sound only" msgstr "" #: edit_text_act_err_noSelection msgid "" "You must select a fragment of text in order to create a new text target!" msgstr "" #: edit_text_act_err_badCharInSelection msgid "Target text cannot include paragraph returns nor tabs." msgstr "" #: edit_text_act_err_nestedTargets msgid "Targets cannot nest!" msgstr "" #: edit_text_act_err_cellInTarget msgid "Targets cannot contain cells!" msgstr "" #: edit_text_act_pageBgColor msgid "Paper colour:" msgstr "" #: edit_text_act_editStylesBtn msgid "Edit document styles..." msgstr "" #: edit_text_act_mainStyle msgid "Main style:" msgstr "" #: edit_text_act_tabSpc msgid "Tab space:" msgstr "" #: edit_text_act_tabSize msgid "Spaces between tab marks:" msgstr "" #: edit_text_act_colors msgid "Colors:" msgstr "" #: edit_text_act_targetStyle msgid "Target colors:" msgstr "" #: edit_text_act_errorStyle msgid "Error colors:" msgstr "" #: edit_text_act_preview msgctxt "edit_text_act_preview" msgid "Preview:" msgstr "" #: edit_text_act_styleSample_default_start msgid "Standard text" msgstr "" #: edit_text_act_styleSample_target msgid "target" msgstr "" #: edit_text_act_styleSample_error msgid "error" msgstr "" #: edit_text_act_styleSample_default_fill msgid "standard text" msgstr "" #: edit_text_act_styleSample_default_end msgid "standard text." msgstr "" #: edit_text_act_warnDeleteTarget msgid "" "Warning: This action will supress the currently selected target. Do you want " "to proceed?" msgstr "" #: edit_text_act_prevScreen_title msgid "Previous screen..." msgstr "" #: edit_text_act_prevScreen_no msgid "Don't display any text before starting the activity" msgstr "" #: edit_text_act_prevScreen_original msgid "Display the complete text of the exercise" msgstr "" #: edit_text_act_prevScreen_special msgid "Display this text:" msgstr "" #: edit_text_act_prevScreen_time msgctxt "edit_text_act_prevScreen_time" msgid "Max. time:" msgstr "" #: edit_text_act_edit_target msgid "Target..." msgstr "" #: edit_text_act_checkButton_show msgid "Show correction button" msgstr "" #: edit_text_act_checkButtonText msgid "Button text:" msgstr "" #: edit_text_act_checkCase msgid "Match case" msgstr "" #: edit_text_act_checkAccents msgid "Consider accents and special characters" msgstr "" #: edit_text_act_checkPunct msgid "Consider punctuation marks" msgstr "" #: edit_text_act_checkDoubleSpc msgid "Allow repeated spaces" msgstr "" #: edit_text_act_checkOptions msgid "Criteria" msgstr "" #: edit_text_act_checkAutoJump msgid "Move on to next target when filled in" msgstr "" #: edit_text_act_checkForceOk msgid "Move only after correct guess" msgstr "" #: edit_text_act_checkDetail msgid "Indicate mistakes letter by letter" msgstr "" #: edit_text_act_checkDetail_params msgid "Analysis algorithm parameters:" msgstr "" #: edit_text_act_checkDetail_steps msgid "Steps:" msgstr "" #: edit_text_act_checkDetail_field msgid "Exploration field:" msgstr "" #: edit_text_act_defaultCheckButtonText msgid "Check" msgstr "" #: edit_text_act_advancedCorrectionOptions msgid "Answer analysis" msgstr "" #: edit_text_act_check_bt msgid "Correction..." msgstr "" #: edit_text_act_checkButton msgid "Correction button" msgstr "" #: edit_text_act_checkProgress msgid "Progress" msgstr "" #: edit_text_act_typeBtn msgid "Type..." msgstr "" #: edit_text_act_orderParagraphs msgid "Order paragraphs" msgstr "" #: edit_text_act_orderWords msgid "Order words" msgstr "" #: edit_text_act_order_amongstPar msgid "Shuffle words amongst paragraphs" msgstr "" #: edit_text_act_type_title msgid "Activity type" msgstr "" #: edit_text_act_warnChangeType msgid "" "This action will clear all the existing targets. Do you want to proceed?" msgstr "" #: edit_text_act_identWords msgid "Identify words" msgstr "" #: edit_text_act_identChars msgid "Identify characters" msgstr "" #: edit_media_change_name msgid "Change name..." msgstr "" #: edit_media_change_file msgid "Change file..." msgstr "" #: edit_media_includeInZip msgid "Save into ZIP file" msgstr "" #: edit_media_type msgid "Media type:" msgstr "" #: edit_media_size msgid "File size:" msgstr "" #: edit_media_show_type msgid "Files of type:" msgstr "" #: edit_media_preview msgid "Preview media" msgstr "" #: edit_media_preview_tooltip msgid "Preview media resource" msgstr "" #: edit_media_rename msgid "Change resource name" msgstr "" #: edit_media_rename_title msgid "Rename" msgstr "" #: edit_media_rename_prompt msgid "New name:" msgstr "" #: edit_media_rename_invalid msgid "Invalid resource name!" msgstr "" #: edit_media_rename_exists msgid "" "There is another resource with this name! Each resource must have a unique " "name." msgstr "" #: edit_media_chfile_invalid msgid "Invalid file!" msgstr "" #: err_media_chfile_different msgid "File must be of same type" msgstr "" #: edit_media_font_error msgid "Unable to load font!" msgstr "" #: edit_media_save_file msgid "Save file (extract from ZIP)" msgstr "" #: edit_media_refresh_file msgid "Update media content from file" msgstr "" #: edit_media_warn_zipFileNotExternal msgid "" "This is not a \"real\" file, but a object located into a ZIP container. In " "order to use this feature, a file with the same name must be present in the " "folder where the ZIP file is located." msgstr "" #: edit_activities msgctxt "edit_activities" msgid "Activities" msgstr "" #: edit_sequences msgctxt "edit_sequences" msgid "Sequences" msgstr "" #: edit_media msgctxt "edit_media" msgid "Media library" msgstr "" #: edit_media_tooltip msgid "Manage images and other media files used in the project" msgstr "" #: edit_activities_tooltip msgid "Create and edit project activities" msgstr "" #: edit_sequences_tooltip msgid "Edit and create sequences of activities" msgstr "" #: edit_project_title msgctxt "edit_project_title" msgid "Title:" msgstr "" #: edit_project_title_tooltip msgid "Project's title" msgstr "" #: edit_project msgctxt "edit_project" msgid "Project" msgstr "" #: edit_project_tooltip msgid "Edit project properties" msgstr "" #: edit_project_description msgctxt "edit_project_description" msgid "Description:" msgstr "" #: edit_project_description_tooltip msgid "General description of the project" msgstr "" #: edit_project_area msgid "Areas:" msgstr "" #: edit_project_area_tooltip msgid "Curricular areas of the project" msgstr "" #: edit_project_level msgid "Levels:" msgstr "" #: edit_project_level_tooltip msgid "Educational levels of the project" msgstr "" #: edit_project_descriptors msgid "Descriptors:" msgstr "" #: edit_project_descriptors_tooltip msgid "Descriptors of the project (separed with comma)" msgstr "" #: edit_project_languages msgid "Languages:" msgstr "" #: edit_project_languages_tooltip msgid "Languages used in the project" msgstr "" #: edit_project_languages_modify msgid "Change the selected language" msgstr "" #: edit_project_languages_add msgid "Add language" msgstr "" #: edit_project_languages_select msgid "ISO-639 language codes:" msgstr "" #: edit_project_authors msgctxt "edit_project_authors" msgid "Authors:" msgstr "" #: edit_project_authors_tooltip msgid "People involved in the creation of the project" msgstr "" #: edit_project_author_name msgctxt "edit_project_author_name" msgid "Name:" msgstr "" #: edit_project_author_mail msgctxt "edit_project_author_mail" msgid "e-mail:" msgstr "" #: edit_project_author_rol msgid "Rol:" msgstr "" #: edit_project_author_organization msgid "Organization:" msgstr "" #: edit_project_author_comments msgctxt "edit_project_author_comments" msgid "Comments:" msgstr "" #: edit_project_author_url msgctxt "edit_project_author_url" msgid "URL:" msgstr "" #: edit_project_author_name_tooltip msgid "Author's name (required)" msgstr "" #: edit_project_author_mail_tooltip msgid "Author's e-mail (optional)" msgstr "" #: edit_project_author_rol_tooltip msgid "" "Person's rol in the project: author, collaborator, drawings, sounds... " "(optional)" msgstr "" #: edit_project_author_organization_tooltip msgid "School, university, association... (optional)" msgstr "" #: edit_project_author_url_tooltip msgid "Personal web page (optional)" msgstr "" #: edit_project_author_comments_tooltip msgid "Field for other information (optional)" msgstr "" #: edit_project_author_info msgid "Author info:" msgstr "" #: edit_project_author_add msgid "Add author to list" msgstr "" #: edit_project_author_edit msgid "Edit author info" msgstr "" #: edit_project_org_name msgctxt "edit_project_org_name" msgid "Name:" msgstr "" #: edit_project_org_name_tooltip msgid "School name" msgstr "" #: edit_project_org_mail msgctxt "edit_project_org_mail" msgid "e-mail:" msgstr "" #: edit_project_org_mail_tooltip msgid "e-mail address of the school" msgstr "" #: edit_project_org_url msgctxt "edit_project_org_url" msgid "URL:" msgstr "" #: edit_project_org_url_tooltip msgid "School website" msgstr "" #: edit_project_org_address msgid "Address:" msgstr "" #: edit_project_org_address_tooltip msgid "Snail-mail address" msgstr "" #: edit_project_org_pc msgid "PC:" msgstr "" #: edit_project_org_pc_tooltip msgid "Postal code" msgstr "" #: edit_project_org_city msgid "City:" msgstr "" #: edit_project_org_city_tooltip msgid "School city" msgstr "" #: edit_project_org_country msgid "Country:" msgstr "" #: edit_project_org_state msgid "State:" msgstr "" #: edit_project_org_comments msgctxt "edit_project_org_comments" msgid "Comments:" msgstr "" #: edit_project_org msgid "School/s:" msgstr "" #: edit_project_org_tooltip msgid "School or other institution involved in the project" msgstr "" #: edit_project_org_info msgid "Organization info:" msgstr "" #: edit_project_org_add msgid "Add organization" msgstr "" #: edit_project_org_edit msgid "Edit organization data" msgstr "" #: edit_project_org_country_tooltip msgid "Country, federation, union..." msgstr "" #: edit_project_org_state_tooltip msgid "Federal state, community, region..." msgstr "" #: edit_project_org_comments_tooltip msgid "Other info..." msgstr "" #: edit_project_rev_date msgid "Date:" msgstr "" #: edit_project_rev_date_tooltip msgid "Date of the revision" msgstr "" #: edit_project_rev_authors msgctxt "edit_project_rev_authors" msgid "Authors:" msgstr "" #: edit_project_rev_authors_tooltip msgid "Authors of the revision" msgstr "" #: edit_project_rev_description msgctxt "edit_project_rev_description" msgid "Description:" msgstr "" #: edit_project_rev_description_tooltip msgid "Brief description of the changes made" msgstr "" #: edit_project_rev_comments msgctxt "edit_project_rev_comments" msgid "Comments:" msgstr "" #: edit_project_rev_comments_tooltip msgid "Other relevant info" msgstr "" #: edit_project_rev msgid "Revisions:" msgstr "" #: edit_project_rev_tooltip msgid "History of main modifications made to the project" msgstr "" #: edit_project_rev_add msgid "Add revision record" msgstr "" #: edit_project_rev_edit msgid "Edit revision record" msgstr "" #: edit_project_rev_info msgid "Revision data" msgstr "" #: edit_media_objects msgid "objects" msgstr "" #: edit_media_object msgid "object" msgstr "" #: edit_evsounds_start msgid "Start of activity:" msgstr "" #: edit_evsounds_click msgid "Click on object:" msgstr "" #: edit_evsounds_actionError msgid "Erroneous action:" msgstr "" #: edit_evsounds_actionOk msgid "Correct action:" msgstr "" #: edit_evsounds_finishedError msgid "Activity finished with errors:" msgstr "" #: edit_evsounds_finishedOk msgid "Activity finished OK:" msgstr "" #: edit_project_rev_err_nodesc msgid "Error: The description field cannot be leaved blank!" msgstr "" #: edit_evsounds_dlg_title msgid "Edit event sounds" msgstr "" #: edit_project_evsounds msgctxt "edit_project_evsounds" msgid "Event sounds:" msgstr "" #: edit_project_evsounds_tooltip msgctxt "edit_project_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "" #: edit_act_evsounds msgctxt "edit_act_evsounds" msgid "Event sounds:" msgstr "" #: edit_act_evsounds_tooltip msgctxt "edit_act_evsounds_tooltip" msgid "Set specific sounds for each JClic event" msgstr "" #: edit_evsounds_default msgid "default sound" msgstr "" #: edit_evsounds_disabled msgid "disabled" msgstr "" #: edit_evsounds_chk_tooltip msgid "Enable or disable the sound for this event" msgstr "" #: edit_evsounds_select_tooltip msgid "" "Click to select a sound for this event, or uncheck to use the default sound" msgstr "" #: action_newProject_caption msgid "New project..." msgstr "" #: action_newProject_keys msgid "NN" msgstr "" #: action_newProject_tooltip msgid "Create a new JClic project" msgstr "" #: edit_arith_op_from msgctxt "edit_arith_op_from" msgid "From:" msgstr "" #: edit_arith_op_from_tooltip msgid "Minimum value of the operator" msgstr "" #: edit_arith_op_to msgctxt "edit_arith_op_to" msgid "To:" msgstr "" #: edit_arith_op_to_tooltip msgid "Maximum value of the operator" msgstr "" #: edit_arith_op_with msgid "With:" msgstr "" #: edit_arith_op_with_tooltip msgid "If checked, the operator can also have this value" msgstr "" #: edit_arith_op_fromList msgid "One from the list:" msgstr "" #: edit_arith_op_fromList_tooltip msgid "List of possible values for the operator" msgstr "" #: edit_arith_op_decimals msgid "Decimals:" msgstr "" #: edit_arith_op_decimals_tooltip msgid "Number of decimals of the operand" msgstr "" #: edit_arith_op_dec0 msgid "# (integer)" msgstr "" #: edit_arith_op_dec1 msgid "#.#" msgstr "" #: edit_arith_op_dec2 msgid "#.##" msgstr "" #: edit_arith_firstOp msgid "First operand" msgstr "" #: edit_arith_secondOp msgid "Second operand" msgstr "" #: edit_arith_title msgid "Arith2 for JClic" msgstr "" #: edit_arith_operations msgid "Operations:" msgstr "" #: edit_arith_operations_tooltip msgid "Select the kind of operations to be performed" msgstr "" #: edit_arith_operations_plus msgid "Plus" msgstr "" #: edit_arith_operations_minus msgid "Minus" msgstr "" #: edit_arith_operations_multiply msgid "Multiply" msgstr "" #: edit_arith_operations_divide msgid "Divide" msgstr "" #: edit_arith_unknown msgid "Unknown:" msgstr "" #: edit_arith_unknown_tooltip msgid "Select the item that will act as a unknown" msgstr "" #: edit_arith_unknown_aobx msgid "The result is the unknown" msgstr "" #: edit_arith_unknown_aoxr msgid "The second operator is the unknown" msgstr "" #: edit_arith_unknown_xobr msgid "The first operator is the unknown" msgstr "" #: edit_arith_unknown_axbr msgid "The operation is the unknown" msgstr "" #: edit_arith_unknown_invert msgid "Write the result at the beggining of the expression" msgstr "" #: edit_arith_result msgid "Result:" msgstr "" #: edit_arith_result_notCarry msgid "Do not carry" msgstr "" #: edit_arith_result_random msgid "Random" msgstr "" #: edit_arith_result_asc msgid "Ascending" msgstr "" #: edit_arith_result_order msgid "Order by result:" msgstr "" #: edit_arith_result_desc msgid "Descending" msgstr "" #: edit_arith_result_avoidDup msgid "Avoid duplicates" msgstr "" #: edit_arith_cond msgid "Conditions:" msgstr "" #: edit_arith_cond_ind msgid "Indifferent" msgstr "" #: edit_arith_cond_agb msgid "The first operator must be greather than the second one" msgstr "" #: edit_arith_cond_alb msgid "The first operator must be lesser than the second one" msgstr "" #: edit_arith_cond_tooltip msgid "Other conditions" msgstr "" #: edit_autocp msgid "Automatic content generator:" msgstr "" #: edit_autocp_tooltip msgid "Select the type of automatic content generator for this activity." msgstr "" #: edit_autocp_block msgid "Content generator" msgstr "" #: edit_autocp_btn msgid "Settings..." msgstr "" #: edit_autocp_btn_tooltip msgid "Configure the content provider settings" msgstr "" #: edit_data msgid "Edit data" msgstr "" #: edit_act msgid "Activity edit" msgstr "" #: edit_acp msgid "Content provider edit" msgstr "" #: edit_acp_err_creating msgid "Error creating the content provider!" msgstr "" #: edit_project_author_group msgid "Creation" msgstr "" #: edit_project_description_block msgctxt "edit_project_description_block" msgid "Description" msgstr "" #: edit_project_ui_block msgctxt "edit_project_ui_block" msgid "User interface" msgstr "" #: edit_act_description msgctxt "edit_act_description" msgid "Description:" msgstr "" #: m_Edit msgid "Edit" msgstr "" #: m_Edit_Mnemonic msgid "E" msgstr "" #: edit_media_preview_keys msgid "P*" msgstr "" #: edit_act_newActivity msgid "New activity..." msgstr "" #: edit_act_newActivity_keys msgid "A*" msgstr "" #: edit_act_testAction_keys msgid "P#10" msgstr "" #: edit_seq_newElement_keys msgid "S*" msgstr "" #: m_Insert msgid "Insert" msgstr "" #: m_Insert_Mnemonic msgid "I" msgstr "" #: m_View msgid "View" msgstr "" #: m_View_Mnemonic msgid "V" msgstr "" #: action_editProject_caption msgctxt "action_editProject_caption" msgid "Project" msgstr "" #: action_editProject_keys msgid "PP" msgstr "" #: action_editProject_tooltip msgid "Edit project settings" msgstr "" #: action_editMedia_caption msgid "Media" msgstr "" #: action_editMedia_keys msgid "MM" msgstr "" #: action_editMedia_tooltip msgid "Edit the project's multimedia library" msgstr "" #: action_editActivities_caption msgctxt "action_editActivities_caption" msgid "Activities" msgstr "" #: action_editActivities_keys msgctxt "action_editActivities_keys" msgid "AA" msgstr "" #: action_editActivities_tooltip msgid "Edit the activities" msgstr "" #: action_editSeq_caption msgctxt "action_editSeq_caption" msgid "Sequences" msgstr "" #: action_editSeq_keys msgctxt "action_editSeq_keys" msgid "SS" msgstr "" #: action_editSeq_tooltip msgid "Edit the sequences of activities" msgstr "" #: warn_project_modified msgid "Current project has been modified. Do you want to save the changes?" msgstr "" #: edit_project_descriptors_block msgid "Descriptors" msgstr "" #: edit_media_new msgid "New media object..." msgstr "" #: edit_media_new_tooltip msgid "Add a new image or multimedia object to the library" msgstr "" #: edit_media_new_keys msgid "M*" msgstr "" #: edit_seq_threshold msgid "Score threshold:" msgstr "" #: edit_seq_threshold_tooltip_up msgid "Take this way when the global score is equal to or higher than..." msgstr "" #: edit_seq_time msgid "Time threshold:" msgstr "" #: edit_seq_time_tooltip_up msgid "" "In order to take this way, the time spent on the activities must be less " "than..." msgstr "" #: edit_seq_threshold_tooltip_down msgid "Take this way when the global score is lower than..." msgstr "" #: edit_seq_time_tooltip_down msgid "Take this way when the time spent on the activities is more than..." msgstr "" #: edit_seq_condJump msgid "Conditional jumps" msgstr "" #: edit_seq_condJump_tooltip msgid "Set special jumps to be executed only under specific condicions" msgstr "" #: edit_seq_condJump_upper_tooltip msgid "Set conditions to jump to an upper level" msgstr "" #: edit_seq_condJump_lower msgid "Lower jump:" msgstr "" #: edit_seq_condJump_upper msgid "Upper jump:" msgstr "" #: edit_seq_condJump_lower_tooltip msgid "Set conditions to jump to an lower level" msgstr "" #: edit_seq_action_tooltip_fw msgid "Action assigned to the \"next\" button" msgstr "" #: edit_seq_action_tooltip_bk msgid "Action assigned to the \"previous\" button" msgstr "" #: edit_seq_jump_tooltip msgid "Set the jump target" msgstr "" #: edit_seq_action_tooltip msgid "Action to be done" msgstr "" #: edit_seq_activity_tooltip msgid "Activity assigned to this sequence element" msgstr "" #: edit_seq_tag_tooltip msgid "Tag used to reference this sequence element (optional field)" msgstr "" #: edit_seq_description_tooltip msgid "Description of the sequence element (optional field)" msgstr "" #: edit_seq_button_enabled_tooltip msgid "Enable or disable the arrow button" msgstr "" #: edit_seq_auto_tooltip msgid "Move on automatically when the activity finishes" msgstr "" #: edit_seq_delay_tooltip msgid "Seconds to wait before to do the automatic move" msgstr "" #: edit_color_dlgTitle msgid "Select color" msgstr "" #: edit_media_renaming msgid "Please wait while the resource is being renamed..." msgstr "" #: edit_act_cell_width msgctxt "edit_act_cell_width" msgid "Width:" msgstr "" #: edit_act_cell_width_tooltip msgid "Cell width (in pixels)" msgstr "" #: edit_act_cell_height msgctxt "edit_act_cell_height" msgid "Height:" msgstr "" #: edit_act_cell_height_tooltip msgid "Cell height (in pixels)" msgstr "" #: edit_act_hiddenWords msgid "Hidden words:" msgstr "" #: edit_act_hiddenWords_tooltip msgid "List of the hidden words placed in the panel" msgstr "" #: edit_act_wordSearch_panelB msgid "Use panel B" msgstr "" #: edit_act_wordSearch_panelB_tooltip msgid "The contents of a second panel will be displayed as words are found" msgstr "" #: edit_act_shaper_tooltip msgid "Select the shaper type to be used in the panel" msgstr "" #: edit_act_num_cols_tooltip msgid "Number of columns of the panel" msgstr "" #: edit_act_num_rows_tooltip msgid "Number of rows of the panel" msgstr "" #: edit_act_wildTransparent msgid "Transparent delimiters" msgstr "" #: edit_act_wildTransparent_tooltip msgid "Treat the delimiters (black boxes) as transparent holes" msgstr "" #: edit_act_behavior_scramble_times msgid "Mixes\\:" msgstr "" #: edit_act_behavior_scramble_times_tooltip msgid "Number of times to shuffle" msgstr "" #: edit_act_copy_title msgid "Copy attributtes to..." msgstr "" #: edit_act_copy_attributes msgid "Attributes" msgstr "" #: edit_act_copy_dest msgid "Apply to:" msgstr "" #: edit_act_copy_style_main msgid "Main window" msgstr "" #: edit_act_copy_style_play msgid "Play window" msgstr "" #: edit_act_copy_activities msgid "Activities to be modified:" msgstr "" #: edit_act_copyAttributes msgid "Copy attributes" msgstr "" #: edit_act_copyAttributes_keys msgid "T" msgstr "" #: edit_act_copyAttributes_tooltip msgid "Copy current activity attributes to other activities" msgstr "" #: edit_new_project_name msgid "Project name:" msgstr "" #: edit_new_project_name_tooltip msgid "Short, descriptive name of the project" msgstr "" #: edit_new_project_filename msgctxt "edit_new_project_filename" msgid "File name:" msgstr "" #: edit_new_project_filename_tooltip msgid "Name of the project file, without extension" msgstr "" #: edit_new_project_folder msgctxt "edit_new_project_folder" msgid "Folder:" msgstr "" #: edit_new_project_folder_tooltip msgid "Name of the folder where the project will be stored" msgstr "" #: edit_new_project_folder_browse msgctxt "edit_new_project_folder_browse" msgid "Browse..." msgstr "" #: edit_new_project_title msgid "Create new JClic project" msgstr "" #: edit_new_project_err_empty msgid "Error: Project, file and folder must have valid, non-empty names." msgstr "" #: edit_new_project_warning_noEmptyFolder msgid "" "This folder already contains another Clic 3.0 or JClic project. In order to " "avoid confusions, is preferable to maintain each project in a separate " "folder, but that isn't a strict rule. Do you really want to create the new " "project in this folder?" msgstr "" #: edit_new_project_err_folderCreation msgid "Error: Unable to create the specified folder!" msgstr "" #: edit_act_copy_err_noSelection msgid "" "Error: No activity selected! In order to use this function you must select " "in the list the activity or activities to wich the indicated attributes will " "be applied." msgstr "" #: edit_act_copy_action_prefix msgid "Copying attributes to:" msgstr "" #: edit_act_copy_margin msgid "Margin" msgstr "" #: edit_act_copy_bgColor msgid "Background color" msgstr "" #: edit_act_copy_gradient msgctxt "edit_act_copy_gradient" msgid "Gradient" msgstr "" #: edit_act_copy_bgImage msgid "Background image" msgstr "" #: edit_act_copy_border msgctxt "edit_act_copy_border" msgid "Border" msgstr "" #: edit_act_copy_transparentBg msgid "Transparent background" msgstr "" #: edit_act_copy_position msgid "Position" msgstr "" #: edit_act_copy_messages msgctxt "edit_act_copy_messages" msgid "Messages" msgstr "" #: edit_act_copy_messages_ini msgid "Style of initial message" msgstr "" #: edit_act_copy_messages_end msgid "Style of end message" msgstr "" #: edit_act_copy_messages_err msgid "Style of error message" msgstr "" #: edit_act_copy_reports msgctxt "edit_act_copy_reports" msgid "Reports" msgstr "" #: edit_act_copy_rep_include msgid "Include activity in reports" msgstr "" #: edit_act_copy_rep_actions msgid "Record actions" msgstr "" #: edit_act_copy_interface msgctxt "edit_act_copy_interface" msgid "User interface" msgstr "" #: edit_act_copy_skin msgid "Skin" msgstr "" #: edit_act_copy_evSounds msgid "Event sounds" msgstr "" #: edit_act_copy_counters msgctxt "edit_act_copy_counters" msgid "Counters" msgstr "" #: edit_act_copy_cTime msgctxt "edit_act_copy_cTime" msgid "Time counter" msgstr "" #: edit_act_copy_maxTime msgid "Max. time" msgstr "" #: edit_act_copy_cTries msgctxt "edit_act_copy_cTries" msgid "Tries counter" msgstr "" #: edit_act_copy_maxTries msgid "Max. tries" msgstr "" #: edit_act_copy_cScore msgctxt "edit_act_copy_cScore" msgid "Score counter" msgstr "" #: edit_act_copy_scramble msgid "Times to scramble" msgstr "" #: edit_act_copy_buttons msgctxt "edit_act_copy_buttons" msgid "Buttons" msgstr "" #: edit_act_copy_btnHelp msgid "Help button" msgstr "" #: edit_act_copy_btnInfo msgid "Information button" msgstr "" #: edit_act_copy_grids msgid "Grids" msgstr "" #: edit_act_copy_gridA msgid "Style of grid A" msgstr "" #: edit_act_copy_gridB msgid "Style of grid B" msgstr "" #: edit_act_copy_textGrid msgid "Style of text grids" msgstr "" #: edit_act_copy_text msgid "Text activities" msgstr "" #: edit_act_copy_fontFace msgid "Font face" msgstr "" #: edit_act_copy_fontSize msgid "Font size" msgstr "" #: edit_act_copy_fontStyle msgid "Font style" msgstr "" #: edit_act_copy_textColour msgid "Main text colour" msgstr "" #: edit_act_copy_textTargetColour msgctxt "edit_act_copy_textTargetColour" msgid "Select the JClic project of which the activities will be imported" msgstr "" #: edit_act_copy_textErrorColour msgid "Errors colour" msgstr "" #: edit_act_copy_tabSpace msgid "Tab space" msgstr "" #: edit_act_copy_messages_prev msgid "Style of previous message" msgstr "" #: edit_act_changeType msgid "Change activity type" msgstr "" #: edit_act_newActivity_class_tooltip msgid "" "Full name of the class to be used to build the activity (advanced users " "only!)" msgstr "" #: edit_act_newActivity_other msgid "Other..." msgstr "" #: edit_act_newActivity_info msgid "" "Advanced users can also create unregistered types of JClic activities. Just " "write below the full class name, prefixed by the package (like " "\"com.acme.activities.FooActivity\"). Activity classes must extend " "edu.xtec.jclic.Activity, and must be accessibles to the JVM " "classloader." msgstr "" #: edit_act_newActivity_name msgid "Name of the activity:" msgstr "" #: edit_act_newActivity_name_tooltip msgid "Each activity must have a name unique in the project" msgstr "" #: edit_act_changeType_warning msgid "" "

Warning: " "Changing the type of activity can cause lost of some of the current activity " "attributes and objects. Use it with care!

 

" msgstr "" #: applet_codebase msgid "Location of JClic code:" msgstr "" #: applet_codebase_tooltip msgid "URL pointing to a folder with the JClic program files and scripts" msgstr "" #: applet_prev_text msgid "HTML code before:" msgstr "" #. #Text to be displayed below the applet. HTM code allowed. #: applet_prev_text_tooltip msgid "Text or HTML code to be placed before the applet" msgstr "" #: applet_post_text msgid "HTML code after:" msgstr "" #: applet_post_text_tooltip msgid "Text or HTML code to be placed after the applet" msgstr "" #: applet_size msgid "Applet size:" msgstr "" #: applet_size_tooltip msgid "Width and height of the applet, in absolute or percentage values." msgstr "" #: applet_page_title msgid "Page title:" msgstr "" #: applet_page_title_tooltip msgid "Text to be shown at the top of the browser window" msgstr "" #: applet_created_info msgid "The web page \"%s\" has been created successfully." msgstr "" #: applet_created_prompt msgid "Do you want to open it now with the browser?" msgstr "" #: action_createHTML_caption msgid "Create web page..." msgstr "" #: applet_create_title msgid "Creation of an HTML page with a JClic applet" msgstr "" #: action_createHTML_tooltip msgid "Create a HTML page with an applet containing the current project" msgstr "" #: applet_filename msgctxt "applet_filename" msgid "File name:" msgstr "" #: applet_filename_tooltip msgid "Name of the HTML file to be created" msgstr "" #: action_createHTML_keys msgid "H*" msgstr "" #: settings_applet msgid "Applet" msgstr "" #: settings_applet_tooltip msgid "Default values used in web page creation" msgstr "" #: applet_bgcolor msgctxt "applet_bgcolor" msgid "Background color:" msgstr "" #: applet_bgcolor_tooltip msgid "HTML page background color" msgstr "" #: applet_centered msgctxt "applet_centered" msgid "Centered" msgstr "" #: applet_centered_tooltip msgid "Place the applet horizontally centered" msgstr "" #: applet_width_tooltip msgid "Applet width (absolute or percentage)" msgstr "" #: applet_height_tooltip msgid "Applet height (absolute or percentage)" msgstr "" #: applet_exitUrl msgid "On exit, go to:" msgstr "" #: applet_exitUrl_tooltip msgid "URL where to redirect the navigation on JClic exit" msgstr "" #: applet_infoFrame msgid "Info frame name:" msgstr "" #: applet_infoFrame_tooltip msgid "" "Name of the frame used to show the content related to the \"info\" button" msgstr "" #: action_createInstaller_caption msgid "Create project installer..." msgstr "" #: action_createInstaller_keys msgctxt "action_createInstaller_keys" msgid "I*" msgstr "" #: action_createInstaller_tooltip msgid "Create a project installer script for JClic player" msgstr "" #: installer_caption msgid "Edit project installer script" msgstr "" #: installer_title msgctxt "installer_title" msgid "Title:" msgstr "" #: installer_title_tooltip msgid "Project title, to be shown on the installer wizard" msgstr "" #: installer_authors msgid "Autors:" msgstr "" #: installer_authors_tooltip msgid "Author/s of the project (short text)" msgstr "" #: installer_folder msgctxt "installer_folder" msgid "Folder:" msgstr "" #: installer_folder_tooltip msgid "Folder name to be suggested by the installer wizard" msgstr "" #: installer_files msgid "Files to be copied:" msgstr "" #: installer_files_tooltip msgid "Files to be copied by the installer" msgstr "" #: installer_files_available msgid "Available files" msgstr "" #: installer_files_selected msgid "Selected files" msgstr "" #: installer_files_add msgid ">> add >>" msgstr "" #: installer_files_add_tooltip msgid "Add selected file to the list" msgstr "" #: installer_files_remove msgid "<< remove <<" msgstr "" #: installer_files_remove_tooltip msgid "Remove selected file from the list" msgstr "" #: installer_button msgid "Launch button" msgstr "" #: installer_button_tooltip msgid "Properties of the button to be shown in the project library" msgstr "" #: installer_button_project msgid "Main project:" msgstr "" #: installer_button_project_tooltip msgid "JClic project to be launched by the button" msgstr "" #: installer_button_text msgctxt "installer_button_text" msgid "Label:" msgstr "" #: installer_button_text_tooltip msgid "Short text label, to be shown inside the button" msgstr "" #: installer_button_icon msgid "Icon:" msgstr "" #: installer_button_icon_tooltip msgid "" "Picture to be used as button icon. Leave blank to use the default JClic icon." msgstr "" #: installer_button_description msgctxt "installer_button_description" msgid "Description" msgstr "" #: installer_button_description_tooltip msgid "Tooltip to be shown by the button" msgstr "" #: installer_error_noTitle msgid "Error: Missing project title" msgstr "" #: installer_error_noBaseFolder msgid "Error: Missing folder name" msgstr "" #: installer_error_noFilesSelected msgid "Error: No files selected" msgstr "" #: installer_error_noButtonText msgid "Error: Missing launch button text label" msgstr "" #: installer_error_projectNotInFiles msgid "" "Error: The project assigned to the launch button is not in the list of files " "to be copied" msgstr "" #: applet_page_full msgid "Full-page applet" msgstr "" #: applet_page_mixed msgid "Applet with specific dimensions" msgstr "" #: edit_text_align_left msgid "Align text left" msgstr "" #: edit_text_align_center msgid "Center text" msgstr "" #: edit_text_align_right msgid "Align text right" msgstr "" #: edit_text_act_target_toggle msgid "Create or remove target" msgstr "" #: edit_text_act_insertCell msgid "Insert a cell" msgstr "" #: edit_text_act_content msgid "Content" msgstr "" #: edit_text_act_style msgctxt "edit_text_act_style" msgid "Style" msgstr "" #: edit_cell_size msgid "Cell size:" msgstr "" #: edit_project_orphanActivities msgid "" "The following activities never appear in any of the project's activity " "sequences, so they never will be displayed:" msgstr "" #: edit_project_orphanMedia msgid "The following media objects are not used directly in any activity:" msgstr "" #: edit_project_orphanActivities_prompt msgid "Do you want to add them at the end of the last activity sequence?" msgstr "" #: edit_project_orphanMedia_prompt msgid "Do you want to remove them?" msgstr "" #: edit_project_orphanMedia_title msgid "Removal of unused media objects" msgstr "" #: edit_project_orphanActivities_title msgid "Orphan activities" msgstr "" #: edit_media_refreshAll msgid "Update all media content" msgstr "" #: edit_media_refreshAll_tooltip msgid "Update all media objects reloading its files" msgstr "" #: edit_media_refreshAll_keys msgid "R*" msgstr "" #: edit_media_refreshAll_working msgid "Updating media..." msgstr "" #: edit_media_exportAll msgid "Export all media" msgstr "" #: edit_media_exportAll_tooltip msgid "Save to files the content of all media elements" msgstr "" #: edit_media_exportAll_keys msgid "X*" msgstr "" #: edit_shape_select msgid "Select" msgstr "" #: edit_shape_addPoint msgid "Add point" msgstr "" #: edit_shape_deletePoint msgid "Delete" msgstr "" #: edit_shape_drawRect msgid "Draw rectangle" msgstr "" #: edit_shape_drawEllipse msgid "Draw ellipse" msgstr "" #: edit_shape_drawPoly msgid "Draw polygon" msgstr "" #: edit_shape_toLine msgid "Convert to line" msgstr "" #: edit_shape_toBezier msgid "Convert to Bézier curve" msgstr "" #: edit_shape_toQuad msgid "Convert to quadratic curve" msgstr "" #: edit_shape_rLeft msgid "Rotate left" msgstr "" #: edit_shape_rRight msgid "Rotate right" msgstr "" #: edit_shape_expand msgid "Expand" msgstr "" #: edit_shape_contract msgid "Contract" msgstr "" #: edit_shape_zoomIn msgid "Zoom in" msgstr "" #: edit_shape_zoomOut msgid "Zoom out" msgstr "" #: edit_shape_aproxPoints msgid "Join nearest points" msgstr "" #: edit_shape_showPoints msgid "Show points" msgstr "" #: edit_shape_showPoints_tooltip msgid "Show/Hide the points" msgstr "" #: edit_shape_gridSize msgid "Grid size:" msgstr "" #: edit_shape_hideGrid msgid "Show / Hide grid" msgstr "" #: edit_shape_magnetRadius msgid "Magnet radius:" msgstr "" #: edit_shape_elements msgid "Defined elements" msgstr "" #: edit_shape_elemName msgid "Name of the selected element" msgstr "" #: edit_shape_magnetRadius_tooltip msgid "Action radius of the magnet, when enabled" msgstr "" #: edit_shape_gridSize_tooltip msgid "Size of the grid" msgstr "" #: edit_mc_activity msgctxt "edit_mc_activity" msgid "Activity:" msgstr "" #: edit_mc_sequence msgid "Sequence:" msgstr "" #: edit_mc_url msgctxt "edit_mc_url" msgid "URL:" msgstr "" #: edit_mc_project msgid "Project:" msgstr "" #: edit_mc_activity_selection msgid "Choose activity" msgstr "" #: edit_mc_sequence_selection msgid "Choose sequence" msgstr "" #: edit_mc_err_nullContent msgid "Insufficient data!" msgstr "" #: edit_act_arrowColor msgid "Arrow color:" msgstr "" #: edit_act_arrowColor_tooltip msgid "" "Color used by the editor to draw the arrows (not exactly, because an XOR bit " "mask is used)" msgstr "" #: edit_act_editActivity msgid "Edit..." msgstr "" #: edit_act_editActivity_tooltip msgid "Edit the selected activity" msgstr "" #: action_saveFileAs_caption msgid "Save as..." msgstr "" #: action_saveFileAs_keys msgctxt "action_saveFileAs_keys" msgid "AA" msgstr "" #: action_saveFileAs_tooltip msgid "Save the current project with a different name" msgstr "" #: edit_act_behavior_block msgctxt "edit_act_behavior_block" msgid "Behavior" msgstr "" #: edit_act_behavior msgctxt "edit_act_behavior" msgid "Behavior" msgstr "" #: edit_act_behavior_drag msgid "Drag objects" msgstr "" #: edit_act_behavior_drag_tooltip msgid "Drag objects instead of use a connection line" msgstr "" #: edit_act_behavior_order msgid "Check solving order" msgstr "" #: edit_act_behavior_order_tooltip msgid "Cells must be solved in order" msgstr "" #: edit_act_scramble msgid "Scramble" msgstr "" #: action_importActivities_caption msgid "Import activities..." msgstr "" #: action_importActivities_keys msgctxt "action_importActivities_keys" msgid "I*" msgstr "" #: action_importActivities_tooltip msgid "Import activities from another project" msgstr "" #: import_warn_samefile msgid "" "The selected file corresponds to the current project. Activities can be " "imported only between different projects. Please select another project file." msgstr "" #: import_selectActivities msgid "Select one or more activities to import into the current project\\:" msgstr "" #: import_importing msgid "Importing..." msgstr "" #: import_checkdep msgid "Checking dependencies..." msgstr "" #: import_impmedia msgid "Importing media\\:" msgstr "" #: import_impact msgid "Importing activity\\:" msgstr "" #: import_selectProject msgctxt "import_selectProject" msgid "Select the JClic project of which the activities will be imported" msgstr "" #: edit_tagRep_tags msgid "Tag marks" msgstr "" #: edit_tagRep_tagStart msgid "Start mark\\:" msgstr "" #: edit_tagRep_tagStart_tooltip msgid "Mark used at the beginning of tags" msgstr "" #: edit_tagRep_tagEnd msgid "End mark\\:" msgstr "" #: edit_tagRep_tagEnd_tooltip msgid "Mark used at the end of tags" msgstr "" #: edit_tagRep_file msgid "File" msgstr "Soubor" #: edit_tagRep_fileName msgid "File or URL\\:" msgstr "" #: edit_tagRep_fileName_tooltip msgid "Name or URL of the file containing the values that will replace tags" msgstr "" #: edit_tagRep_charset msgid "Charset\\:" msgstr "" #: edit_tagRep_charset_tooltip msgid "Character encoding used in the file" msgstr "" #: edit_tagRep_browseFile msgctxt "edit_tagRep_browseFile" msgid "Browse..." msgstr "Procházet..." #: edit_tagRep_browseFile_tooltip msgid "Browse the filesystem" msgstr "" #: edit_tagRep_title msgid "Tag replacing" msgstr "Nahrazení štítků" #: edit_text_act_clearStylesBtn msgid "Clear text styles..." msgstr "" #: edit_text_act_clearStylesPrompt msgid "" "Warning\\: This action will clear the specific character attributes applied " "to the document, setting it back to its main style. This action cannot be " "undone. Do you want to do it?" msgstr "" #: img_max_size msgid "Maximum size of images:" msgstr "" #: img_max_width_tooltip msgid "Maximum width of images imported into the media library." msgstr "" #: img_max_height_tooltip msgid "Maximum height of images imported into the media library." msgstr "" #: img_resize_prompt msgid "" "The image \"%s\" has a size of %s pixels. This exceeds the maximum allowed " "by JClic Author (%s). Do you want to resize it?" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/0000755000175000017500000000000011377161311020056 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_pt.po0000644000175000017500000000223311377161311025751 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-28 11:44+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Está a utilizar o programa \"$\" pela primeira vez neste computador.\n" "Por favor, indique a pasta onde deve guardar os ficheiros\n" "de dados e as configurações do programa." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Impossível criar esta pasta!\n" "Por favor, introduza uma localização válida onde possua direitos de " "administrador." #: cl_prompt_title msgid "Installation directory" msgstr "Pasta de instalação" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_nl.po0000644000175000017500000000254611377161311025746 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-11 13:22+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Je gebruikt \"$\" voor de eerste keer op deze computer.\n" "Gelieve een map naam te kieizen om de gegevens-\n" "bestanden en de programmavoorkeuren op te slaan." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Ik kan deze map niet aanmaken!\n" "Gelieven een geldige bestandslocatie op te geven waar je de nodige " "administratieve rechten hebt." #: cl_prompt_title msgid "Installation directory" msgstr "Installatie map" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_pt_BR.po0000644000175000017500000000220611377161311026334 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:50+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Está utilizando o programa \"$\" pela primeira vez neste computador.\n" "Por favor, indique a pasta que deve guardar os arquivos\n" "de configuraçéo e dados do programa." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Houve um erro ao tentar criar a pasta.\n" "Por favor, indique um local com direitos de administrador." #: cl_prompt_title msgid "Installation directory" msgstr "Pasta de instalaçéo" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_cs.po0000644000175000017500000000251211377161311025733 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-07-24 21:57+0000\n" "Last-Translator: Martin Slavík \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Spouštíte \"$\" na tomto počítači poprvé.\n" "Zadejte prosím jméno složky ve které budou uloženy\n" "datové soubory a nastavení programu." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Nemohu vytvořit tuto složku!\n" "Zadejte prosím platné umístění ke kterému máte práva administrátora." #: cl_prompt_title msgid "Installation directory" msgstr "Instalační složka" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_eu.po0000644000175000017500000000252011377161311025736 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-06-16 06:46+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Lehehengo aldiz ari zara ordenagailu honetan \"$\" abiarazten.\n" "Mesedez, sartu datu-fitxategiak eta programaren\n" "ezarpenak gordetzeko direktorioaren izena." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Ezinezkoa da direktorio hori sortzea!\n" "Mesedez, sartu kudeaketa baimena duzun gune bat." #: cl_prompt_title msgid "Installation directory" msgstr "Instalazio-direktorioa" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_it.po0000644000175000017500000000253411377161311025746 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-22 17:18+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Avviate \"$\" la prima volta in questo computer.\n" "Per favore inserite un nome di cartella dove depositare\n" "i file dei dati e i parametri del programma." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Impossibile creare questa cartella!\n" "Per favore inserisci una posizione valida dove hai i diritti di " "amministrazione." #: cl_prompt_title msgid "Installation directory" msgstr "Cartella di installazione" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_ast.po0000644000175000017500000000255511377161311026124 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-09-27 07:48+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Tas executando \"$\" per primer vegada nesta computadora.\n" "Inxerta'l nome d'una carpeta pa guardar\n" "los datos de los ficheros y les preferencies del programa." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "¡Nun se peu crear esta carpeta!\n" "Por favor, inxerta un allugamientu válidu onde tengas permisos " "alministrativos." #: cl_prompt_title msgid "Installation directory" msgstr "Carpeta d'instalación" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_fr.po0000644000175000017500000000221111377161311025731 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:50+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Vous lancez \"$\" pour la première fois sur cet ordinateur. Entrez un nom de " "dossier où stocker les fichiers de données et les paramètres de programme." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Impossible de créer ce dossier \\! Entrez une localisation valide où vous " "avez des droits d'administrateurs." #: cl_prompt_title msgid "Installation directory" msgstr "Répertoire d'installation" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_es.po0000644000175000017500000000230111377161311025731 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:50+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Está utilizando el programa \"$\" por primera vez en este ordenador.\n" "Por favor, indique la carpeta en la que desea almacenar los archivos\n" "de configuración y los datos del programa." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Se ha producido un error al intentar crear la carpeta.\n" "Por favor, indique una ubicación en la que tenga derechos de administración." #: cl_prompt_title msgid "Installation directory" msgstr "Directorio de instalación" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_de.po0000644000175000017500000000217111377161311025717 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Sie führen \"$\" erstmals auf Ihrem Computer aus.\n" "Bitte Zielordner zum Speichern der Dateien und Einstellungen angeben." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Ordner kann nicht erstellt werden!\n" "Sie müssen einen gültigen Installationspfad angeben, für den Sie " "Administratorenrechte besitzen." #: cl_prompt_title msgid "Installation directory" msgstr "Intallationspfad" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_da.po0000644000175000017500000000247211377161311025717 0ustar # Danish translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-16 22:20+0000\n" "Last-Translator: nanker \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Du kører \"$\" for første gang på denne computer.\n" "Angiv venligst et mappenavn, hvor der kan gemmes\n" "datafiler og programopsætninger." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Kunne ikke oprette denne mappe!\n" "Angiv venligst et gyldigt område, hvor du har administrative rettigheder." #: cl_prompt_title msgid "Installation directory" msgstr "Installationskatalog" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_el.po0000644000175000017500000000317511377161311025734 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-07-28 06:54+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Η εφαρμογή \"$\" εκτελείται για πρώτη φορά σε αυτόν τον υπολογιστή.\n" "Παρακαλώ εισάγετε ένα όνομα φακέλου για αποθήκευση των\n" "αρχείων δεδομένων και των ρυθμίσεων του προγράμματος." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Αδυναμία δημιουργίας του φακέλου!\n" "Παρακαλώ εισάγετε μια έγκυρη τοποθεσία όπου θα έχετε δικαιώματα διαχειριστή." #: cl_prompt_title msgid "Installation directory" msgstr "Φάκελος εγκατάστασης" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_ca.po0000644000175000017500000000227011377161311025712 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:50+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Esteu utilitzant el programa \"$\" per primera vegada en aquest ordinador.\n" "Si us plau, indiqueu la carpeta on desitgeu emmagatzemar els fitxers\n" "de configuració i les dades del programa." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "S'ha produit un error en intentar crear la carpeta!\n" "Si us plau, indiqueu una ubicació on tingueu drets d'aministració." #: cl_prompt_title msgid "Installation directory" msgstr "Directori d'instal·lació" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_gl.po0000644000175000017500000000253711377161311025737 0ustar # Galician translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-04-23 15:59+0000\n" "Last-Translator: Susana Sotelo Docío \n" "Language-Team: Galician \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Está a usar \"$\" por primeira vez neste computador.\n" "Por favor, introduza un nome de cartafol no que\n" "almacenar os ficheiros de datos e configuración." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Non se puido crear o cartafol!\n" "Por favor, introduza unha localización válida na que conte con permisos." #: cl_prompt_title msgid "Installation directory" msgstr "Cartafol de instalación" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-persistent/PersistentPathsMessages_ru.po0000644000175000017500000000301111377161311025747 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-28 13:36+0000\n" "Last-Translator: Nkolay Parukhin \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: cl_alert msgid "" "You are running \"$\" for first time in this computer.\n" "Please enter a folder name where to store\n" "the data files and program settings." msgstr "" "Вы запустили \"$\" впервые на этом компьютере.\n" "Пожалуйста, укажите папку для хранения\n" "файлов данных и настроек программы." #: cl_err_unableToCreateDir msgid "" "Unable to create this folder!\n" "Please enter a valid location where you have administrative rights." msgstr "" "Невозможно создать эту папку!\n" "Пожалуйста, укажите местоположение, где у вас есть необходимые разрешения." #: cl_prompt_title msgid "Installation directory" msgstr "Папка для установки" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/0000755000175000017500000000000011377161311020360 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_es.po0000644000175000017500000001563511377161311025553 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:53+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "¡No se ha podido poner en marcha el servidor!" #: error_incorrectData msgid "Incorrect data!" msgstr "¡Datos incorrectos!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Puerto" #: column_started_title msgid "Started" msgstr "Iniciado" #: column_lastMessage_title msgid "Last message" msgstr "Último mensaje" #: column_IP_tooltip msgid "Client IP address" msgstr "Dirección IP del cliente" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Puerto local utilizado en esta conexión" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Fecha y hora en la que se inició la conexión" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Cabecera del último mensaje recibido" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "No se ha podido abrir el archivo de inicialización \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\". Usando valores por defecto." #: form_title msgid "JClic reports server" msgstr "Servidor de informes JClic" #: form_connections_title msgid "Connections:" msgstr "Conexiones:" #: form_messages_title msgid "System messages:" msgstr "Mensajes de sistema:" #: form_settings_title msgid "Settings:" msgstr "Configuración:" #: form_connections_close msgid "Close connection" msgstr "Cerrar conexión" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Cerrar la conexión seleccionada" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Controlador:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Controlador JDBC que se utilizará para acceder a l base de datos" #: form_settings_database msgid "Database:" msgstr "Base de datos:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nombre de la base de datos de informes" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Puerto:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Puerto TCP en el que el servidor atiende las peticiones" #: form_settings_password_tooltip msgid "System DB password" msgstr "Contraseña del usuario con el que se accede a la base de datos" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Contraseña:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nombre de usuario con el que se accederá a la base de datos" #: form_settings_user msgid "User:" msgstr "Usuario:" #: ERROR msgid "ERROR" msgstr "ERROR" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Timeout:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "" "Máximo tiempo de inactividad permitido antes de cerrar una conexión, en " "segundo" #: form_btn_start msgid "Start" msgstr "Iniciar" #: form_btn_stop msgid "Stop" msgstr "Parar" #: form_btn_exit msgid "Exit" msgstr "Salir" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Parar el servidor y cerrar el programa" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Cerrar todas las conexiones y parar el servidor" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Empezar a atender a los clientes" #: form_messages_verbose msgid "Verbose" msgstr "Mostrar información ampliada" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Muestra todos los mensajes" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copiar" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copia el contenido de la cónsola en la memoria" #: form_messages_clear msgid "Clear" msgstr "Limpiar" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Limpia la ventana de mensajes" #: error_DB msgid "Requested action could not be completed" msgstr "La acción solicitada no se ha podido completar" #: settings_title msgid "JClic reports server settings" msgstr "Configuración del servidor de informes JClic" #: settings_options_title msgid "Options" msgstr "Opciones" #: settings_options_language msgid "Language:" msgstr "Idioma:" #: settings_options_look msgid "Look & feel:" msgstr "Apariencia:" #: settings_db_title msgid "Database" msgstr "Base de datos" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Controlador:" #: settings_options_tooltips msgid "Tooltips" msgstr "Etiquetas de ayuda" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Usuario de la base de datos" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Contraseña:" #: settings_server_title msgid "Reports server" msgstr "Servidor de informes" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Tiempo máximo de espera:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Puerto:" #: settings_server_autostart msgid "Autostart" msgstr "Arranque automático" #: settings_web_title msgid "Web server" msgstr "Servidor web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Escribir logs en el archivo:" #: settings_button msgid "Settings..." msgstr "Configuración..." #: error_writting_settings msgid "Error writting settings file!" msgstr "¡Error al escribir el archivo de configuración!" #: form_btn_show msgid "launch browser..." msgstr "Iniciar el navegador..." #: error_starting_browser msgid "Error launching browser!" msgstr "Error al iniciar el navegador\\!" #: error_opening_logs msgid "Error opening log files!" msgstr "¡Error al abrir los archivos de registro!" #: settings_file msgid "File..." msgstr "Archivo..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefijo de los nombers de las tablas:" #: settings_createTables msgid "Create tables if not exist" msgstr "Crear tablas si no existen" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Duración máxima de una sesión inactiva (minutos)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferido\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Orden utilizada para lanzar el navegador (firefox, iexplore, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_ca.po0000644000175000017500000001547211377161311025526 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-22 18:04+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "No s'ha pogut posar en marxa el servidor!" #: error_incorrectData msgid "Incorrect data!" msgstr "Dades incorrectes!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Port" #: column_started_title msgid "Started" msgstr "Engegat" #: column_lastMessage_title msgid "Last message" msgstr "Darrer missatge" #: column_IP_tooltip msgid "Client IP address" msgstr "Adreça IP de l'ordinador client" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Port local emprat per a aquesta connexió" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Data i hora en què s'ha iniciat la connexió" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Capçalera del darrer missatge rebut" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "No es pot obrir el fitxer de configuració \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\". El programa utilitzarà els valors per defecte." #: form_title msgid "JClic reports server" msgstr "Servidor d'informes JClic" #: form_connections_title msgid "Connections:" msgstr "Connexions:" #: form_messages_title msgid "System messages:" msgstr "Missatges de sistema:" #: form_settings_title msgid "Settings:" msgstr "Configuració:" #: form_connections_close msgid "Close connection" msgstr "Tanca la connexió" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Tanca la connexió seleccionada a la llista" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Controlador:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Controlador JDBC utilitzat per a connectar amb la base de dades" #: form_settings_database msgid "Database:" msgstr "Base de dades:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nom de la base de dades d'informes" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Port:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Port TCP on el servidor atendrà les connexions" #: form_settings_password_tooltip msgid "System DB password" msgstr "Contrasenya de l'usuari de sistema" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Contrasenya:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nom d'usuari de sistema de la base de dades" #: form_settings_user msgid "User:" msgstr "Usuari:" #: ERROR msgid "ERROR" msgstr "ERROR" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Timeout:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Màxim nombre de segons d'inactivitat permès a les connexions" #: form_btn_start msgid "Start" msgstr "Engega" #: form_btn_stop msgid "Stop" msgstr "Atura" #: form_btn_exit msgid "Exit" msgstr "Surt" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Atura el servidor i tancar el programa" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Tancar totes les connexions i atura el servidor" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Inicia l'atenció als clients" #: form_messages_verbose msgid "Verbose" msgstr "Mostra informació ampliada" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Mostra tots els missatges entrants" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copia" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copia el contingut de la finestra a la carpeta de sistema" #: form_messages_clear msgid "Clear" msgstr "Esborra" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Neteja la finestra de missatges" #: error_DB msgid "Requested action could not be completed" msgstr "L'acció sol.licitada no s'ha pogut completar" #: settings_title msgid "JClic reports server settings" msgstr "Configuració de servidor d'informes JClic" #: settings_options_title msgid "Options" msgstr "Opcions" #: settings_options_language msgid "Language:" msgstr "Idioma:" #: settings_options_look msgid "Look & feel:" msgstr "Aparença:" #: settings_db_title msgid "Database" msgstr "Base de dades" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Controlador:" #: settings_options_tooltips msgid "Tooltips" msgstr "Etiquetes d'ajuda" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Usuari de la base de dades:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Contrasenya:" #: settings_server_title msgid "Reports server" msgstr "Servidor d'informes" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Temps màxim d'espera:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Port:" #: settings_server_autostart msgid "Autostart" msgstr "Engegada automàtica" #: settings_web_title msgid "Web server" msgstr "Servidor web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Escriure logs al fitxer:" #: settings_button msgid "Settings..." msgstr "Configuració..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Error en escriure el fitxer de configuració!" #: form_btn_show msgid "launch browser..." msgstr "engega el navegador..." #: error_starting_browser msgid "Error launching browser!" msgstr "Error en executar el navegador!" #: error_opening_logs msgid "Error opening log files!" msgstr "Error en obrir els fitxers de registre!" #: settings_file msgid "File..." msgstr "Fitxer..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefixe dels noms de les taules:" #: settings_createTables msgid "Create tables if not exist" msgstr "Crea taules si no existeixen" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Durada màxima d'una sessió inactiva (minuts):" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferit:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Ordre emprada per a engegar el navegador (firefox, iexplore, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_nl.po0000644000175000017500000001552111377161311025547 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-11 13:05+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Kan de server niet starten!" #: error_incorrectData msgid "Incorrect data!" msgstr "Verkeerde gegevens!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Poort" #: column_started_title msgid "Started" msgstr "Gestart" #: column_lastMessage_title msgid "Last message" msgstr "Laatste bericht" #: column_IP_tooltip msgid "Client IP address" msgstr "Client IP address" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Local port van deze verbinding" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Datum en tijd van de start van de verbinding" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Begincodes van het laatst ontvangen bericht" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Het eigenschapbestand kan niet geladen worden \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Gebruik standaard waarden." #: form_title msgid "JClic reports server" msgstr "JClic rapporten server" #: form_connections_title msgid "Connections:" msgstr "Verbindingen" #: form_messages_title msgid "System messages:" msgstr "Systeem berichten:" #: form_settings_title msgid "Settings:" msgstr "Instellingen:" #: form_connections_close msgid "Close connection" msgstr "Verbinding sluiten" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Gekozen verbinding sluiten" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Stuurprogramma:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "" "JDBC stuurprogramma dat gebruikt wordt om verbinding te maken met de database" #: form_settings_database msgid "Database:" msgstr "Database:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Naam van de rapporten database" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Poort:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "TCP poort waar de server de verbinding zoekt" #: form_settings_password_tooltip msgid "System DB password" msgstr "Systeem DB wachtwoord" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Wachtwoord:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Systeem DB gebruikersnaam" #: form_settings_user msgid "User:" msgstr "Gebruiker:" #: ERROR msgid "ERROR" msgstr "FOUT" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Wachttijd:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "" "Maximum aantal seconden zonder activiteit bij verbinding(Maximum inactivity " "seconds allowed to connections)" #: form_btn_start msgid "Start" msgstr "Begin" #: form_btn_stop msgid "Stop" msgstr "Stoppen" #: form_btn_exit msgid "Exit" msgstr "Afsluiten" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Server afsluiten en programma afsluiten" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Sluit alle verbindingen af en stop de server" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Begin te luisteren naar clients" #: form_messages_verbose msgid "Verbose" msgstr "Met uitleg" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Toon alle berichten" #: form_messages_copy msgid "Copy to clipboard" msgstr "Kopiëren naar klembord" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Kopieer de console output naar clipboard" #: form_messages_clear msgid "Clear" msgstr "Wissen" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Wissen van de console output" #: error_DB msgid "Requested action could not be completed" msgstr "Requested action could not be completed" #: settings_title msgid "JClic reports server settings" msgstr "JClic rapporten server instellingen" #: settings_options_title msgid "Options" msgstr "Opties" #: settings_options_language msgid "Language:" msgstr "Taal:" #: settings_options_look msgid "Look & feel:" msgstr "Look & feel:" #: settings_db_title msgid "Database" msgstr "Database" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Stuurprogramma:" #: settings_options_tooltips msgid "Tooltips" msgstr "Hulpballonnen" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "DB user:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Wachtwoord:" #: settings_server_title msgid "Reports server" msgstr "Rapporten server" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Timeout:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Poort:" #: settings_server_autostart msgid "Autostart" msgstr "Automatisch starten" #: settings_web_title msgid "Web server" msgstr "Web-server" #: settings_server_logFile msgid "Write logs to file:" msgstr "Schrijf logs naar bestand:" #: settings_button msgid "Settings..." msgstr "Instellingen..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Fout bij schrijven instellingen bestand!" #: form_btn_show msgid "launch browser..." msgstr "opstarten van browser..." #: error_starting_browser msgid "Error launching browser!" msgstr "Fout bij starten browser!" #: error_opening_logs msgid "Error opening log files!" msgstr "Fout bij openen log bestanden!" #: settings_file msgid "File..." msgstr "Bestand..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Table names prefix:" #: settings_createTables msgid "Create tables if not exist" msgstr "Maak tabellen indien ze niet bestaan" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Session lifetime (minutes)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Voorkeur browser\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "Commando om browser te starten(firefox, iexplore, mozilla, opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_ast.po0000644000175000017500000001611011377161311025720 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # Xandru Armesto , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-10-01 09:54+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "¡Nun se pudo arrancar el sirvidor!" #: error_incorrectData msgid "Incorrect data!" msgstr "¡Datos incorreutos!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Puertu" #: column_started_title msgid "Started" msgstr "Aniciáu" #: column_lastMessage_title msgid "Last message" msgstr "Mensax caberu" #: column_IP_tooltip msgid "Client IP address" msgstr "Direición IP del veceru" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Puertu llocal utilizáu nesta conexón" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Data y hora na que s'anició la conexón" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Cabecera del mensax caberu recibíu" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Nun se pudieron cargar les propiedaes del ficheru \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\". Usando valores por defeutu." #: form_title msgid "JClic reports server" msgstr "Sirvidor d'informes JClic" #: form_connections_title msgid "Connections:" msgstr "Conexones:" #: form_messages_title msgid "System messages:" msgstr "Mensaxes de sistema:" #: form_settings_title msgid "Settings:" msgstr "Configuración:" #: form_connections_close msgid "Close connection" msgstr "Zarrar conexón" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Zarrar la conexón seleicionada" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Controlador:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Controlador JDBC que se va emplegar p'acceder a la base de datos" #: form_settings_database msgid "Database:" msgstr "Base de datos:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nome de la base de datos d'informes" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Puertu:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Puertu TCP nel que'l sirvidor atiende les peticiones" #: form_settings_password_tooltip msgid "System DB password" msgstr "Contraseña del usuariu col que s'accede a la base de datos" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Contraseña:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nome d'usuariu col que se va acceder a la base de datos" #: form_settings_user msgid "User:" msgstr "Usuariu:" #: ERROR msgid "ERROR" msgstr "ERROR" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Tiempu máximu:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Máximo tiempu d'inactividá permitíu pa les conexones" #: form_btn_start msgid "Start" msgstr "Entamar" #: form_btn_stop msgid "Stop" msgstr "Parar" #: form_btn_exit msgid "Exit" msgstr "Colar" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Parar el sirvidor y zarrar el programa" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Zarrar toles conexones y parar el sirvidor" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Entamar a atender a los veceros" #: form_messages_verbose msgid "Verbose" msgstr "Amosar información ampliada" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Amuesa tolos mensaxes" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copiar al cartafueyu" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copia'l conteníu de la consola na memoria" #: form_messages_clear msgid "Clear" msgstr "Llimpiar" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Llimpia la ventana de mensaxes" #: error_DB msgid "Requested action could not be completed" msgstr "L'aición solicitada nun se pudo completar" #: settings_title msgid "JClic reports server settings" msgstr "Configuración del sirvidor d'informes JClic" #: settings_options_title msgid "Options" msgstr "Opciones" #: settings_options_language msgid "Language:" msgstr "Llingua:" #: settings_options_look msgid "Look & feel:" msgstr "Apariencia:" #: settings_db_title msgid "Database" msgstr "Base de datos" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Controlador:" #: settings_options_tooltips msgid "Tooltips" msgstr "Etiquetes d'aida" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Usuariu de la base de datos" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Contraseña:" #: settings_server_title msgid "Reports server" msgstr "Sirvidor d'informes" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Tiempu máximu d'espera:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Puertu:" #: settings_server_autostart msgid "Autostart" msgstr "Arranque automáticu" #: settings_web_title msgid "Web server" msgstr "Sirvidor web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Escribir logs nel ficheru:" #: settings_button msgid "Settings..." msgstr "Configuración..." #: error_writting_settings msgid "Error writting settings file!" msgstr "¡Error al escribir el ficheru de configuración!" #: form_btn_show msgid "launch browser..." msgstr "Arrancar el restolador..." #: error_starting_browser msgid "Error launching browser!" msgstr "Error al arrancar el restolador\\!" #: error_opening_logs msgid "Error opening log files!" msgstr "¡Error al abrir los ficheros de rexistru!" #: settings_file msgid "File..." msgstr "Ficheru..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefixu de los nomes de les tables:" #: settings_createTables msgid "Create tables if not exist" msgstr "Criar tables si nun esisten" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Duración máxima de una sesión inactiva (minutos)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Restolador preferíu\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comandu emplegáu pa arrancar el restolador (firefox, iexplore, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_cs.po0000644000175000017500000001544011377161311025543 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-07-25 12:32+0000\n" "Last-Translator: Martin Slavík \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Nemohu nastartovat server!" #: error_incorrectData msgid "Incorrect data!" msgstr "Chybná data!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Port" #: column_started_title msgid "Started" msgstr "Spuštěn" #: column_lastMessage_title msgid "Last message" msgstr "poslední zpráva" #: column_IP_tooltip msgid "Client IP address" msgstr "IP adresa klienta" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Lokální port použitý v tomto spojení" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Datum a čas navázání spojení" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Hlavička poslední obdržené zprávy" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Nemohu nahrát soubor s vlastnostmi \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Používám standardní nastavení." #: form_title msgid "JClic reports server" msgstr "JClic server sestav" #: form_connections_title msgid "Connections:" msgstr "Spojení:" #: form_messages_title msgid "System messages:" msgstr "Systémové zprávy:" #: form_settings_title msgid "Settings:" msgstr "Nastavení:" #: form_connections_close msgid "Close connection" msgstr "Ukončit spojení" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Ukončit vybraná spojení" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Ovladač:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "JDBC ovladač por připojení k databázi" #: form_settings_database msgid "Database:" msgstr "Databáze:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Jméno databáze pro sestavy" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Port:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "TCP port pro spojení" #: form_settings_password_tooltip msgid "System DB password" msgstr "Heslo pro systémovou databázi" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Heslo:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Uživatelské jméno pro systémovou databázi" #: form_settings_user msgid "User:" msgstr "Uživatel:" #: ERROR msgid "ERROR" msgstr "CHYBA" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Časový limit" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Maximální nečinnost v sekundách povolená pro relaci" #: form_btn_start msgid "Start" msgstr "Začátek" #: form_btn_stop msgid "Stop" msgstr "Stop" #: form_btn_exit msgid "Exit" msgstr "Ukončit" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Zastavit server a vypnout program" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Zavřít všechna spojení a zastavoit server" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Začínám naslouchat klientům" #: form_messages_verbose msgid "Verbose" msgstr "Podrobné" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Zobraz všechny zprávy" #: form_messages_copy msgid "Copy to clipboard" msgstr "Kopírovat do schránky" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Kopírovat výstup konzole do schránky" #: form_messages_clear msgid "Clear" msgstr "Vymazat" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Vyčistit výstup konzole" #: error_DB msgid "Requested action could not be completed" msgstr "Požadovaná akce nemůže být dokončena" #: settings_title msgid "JClic reports server settings" msgstr "Nastavení JClic serveru sestav" #: settings_options_title msgid "Options" msgstr "Možnosti" #: settings_options_language msgid "Language:" msgstr "Jazyk:" #: settings_options_look msgid "Look & feel:" msgstr "Vzhled:" #: settings_db_title msgid "Database" msgstr "Databáze" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Ovladač:" #: settings_options_tooltips msgid "Tooltips" msgstr "Bublinová nápověda" #: settings_db_url msgid "URL:" msgstr "URL :" #: settings_db_usr msgid "DB user:" msgstr "DB uživatel:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Heslo:" #: settings_server_title msgid "Reports server" msgstr "Server sestav" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Časový limit" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Port:" #: settings_server_autostart msgid "Autostart" msgstr "Automatické spuštění" #: settings_web_title msgid "Web server" msgstr "Webový server" #: settings_server_logFile msgid "Write logs to file:" msgstr "Zapsat sestavy do souboru:" #: settings_button msgid "Settings..." msgstr "Nastavení..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Chyba při zápisu do souboru s nastavením." #: form_btn_show msgid "launch browser..." msgstr "spusť prohlížeč..." #: error_starting_browser msgid "Error launching browser!" msgstr "Chyba při spouštění prohlížeče!" #: error_opening_logs msgid "Error opening log files!" msgstr "Chyba při otevírání souborů se sestavami!" #: settings_file msgid "File..." msgstr "Soubor..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefix jmen tabulek:" #: settings_createTables msgid "Create tables if not exist" msgstr "Vytvořit tabulky pokud neexistují" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Životnost relace (minutes)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Upřednostňovaný prohlížeč\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Příkaz pro spuštění prohlížeče (firefox, iexplore, mozilla, opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_ru.po0000644000175000017500000001761111377161311025566 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-11-15 20:22+0000\n" "Last-Translator: Serafim Nenarokov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Невозможно запустить сервер!" #: error_incorrectData msgid "Incorrect data!" msgstr "Неверные данные!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Порт" #: column_started_title msgid "Started" msgstr "Запущен" #: column_lastMessage_title msgid "Last message" msgstr "Последнее сообщение" #: column_IP_tooltip msgid "Client IP address" msgstr "IP адрес клиента" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Локальный порт используемый для этого соединения" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Дата и время начала соединения" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Заголовок последнего принятого сообщения" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Невозможно загрузить файл настроек \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Используем настройки по умолчанию." #: form_title msgid "JClic reports server" msgstr "Сервер отчётов JClic" #: form_connections_title msgid "Connections:" msgstr "Соединения:" #: form_messages_title msgid "System messages:" msgstr "Системные сообщения:" #: form_settings_title msgid "Settings:" msgstr "Настройки:" #: form_connections_close msgid "Close connection" msgstr "Закрыть соединение" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Закрыть выбранное соединение" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Драйвер:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Драйвер JDBC используемый для подключения к базе данных" #: form_settings_database msgid "Database:" msgstr "База данных:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Имя базы данных отчётов" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Порт:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "TCP порт сервера" #: form_settings_password_tooltip msgid "System DB password" msgstr "Пароль системной БД" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Пароль:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Имя пользователя системной БД" #: form_settings_user msgid "User:" msgstr "Пользователь:" #: ERROR msgid "ERROR" msgstr "ОШИБКА" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Тайм-аут:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Максимальное время неактивности соединения, секунд" #: form_btn_start msgid "Start" msgstr "Запустить" #: form_btn_stop msgid "Stop" msgstr "Остановить" #: form_btn_exit msgid "Exit" msgstr "Выход" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Остановить сервер и завершить программу" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Закрыть все соединения и остановить сервер" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Начать обслуживание клиентов" #: form_messages_verbose msgid "Verbose" msgstr "Подробно" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Показывать все сообщения" #: form_messages_copy msgid "Copy to clipboard" msgstr "Копировать в буфер обмена" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Копировать консольный вывод в буфер обмена" #: form_messages_clear msgid "Clear" msgstr "Очистить" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Очистить консольный вывод" #: error_DB msgid "Requested action could not be completed" msgstr "Запрошенное действие не может быть завершено" #: settings_title msgid "JClic reports server settings" msgstr "Настройки сервера отчётов JClic" #: settings_options_title msgid "Options" msgstr "Настройки" #: settings_options_language msgid "Language:" msgstr "Язык:" #: settings_options_look msgid "Look & feel:" msgstr "Стиль оформления:" #: settings_db_title msgid "Database" msgstr "База данных" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Драйвер:" #: settings_options_tooltips msgid "Tooltips" msgstr "Подсказки" #: settings_db_url msgid "URL:" msgstr "Адрес(URL):" #: settings_db_usr msgid "DB user:" msgstr "Пользователь БД:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Пароль:" #: settings_server_title msgid "Reports server" msgstr "Сервер отчётов" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Тайм-аут:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Порт:" #: settings_server_autostart msgid "Autostart" msgstr "Автозапуск" #: settings_web_title msgid "Web server" msgstr "Веб-сервер" #: settings_server_logFile msgid "Write logs to file:" msgstr "Записывать логи в файл:" #: settings_button msgid "Settings..." msgstr "Настройки..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Ошибка при записи файла настроек!" #: form_btn_show msgid "launch browser..." msgstr "запуск браузера..." #: error_starting_browser msgid "Error launching browser!" msgstr "Ошибка запуска браузера!" #: error_opening_logs msgid "Error opening log files!" msgstr "Ошибка открытия файлов логов!" #: settings_file msgid "File..." msgstr "Файл..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Префикс имён таблиц:" #: settings_createTables msgid "Create tables if not exist" msgstr "Создавать таблицы, если не существуют" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Время жизни сессии (минут)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Предпочитаемый браузер\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "Команда для запуска браузера (firefox, iexplore, mozilla, opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_fr.po0000644000175000017500000001543711377161311025553 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:53+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Impossible de démarrer le serveur \\!" #: error_incorrectData msgid "Incorrect data!" msgstr "Donnée incorrecte \\!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Port" #: column_started_title msgid "Started" msgstr "Démarré" #: column_lastMessage_title msgid "Last message" msgstr "Dernier message" #: column_IP_tooltip msgid "Client IP address" msgstr "Adresse IP client" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Port local utilisé dans cette connexion" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Date et heure auxquelles la connexion a démarré" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "En-tête du dernier message reçu" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Impossible de charger le fichier des propriétés \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Utilisation des paramètres par défaut." #: form_title msgid "JClic reports server" msgstr "Serveur de rapports JClic" #: form_connections_title msgid "Connections:" msgstr "Connexions\\:" #: form_messages_title msgid "System messages:" msgstr "Messages system\\:" #: form_settings_title msgid "Settings:" msgstr "paramètres\\:" #: form_connections_close msgid "Close connection" msgstr "Fermer connexion" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Fermer la connexion sélectionnée" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Driver\\:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Driver JDBC à utiliser pour se connecter à la base" #: form_settings_database msgid "Database:" msgstr "Base de données\\:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nom de la base de données de rapports" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Port\\:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Port TCP où le serveur écoutera les connexions" #: form_settings_password_tooltip msgid "System DB password" msgstr "System DB mot de passe" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Mot de passe\\:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nom d'utilisateur System DB" #: form_settings_user msgid "User:" msgstr "Utilisateur\\:" #: ERROR msgid "ERROR" msgstr "ERREUR" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Timeout\\:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Secondes maximales d'inactivité allouées aux connexions" #: form_btn_start msgid "Start" msgstr "Démarrer" #: form_btn_stop msgid "Stop" msgstr "Stop" #: form_btn_exit msgid "Exit" msgstr "Quitter" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Arrêter le serveur et arrêter le programme" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Fermer toutes les connexions et arrêter le serveur" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Commencer la veille pour les clients" #: form_messages_verbose msgid "Verbose" msgstr "Verbose" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Afficher tous les messages" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copier dans le presse-papiers" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copier la console de sortie vers le presse-papiers" #: form_messages_clear msgid "Clear" msgstr "Effacer" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Efface la console de sortie" #: error_DB msgid "Requested action could not be completed" msgstr "L'action requise ne peut être terminée" #: settings_title msgid "JClic reports server settings" msgstr "Paramètres du serveur de rapports JClic" #: settings_options_title msgid "Options" msgstr "Options" #: settings_options_language msgid "Language:" msgstr "Langue\\:" #: settings_options_look msgid "Look & feel:" msgstr "Apparence\\:" #: settings_db_title msgid "Database" msgstr "Base de données" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Driver\\:" #: settings_options_tooltips msgid "Tooltips" msgstr "Outils" #: settings_db_url msgid "URL:" msgstr "URL\\:" #: settings_db_usr msgid "DB user:" msgstr "Utilisateur DB\\:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Mot de passe\\:" #: settings_server_title msgid "Reports server" msgstr "Serveur de rapports" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Timeout\\:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Port\\:" #: settings_server_autostart msgid "Autostart" msgstr "Démarrage automatique" #: settings_web_title msgid "Web server" msgstr "serveur Web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Ecrire les connexions dans le fichier\\:" #: settings_button msgid "Settings..." msgstr "Paramètres..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Erreur d'écriture du fichier paramètres \\!" #: form_btn_show msgid "launch browser..." msgstr "Lancer l'explorateur..." #: error_starting_browser msgid "Error launching browser!" msgstr "Erreur au lancement de l'explorateur \\!" #: error_opening_logs msgid "Error opening log files!" msgstr "Erreur à l'ouverture des fichiers log \\!" #: settings_file msgid "File..." msgstr "Fichier..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Préfixe des noms de table\\:" #: settings_createTables msgid "Create tables if not exist" msgstr "Créer les tables si elles n'existent pas" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Durée de vie d'une session (minutes)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Explorateur préféré\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Commande utilisée pour lancer l'explorateur (firefox, iexplore, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_de.po0000644000175000017500000001535511377161311025533 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-20 09:52+0000\n" "Last-Translator: Martina \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Server kann nicht gestartet werden!" #: error_incorrectData msgid "Incorrect data!" msgstr "Falsche Daten!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Port" #: column_started_title msgid "Started" msgstr "Hergestellt" #: column_lastMessage_title msgid "Last message" msgstr "Letzte Nachricht" #: column_IP_tooltip msgid "Client IP address" msgstr "IP Adresse des Client" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Lokaler Port für diese Verbindung" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Datum und Zeitpunkt zu dem die Verbindung hergestellt wurde" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Header der letzten empfangenen Nachricht" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Configurationsdatei kann nicht geladen werden \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Standardeinstellungen verwenden." #: form_title msgid "JClic reports server" msgstr "JClic Datenbank" #: form_connections_title msgid "Connections:" msgstr "Verbindungen:" #: form_messages_title msgid "System messages:" msgstr "Systemmeldungen:" #: form_settings_title msgid "Settings:" msgstr "Einstellungen:" #: form_connections_close msgid "Close connection" msgstr "Verbindung schließen" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Ausgewählte Verbindung schließen" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Treiber:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "" "JDBC Treiber, der zum Herstellen der Verbindung mit der Datenbank verwendet " "wird" #: form_settings_database msgid "Database:" msgstr "Datenbank:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Name der JClic Datenbank" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Port:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "TCP Port, über den die Verbingung zum Server hergestellt wird" #: form_settings_password_tooltip msgid "System DB password" msgstr "Passwort für Zugriff auf DB-System" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Passwort:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Username für Zugriff auf Datenbank" #: form_settings_user msgid "User:" msgstr "User:" #: ERROR msgid "ERROR" msgstr "FEHLER" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Timeout:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "" "Erlaubte Ruhezeit (in Sekunden), nach der die Verbindung getrennt wird" #: form_btn_start msgid "Start" msgstr "Beginnen" #: form_btn_stop msgid "Stop" msgstr "Beenden" #: form_btn_exit msgid "Exit" msgstr "Beenden" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Verbindung zum Server schließen und Programm herunterfahren" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Alle Verbindungen schließen und Server beenden" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Clients auflisten" #: form_messages_verbose msgid "Verbose" msgstr "Details anzeigen" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Alle Nachrichten anzeigen" #: form_messages_copy msgid "Copy to clipboard" msgstr "In Zwischenablage kopieren" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Kopiert Inhalte des Fensters in die Zwischenablage" #: form_messages_clear msgid "Clear" msgstr "Löschen" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Löscht alle Nachrichten aus dem Fenster" #: error_DB msgid "Requested action could not be completed" msgstr "Gewünschter Vorgang kann nicht fertiggestellt werden" #: settings_title msgid "JClic reports server settings" msgstr "Einstellungen für JClic Datenbank" #: settings_options_title msgid "Options" msgstr "Optionen" #: settings_options_language msgid "Language:" msgstr "Sprache:" #: settings_options_look msgid "Look & feel:" msgstr "Erscheinungsbild:" #: settings_db_title msgid "Database" msgstr "Datenbank" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Treiber:" #: settings_options_tooltips msgid "Tooltips" msgstr "Tooltips" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "DB User" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Passwort:" #: settings_server_title msgid "Reports server" msgstr "Datenbank" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Timeout:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Port:" #: settings_server_autostart msgid "Autostart" msgstr "Autostart" #: settings_web_title msgid "Web server" msgstr "Webserver" #: settings_server_logFile msgid "Write logs to file:" msgstr "History in Logfile eintragen :" #: settings_button msgid "Settings..." msgstr "Einstellungen..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Fehler beim Eintragen der Konfigurationseinstellungen!" #: form_btn_show msgid "launch browser..." msgstr "Browser öffnen..." #: error_starting_browser msgid "Error launching browser!" msgstr "Fehler beim Öffnen des Browsers!" #: error_opening_logs msgid "Error opening log files!" msgstr "Fehler beim Öffnen der Log-Files!" #: settings_file msgid "File..." msgstr "Datei..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Präfix der Tabelle:" #: settings_createTables msgid "Create tables if not exist" msgstr "Verzeichnisse erstellen wenn nicht vorhanden" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Höchstdauer für inaktive Sitzung (in Minuten):" #: settings_browser msgid "Preferred browser\\:" msgstr "Bevorzugter Browser:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "Befehl zum Starten des Browsers (Firefox, IE, Mozilla, Opera,...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_pt_BR.po0000644000175000017500000001576611377161311026157 0ustar # Brazilian Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-17 20:39+0000\n" "Last-Translator: Alexandre R Soares \n" "Language-Team: Brazilian Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Não foi possível iniciar o servidor!" #: error_incorrectData msgid "Incorrect data!" msgstr "Dados incorretos!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Porta" #: column_started_title msgid "Started" msgstr "Iniciado" #: column_lastMessage_title msgid "Last message" msgstr "Última mensagem" #: column_IP_tooltip msgid "Client IP address" msgstr "Endereço IP do cliente" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Porta local usada nessa conexão" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Date e hora em que a conexão iniciou-se" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Cabeçalho da última mensagem recebida" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Não foi possível abrir o arquivo de propriedades \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Usando configurações padrões." #: form_title msgid "JClic reports server" msgstr "Servidor de relatórios do JClic" #: form_connections_title msgid "Connections:" msgstr "Conexões:" #: form_messages_title msgid "System messages:" msgstr "Mensagens do sistema:" #: form_settings_title msgid "Settings:" msgstr "Configurações:" #: form_connections_close msgid "Close connection" msgstr "Fechar conexão" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Fechar a conexão selecionada" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Controlador (Driver):" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Driver JDBC a usar para conectar-se ao banco de dados" #: form_settings_database msgid "Database:" msgstr "Banco de dados:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nome do banco de dados de relatórios" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Porta:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Porta TCP onde o servidor escutará as conexões" #: form_settings_password_tooltip msgid "System DB password" msgstr "Senha para o Sistema de BD" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Senha:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nome de usuário para o Sistema de BD" #: form_settings_user msgid "User:" msgstr "Usuário:" #: ERROR msgid "ERROR" msgstr "ERRO" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Tempo limite:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Tempo máximo de inatividade permitido para conexões" #: form_btn_start msgid "Start" msgstr "Iniciar" #: form_btn_stop msgid "Stop" msgstr "Parar" #: form_btn_exit msgid "Exit" msgstr "Sair" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Parar o servidor e encerrar o programa" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Encerrar todas as conexões e parar o servidor" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Iniciar a escuta de clientes" #: form_messages_verbose msgid "Verbose" msgstr "Mostrar informação ampliada" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Mostrar todas as mensagens" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copiar para a memória o conteúdo do console" #: form_messages_clear msgid "Clear" msgstr "Limpar" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Limpa a saída do console" #: error_DB msgid "Requested action could not be completed" msgstr "Não foi possível completar a ação solicitada" #: settings_title msgid "JClic reports server settings" msgstr "Configurações do servidor de relatórios do JClic" #: settings_options_title msgid "Options" msgstr "Opções" #: settings_options_language msgid "Language:" msgstr "Idioma:" #: settings_options_look msgid "Look & feel:" msgstr "Aspecto:" #: settings_db_title msgid "Database" msgstr "Banco de dados" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Controlador (Driver):" #: settings_options_tooltips msgid "Tooltips" msgstr "Dicas de ferramenta" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Usuário do BD" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Senha:" #: settings_server_title msgid "Reports server" msgstr "Servidor de relatórios" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Tempo limite:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Porta:" #: settings_server_autostart msgid "Autostart" msgstr "Início automático" #: settings_web_title msgid "Web server" msgstr "Servidor web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Registrar (logs) no arquivo:" #: settings_button msgid "Settings..." msgstr "Configurações..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Erro ao registrar configurações no arquivo!" #: form_btn_show msgid "launch browser..." msgstr "iniciar navegador..." #: error_starting_browser msgid "Error launching browser!" msgstr "Erro ao iniciar navegador!" #: error_opening_logs msgid "Error opening log files!" msgstr "erro ao abrir arquivos de log!" #: settings_file msgid "File..." msgstr "Arquivo..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Tabela de prefixo de nomes" #: settings_createTables msgid "Create tables if not exist" msgstr "Criar tabelas se não houver" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Duração máxima de uma sessão inativa (minutos)\\\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferido\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comando usado para iniciar o navegador (firefox, iexplorer, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_eu.po0000644000175000017500000001550011377161311025544 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-02-18 16:44+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Ezin izan da zerbitzaria abian jarri!" #: error_incorrectData msgid "Incorrect data!" msgstr "Datuak ez dira zuzenak!" #: column_IP_title msgid "IP" msgstr "IP-a" #: column_port_title msgid "Port" msgstr "Ataka" #: column_started_title msgid "Started" msgstr "Hasita" #: column_lastMessage_title msgid "Last message" msgstr "Azken mezua" #: column_IP_tooltip msgid "Client IP address" msgstr "Bezeroaren IP helbidea" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Konexio honetan erabilitako ataka lokala" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Konexio hasi zeneko data eta ordua" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Jasotako azken mezuaren goiburua" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Ezin da kargatu ezaugarri-fitxategia \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Erabili berezko ezarpenak." #: form_title msgid "JClic reports server" msgstr "JClic txostenen zerbitzaria" #: form_connections_title msgid "Connections:" msgstr "Konexioak:" #: form_messages_title msgid "System messages:" msgstr "Sistemaren mezuak:" #: form_settings_title msgid "Settings:" msgstr "Ezarpenak:" #: form_connections_close msgid "Close connection" msgstr "Itxi konexioa" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Itxi aukeratutako konexioa" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Kontrolatzailea:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Datu-basearekin konektatzeko JDBC kontrolatzailea" #: form_settings_database msgid "Database:" msgstr "Datu-basea:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Txostenen datu-basearen izena" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Ataka:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Zerbitzariak eskariei erantzuteko TCP portua" #: form_settings_password_tooltip msgid "System DB password" msgstr "Sistemaren DB pasahitza" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Pasahitza:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Sistemaren DB erabiltzaile-izena" #: form_settings_user msgid "User:" msgstr "Erabiltzailea:" #: ERROR msgid "ERROR" msgstr "ERROREA" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Denbora-muga:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Konexiorako gehinezko jarduerarik gabeko segundu-kopurua" #: form_btn_start msgid "Start" msgstr "Hasi" #: form_btn_stop msgid "Stop" msgstr "Gelditu" #: form_btn_exit msgid "Exit" msgstr "Irten" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Zerbitzaria geldiarazi eta programa itxi" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Itxi konexioak eta zerbitzaria geldiarazi" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Bezeroei kasu egiten hasi" #: form_messages_verbose msgid "Verbose" msgstr "Zehatzago" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Erakutsi mezu guztiak" #: form_messages_copy msgid "Copy to clipboard" msgstr "Kopiatu arbelean" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Kontsolaren edukia memoriara kopiatu" #: form_messages_clear msgid "Clear" msgstr "Garbitu" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Garbitu mezuen leihoa" #: error_DB msgid "Requested action could not be completed" msgstr "Eskatutako ekintza ezin izan da osatu" #: settings_title msgid "JClic reports server settings" msgstr "JClic txostenen zerbitzariaren ezarpenak" #: settings_options_title msgid "Options" msgstr "Aukerak" #: settings_options_language msgid "Language:" msgstr "Hizkuntza:" #: settings_options_look msgid "Look & feel:" msgstr "Itxura:" #: settings_db_title msgid "Database" msgstr "Datu-basea" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Kontrolatzailea:" #: settings_options_tooltips msgid "Tooltips" msgstr "Laguntza-etiketak" #: settings_db_url msgid "URL:" msgstr "URL-a:" #: settings_db_usr msgid "DB user:" msgstr "DB erabiltzailea:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Pasahitza:" #: settings_server_title msgid "Reports server" msgstr "Txostenen zerbitzaria" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Denbora-muga:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Ataka:" #: settings_server_autostart msgid "Autostart" msgstr "Berez hasi" #: settings_web_title msgid "Web server" msgstr "Web zerbitzaria" #: settings_server_logFile msgid "Write logs to file:" msgstr "Idatzi log-ak fitxategian:" #: settings_button msgid "Settings..." msgstr "Ezarpenak..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Errorea ezarpenen fitxategia idaztean!" #: form_btn_show msgid "launch browser..." msgstr "nabigatzailea abiarazi..." #: error_starting_browser msgid "Error launching browser!" msgstr "Errorea nabigatzailea abiaraztean!" #: error_opening_logs msgid "Error opening log files!" msgstr "Errorea erregistro-fitxategiak irekitzean!" #: settings_file msgid "File..." msgstr "Fitxategia..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Taulen izenen aurrizkia:" #: settings_createTables msgid "Create tables if not exist" msgstr "Sortu taulak ez badaude" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Saioaren iraupena (minututan)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Lehenetsitako nabigatzailea\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Nabigatzailea abiarazteko erabilitako agindua (firefox, iexplore, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_gl.po0000644000175000017500000001534511377161311025544 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Non se puido pór en marcha o servidor!" #: error_incorrectData msgid "Incorrect data!" msgstr "Datos incorrectos!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Porto" #: column_started_title msgid "Started" msgstr "Comezado" #: column_lastMessage_title msgid "Last message" msgstr "Última mensaxe" #: column_IP_tooltip msgid "Client IP address" msgstr "Enderezo IP do cliente" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Porto local empregado nesta conexión" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Data e hora na que comezou a conexión" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Encabezamento da última mensaxe recibida" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Imposíbel abrir o arquivo de configuración \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\". Usaranse os valores por omisión." #: form_title msgid "JClic reports server" msgstr "Servidor de informes JClic" #: form_connections_title msgid "Connections:" msgstr "Conexións" #: form_messages_title msgid "System messages:" msgstr "Mensaxes do sistema:" #: form_settings_title msgid "Settings:" msgstr "Configuración:" #: form_connections_close msgid "Close connection" msgstr "Pechar a conexión" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Pechar a conexión seleccionada" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Controlador:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Controlador JDBC a empregar para conectar coa base de datos" #: form_settings_database msgid "Database:" msgstr "Base de datos:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nome da base de datos de informes" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Porto:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Porto TCP no que o servidor atende as conexións" #: form_settings_password_tooltip msgid "System DB password" msgstr "Sinal do usuario do sistema" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Sinal:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nome de usuario do sistema da base de datos" #: form_settings_user msgid "User:" msgstr "Usuario:" #: ERROR msgid "ERROR" msgstr "ERRO" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Timeout:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "" "Tempo máximo de inactividade en segundos que se lle permite ás conexións" #: form_btn_start msgid "Start" msgstr "Iniciar" #: form_btn_stop msgid "Stop" msgstr "Parar" #: form_btn_exit msgid "Exit" msgstr "Saír" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Parar o servidor e pechar o programa" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Pechar todas as conexións e parar o servidor" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Comezar a atender os clientes" #: form_messages_verbose msgid "Verbose" msgstr "Mostra información ampliada" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Mostra todas as mensaxes" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copiar" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copia o contido da xanela ao cartafol do sistema" #: form_messages_clear msgid "Clear" msgstr "Limpar" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Limpa a xanela de mensaxes" #: error_DB msgid "Requested action could not be completed" msgstr "A acción solicitada non puido completarse" #: settings_title msgid "JClic reports server settings" msgstr "Configuración do servidor de informes JClic" #: settings_options_title msgid "Options" msgstr "Opcións" #: settings_options_language msgid "Language:" msgstr "Idioma:" #: settings_options_look msgid "Look & feel:" msgstr "Apariencia:" #: settings_db_title msgid "Database" msgstr "Base de datos" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Controlador:" #: settings_options_tooltips msgid "Tooltips" msgstr "Etiquetas de axuda" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Usuario da base de datos:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Sinal:" #: settings_server_title msgid "Reports server" msgstr "Servidor de informes" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Timeout:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Porto:" #: settings_server_autostart msgid "Autostart" msgstr "Inicio automático" #: settings_web_title msgid "Web server" msgstr "Servidor web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Escribir logs no arquivo:" #: settings_button msgid "Settings..." msgstr "Configuración..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Erro de escritura do arquivo de configuración!" #: form_btn_show msgid "launch browser..." msgstr "Iniciar o navegador" #: error_starting_browser msgid "Error launching browser!" msgstr "Erro de execución do navegador!" #: error_opening_logs msgid "Error opening log files!" msgstr "Erro na apertura de arquivos de rexisto!" #: settings_file msgid "File..." msgstr "Arquivo..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefixo dos nomes das táboas:" #: settings_createTables msgid "Create tables if not exist" msgstr "Crear táboas se non existen" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Duración máxima en minutos dunha sesión inactiva:" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador preferido:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Orde usada para iniciar o navegador (firefox, iexplore, mozilla, opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_el.po0000644000175000017500000002074111377161311025536 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-15 11:59+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Αδυναμία έναρξης του διακομιστή!" #: error_incorrectData msgid "Incorrect data!" msgstr "Λανθασμένα δεδομένα!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Θύρα" #: column_started_title msgid "Started" msgstr "Ξεκίνησε" #: column_lastMessage_title msgid "Last message" msgstr "Τελευταίο μήνυμα" #: column_IP_tooltip msgid "Client IP address" msgstr "Διεύθυνση IP πελάτη" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Μια τοπική θύρα χρησιμοποιείται σε αυτή τη σύνδεση" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Ημερομηνία και ώρα έναρξης της σύνδεσης" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Επικεφαλίδα τελευταίου μηνύματος" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Αδυναμία φόρτωσης του αρχείου ιδιοτήτων \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Χρήση προεπιλεγμένων ρυθμίσεων" #: form_title msgid "JClic reports server" msgstr "Διακομιστής αναφορών του JClic" #: form_connections_title msgid "Connections:" msgstr "Συνδέσεις:" #: form_messages_title msgid "System messages:" msgstr "Μηνύματα συστήματος:" #: form_settings_title msgid "Settings:" msgstr "Ρυθμίσεις:" #: form_connections_close msgid "Close connection" msgstr "Κλείσιμο σύνδεσης" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Κλείσιμο επιλεγμένης σύνδεσης" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Οδηγός:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Χρήση του οδηγού JDBC για σύνδεση στη βάση δεδομένων" #: form_settings_database msgid "Database:" msgstr "Βάση δεδομένων:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Όνομα βάσης δεδομένων αναφορών" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Port:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Θύρα ακρόασης TCP του διακομιστή" #: form_settings_password_tooltip msgid "System DB password" msgstr "Κωδικός πρόσβασης για τη βάση δεδομένων του συστήματος" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Όνομα χρήστη για τη βάση δεδομένων του συστήματος" #: form_settings_user msgid "User:" msgstr "Χρήστης:" #: ERROR msgid "ERROR" msgstr "ΣΦΑΛΜΑ" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Χρονικό περιθώριο:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "" "Μέγιστος χρόνος (σε δευτερόλεπτα) επιτρεπόμενης αδράνειας για τις συνδέσεις" #: form_btn_start msgid "Start" msgstr "Έναρξη" #: form_btn_stop msgid "Stop" msgstr "Διακοπή" #: form_btn_exit msgid "Exit" msgstr "Έξοδος" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Τερματισμός διακομιστή και κλείσιμο του προγράμματος" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Κλείσιμο όλων των συνδέσεων και τερματισμός του διακομιστή" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Έναρξη ακρόασης για πελάτες" #: form_messages_verbose msgid "Verbose" msgstr "Αναλυτικά" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Εμφάνιση όλων των μηνυμάτων" #: form_messages_copy msgid "Copy to clipboard" msgstr "Αντιγραφή στο πρόχειρο" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Αντιγραφή χειριστηρίου εξόδου στο πρόχειρο" #: form_messages_clear msgid "Clear" msgstr "Καθαρισμός" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Καθαρισμός κονσόλας εξόδου" #: error_DB msgid "Requested action could not be completed" msgstr "Η αιτούμενη ενέργεια δεν μπορεί να ολοκληρωθεί" #: settings_title msgid "JClic reports server settings" msgstr "Το JClic αναφέρει τις ρυθμίσεις του διακομιστή" #: settings_options_title msgid "Options" msgstr "Επιλογές" #: settings_options_language msgid "Language:" msgstr "Γλώσσα:" #: settings_options_look msgid "Look & feel:" msgstr "Εμφάνιση & αίσθηση:" #: settings_db_title msgid "Database" msgstr "Βάση δεδομένων" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Οδηγός:" #: settings_options_tooltips msgid "Tooltips" msgstr "Συμβουλές οθόνης" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Χρήστης βάσης δεδομένων:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: settings_server_title msgid "Reports server" msgstr "Αναφορές διακομιστή" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Χρονικό περιθώριο:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Θύρα:" #: settings_server_autostart msgid "Autostart" msgstr "Αυτόματη έναρξη" #: settings_web_title msgid "Web server" msgstr "Διακομιστής Web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Αποθήκευση των καταγραφών στο αρχείο:" #: settings_button msgid "Settings..." msgstr "Ρυθμίσεις..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Σφάλμα κατά την εγγραφή του αρχείου ρυθμίσεων!" #: form_btn_show msgid "launch browser..." msgstr "φόρτωση φυλλομετρητή..." #: error_starting_browser msgid "Error launching browser!" msgstr "Σφάλμα φόρτωσης φυλλομετρητή!" #: error_opening_logs msgid "Error opening log files!" msgstr "Σφάλμα ανοίγματος αρχείων καταγραφής!" #: settings_file msgid "File..." msgstr "Αρχείο..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Πρόθημα ονόματος πινάκων:" #: settings_createTables msgid "Create tables if not exist" msgstr "Δημιουργία πινάκων αν δεν υπάρχουν" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Διάρκεια συνεδρίας (λεπτά)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Προτιμώμενος φυλλομετρητής\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Εντολή που χρησιμοποιείται για τη φόρτωση του φυλλομετρητή (firefox, " "iexplore, mozilla, opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_it.po0000644000175000017500000001566311377161311025561 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-22 17:15+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Impossibile avviare il server!" #: error_incorrectData msgid "Incorrect data!" msgstr "Dati inesatti!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Porta" #: column_started_title msgid "Started" msgstr "Avviato" #: column_lastMessage_title msgid "Last message" msgstr "Ultimo messaggio" #: column_IP_tooltip msgid "Client IP address" msgstr "Indirizzo IP del client" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Porta locale usata in questa connessione" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Data e ora di inizio della connessione" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Intestazione dell'ultimo messaggio ricevuto" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Impossibile aprire il file di inizializzazione \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\" Verrano usati i valori predefiniti." #: form_title msgid "JClic reports server" msgstr "Server dei rapporti JClic" #: form_connections_title msgid "Connections:" msgstr "Connessioni:" #: form_messages_title msgid "System messages:" msgstr "Messaggi di sistema:" #: form_settings_title msgid "Settings:" msgstr "Impostazioni:" #: form_connections_close msgid "Close connection" msgstr "Chiudi la connessione" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Chiudi la connessione selezionata" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Driver:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Driver JDBC da usare per la connessione al database" #: form_settings_database msgid "Database:" msgstr "Database:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nome del database dei rapporti" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Porta:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Porta TCP dove il server verrà usato per le connessioni" #: form_settings_password_tooltip msgid "System DB password" msgstr "Password dell'utente per l'accesso al database" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Password:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "Nome dell'utente per l'accesso al database" #: form_settings_user msgid "User:" msgstr "Utente:" #: ERROR msgid "ERROR" msgstr "ERRORE" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Timeout:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Secondi max di inattività permessi durante le connessioni" #: form_btn_start msgid "Start" msgstr "Avvio" #: form_btn_stop msgid "Stop" msgstr "Stop" #: form_btn_exit msgid "Exit" msgstr "Esci" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Ferma il server e chiudi il programma" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Chiudi tutte le connessioni e ferma il server" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Inizia l'attesa per i client" #: form_messages_verbose msgid "Verbose" msgstr "Mostra informazioni più ampie" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Mostra tutti i messaggi" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copia negli appunti" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copia i contenuti della finestra nella clipboard" #: form_messages_clear msgid "Clear" msgstr "Pulisci" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Pulisci la finestra dei messaggi" #: error_DB msgid "Requested action could not be completed" msgstr "L'azione richiesta potrebbe non essere stata completata" #: settings_title msgid "JClic reports server settings" msgstr "Impostazioni del server dei rapporti JClic" #: settings_options_title msgid "Options" msgstr "Opzioni" #: settings_options_language msgid "Language:" msgstr "Lingua:" #: settings_options_look msgid "Look & feel:" msgstr "Aspetto" #: settings_db_title msgid "Database" msgstr "Database" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Driver:" #: settings_options_tooltips msgid "Tooltips" msgstr "Suggerimenti" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Utenti del database:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Password:" #: settings_server_title msgid "Reports server" msgstr "Server dei rapporti" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Timeout:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Porta:" #: settings_server_autostart msgid "Autostart" msgstr "Avvio automatico" #: settings_web_title msgid "Web server" msgstr "Server Web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Scrivi logs nel file:" #: settings_button msgid "Settings..." msgstr "Impostazioni..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Errore nella scrittura del file delle impostazioni!" #: form_btn_show msgid "launch browser..." msgstr "avvio del navigatore..." #: error_starting_browser msgid "Error launching browser!" msgstr "Errore nell'avvio del navigatore!" #: error_opening_logs msgid "Error opening log files!" msgstr "Errore nell'apertura dei file log!" #: settings_file msgid "File..." msgstr "File..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefisso dei nomi delle tabelle:" #: settings_createTables msgid "Create tables if not exist" msgstr "Crea tabelle se non esistono" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Durata massima di una sessione inattiva (minuti)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Navigatore preferito\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comando usato per avviare il navigatore Internet (Firefox, IExplore, " "Mozilla, Opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-reportServer/ReportServerMessages_pt.po0000644000175000017500000001570011377161311025560 0ustar # Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-17 19:15+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: error_serverCannotStart msgid "Unable to start server!" msgstr "Impossível iniciar servidor!" #: error_incorrectData msgid "Incorrect data!" msgstr "Dados incorrectos!" #: column_IP_title msgid "IP" msgstr "IP" #: column_port_title msgid "Port" msgstr "Porta" #: column_started_title msgid "Started" msgstr "Iniciado" #: column_lastMessage_title msgid "Last message" msgstr "Última mensagem" #: column_IP_tooltip msgid "Client IP address" msgstr "Endereço IP do cliente" #: column_port_tooltip msgid "Local port used in this connection" msgstr "Porta local usada nesta ligação" #: column_started_tooltip msgid "Date and time at witch the connection was started" msgstr "Data e hora em que a ligação foi iniciada" #: column_lastMessage_tooltip msgid "Header of the last received message" msgstr "Cabeçalho da última mensagem recebida" #: error_propertiesFile_beg msgid "Unable to load the properties file \"" msgstr "Impossível carregar o ficheiro de propriedades \"" #: error_propertiesFile_end msgid "\" Using default settings." msgstr "\". A usar as definições padrão." #: form_title msgid "JClic reports server" msgstr "Servidor de relatórios JClic" #: form_connections_title msgid "Connections:" msgstr "Ligações:" #: form_messages_title msgid "System messages:" msgstr "Mensagens de sistema:" #: form_settings_title msgid "Settings:" msgstr "Definições:" #: form_connections_close msgid "Close connection" msgstr "Fechar ligação" #: form_connections_close_tooltip msgid "Close the selected connection" msgstr "Fechar a ligação seleccionada" #: form_settings_driver msgctxt "form_settings_driver" msgid "Driver:" msgstr "Controlador:" #: form_settings_driver_tooltip msgid "JDBC driver to use for connect to the database" msgstr "Controlador JDBC a usar para ligar-se à base de dados" #: form_settings_database msgid "Database:" msgstr "Base de dados:" #: form_settings_database_tooltip msgid "Name of the reports database" msgstr "Nome da base de dados de relatórios" #: form_settings_port msgctxt "form_settings_port" msgid "Port:" msgstr "Porta:" #: form_settings_port_tooltip msgid "TCP port where the server will listen for connections" msgstr "Porta TCP em que o servidor escutará as conexões" #: form_settings_password_tooltip msgid "System DB password" msgstr "BD palavras-chave do sistema" #: form_settings_password msgctxt "form_settings_password" msgid "Password:" msgstr "Palavra-chave:" #: form_settings_user_tooltip msgid "System DB user name" msgstr "BD utilizadores do sistema" #: form_settings_user msgid "User:" msgstr "Utilizador:" #: ERROR msgid "ERROR" msgstr "ERRO" #: form_settings_timeout msgctxt "form_settings_timeout" msgid "Timeout:" msgstr "Tempo-limite:" #: form_settings_timeout_tooltip msgid "Maximum inactivity seconds allowed to connections" msgstr "Tempo máximo em segundos permitido às conexões" #: form_btn_start msgid "Start" msgstr "Iniciar" #: form_btn_stop msgid "Stop" msgstr "Parar" #: form_btn_exit msgid "Exit" msgstr "Sair" #: form_btn_exit_tooltip msgid "Stop server and shutdown program" msgstr "Parar servidor e desligar programa" #: form_btn_stop_tooltip msgid "Close all connections and stop server" msgstr "Fechar todas as conexões e parar servidor" #: form_btn_start_tooltip msgid "Begin listening for clients" msgstr "Iniciar atendimento de clientes" #: form_messages_verbose msgid "Verbose" msgstr "Descritivo" #: form_messages_verbose_tooltip msgid "Display all messages" msgstr "Mostrar todas as mensagens" #: form_messages_copy msgid "Copy to clipboard" msgstr "Copiar para a área de transferência" #: form_messages_copy_tooltip msgid "Copy the console output to clipboard" msgstr "Copiar o conteúdo da consola para a área de transferência" #: form_messages_clear msgid "Clear" msgstr "Limpar" #: form_messages_clear_tooltip msgid "Clears the console output" msgstr "Limpar a janela de mensagens" #: error_DB msgid "Requested action could not be completed" msgstr "A acção solicitada não pode ser completada" #: settings_title msgid "JClic reports server settings" msgstr "Definições do servidor de relatórios Jclic" #: settings_options_title msgid "Options" msgstr "Opções" #: settings_options_language msgid "Language:" msgstr "Idioma:" #: settings_options_look msgid "Look & feel:" msgstr "Aspecto:" #: settings_db_title msgid "Database" msgstr "Base de dados" #: settings_db_driver msgctxt "settings_db_driver" msgid "Driver:" msgstr "Controlador:" #: settings_options_tooltips msgid "Tooltips" msgstr "Sugestões" #: settings_db_url msgid "URL:" msgstr "URL:" #: settings_db_usr msgid "DB user:" msgstr "Utilizador da base de dados:" #: settings_db_pwd msgctxt "settings_db_pwd" msgid "Password:" msgstr "Palavra-chave:" #: settings_server_title msgid "Reports server" msgstr "Servidor de relatórios" #: settings_server_timeout msgctxt "settings_server_timeout" msgid "Timeout:" msgstr "Tempo-limite:" #: settings_server_port msgctxt "settings_server_port" msgid "Port:" msgstr "Porto:" #: settings_server_autostart msgid "Autostart" msgstr "Arranque automático" #: settings_web_title msgid "Web server" msgstr "Servidor Web" #: settings_server_logFile msgid "Write logs to file:" msgstr "Escrever logs para ficheiro" #: settings_button msgid "Settings..." msgstr "Definições..." #: error_writting_settings msgid "Error writting settings file!" msgstr "Erro ao escrever no ficheiro de configuração!" #: form_btn_show msgid "launch browser..." msgstr "Iniciar navegador..." #: error_starting_browser msgid "Error launching browser!" msgstr "Erro ao iniciar o navegador!" #: error_opening_logs msgid "Error opening log files!" msgstr "Erro ao abrir ficheiros de log!" #: settings_file msgid "File..." msgstr "Ficheiro..." #: settings_tablePrefix msgid "Table names prefix:" msgstr "Prefixo dos nomes da tabela" #: settings_createTables msgid "Create tables if not exist" msgstr "Criar tabelas se não existirem" #: settings_session_lifetime msgid "Session lifetime (minutes)\\:" msgstr "Tempo restante da sessão (minutos)\\:" #: settings_browser msgid "Preferred browser\\:" msgstr "Navegador web preferido\\:" #: settings_browser_tooltip msgid "" "Command used to launch the browser (firefox, iexplore, mozilla, opera...)" msgstr "" "Comando usado para iniciar o navegador web (firefox, iexplore, mozilla, " "opera...)" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/0000755000175000017500000000000011377161311017671 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_de.po0000644000175000017500000001227611377161311023422 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-09-20 21:56+0000\n" "Last-Translator: Martina \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "Fehler" #: OK msgid "OK" msgstr "OK" #: YES msgid "Yes" msgstr "Ja" #: NO msgid "No" msgstr "Nein" #: DELETE msgid "Delete" msgstr "Löschen" #: PASTE msgid "Paste" msgstr "Einfügen" #: CUT msgid "Cut" msgstr "Ausschneiden" #: COPY msgid "Copy" msgstr "Kopieren" #: FILE_SAVE msgid "Save file" msgstr "Datei speichern" #: CONFIRM msgid "Please confirm" msgstr "Bestätigen" #: FILE_OPEN msgid "Open file" msgstr "Datei öffnen" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Ordner" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Passwort:" #: WARNING msgid "Warning!" msgstr "Warnung!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Kann nicht gelesen werden!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Nicht vorhanden!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Schreibgeschützt. Kann nicht überschrieben werden." #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Überschreiben?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Überschreiben?" #: FILE_EXISTS msgid "already exists on your system." msgstr "bereits vorhanden." #: FILE_DIR_BEG msgid "The folder" msgstr "Ordner" #: FILE_BEG msgid "The file" msgstr "Datei" #: UNNAMED msgid "Unnamed" msgstr "Ohne Namen" #: FILE_ERR_READING msgid "Error reading file" msgstr "Fehler beim Lesen der Datei" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Fehler beim Speichern der Datei" #: FILE_FIND msgid "Find file" msgstr "Datei suchen" #: FILE_ERR_READONLY msgid "is read-only." msgstr "schreibgeschützt." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "bereits vorhanden. Überschreiben?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "kann nicht gelesen werden." #: FILE_ERR_BEG msgid "File" msgstr "Datei" #: LOADING msgid "loading..." msgstr "wird geladen..." #: FALSE msgid "false" msgstr "falsch" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Fehler beim Aufrufen des URL" #: URL_ERROR msgid "Error building URL!" msgstr "Falscher URL!" #: QUESTION msgid "Question" msgstr "Frage" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Falsches Passwort!" #: TRUE msgid "true" msgstr "richtig" #: CANCEL msgid "Cancel" msgstr "Abbrechen" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Fehler beim Löschen der Datei" #: URL_OPEN msgid "Open URL" msgstr "URL öffnen" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Fehler beim Wiederherstellen der Datei." #: WRITING_FILE msgid "Writing file..." msgstr "Datei wird erstellt..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Eigenschaft" #: XML_VALUE msgid "Value" msgstr "Wert" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Feld kann nicht bearbeitet werden!" #: XML_TEXT msgid "text" msgstr "Text" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Eigenschaft hinzufügen" #: WORKING msgid "Working..." msgstr "Wird bearbeitet..." #: LOADING_FILE msgid "Loading file" msgstr "Datei wird geladen" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Eigenschaft löschen" #: XML_ELEMENT msgid "Element" msgstr "Element" #: XML_NEW_ELEMENT msgid "New element" msgstr "Neues Element" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Element löschen" #: XML_NAME msgid "Name" msgstr "Name" #: RETRY msgid "Retry" msgstr "Noch einmal versuchen" #: IGNORE msgid "Ignore" msgstr "Ignorieren" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Falsches Datum!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Falsche Zahl!" #: NONE msgid "None" msgstr "Keine" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Alle auswählen" #: SELECT_NONE msgid "Clear selection" msgstr "Auswahl löschen" #: WIDTH msgid "Width:" msgstr "Breite:" #: HEIGHT msgid "Height:" msgstr "Höhe:" #: BROWSE_FILES msgid "Browse files..." msgstr "Dateien durchsuchen..." #: VERSION msgid "version" msgstr "Version" #: ABOUT msgid "About..." msgstr "Info" #: YES_TO_ALL msgid "Yes to all" msgstr "Alle auswählen" #: NO_TO_ALL msgid "No to all" msgstr "Keine von allen" #: SAVE msgid "Save" msgstr "Speichern" #: OPEN msgid "Open" msgstr "Öffnen" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Ausgewählte Datei öffnen" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Ausgewählte Datei speichern" #: SAVING msgid "saving..." msgstr "Speichern..." #: SAVING_FILE msgid "Saving file" msgstr "Datei wird gespeichert" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_it.po0000644000175000017500000001262311377161311023442 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-22 17:20+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERRORE" #: OK msgid "OK" msgstr "OK" #: YES msgid "Yes" msgstr "Sì" #: NO msgid "No" msgstr "No" #: DELETE msgid "Delete" msgstr "Cancella" #: PASTE msgid "Paste" msgstr "Incolla" #: CUT msgid "Cut" msgstr "Taglia" #: COPY msgid "Copy" msgstr "Copia" #: FILE_SAVE msgid "Save file" msgstr "Salva file" #: CONFIRM msgid "Please confirm" msgstr "Conferma, per favore" #: FILE_OPEN msgid "Open file" msgstr "Apri file" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Cartella" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Password:" #: WARNING msgid "Warning!" msgstr "Attenzione!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Non è possibile leggerlo" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Non esiste" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "E' in sola lettura. Non può essere sovrascritto!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Vuoi sovrascriverlo?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Vuoi sovrascriverlo?" #: FILE_EXISTS msgid "already exists on your system." msgstr "esiste già nel tuo sistema." #: FILE_DIR_BEG msgid "The folder" msgstr "La cartella" #: FILE_BEG msgid "The file" msgstr "Il file" #: UNNAMED msgid "Unnamed" msgstr "Senza nome" #: FILE_ERR_READING msgid "Error reading file" msgstr "Errore nella lettura del file" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Si è verificato un errore salvando il file" #: FILE_FIND msgid "Find file" msgstr "Trova file" #: FILE_ERR_READONLY msgid "is read-only." msgstr "è in sola lettura" #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "Esiste già. Vuoi sovrascriverlo?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "non è possibile leggerlo" #: FILE_ERR_BEG msgid "File" msgstr "File" #: LOADING msgid "loading..." msgstr "caricamento in corso..." #: FALSE msgid "false" msgstr "falso" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Errore nel lancio dell'URL" #: URL_ERROR msgid "Error building URL!" msgstr "Errore nella creazione dell'URL!" #: QUESTION msgid "Question" msgstr "Domanda" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Password errata!" #: TRUE msgid "true" msgstr "vero" #: CANCEL msgid "Cancel" msgstr "Annulla" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Errore durante l'eliminazione del file" #: URL_OPEN msgid "Open URL" msgstr "Apri URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Errore nel ripristino del file" #: WRITING_FILE msgid "Writing file..." msgstr "File in corso di scrittura" #: XML_ATTRIBUTE msgid "Attribute" msgstr "Attributo" #: XML_VALUE msgid "Value" msgstr "Valore" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Questo campo non è modificabile" #: XML_TEXT msgid "text" msgstr "testo" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Aggiungi attributo" #: WORKING msgid "Working..." msgstr "In esecuzione..." #: LOADING_FILE msgid "Loading file" msgstr "File in caricamento" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Cancella attributo" #: XML_ELEMENT msgid "Element" msgstr "Elemento" #: XML_NEW_ELEMENT msgid "New element" msgstr "Nuovo elemento" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Elimina elemento" #: XML_NAME msgid "Name" msgstr "Nome" #: RETRY msgid "Retry" msgstr "Riprova" #: IGNORE msgid "Ignore" msgstr "Ignora" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Data errata!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Numero errato!" #: NONE msgid "None" msgstr "Nessuno" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Seleziona tutto" #: SELECT_NONE msgid "Clear selection" msgstr "Annulla selezione" #: WIDTH msgid "Width:" msgstr "Larghezza:" #: HEIGHT msgid "Height:" msgstr "Altezza:" #: BROWSE_FILES msgid "Browse files..." msgstr "Esplora file..." #: VERSION msgid "version" msgstr "versione" #: ABOUT msgid "About..." msgstr "Informazioni..." #: YES_TO_ALL msgid "Yes to all" msgstr "Sì a tutto" #: NO_TO_ALL msgid "No to all" msgstr "No a tutto" #: SAVE msgid "Save" msgstr "Salva" #: OPEN msgid "Open" msgstr "Apri" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Apri il file selezionato" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Salva il file specificato" #: SAVING msgid "saving..." msgstr "Salvataggio in corso" #: SAVING_FILE msgid "Saving file" msgstr "Salvataggio file" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_nl.po0000644000175000017500000001257511377161311023445 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-11 13:09+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "FOUT" #: OK msgid "OK" msgstr "Akkoord" #: YES msgid "Yes" msgstr "Ja" #: NO msgid "No" msgstr "Nee" #: DELETE msgid "Delete" msgstr "Verwijderen" #: PASTE msgid "Paste" msgstr "Plakken" #: CUT msgid "Cut" msgstr "Knippen" #: COPY msgid "Copy" msgstr "Kopiëren" #: FILE_SAVE msgid "Save file" msgstr "Bestand opslaan" #: CONFIRM msgid "Please confirm" msgstr "Gelieve te bevestigen" #: FILE_OPEN msgid "Open file" msgstr "Bestand openen" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Map" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Wachtwoord:" #: WARNING msgid "Warning!" msgstr "Waarschuwing!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Kan niet lezen!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Bestaat niet!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Is read-only. Kan niet overschreven worden!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Wilt u dit bestand overschrijven?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Wilt u dit bestand overschrijven?" #: FILE_EXISTS msgid "already exists on your system." msgstr "Bestaat reeds." #: FILE_DIR_BEG msgid "The folder" msgstr "De map" #: FILE_BEG msgid "The file" msgstr "Het bestand" #: UNNAMED msgid "Unnamed" msgstr "Naamloos" #: FILE_ERR_READING msgid "Error reading file" msgstr "Fout bij het lezen van bestand" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Fout bij het bewaren van bestand" #: FILE_FIND msgid "Find file" msgstr "Zoek bestand" #: FILE_ERR_READONLY msgid "is read-only." msgstr "is read-only." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "exists. Wil je het overschrijven?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "is onleesbaar" #: FILE_ERR_BEG msgid "File" msgstr "Bestand" #: LOADING msgid "loading..." msgstr "laden..." #: FALSE msgid "false" msgstr "Onwaar" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "berichten/verifieerhandtekening.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Fout bij starten URL" #: URL_ERROR msgid "Error building URL!" msgstr "Fout bij maken URL" #: QUESTION msgid "Question" msgstr "Vraag" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Verkeer paswoord!" #: TRUE msgid "true" msgstr "waar" #: CANCEL msgid "Cancel" msgstr "Annuleren" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Fout bij verwijderen bestand" #: URL_OPEN msgid "Open URL" msgstr "Url openen" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Fout bij herstellen bestand" #: WRITING_FILE msgid "Writing file..." msgstr "Bestand schrijven..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Attribuut" #: XML_VALUE msgid "Value" msgstr "Waarde" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Dit veld kan je niet wijzigen!" #: XML_TEXT msgid "text" msgstr "tekst" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Attribuut toevoegen" #: WORKING msgid "Working..." msgstr "Bezig..." #: LOADING_FILE msgid "Loading file" msgstr "Bestand inladen" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Attribuut verwijderen" #: XML_ELEMENT msgid "Element" msgstr "Element" #: XML_NEW_ELEMENT msgid "New element" msgstr "Nieuw element" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Verwijder element" #: XML_NAME msgid "Name" msgstr "Naam" #: RETRY msgid "Retry" msgstr "Opnieuw" #: IGNORE msgid "Ignore" msgstr "Negeren" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Verkeerde gegevens!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Verkeer nummer!" #: NONE msgid "None" msgstr "Geen" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Alles selecteren" #: SELECT_NONE msgid "Clear selection" msgstr "Selectie ongedaan maken" #: WIDTH msgid "Width:" msgstr "Breedte:" #: HEIGHT msgid "Height:" msgstr "Hoogte:" #: BROWSE_FILES msgid "Browse files..." msgstr "Doorzoek bestanden..." #: VERSION msgid "version" msgstr "versie" #: ABOUT msgid "About..." msgstr "Info..." #: YES_TO_ALL msgid "Yes to all" msgstr "Ja voor alles" #: NO_TO_ALL msgid "No to all" msgstr "Nee voor alles" #: SAVE msgid "Save" msgstr "Document opslaan" #: OPEN msgid "Open" msgstr "Openen" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Het geselecteerde bestand openen" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Het geselecteerde bestand bewaren" #: SAVING msgid "saving..." msgstr "bewaren..." #: SAVING_FILE msgid "Saving file" msgstr "Bestand bewaren" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_cs.po0000644000175000017500000001251411377161311023432 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-23 20:59+0000\n" "Last-Translator: Konki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "CHYBA" #: OK msgid "OK" msgstr "OK" #: YES msgid "Yes" msgstr "Ano" #: NO msgid "No" msgstr "Ne" #: DELETE msgid "Delete" msgstr "Smazat" #: PASTE msgid "Paste" msgstr "Vložit" #: CUT msgid "Cut" msgstr "Vyjmout" #: COPY msgid "Copy" msgstr "Kopírovat" #: FILE_SAVE msgid "Save file" msgstr "Uložit soubor" #: CONFIRM msgid "Please confirm" msgstr "Prosím potvrďte" #: FILE_OPEN msgid "Open file" msgstr "Otevřít soubor" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Složka" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Heslo:" #: WARNING msgid "Warning!" msgstr "Varování!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Nelze přečíst!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Neexistuje!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Je pouze pro čtení. Nemohu jej přepsat!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Chcete ho přepsat?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Chcete ho přepsat?" #: FILE_EXISTS msgid "already exists on your system." msgstr "existuje na vašem systému" #: FILE_DIR_BEG msgid "The folder" msgstr "Složka" #: FILE_BEG msgid "The file" msgstr "Soubor" #: UNNAMED msgid "Unnamed" msgstr "Nepojmenovaný" #: FILE_ERR_READING msgid "Error reading file" msgstr "Chyba při čtení souboru" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Chyba při ukládání souboru" #: FILE_FIND msgid "Find file" msgstr "Najít soubor" #: FILE_ERR_READONLY msgid "is read-only." msgstr "je pouze pro čtení." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "existuje. Chcete ho přepsat." #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "není čitelný." #: FILE_ERR_BEG msgid "File" msgstr "Soubor" #: LOADING msgid "loading..." msgstr "načítá se..." #: FALSE msgid "false" msgstr "nepravda" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Chyba při načítání URL" #: URL_ERROR msgid "Error building URL!" msgstr "Chyba při vytváření URL" #: QUESTION msgid "Question" msgstr "Otázka" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Chybné heslo" #: TRUE msgid "true" msgstr "pravda" #: CANCEL msgid "Cancel" msgstr "Zrušit" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Chyba při mazání souboru" #: URL_OPEN msgid "Open URL" msgstr "Otevřít URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Chyba při obnovení souboru" #: WRITING_FILE msgid "Writing file..." msgstr "Zapisuji soubor..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Vlastnost" #: XML_VALUE msgid "Value" msgstr "Hodnota" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Toto pole není editovatelné!" #: XML_TEXT msgid "text" msgstr "text" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Přidat atribut" #: WORKING msgid "Working..." msgstr "Pracuji..." #: LOADING_FILE msgid "Loading file" msgstr "Nahrávám soubor" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Odstranit atribut" #: XML_ELEMENT msgid "Element" msgstr "Prvek" #: XML_NEW_ELEMENT msgid "New element" msgstr "Nový prvek" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Smazat prvek" #: XML_NAME msgid "Name" msgstr "Název" #: RETRY msgid "Retry" msgstr "Zkusit znovu" #: IGNORE msgid "Ignore" msgstr "Ignorovat" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Nesprávná data!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Nesprávné číslo!" #: NONE msgid "None" msgstr "Nic" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Vybrat vše" #: SELECT_NONE msgid "Clear selection" msgstr "Zrušit výběr" #: WIDTH msgid "Width:" msgstr "Šířka:" #: HEIGHT msgid "Height:" msgstr "Výška:" #: BROWSE_FILES msgid "Browse files..." msgstr "Vybrat soubory..." #: VERSION msgid "version" msgstr "verze" #: ABOUT msgid "About..." msgstr "O aplikaci..." #: YES_TO_ALL msgid "Yes to all" msgstr "Ano všem" #: NO_TO_ALL msgid "No to all" msgstr "Ne všem" #: SAVE msgid "Save" msgstr "Uložit" #: OPEN msgid "Open" msgstr "Otevřít" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Otevřít vybraný soubor" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Uložit vybraný soubor" #: SAVING msgid "saving..." msgstr "ukládám..." #: SAVING_FILE msgid "Saving file" msgstr "Ukládám soubor" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_ar.po0000644000175000017500000001164311377161311023431 0ustar # Arabic translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-19 14:27+0000\n" "Last-Translator: hmagroun \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "خطأ" #: OK msgid "OK" msgstr "موافق" #: YES msgid "Yes" msgstr "نعم" #: NO msgid "No" msgstr "لا" #: DELETE msgid "Delete" msgstr "احذف" #: PASTE msgid "Paste" msgstr "ألصق" #: CUT msgid "Cut" msgstr "قص" #: COPY msgid "Copy" msgstr "نسخ" #: FILE_SAVE msgid "Save file" msgstr "حفظ الملف" #: CONFIRM msgid "Please confirm" msgstr "" #: FILE_OPEN msgid "Open file" msgstr "افتح ملفّ" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "مجلد" #: URL msgid "URL:" msgstr "العنوان:" #: PASSWORD msgid "Password:" msgstr "كلمة المرور:" #: WARNING msgid "Warning!" msgstr "تحذير!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "هل تود أن تستبدله؟" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "هل تود أن تستبدله؟" #: FILE_EXISTS msgid "already exists on your system." msgstr "" #: FILE_DIR_BEG msgid "The folder" msgstr "" #: FILE_BEG msgid "The file" msgstr "الملف" #: UNNAMED msgid "Unnamed" msgstr "غير مسمّى" #: FILE_ERR_READING msgid "Error reading file" msgstr "خطأ أثناء قراءة الملف" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "حدث خطأ أثناء حفظ الملف" #: FILE_FIND msgid "Find file" msgstr "" #: FILE_ERR_READONLY msgid "is read-only." msgstr "" #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "" #: FILE_ERR_BEG msgid "File" msgstr "ملف" #: LOADING msgid "loading..." msgstr "جاري التحميل..." #: FALSE msgid "false" msgstr "خطأ" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "" #: URL_ERROR msgid "Error building URL!" msgstr "" #: QUESTION msgid "Question" msgstr "سؤال" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "" #: TRUE msgid "true" msgstr "صحيح" #: CANCEL msgid "Cancel" msgstr "إلغاء" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "" #: URL_OPEN msgid "Open URL" msgstr "افتح عنوان إنترنت" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "" #: WRITING_FILE msgid "Writing file..." msgstr "" #: XML_ATTRIBUTE msgid "Attribute" msgstr "الصّفة" #: XML_VALUE msgid "Value" msgstr "قيمة" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "" #: XML_TEXT msgid "text" msgstr "نص" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "" #: WORKING msgid "Working..." msgstr "...جارٍ العمل" #: LOADING_FILE msgid "Loading file" msgstr "" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "" #: XML_ELEMENT msgid "Element" msgstr "عنصر" #: XML_NEW_ELEMENT msgid "New element" msgstr "" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "" #: XML_NAME msgid "Name" msgstr "الإسم" #: RETRY msgid "Retry" msgstr "إعادة المحاولة" #: IGNORE msgid "Ignore" msgstr "تجاهل" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "" #: BAD_NUMBER msgid "Incorrect number!" msgstr "" #: NONE msgid "None" msgstr "لا شيئ" #: COPY_keys msgid "CC" msgstr "" #: CUT_keys msgid "TX" msgstr "" #: PASTE_keys msgid "PV" msgstr "" #: DELETE_keys msgid "D#127" msgstr "" #: SELECT_ALL msgid "Select all" msgstr "اختر الكل" #: SELECT_NONE msgid "Clear selection" msgstr "" #: WIDTH msgid "Width:" msgstr "العرض:" #: HEIGHT msgid "Height:" msgstr "الطول:" #: BROWSE_FILES msgid "Browse files..." msgstr "" #: VERSION msgid "version" msgstr "الإصدارة" #: ABOUT msgid "About..." msgstr "حول..." #: YES_TO_ALL msgid "Yes to all" msgstr "نعم للجميع" #: NO_TO_ALL msgid "No to all" msgstr "" #: SAVE msgid "Save" msgstr "حفظ" #: OPEN msgid "Open" msgstr "افتح" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "" #: SAVING msgid "saving..." msgstr "" #: SAVING_FILE msgid "Saving file" msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_ast.po0000644000175000017500000001265511377161311023622 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # Xandru Armesto , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-10-01 11:27+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERROR" #: OK msgid "OK" msgstr "Aceutar" #: YES msgid "Yes" msgstr "Sí" #: NO msgid "No" msgstr "Non" #: DELETE msgid "Delete" msgstr "Esborrar" #: PASTE msgid "Paste" msgstr "Apegar" #: CUT msgid "Cut" msgstr "Recortar" #: COPY msgid "Copy" msgstr "Copiar" #: FILE_SAVE msgid "Save file" msgstr "Guardar ficheru" #: CONFIRM msgid "Please confirm" msgstr "Confirmar" #: FILE_OPEN msgid "Open file" msgstr "Abrir ficheru" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Carpeta" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Contraseña:" #: WARNING msgid "Warning!" msgstr "¡Atención!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "¡Nun ser pudo lleer!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "¡Nun esiste!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "¡Ye de llectura namás y nun se pue camudar." #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "¿Quies camudala?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "¿Quies reemplazalu?" #: FILE_EXISTS msgid "already exists on your system." msgstr "yá esiste nel ordenador." #: FILE_DIR_BEG msgid "The folder" msgstr "La carpeta" #: FILE_BEG msgid "The file" msgstr "El ficheru" #: UNNAMED msgid "Unnamed" msgstr "Ensin nome" #: FILE_ERR_READING msgid "Error reading file" msgstr "Error al lleer el ficheru" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Error al grabar el ficheru" #: FILE_FIND msgid "Find file" msgstr "Guetar ficheru" #: FILE_ERR_READONLY msgid "is read-only." msgstr "ye de llectura namás." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "yá esiste. ¿Quies sobroescribilu?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "nun se pue lleer." #: FILE_ERR_BEG msgid "File" msgstr "El ficheru" #: LOADING msgid "loading..." msgstr "cargando..." #: FALSE msgid "false" msgstr "falso" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Error al entamar la URL!" #: URL_ERROR msgid "Error building URL!" msgstr "¡Error al construyir la URL!" #: QUESTION msgid "Question" msgstr "Entruga" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "¡Contraseña incorreuta!" #: TRUE msgid "true" msgstr "braero" #: CANCEL msgid "Cancel" msgstr "Encaboxar" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Error al esborrar el ficheru" #: URL_OPEN msgid "Open URL" msgstr "Abrir URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Error al restaurar el ficheru" #: WRITING_FILE msgid "Writing file..." msgstr "Escribiendo ficheru..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atributu" #: XML_VALUE msgid "Value" msgstr "Valor" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "¡Esti campu nun ye editable!" #: XML_TEXT msgid "text" msgstr "testu" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Amestar un atributu nuevu" #: WORKING msgid "Working..." msgstr "Trabayando..." #: LOADING_FILE msgid "Loading file" msgstr "Lleendo'l ficheru" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Esborrar l'atributu" #: XML_ELEMENT msgid "Element" msgstr "Elementu" #: XML_NEW_ELEMENT msgid "New element" msgstr "Elementu nuevu" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Esborrar elementu" #: XML_NAME msgid "Name" msgstr "Nome" #: RETRY msgid "Retry" msgstr "Reintentar" #: IGNORE msgid "Ignore" msgstr "Ignorar" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "¡Data incorreuta!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "¡Númberu incorreutu!" #: NONE msgid "None" msgstr "Dengún" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "E#127" #: SELECT_ALL msgid "Select all" msgstr "Esbillar too" #: SELECT_NONE msgid "Clear selection" msgstr "Desfacer esbiya" #: WIDTH msgid "Width:" msgstr "Anchor:" #: HEIGHT msgid "Height:" msgstr "Altor:" #: BROWSE_FILES msgid "Browse files..." msgstr "Guetar ficheru..." #: VERSION msgid "version" msgstr "versión" #: ABOUT msgid "About..." msgstr "Tocante a..." #: YES_TO_ALL msgid "Yes to all" msgstr "Sí a toos" #: NO_TO_ALL msgid "No to all" msgstr "Non a toos" #: SAVE msgid "Save" msgstr "Guardar" #: OPEN msgid "Open" msgstr "Abrir" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Abrir el ficheru seleicionáu" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Guardar el ficheru especificáu" #: SAVING msgid "saving..." msgstr "guardando..." #: SAVING_FILE msgid "Saving file" msgstr "Guardando'l ficheru" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_ca.po0000644000175000017500000001225011377161311023405 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 16:02+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERROR" #: OK msgid "OK" msgstr "D'acord" #: YES msgid "Yes" msgstr "Sí" #: NO msgid "No" msgstr "No" #: DELETE msgid "Delete" msgstr "Elimina" #: PASTE msgid "Paste" msgstr "Enganxa" #: CUT msgid "Cut" msgstr "Retalla" #: COPY msgid "Copy" msgstr "Copia" #: FILE_SAVE msgid "Save file" msgstr "Desa el fitxer" #: CONFIRM msgid "Please confirm" msgstr "Confirma l'operació" #: FILE_OPEN msgid "Open file" msgstr "Obre el fitxer" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "La carpeta" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Contrasenya:" #: WARNING msgid "Warning!" msgstr "Atenció!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "No es pot llegir!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "No existeix!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "És de només lectura i no pot ser reemplaçat." #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Voleu reemplaçar-la?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Voleu reemplaçar-lo?" #: FILE_EXISTS msgid "already exists on your system." msgstr "ja es troba al vostre ordinador." #: FILE_DIR_BEG msgid "The folder" msgstr "La carpeta" #: FILE_BEG msgid "The file" msgstr "El fitxer" #: UNNAMED msgid "Unnamed" msgstr "Sense nom" #: FILE_ERR_READING msgid "Error reading file" msgstr "Error en llegir el fitxer" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Error en desar el fitxer" #: FILE_FIND msgid "Find file" msgstr "Cerca d'un fitxer" #: FILE_ERR_READONLY msgid "is read-only." msgstr "és de només lectura." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "ja existeix. Voleu sobreescriure'l?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "no es pot llegir." #: FILE_ERR_BEG msgid "File" msgstr "El fitxer" #: LOADING msgid "loading..." msgstr "carregant el programa..." #: FALSE msgid "false" msgstr "fals" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature_ca.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Error en invocar l'URL!" #: URL_ERROR msgid "Error building URL!" msgstr "Error en construir l'URL!" #: QUESTION msgid "Question" msgstr "Pregunta" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Contrasenya incorrecta!" #: TRUE msgid "true" msgstr "cert" #: CANCEL msgid "Cancel" msgstr "Cancel·la" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Error en esborrar el fitxer" #: URL_OPEN msgid "Open URL" msgstr "Obre URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Error en restaurar el fitxer" #: WRITING_FILE msgid "Writing file..." msgstr "Escrivint fitxer..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atribut" #: XML_VALUE msgid "Value" msgstr "Valor" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Aquest camp no és editable!" #: XML_TEXT msgid "text" msgstr "text" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Afegeix un nou atribut" #: WORKING msgid "Working..." msgstr "Treballant..." #: LOADING_FILE msgid "Loading file" msgstr "Llegint el fitxer" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Suprimeix l'atribut" #: XML_ELEMENT msgid "Element" msgstr "Element" #: XML_NEW_ELEMENT msgid "New element" msgstr "Nou element" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Elimina l'element" #: XML_NAME msgid "Name" msgstr "Nom" #: RETRY msgid "Retry" msgstr "Reintenta" #: IGNORE msgid "Ignore" msgstr "Ignora" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Data incorrecta!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Nombre incorrecte!" #: NONE msgid "None" msgstr "Cap" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "NV" #: DELETE_keys msgid "D#127" msgstr "E#127" #: SELECT_ALL msgid "Select all" msgstr "Selecciona-ho tot" #: SELECT_NONE msgid "Clear selection" msgstr "Desfés la selecció" #: WIDTH msgid "Width:" msgstr "Amplada:" #: HEIGHT msgid "Height:" msgstr "Alçada:" #: BROWSE_FILES msgid "Browse files..." msgstr "Cerca el fitxer..." #: VERSION msgid "version" msgstr "versió" #: ABOUT msgid "About..." msgstr "Quant a..." #: YES_TO_ALL msgid "Yes to all" msgstr "Sí a tots" #: NO_TO_ALL msgid "No to all" msgstr "No a tots" #: SAVE msgid "Save" msgstr "Desa" #: OPEN msgid "Open" msgstr "Obre" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Obre el fitxer seleccionat" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Desa el fitxer especificat" #: SAVING msgid "saving..." msgstr "desant..." #: SAVING_FILE msgid "Saving file" msgstr "Desant el fitxer" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_tr.po0000644000175000017500000001250211377161311023447 0ustar # Turkish translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-11-10 18:57+0000\n" "Last-Translator: Furkan KARA \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "HATA" #: OK msgid "OK" msgstr "Tamam" #: YES msgid "Yes" msgstr "Evet" #: NO msgid "No" msgstr "Hayır" #: DELETE msgid "Delete" msgstr "Sil" #: PASTE msgid "Paste" msgstr "Yapıştır" #: CUT msgid "Cut" msgstr "Kes" #: COPY msgid "Copy" msgstr "Kopyala" #: FILE_SAVE msgid "Save file" msgstr "Dosyayı kaydet" #: CONFIRM msgid "Please confirm" msgstr "Lütfen doğrulayınız" #: FILE_OPEN msgid "Open file" msgstr "Dosya aç" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Klasör" #: URL msgid "URL:" msgstr "Adres:" #: PASSWORD msgid "Password:" msgstr "Şifre" #: WARNING msgid "Warning!" msgstr "Uyarı" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Dosya okunamıyor!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Dosya mevcut değil!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Dosya salt okunabilir. Dosya üzerine yazılamaz" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Üzerine yazmak istiyor musunuz?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Üzerine yazmak istiyor musunuz?" #: FILE_EXISTS msgid "already exists on your system." msgstr "Dosya sisteminizde mevcut" #: FILE_DIR_BEG msgid "The folder" msgstr "Klasör" #: FILE_BEG msgid "The file" msgstr "Dosya" #: UNNAMED msgid "Unnamed" msgstr "İsimsiz" #: FILE_ERR_READING msgid "Error reading file" msgstr "Dosya okunamadı" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Dosya kaydetme hatası" #: FILE_FIND msgid "Find file" msgstr "Dosya bul" #: FILE_ERR_READONLY msgid "is read-only." msgstr "Salt okunabilir dosya" #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "Dosyanın üzerine yazmak istiyormusunuz?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "Dosya okunamıyor" #: FILE_ERR_BEG msgid "File" msgstr "Dosya" #: LOADING msgid "loading..." msgstr "yükleniyor..." #: FALSE msgid "false" msgstr "yanlış" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "mesajlar/imzakontrol.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "URL açılamıyor" #: URL_ERROR msgid "Error building URL!" msgstr "Adres inşasında hata!" #: QUESTION msgid "Question" msgstr "Soru" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Yanlış parola!" #: TRUE msgid "true" msgstr "doğru" #: CANCEL msgid "Cancel" msgstr "İptal" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Dosya silme hatası" #: URL_OPEN msgid "Open URL" msgstr "URL Aç" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Dosya kurtarma hatası" #: WRITING_FILE msgid "Writing file..." msgstr "Dosya yazılıyor" #: XML_ATTRIBUTE msgid "Attribute" msgstr "Öznitelik" #: XML_VALUE msgid "Value" msgstr "Değer" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Dosya düzenlenemiyor!" #: XML_TEXT msgid "text" msgstr "Metin" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Öznitelik ekle" #: WORKING msgid "Working..." msgstr "Çalışıyor..." #: LOADING_FILE msgid "Loading file" msgstr "Dosya yükleniyor" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Öznitelik sil" #: XML_ELEMENT msgid "Element" msgstr "Öğe" #: XML_NEW_ELEMENT msgid "New element" msgstr "Yeni öğe" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Öğeyi sil" #: XML_NAME msgid "Name" msgstr "İsim" #: RETRY msgid "Retry" msgstr "Tekrar dene" #: IGNORE msgid "Ignore" msgstr "Yoksay" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Tarih hatalı!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Sayı yanlış!" #: NONE msgid "None" msgstr "Hiçbiri" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "Bugünkü değer" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Tümünü Seç" #: SELECT_NONE msgid "Clear selection" msgstr "Seçimi sil" #: WIDTH msgid "Width:" msgstr "Genişlik:" #: HEIGHT msgid "Height:" msgstr "Yükseklik:" #: BROWSE_FILES msgid "Browse files..." msgstr "Dosya tara" #: VERSION msgid "version" msgstr "sürüm" #: ABOUT msgid "About..." msgstr "Hakkında..." #: YES_TO_ALL msgid "Yes to all" msgstr "Hepsine evet" #: NO_TO_ALL msgid "No to all" msgstr "Hepsine hayır" #: SAVE msgid "Save" msgstr "Kaydet" #: OPEN msgid "Open" msgstr "Aç" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Seçili dosyaları aç" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Seçilen dosyayı kaydet" #: SAVING msgid "saving..." msgstr "Kaydediyor" #: SAVING_FILE msgid "Saving file" msgstr "Dosya saklanıyor" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_ru.po0000644000175000017500000001424611377161311023457 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-28 07:10+0000\n" "Last-Translator: Nkolay Parukhin \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ОШИБКА" #: OK msgid "OK" msgstr "OK" #: YES msgid "Yes" msgstr "Да" #: NO msgid "No" msgstr "Нет" #: DELETE msgid "Delete" msgstr "Удалить" #: PASTE msgid "Paste" msgstr "Вставить" #: CUT msgid "Cut" msgstr "Вырезать" #: COPY msgid "Copy" msgstr "Копировать" #: FILE_SAVE msgid "Save file" msgstr "Сохранить файл" #: CONFIRM msgid "Please confirm" msgstr "Пожалуйста, подтвердите" #: FILE_OPEN msgid "Open file" msgstr "Открыть файл" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Папка" #: URL msgid "URL:" msgstr "Адрес(URL):" #: PASSWORD msgid "Password:" msgstr "Пароль:" #: WARNING msgid "Warning!" msgstr "Внимание!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Не возможно прочесть!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Не существует!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Только для чтения. Он не может быть перезаписан!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Хотите перезаписать?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Хотите перезаписать?" #: FILE_EXISTS msgid "already exists on your system." msgstr "уже существует на вашем компьютере." #: FILE_DIR_BEG msgid "The folder" msgstr "Папка" #: FILE_BEG msgid "The file" msgstr "Файл" #: UNNAMED msgid "Unnamed" msgstr "Без имени" #: FILE_ERR_READING msgid "Error reading file" msgstr "Ошибка при чтении файла" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Ошибка во время сохранения файла" #: FILE_FIND msgid "Find file" msgstr "Поиск файла" #: FILE_ERR_READONLY msgid "is read-only." msgstr "только для чтения." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "существует. Хотите перезаписать?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "- нечитаемый." #: FILE_ERR_BEG msgid "File" msgstr "Файл" #: LOADING msgid "loading..." msgstr "загружается..." #: FALSE msgid "false" msgstr "ложь" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Ошибка запуска URL" #: URL_ERROR msgid "Error building URL!" msgstr "Ошибка создания URL!" #: QUESTION msgid "Question" msgstr "Вопрос" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Неверный пароль!" #: TRUE msgid "true" msgstr "истина" #: CANCEL msgid "Cancel" msgstr "Отмена" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Ошибка удаления файла" #: URL_OPEN msgid "Open URL" msgstr "Открыть URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Ошибка восстановления файла" #: WRITING_FILE msgid "Writing file..." msgstr "Запись файла..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Атрибут" #: XML_VALUE msgid "Value" msgstr "Значение" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Это поле не редактируемое!" #: XML_TEXT msgid "text" msgstr "текст" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Добавить атрибут" #: WORKING msgid "Working..." msgstr "Идёт работа..." #: LOADING_FILE msgid "Loading file" msgstr "Загрузка файла" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Удалить атрибут" #: XML_ELEMENT msgid "Element" msgstr "Элемент" #: XML_NEW_ELEMENT msgid "New element" msgstr "Создать элемент" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Удалить элемент" #: XML_NAME msgid "Name" msgstr "Имя" #: RETRY msgid "Retry" msgstr "Повторить" #: IGNORE msgid "Ignore" msgstr "Игнорировать" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Неверная дата!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Неверное число!" #: NONE msgid "None" msgstr "Нет" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Выделить всё" #: SELECT_NONE msgid "Clear selection" msgstr "Очистить выбор" #: WIDTH msgid "Width:" msgstr "Ширина:" #: HEIGHT msgid "Height:" msgstr "Высота:" #: BROWSE_FILES msgid "Browse files..." msgstr "Обзор файлов..." #: VERSION msgid "version" msgstr "версия" #: ABOUT msgid "About..." msgstr "О программе..." #: YES_TO_ALL msgid "Yes to all" msgstr "Да для всех" #: NO_TO_ALL msgid "No to all" msgstr "Нет для всех" #: SAVE msgid "Save" msgstr "Сохранить" #: OPEN msgid "Open" msgstr "Открыть" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Открыть выбранный файл" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Сохранение указанного файла" #: SAVING msgid "saving..." msgstr "сохранение..." #: SAVING_FILE msgid "Saving file" msgstr "Сохранение файла" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_el.po0000644000175000017500000001502211377161311023422 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 19:52+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ΣΦΑΛΜΑ" #: OK msgid "OK" msgstr "Εντάξει" #: YES msgid "Yes" msgstr "Ναι" #: NO msgid "No" msgstr "Όχι" #: DELETE msgid "Delete" msgstr "Διαγραφή" #: PASTE msgid "Paste" msgstr "Επικόλληση" #: CUT msgid "Cut" msgstr "Αποκοπή" #: COPY msgid "Copy" msgstr "Αντιγραφή" #: FILE_SAVE msgid "Save file" msgstr "Αποθήκευση αρχείου" #: CONFIRM msgid "Please confirm" msgstr "Παρακαλώ επιβεβαιώστε" #: FILE_OPEN msgid "Open file" msgstr "Άνοιγμα αρχείου" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Φάκελος" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: WARNING msgid "Warning!" msgstr "Προειδοποίηση!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Αδύνατη η ανάγνωσή του!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Δεν υπάρχει!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Είναι μόνο για ανάγνωση. Αδύνατη η αντικατάστασή του!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Θέλετε να το αντικαταστήσετε;" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Θέλετε να το αντικαταστήσετε;" #: FILE_EXISTS msgid "already exists on your system." msgstr "υπάρχει ήδη στο σύστημά σας." #: FILE_DIR_BEG msgid "The folder" msgstr "Ο φάκελος" #: FILE_BEG msgid "The file" msgstr "Το αρχείο" #: UNNAMED msgid "Unnamed" msgstr "Ανώνυμο" #: FILE_ERR_READING msgid "Error reading file" msgstr "Σφάλμα ανάγνωσης αρχείου" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Σφάλμα κατά την αποθήκευση του αρχείου" #: FILE_FIND msgid "Find file" msgstr "Εύρεση αρχείου" #: FILE_ERR_READONLY msgid "is read-only." msgstr "είναι μόνο για ανάγνωση." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "υπάρχει. Θέλετε να το αντικαταστήσετε;" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "είναι μη αναγνώσιμο." #: FILE_ERR_BEG msgid "File" msgstr "Αρχείο" #: LOADING msgid "loading..." msgstr "φόρτωση..." #: FALSE msgid "false" msgstr "ψευδές" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Σφάλμα φόρτωσης URL" #: URL_ERROR msgid "Error building URL!" msgstr "Σφάλμα δημιουργίας URL!" #: QUESTION msgid "Question" msgstr "Ερώτηση" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Λανθασμένος κωδικός πρόσβασης!" #: TRUE msgid "true" msgstr "αληθές" #: CANCEL msgid "Cancel" msgstr "Άκυρο" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Σφάλμα κατά τη διαγραφή του αρχείου" #: URL_OPEN msgid "Open URL" msgstr "Άνοιγμα URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Σφάλμα κατά την αποκατάσταση του αρχείου" #: WRITING_FILE msgid "Writing file..." msgstr "Εγγραφή αρχείου..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Χαρακτηριστικό" #: XML_VALUE msgid "Value" msgstr "Τιμή" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Αυτό το πεδίο δεν είναι επεξεργάσιμο!" #: XML_TEXT msgid "text" msgstr "κείμενο" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Προσθήκη χαρακτηριστικού" #: WORKING msgid "Working..." msgstr "Εργασία..." #: LOADING_FILE msgid "Loading file" msgstr "Φόρτωση αρχείου" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Διαγραφή χαρακτηριστικού" #: XML_ELEMENT msgid "Element" msgstr "Στοιχείο" #: XML_NEW_ELEMENT msgid "New element" msgstr "Νέο στοιχείο" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Διαγραφή στοιχείου" #: XML_NAME msgid "Name" msgstr "Όνομα" #: RETRY msgid "Retry" msgstr "Επανάληψη" #: IGNORE msgid "Ignore" msgstr "Παράβλεψη" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Λανθασμένα δεδομένα!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Λανθασμένος αριθμός!" #: NONE msgid "None" msgstr "Κανένα" #: COPY_keys msgid "CC" msgstr "Κοινοποίηση" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Επιλογή όλων" #: SELECT_NONE msgid "Clear selection" msgstr "Καθαρισμός επιλογής" #: WIDTH msgid "Width:" msgstr "Πλάτος:" #: HEIGHT msgid "Height:" msgstr "Ύψος:" #: BROWSE_FILES msgid "Browse files..." msgstr "Περιήγηση αρχείων..." #: VERSION msgid "version" msgstr "έκδοση" #: ABOUT msgid "About..." msgstr "Σχετικά..." #: YES_TO_ALL msgid "Yes to all" msgstr "Ναι σε όλα" #: NO_TO_ALL msgid "No to all" msgstr "Όχι σε όλα" #: SAVE msgid "Save" msgstr "Αποθήκευση" #: OPEN msgid "Open" msgstr "Άνοιγμα" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Άνοιγμα επιλεγμένου αρχείου" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Αποθήκευση καθορισμένου αρχείου" #: SAVING msgid "saving..." msgstr "αποθήκευσ..." #: SAVING_FILE msgid "Saving file" msgstr "Αποθήκευση αρχείου" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_pt_BR.po0000644000175000017500000001220211377161311024025 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-02-24 18:09+0000\n" "Last-Translator: Alexandre R Soares \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERRO" #: OK msgid "OK" msgstr "Aceitar" #: YES msgid "Yes" msgstr "Sim" #: NO msgid "No" msgstr "Não" #: DELETE msgid "Delete" msgstr "Excluir" #: PASTE msgid "Paste" msgstr "Colar" #: CUT msgid "Cut" msgstr "Recortar" #: COPY msgid "Copy" msgstr "Copiar" #: FILE_SAVE msgid "Save file" msgstr "Salvar arquivo" #: CONFIRM msgid "Please confirm" msgstr "Confirmar operação" #: FILE_OPEN msgid "Open file" msgstr "Abrir arquivo" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "A pasta" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Senha:" #: WARNING msgid "Warning!" msgstr "Atenção!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Não pôde ser lido!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Não existe!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "É de somente leitura e não pode ser substituído." #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Deseja substituir?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Deseja substituí-lo?" #: FILE_EXISTS msgid "already exists on your system." msgstr "já existe no computador." #: FILE_DIR_BEG msgid "The folder" msgstr "A pasta" #: FILE_BEG msgid "The file" msgstr "O arquivo" #: UNNAMED msgid "Unnamed" msgstr "Sem nome" #: FILE_ERR_READING msgid "Error reading file" msgstr "Erro ao ler o arquivo" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Erro ao salvar o arquivo" #: FILE_FIND msgid "Find file" msgstr "Buscar arquivo" #: FILE_ERR_READONLY msgid "is read-only." msgstr "é somente leitura." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "já existe. Deseja substituir?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "não pode ser lido." #: FILE_ERR_BEG msgid "File" msgstr "Arquivo" #: LOADING msgid "loading..." msgstr "aguarde..." #: FALSE msgid "false" msgstr "falso" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature_pt_BR.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Erro ao chamar a URL!" #: URL_ERROR msgid "Error building URL!" msgstr "Erro ao construir a URL!" #: QUESTION msgid "Question" msgstr "Pergunta" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Senha incorreta!" #: TRUE msgid "true" msgstr "verdadeiro" #: CANCEL msgid "Cancel" msgstr "Cancelar" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Erro ao apagar o arquivo" #: URL_OPEN msgid "Open URL" msgstr "Abrir URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Erro ao restaurar o arquivo" #: WRITING_FILE msgid "Writing file..." msgstr "A escrever arquivo..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atributo" #: XML_VALUE msgid "Value" msgstr "Valor" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Este campo não é editável!" #: XML_TEXT msgid "text" msgstr "texto" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Adicionar um novo atributo" #: WORKING msgid "Working..." msgstr "Trabalhando..." #: LOADING_FILE msgid "Loading file" msgstr "Lendo o arquivo" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Eliminar o atributo" #: XML_ELEMENT msgid "Element" msgstr "Elemento" #: XML_NEW_ELEMENT msgid "New element" msgstr "Novo elemento" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Excluir elemento" #: XML_NAME msgid "Name" msgstr "Nome" #: RETRY msgid "Retry" msgstr "Refazer" #: IGNORE msgid "Ignore" msgstr "Ignorar" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Data incorreta!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Número incorreto!" #: NONE msgid "None" msgstr "Nenhum" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "E#127" #: SELECT_ALL msgid "Select all" msgstr "Selecionar tudo" #: SELECT_NONE msgid "Clear selection" msgstr "Desfazer seleção" #: WIDTH msgid "Width:" msgstr "Largura:" #: HEIGHT msgid "Height:" msgstr "Altura:" #: BROWSE_FILES msgid "Browse files..." msgstr "Buscar arquivo..." #: VERSION msgid "version" msgstr "versão" #: ABOUT msgid "About..." msgstr "Sobre ..." #: YES_TO_ALL msgid "Yes to all" msgstr "Sim a todos" #: NO_TO_ALL msgid "No to all" msgstr "Não a todos" #: SAVE msgid "Save" msgstr "Salvar" #: OPEN msgid "Open" msgstr "Abrir" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Abrir o arquivo seleccionado" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Salvar o arquivo especificado" #: SAVING msgid "saving..." msgstr "salvando..." #: SAVING_FILE msgid "Saving file" msgstr "Salvando o arquivo" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_fr.po0000644000175000017500000001243511377161311023436 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-09-18 01:17+0000\n" "Last-Translator: Nizar Kerkeni \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERREUR" #: OK msgid "OK" msgstr "OK" #: YES msgid "Yes" msgstr "OUI" #: NO msgid "No" msgstr "Non" #: DELETE msgid "Delete" msgstr "Supprimer" #: PASTE msgid "Paste" msgstr "Coller" #: CUT msgid "Cut" msgstr "Couper" #: COPY msgid "Copy" msgstr "Copier" #: FILE_SAVE msgid "Save file" msgstr "Enregistrer fichier" #: CONFIRM msgid "Please confirm" msgstr "Confirmer" #: FILE_OPEN msgid "Open file" msgstr "Ouvrir fichier" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Dossier" #: URL msgid "URL:" msgstr "URL\\:" #: PASSWORD msgid "Password:" msgstr "Mot de passe\\:" #: WARNING msgid "Warning!" msgstr "Attention\\!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Impossible de lire\\!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "N'existe pas\\!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Est en lecture seule. Ne peut être écrasé\\!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Voulez-vous l'écraser ?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Voulez-vous l'écraser ?" #: FILE_EXISTS msgid "already exists on your system." msgstr "existe déjà sur votre système." #: FILE_DIR_BEG msgid "The folder" msgstr "Le dossier" #: FILE_BEG msgid "The file" msgstr "Le fichier" #: UNNAMED msgid "Unnamed" msgstr "Sans nom" #: FILE_ERR_READING msgid "Error reading file" msgstr "Erreur de lecture du fichier" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Erreur d'enregistrement du fichier" #: FILE_FIND msgid "Find file" msgstr "Chercher fichier" #: FILE_ERR_READONLY msgid "is read-only." msgstr "est en lecture seule." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "existe. Voulez-vous l'écraser ?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "est illisible." #: FILE_ERR_BEG msgid "File" msgstr "Fichier" #: LOADING msgid "loading..." msgstr "chargement..." #: FALSE msgid "false" msgstr "faux" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Erreur de lancement de l'URL" #: URL_ERROR msgid "Error building URL!" msgstr "Erreur de construction de l'URL\\!" #: QUESTION msgid "Question" msgstr "Question" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Mot de passe incorrect\\!" #: TRUE msgid "true" msgstr "vrai" #: CANCEL msgid "Cancel" msgstr "Annuler" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Erreur lors de la suppression du fichier" #: URL_OPEN msgid "Open URL" msgstr "Ouvrir URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Erreur lors de la restauration du fichier" #: WRITING_FILE msgid "Writing file..." msgstr "Ecriture du fichier..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Attribut" #: XML_VALUE msgid "Value" msgstr "Valeur" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Ce champ n'est pas éditable\\!" #: XML_TEXT msgid "text" msgstr "texte" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Ajouter attribut" #: WORKING msgid "Working..." msgstr "Travail en cours..." #: LOADING_FILE msgid "Loading file" msgstr "Chargement du fichier" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Supprimer attribut" #: XML_ELEMENT msgid "Element" msgstr "Elément" #: XML_NEW_ELEMENT msgid "New element" msgstr "Nouvel élément" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Supprimer élément" #: XML_NAME msgid "Name" msgstr "Nom" #: RETRY msgid "Retry" msgstr "Ressayer" #: IGNORE msgid "Ignore" msgstr "Ignorer" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Date incorrecte\\!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Nombre incorrecte\\!" #: NONE msgid "None" msgstr "Aucun" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Sélectionner tout" #: SELECT_NONE msgid "Clear selection" msgstr "Effacer sélection" #: WIDTH msgid "Width:" msgstr "Largeur\\:" #: HEIGHT msgid "Height:" msgstr "Hauteur\\:" #: BROWSE_FILES msgid "Browse files..." msgstr "Explorer fichier..." #: VERSION msgid "version" msgstr "version" #: ABOUT msgid "About..." msgstr "A propos de..." #: YES_TO_ALL msgid "Yes to all" msgstr "Oui pour tous" #: NO_TO_ALL msgid "No to all" msgstr "Non pour tous" #: SAVE msgid "Save" msgstr "Enregistrer" #: OPEN msgid "Open" msgstr "Ouvrir" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Ouvrir le fichier sélectionné" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Enregistrer le fichier spécifié" #: SAVING msgid "saving..." msgstr "enregistrement..." #: SAVING_FILE msgid "Saving file" msgstr "Enregistrement du fichier" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_gl.po0000644000175000017500000001213411377161311023425 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-09-02 20:08+0000\n" "Last-Translator: Xosé \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERRO" #: OK msgid "OK" msgstr "Aceptar" #: YES msgid "Yes" msgstr "Si" #: NO msgid "No" msgstr "Non" #: DELETE msgid "Delete" msgstr "Eliminar" #: PASTE msgid "Paste" msgstr "Pegar" #: CUT msgid "Cut" msgstr "Cortar" #: COPY msgid "Copy" msgstr "Copiar" #: FILE_SAVE msgid "Save file" msgstr "Gardar arquivo" #: CONFIRM msgid "Please confirm" msgstr "Confirmar" #: FILE_OPEN msgid "Open file" msgstr "Abrir arquivo" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "O cartafol" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Contrasinal:" #: WARNING msgid "Warning!" msgstr "Coidado!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Non se pode ler!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Non existe!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "É de só lectura e non se pode sobreescribir!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Quer sobreescribila?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Quer sobreescribilo?" #: FILE_EXISTS msgid "already exists on your system." msgstr "xa existe no sistema" #: FILE_DIR_BEG msgid "The folder" msgstr "O cartafol" #: FILE_BEG msgid "The file" msgstr "O arquivo" #: UNNAMED msgid "Unnamed" msgstr "Sen nome" #: FILE_ERR_READING msgid "Error reading file" msgstr "Erro ao ler o arquivo" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Erro ao gardar o arquivo" #: FILE_FIND msgid "Find file" msgstr "Busca arquivo" #: FILE_ERR_READONLY msgid "is read-only." msgstr "é de só lectura" #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "xa existe. Quere sobreescribilo?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "non se pode ler" #: FILE_ERR_BEG msgid "File" msgstr "O arquivo" #: LOADING msgid "loading..." msgstr "Abrindo o programa..." #: FALSE msgid "false" msgstr "falso" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature_gl.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Erro ao chamar a URL" #: URL_ERROR msgid "Error building URL!" msgstr "Erro ao construír a URL!" #: QUESTION msgid "Question" msgstr "Pregunta" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Sinal incorrecto!" #: TRUE msgid "true" msgstr "Certo" #: CANCEL msgid "Cancel" msgstr "Cancelar" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Erro ao eliminar o arquivo" #: URL_OPEN msgid "Open URL" msgstr "Abrir URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Erro ao restaurar o arquivo" #: WRITING_FILE msgid "Writing file..." msgstr "A escribir arquivo..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atributo" #: XML_VALUE msgid "Value" msgstr "Valor" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Este campo non é editábel!" #: XML_TEXT msgid "text" msgstr "texto" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Engadir atributo" #: WORKING msgid "Working..." msgstr "A traballar..." #: LOADING_FILE msgid "Loading file" msgstr "Abrindo o arquivo" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Eliminar atributo" #: XML_ELEMENT msgid "Element" msgstr "Elemento" #: XML_NEW_ELEMENT msgid "New element" msgstr "Engadir elemento" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Eliminar elemento" #: XML_NAME msgid "Name" msgstr "Nome" #: RETRY msgid "Retry" msgstr "Reintentar" #: IGNORE msgid "Ignore" msgstr "Ignorar" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Data incorrecta!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Número incorrecto!" #: NONE msgid "None" msgstr "Ningún" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "E#127" #: SELECT_ALL msgid "Select all" msgstr "Seleccionar todo" #: SELECT_NONE msgid "Clear selection" msgstr "Limpar selección" #: WIDTH msgid "Width:" msgstr "Ancho:" #: HEIGHT msgid "Height:" msgstr "Altura" #: BROWSE_FILES msgid "Browse files..." msgstr "Buscar arquivo" #: VERSION msgid "version" msgstr "versión" #: ABOUT msgid "About..." msgstr "Sobre o..." #: YES_TO_ALL msgid "Yes to all" msgstr "Si a todo" #: NO_TO_ALL msgid "No to all" msgstr "Non a todo" #: SAVE msgid "Save" msgstr "Gardar" #: OPEN msgid "Open" msgstr "Abrir" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Abrir o arquivo seleccionado" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Gardar o arquivo especificado" #: SAVING msgid "saving..." msgstr "gardando..." #: SAVING_FILE msgid "Saving file" msgstr "Gardando ficheiro" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_pt.po0000644000175000017500000001224711377161311023453 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-17 17:53+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERRO" #: OK msgid "OK" msgstr "OK" #: YES msgid "Yes" msgstr "Sim" #: NO msgid "No" msgstr "Não" #: DELETE msgid "Delete" msgstr "Eliminar" #: PASTE msgid "Paste" msgstr "Colar" #: CUT msgid "Cut" msgstr "Cortar" #: COPY msgid "Copy" msgstr "Copiar" #: FILE_SAVE msgid "Save file" msgstr "Guardar ficheiro" #: CONFIRM msgid "Please confirm" msgstr "Por favor, confirme" #: FILE_OPEN msgid "Open file" msgstr "Abrir ficheiro" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Pasta" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Palavra-chave:" #: WARNING msgid "Warning!" msgstr "Atenção!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Erro de leitura!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Não existe!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "É só de leitura e não pode ser substituído." #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Deseja substituí-lo?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Deseja substituí-lo?" #: FILE_EXISTS msgid "already exists on your system." msgstr "já existe no computador." #: FILE_DIR_BEG msgid "The folder" msgstr "A pasta" #: FILE_BEG msgid "The file" msgstr "O ficheiro" #: UNNAMED msgid "Unnamed" msgstr "Sem nome" #: FILE_ERR_READING msgid "Error reading file" msgstr "Erro ao ler o ficheiro" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Erro ao guardar o ficheiro" #: FILE_FIND msgid "Find file" msgstr "Procurar ficheiro" #: FILE_ERR_READONLY msgid "is read-only." msgstr "é só de leitura." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "já existe. Deseja substituí-lo?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "não pode ser lido." #: FILE_ERR_BEG msgid "File" msgstr "Ficheiro" #: LOADING msgid "loading..." msgstr "a carregar..." #: FALSE msgid "false" msgstr "falso" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature_pt.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Erro ao chamar URL!" #: URL_ERROR msgid "Error building URL!" msgstr "Erro ao construir URL!" #: QUESTION msgid "Question" msgstr "Pergunta" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Palavra-chave incorrecta" #: TRUE msgid "true" msgstr "verdadeiro" #: CANCEL msgid "Cancel" msgstr "Cancelar" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Erro ao apagar o ficheiro" #: URL_OPEN msgid "Open URL" msgstr "Abrir URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Erro ao restaurar o ficheiro" #: WRITING_FILE msgid "Writing file..." msgstr "A escrever o ficheiro..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atributo" #: XML_VALUE msgid "Value" msgstr "Valor" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Este campo não é editável!" #: XML_TEXT msgid "text" msgstr "texto" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Adicionar atributo" #: WORKING msgid "Working..." msgstr "A processar..." #: LOADING_FILE msgid "Loading file" msgstr "A ler ficheiro" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Eliminar atributo" #: XML_ELEMENT msgid "Element" msgstr "Elemento" #: XML_NEW_ELEMENT msgid "New element" msgstr "Novo elemento" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Eliminar elemento" #: XML_NAME msgid "Name" msgstr "Nome" #: RETRY msgid "Retry" msgstr "Tentar novamente" #: IGNORE msgid "Ignore" msgstr "Ignorar" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Data incorrecta!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Número incorrecto!" #: NONE msgid "None" msgstr "Nenhum" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Seleccionar tudo" #: SELECT_NONE msgid "Clear selection" msgstr "Limpar selecção" #: WIDTH msgid "Width:" msgstr "Largura:" #: HEIGHT msgid "Height:" msgstr "Altura:" #: BROWSE_FILES msgid "Browse files..." msgstr "Procurar ficheiros..." #: VERSION msgid "version" msgstr "versão" #: ABOUT msgid "About..." msgstr "Sobre..." #: YES_TO_ALL msgid "Yes to all" msgstr "Sim para todos" #: NO_TO_ALL msgid "No to all" msgstr "Não para todos" #: SAVE msgid "Save" msgstr "Guardar" #: OPEN msgid "Open" msgstr "Abrir" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Abrir o ficheiro seleccionado" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Guardar o ficheiro especificado" #: SAVING msgid "saving..." msgstr "a guardar..." #: SAVING_FILE msgid "Saving file" msgstr "A guardar o ficheiro" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_zh_TW.po0000644000175000017500000001226411377161311024062 0ustar # Traditional Chinese translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-10-01 17:40+0000\n" "Last-Translator: tclin \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "錯誤" #: OK msgid "OK" msgstr "確定" #: YES msgid "Yes" msgstr "是" #: NO msgid "No" msgstr "否" #: DELETE msgid "Delete" msgstr "刪除" #: PASTE msgid "Paste" msgstr "貼上" #: CUT msgid "Cut" msgstr "剪下" #: COPY msgid "Copy" msgstr "複製" #: FILE_SAVE msgid "Save file" msgstr "儲存檔案" #: CONFIRM msgid "Please confirm" msgstr "請確認" #: FILE_OPEN msgid "Open file" msgstr "開啟檔案" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "資料夾" #: URL msgid "URL:" msgstr "網址:" #: PASSWORD msgid "Password:" msgstr "密碼:" #: WARNING msgid "Warning!" msgstr "警告!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "無法讀取!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "不存在!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "唯讀。無法覆寫!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "要覆寫嗎?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "要覆寫嗎?" #: FILE_EXISTS msgid "already exists on your system." msgstr "已經存在您的系統中。" #: FILE_DIR_BEG msgid "The folder" msgstr "資料夾" #: FILE_BEG msgid "The file" msgstr "檔案" #: UNNAMED msgid "Unnamed" msgstr "未命名" #: FILE_ERR_READING msgid "Error reading file" msgstr "讀取檔案錯誤" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "儲存檔案錯誤" #: FILE_FIND msgid "Find file" msgstr "尋找檔案" #: FILE_ERR_READONLY msgid "is read-only." msgstr "唯讀" #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "檔案已經存在,要覆寫嗎?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "無法讀取。" #: FILE_ERR_BEG msgid "File" msgstr "檔案" #: LOADING msgid "loading..." msgstr "載入中..." #: FALSE msgid "false" msgstr "假" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "" #: URL_ERROR msgid "Error building URL!" msgstr "" #: QUESTION msgid "Question" msgstr "問題" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "密碼不正確" #: TRUE msgid "true" msgstr "真" #: CANCEL msgid "Cancel" msgstr "取消" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "刪除檔案錯誤" #: URL_OPEN msgid "Open URL" msgstr "開啟網址" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "還原檔案錯誤" #: WRITING_FILE msgid "Writing file..." msgstr "寫入檔案中..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "屬性" #: XML_VALUE msgid "Value" msgstr "值" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "這個欄位無法編輯!" #: XML_TEXT msgid "text" msgstr "文字" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "新增屬性" #: WORKING msgid "Working..." msgstr "工作中..." #: LOADING_FILE msgid "Loading file" msgstr "檔案載入中" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "刪除屬性" #: XML_ELEMENT msgid "Element" msgstr "元件" #: XML_NEW_ELEMENT msgid "New element" msgstr "新元件" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "刪除元件" #: XML_NAME msgid "Name" msgstr "名稱" #: RETRY msgid "Retry" msgstr "重試" #: IGNORE msgid "Ignore" msgstr "略過" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "日期不正確!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "不正確的數字!" #: NONE msgid "None" msgstr "沒有" #: COPY_keys msgid "CC" msgstr "副本" #: CUT_keys msgid "TX" msgstr "" #: PASTE_keys msgid "PV" msgstr "" #: DELETE_keys msgid "D#127" msgstr "" #: SELECT_ALL msgid "Select all" msgstr "全部選取" #: SELECT_NONE msgid "Clear selection" msgstr "清除選取" #: WIDTH msgid "Width:" msgstr "寬:" #: HEIGHT msgid "Height:" msgstr "高:" #: BROWSE_FILES msgid "Browse files..." msgstr "瀏覽檔案..." #: VERSION msgid "version" msgstr "版本" #: ABOUT msgid "About..." msgstr "關於..." #: YES_TO_ALL msgid "Yes to all" msgstr "全部皆是" #: NO_TO_ALL msgid "No to all" msgstr "全部皆否" #: SAVE msgid "Save" msgstr "儲存" #: OPEN msgid "Open" msgstr "開啟" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "開啟選取的檔案" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "儲存指定的檔案" #: SAVING msgid "saving..." msgstr "儲存中..." #: SAVING_FILE msgid "Saving file" msgstr "正在儲存檔案" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_eu.po0000644000175000017500000001271111377161311023435 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-02-18 11:20+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERROREA" #: OK msgid "OK" msgstr "Ados" #: YES msgid "Yes" msgstr "Bai" #: NO msgid "No" msgstr "Ez" #: DELETE msgid "Delete" msgstr "Ezabatu" #: PASTE msgid "Paste" msgstr "Itsatsi" #: CUT msgid "Cut" msgstr "Ebaki" #: COPY msgid "Copy" msgstr "Kopiatu" #: FILE_SAVE msgid "Save file" msgstr "Gorde fitxategia" #: CONFIRM msgid "Please confirm" msgstr "Baieztatu eragiketa" #: FILE_OPEN msgid "Open file" msgstr "Ireki fitxategia" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "Direktorioa" #: URL msgid "URL:" msgstr "URL-a:" #: PASSWORD msgid "Password:" msgstr "Pasahitza:" #: WARNING msgid "Warning!" msgstr "Kontuz!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "Ezin da irakurri!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "Ez dago!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Irakurtzeko bakarrik. Ezin da bertan idatzi!" #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "Gainidatzi nahi al duzu?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "Gainidatzi nahi al duzu?" #: FILE_EXISTS msgid "already exists on your system." msgstr "dagoeneko bada zure sisteman" #: FILE_DIR_BEG msgid "The folder" msgstr "Direktorioa" #: FILE_BEG msgid "The file" msgstr "Fitxategia" #: UNNAMED msgid "Unnamed" msgstr "Izenbagea" #: FILE_ERR_READING msgid "Error reading file" msgstr "Errorea fitxategia irakurtzean" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Errorea fitxategia gordetzean" #: FILE_FIND msgid "Find file" msgstr "Bilatu fitxategia" #: FILE_ERR_READONLY msgid "is read-only." msgstr "irakurri baino ezin da." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "badago. Berridatzi egin nahi al duzu?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "ez da irakurtzeko modukoa." #: FILE_ERR_BEG msgid "File" msgstr "Fitxategia" #: LOADING msgid "loading..." msgstr "kargatzen..." #: FALSE msgid "false" msgstr "faltsua" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Errorea URL-a abiaraztean" #: URL_ERROR msgid "Error building URL!" msgstr "Errorea URL-a eraikitzean!" #: QUESTION msgid "Question" msgstr "Galdera" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "Pasahitza ez da zuzena!" #: TRUE msgid "true" msgstr "egia" #: CANCEL msgid "Cancel" msgstr "Utzi" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Errorea fitxategia ezabatzean" #: URL_OPEN msgid "Open URL" msgstr "Ireki URL-a" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Errorea fitxategia berreskuratzean" #: WRITING_FILE msgid "Writing file..." msgstr "Fitxategia idazten..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atributua" #: XML_VALUE msgid "Value" msgstr "Balorea" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Eremu hau ezin da editatu!" #: XML_TEXT msgid "text" msgstr "testua" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Gehitu atributua" #: WORKING msgid "Working..." msgstr "Lanean..." #: LOADING_FILE msgid "Loading file" msgstr "Fitxategia kargatzen" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Ezabatu atributua" #: XML_ELEMENT msgid "Element" msgstr "Elementua" #: XML_NEW_ELEMENT msgid "New element" msgstr "Elementu berria" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Ezabatu elementua" #: XML_NAME msgid "Name" msgstr "Izena" #: RETRY msgid "Retry" msgstr "Berriz saiatu" #: IGNORE msgid "Ignore" msgstr "Alde batera uzi" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "Data ez da zuzena!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "Zenbakia ez da zuzena!" #: NONE msgid "None" msgstr "Bat ere ez" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "D#127" #: SELECT_ALL msgid "Select all" msgstr "Aukeratu guztiak" #: SELECT_NONE msgid "Clear selection" msgstr "Garbitu aukera" #: WIDTH msgid "Width:" msgstr "Zabalera" #: HEIGHT msgid "Height:" msgstr "Altuera:" #: BROWSE_FILES msgid "Browse files..." msgstr "Arakatu fitxategiak..." #: VERSION msgid "version" msgstr "bertsioa" #: ABOUT msgid "About..." msgstr "Honi buruz..." #: YES_TO_ALL msgid "Yes to all" msgstr "Bai guztiari" #: NO_TO_ALL msgid "No to all" msgstr "Ez guztiari" #: SAVE msgid "Save" msgstr "Gorde" #: OPEN msgid "Open" msgstr "Ireki" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Ireki aukeratutako fitxategia" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Gorde zehaztutako fitxategia" #: SAVING msgid "saving..." msgstr "gordetzen..." #: SAVING_FILE msgid "Saving file" msgstr "Fitxategia gordetzen" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-utilities/BasicMessages_es.po0000644000175000017500000001234211377161311023433 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 15:58+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: ERROR msgid "ERROR" msgstr "ERROR" #: OK msgid "OK" msgstr "Aceptar" #: YES msgid "Yes" msgstr "Sí" #: NO msgid "No" msgstr "No" #: DELETE msgid "Delete" msgstr "Eliminar" #: PASTE msgid "Paste" msgstr "Pegar" #: CUT msgid "Cut" msgstr "Recortar" #: COPY msgid "Copy" msgstr "Copiar" #: FILE_SAVE msgid "Save file" msgstr "Guardar archivo" #: CONFIRM msgid "Please confirm" msgstr "Confirmar operación" #: FILE_OPEN msgid "Open file" msgstr "Abrir archivo" #: FILE_ERR_BEG_DIR msgid "Folder" msgstr "La carpeta" #: URL msgid "URL:" msgstr "URL:" #: PASSWORD msgid "Password:" msgstr "Contraseña:" #: WARNING msgid "Warning!" msgstr "¡Atención!" #: FILE_NOT_READABLE msgid "Cannot be read!" msgstr "No puede ser leído!" #: FILE_NOT_EXIST msgid "Does not exist!" msgstr "No existe!" #: FILE_READONLY msgid "Is read-only. It cannot be overwritted!" msgstr "Es de solo lectura y no puede ser reemplazado." #: FILE_OVERWRITE_DIR_PROMPT msgctxt "FILE_OVERWRITE_DIR_PROMPT" msgid "Do you want to overwrite it?" msgstr "¿Desea reemplazarla?" #: FILE_OVERWRITE_PROMPT msgctxt "FILE_OVERWRITE_PROMPT" msgid "Do you want to overwrite it?" msgstr "¿Desea reemplazarlo?" #: FILE_EXISTS msgid "already exists on your system." msgstr "ya se encuentra en su ordenador." #: FILE_DIR_BEG msgid "The folder" msgstr "La carpeta" #: FILE_BEG msgid "The file" msgstr "El archivo" #: UNNAMED msgid "Unnamed" msgstr "Sin nombre" #: FILE_ERR_READING msgid "Error reading file" msgstr "Error al leer el archivo" #: FILE_ERR_SAVING msgid "Error saving file" msgstr "Error al grabar el archivo" #: FILE_FIND msgid "Find file" msgstr "Buscar archivo" #: FILE_ERR_READONLY msgid "is read-only." msgstr "es de solo lectura." #: FILE_ERR_EXISTS msgid "exists. Do you want to overwrite it?" msgstr "ya existe. ¿Desea sobreescribirlo?" #: FILE_ERR_UNREADABLE msgid "is unreadable." msgstr "no se puede leer." #: FILE_ERR_BEG msgid "File" msgstr "El archivo" #: LOADING msgid "loading..." msgstr "cargando el programa..." #: FALSE msgid "false" msgstr "falso" #: CHECK_SIGNATURE_URL msgid "messages/checksignature.html" msgstr "messages/checksignature_es.html" #: URL_LAUNCH_ERROR msgid "Error launching URL" msgstr "Error al invocar la URL!" #: URL_ERROR msgid "Error building URL!" msgstr "¡Error al construir la URL!" #: QUESTION msgid "Question" msgstr "Pregunta" #: PASSWORD_INCORRECT msgid "Incorrect password!" msgstr "¡Contraseña incorrecta!" #: TRUE msgid "true" msgstr "verdadero" #: CANCEL msgid "Cancel" msgstr "Cancelar" #: FILE_ERR_DELETING msgid "Error deleting file" msgstr "Error al borrar el archivo" #: URL_OPEN msgid "Open URL" msgstr "Abrir URL" #: FILE_ERR_RESTORING msgid "Error restoring file" msgstr "Error al restaurar el archivo" #: WRITING_FILE msgid "Writing file..." msgstr "Escribiendo archivo..." #: XML_ATTRIBUTE msgid "Attribute" msgstr "Atributo" #: XML_VALUE msgid "Value" msgstr "Valor" #: XML_NOT_EDITABLE msgid "This field is not editable!" msgstr "Este campo no es editable!" #: XML_TEXT msgid "text" msgstr "texto" #: XML_NEW_ATTRIBUTE msgid "Add attribute" msgstr "Añadir un nuevo atributo" #: WORKING msgid "Working..." msgstr "Trabajando..." #: LOADING_FILE msgid "Loading file" msgstr "Leyendo el archivo" #: XML_DEL_ATTRIBUTE msgid "Delete attribute" msgstr "Eliminar el atributo" #: XML_ELEMENT msgid "Element" msgstr "Elemento" #: XML_NEW_ELEMENT msgid "New element" msgstr "Nuevo elemento" #: XML_DEL_ELEMENT msgid "Delete element" msgstr "Eliminar elemento" #: XML_NAME msgid "Name" msgstr "Nombre" #: RETRY msgid "Retry" msgstr "Reintentar" #: IGNORE msgid "Ignore" msgstr "Ignorar" #: DATE_INCORRECT msgid "Date incorrect!" msgstr "¡Fecha incorrecta!" #: BAD_NUMBER msgid "Incorrect number!" msgstr "¡Número incorrecto!" #: NONE msgid "None" msgstr "Ninguno" #: COPY_keys msgid "CC" msgstr "CC" #: CUT_keys msgid "TX" msgstr "TX" #: PASTE_keys msgid "PV" msgstr "PV" #: DELETE_keys msgid "D#127" msgstr "E#127" #: SELECT_ALL msgid "Select all" msgstr "Seleccionar todo" #: SELECT_NONE msgid "Clear selection" msgstr "Deshacer seleccion" #: WIDTH msgid "Width:" msgstr "Anchura:" #: HEIGHT msgid "Height:" msgstr "Altura:" #: BROWSE_FILES msgid "Browse files..." msgstr "Buscar archivo..." #: VERSION msgid "version" msgstr "versión" #: ABOUT msgid "About..." msgstr "Acerca de..." #: YES_TO_ALL msgid "Yes to all" msgstr "Sí a todos" #: NO_TO_ALL msgid "No to all" msgstr "No a todos" #: SAVE msgid "Save" msgstr "Guardar" #: OPEN msgid "Open" msgstr "Abrir" #: FILE_OPEN_TOOLTIP msgid "Open the selected file" msgstr "Abrir el archivo seleccionado" #: FILE_SAVE_TOOLTIP msgid "Save the specified file" msgstr "Guardar el archivo especificado" #: SAVING msgid "saving..." msgstr "guardando..." #: SAVING_FILE msgid "Saving file" msgstr "Guardando el archivo" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/0000755000175000017500000000000011377161311016606 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_ast.po0000644000175000017500000004225311377161311022477 0ustar # Asturian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2008-10-03 12:34+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tiempu" #: label_actions msgid "tries" msgstr "intentos" #: label_score msgid "score" msgstr "marcador" #: Skin msgid "Skin" msgstr "pelleyu" #: action_next_caption msgid "Next" msgstr "Siguiente" #: action_next_tooltip msgid "Next activity" msgstr "xera siguiente" #: action_prev_caption msgid "Previous" msgstr "Anterior" #: action_prev_tooltip msgid "Previous activity" msgstr "Xera anterior" #: action_reset_caption msgid "Restart" msgstr "Reaniciar" #: action_reset_tooltip msgid "Restart activity" msgstr "Reaniciar xera" #: action_info_caption msgid "Information" msgstr "Información" #: about_window_lb_project msgid "Project" msgstr "Proyeutu" #: about_window_lb_languages msgid "languages" msgstr "llingües" #: about_window_lb_language msgid "language" msgstr "llingua" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Tornar" #: about_window_caption msgid "About" msgstr "Al rodiu" #: action_about_tooltip msgid "User reports" msgstr "Informes d'usuariu" #: about_window_lb_report msgid "Report" msgstr "Informe" #: about_window_browser_button msgid "View in browser" msgstr "Ver nel navegador" #: report_no_activities msgid "No activities reported!" msgstr "¡Nenguna información sobre xeres!" #: report_system_standard msgid "Report not registered in any DB" msgstr "L'informe nun ta rexistráu en nenguna base de datos" #: report_lb_time msgid "Time" msgstr "Tiempu" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Error cargando la secuencia" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "¡Error al entamar QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "Abrir URL..." #: filesystem_openFile msgid "Open file..." msgstr "Abrir ficheru..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Escribe la URL del recursu al que quier acceder." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Error executando'l comandu:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Mover l'elementu seleicionáu p'abaxo" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mover l'elementu seleicionáu p'arriba" #: editor_moveDown msgid "Move down" msgstr "Mover p'abaxo" #: editor_moveUp msgid "Move up" msgstr "Mover p'arriba" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Imáxenes (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "Imáxenes PNG" #: filefilter_jpg msgid "JPG images" msgstr "Imáxenes JPG" #: filefilter_gif msgid "GIF images" msgstr "Imáxenes GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Los ficheros encontaos nuna URL son namás de llectura." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Paquetes Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Tolos ficheros" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Proyeutos JClic y Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Proyeutos JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Paquetes compactos Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Paquetes abiertos Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Proyectos JClic comprimíos (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Proyeutos JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimedia" #: about_window_lb_level msgid "Level" msgstr "Nivel" #: about_window_lb_area msgid "Area" msgstr "Área" #: report_num_actions msgid "Actions done:" msgstr "Aiciones feches:" #: report_project msgid "Project:" msgstr "Proyeutu:" #: report_lb_totals msgid "Total:" msgstr "Total:" #: report_num_projects msgid "Projects:" msgstr "Proyeutos:" #: report_session msgid "Session:" msgstr "Sesión:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Por razones de seguridá, la execución de programes esternos nun ta " "deshabilitada nos applets JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "¡Error al entamar la xera!" #: msg_error_loading_project msgid "Error loading project" msgstr "Error al cargar el proyeutu" #: msg_error_playing_media msgid "Error playing media!" msgstr "¡Error del recursu multimedia!" #: msg_activity_finished msgid "Activity finished!" msgstr "¡Xera finada!" #: msg_playing_media msgid "Playing media" msgstr "Reproduciendo multimedia" #: msg_activity_running msgid "Activity running" msgstr "Xera en marcha" #: msg_activity_ready msgid "Activity ready" msgstr "Xera preparada" #: msg_initializing msgid "Initializing..." msgstr "Entamando..." #: msg_preparing_media msgid "Preparing media" msgstr "Preparando multimedia" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Error al cargar la xera" #: msg_loading_activity msgid "Loading activity" msgstr "Cargando xera" #: msg_loading_project msgid "Loading project..." msgstr "Cargando proyeutu..." #: msg_ready msgid "Ready" msgstr "Llistu" #: err_reading_data msgid "Error loading file" msgstr "Error al lleer l'archivu" #: err_file_save msgid "Error saving file!" msgstr "¡Error al guardar l'archivu!" #: err_file_open msgid "Error opening file!" msgstr "¡Error al abrir l'archivu!" #: report_started msgid "Session started:" msgstr "Entamu de sesión:" #: report_lb_score msgid "Score" msgstr "Puntuación" #: report_lb_actions msgid "Actions" msgstr "Aiciones" #: report_lb_solved msgid "Ok" msgstr "Val" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Actividá" #: report_lb_sequence msgid "Sequence" msgstr "Secuencia" #: report_global_score msgid "Global score:" msgstr "Puntuación global:" #: report_total_time msgid "Total time on activities:" msgstr "Tiempu total en xeres:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Xeres correctes:" #: report_num_activities msgid "Activities done:" msgstr "Xeres feches:" #: report_num_sequences msgid "Sequences:" msgstr "Secuencies:" #: report_system msgid "Report system:" msgstr "Sistema d'informes:" #: report_user msgid "User:" msgstr "Usuariu:" #: report_not_finished msgid "Activity not finished" msgstr "Xera nun finada" #: action_info_tooltip msgid "Additional information" msgstr "Otres informaciones" #: action_help_caption msgid "Help" msgstr "Gabitu" #: action_help_tooltip msgid "Help about this activity" msgstr "Gabitos al rodiu de la xera" #: action_audio_caption msgid "Sounds" msgstr "Soníos" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Activar/desactivar los soníos" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memoria total" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memoria llibre" #: about_window_lb_java_home msgid "Java home" msgstr "Allugamientu de Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Máquina virtual Java" #: about_window_lb_java_version msgid "Java version" msgstr "Versión Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operativu" #: about_window_lb_version msgid "Version" msgstr "Versión" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descriptores" #: about_window_lb_description msgid "Description" msgstr "Descripción" #: about_window_lb_history msgid "History" msgstr "Hestorial" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizaciones" #: about_window_lb_organization msgid "Organization" msgstr "Organización" #: about_window_lb_authors msgid "Authors" msgstr "Autores" #: about_window_lb_author msgid "Author" msgstr "Autor" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Xera" #: help_window_close_button msgid "Return to activity" msgstr "Tornar pa la xera" #: help_window_caption msgid "Help window" msgstr "Ventana de gabitu" #: action_about_caption msgid "Reports" msgstr "Informes" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Instaladores de proyeutos JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "¡Nengún usuariu definíu na base de datos d'informes!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "Nengún usuariu definíu pa esti grupu na base de datos d'informes!" #: report_new_user msgid "New user..." msgstr "Usuariu nuevu..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Crear un usuariu nuevu na base de datos d'informes" #: report_err_creating_user msgid "Error creating new user!" msgstr "¡Error al crear l'usuariu nuevu!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificación d'usuariu pa la base de datos d'informes" #: report_userlist_title msgid "Please select your name:" msgstr "Escueya'l so nome:" #: report_ident_user msgid "User identification" msgstr "Identificación d'usuariu" #: report_name_prompt msgid "Name:" msgstr "Nome:" #: report_id_prompt msgid "Login:" msgstr "Identificar:" #: report_pw_prompt msgid "Password:" msgstr "Contraseña:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmar contraseña:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Creación d'un nuevu usuariu:" #: report_err_bad_data msgid "Incorrect data!" msgstr "¡Datos incorrectos!" #: report_generic_group_name msgid "Generic" msgstr "Xenéricu" #: report_new_group msgid "Create a new group..." msgstr "Crear un grupu nuevu..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "¡Error al crear el grupu nuevu!" #: report_grouplist_title msgid "Please select your group:" msgstr "Escueya'l so grupu:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Creación d'un grupu nuevu d'usuarios:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Usuariu inesistente o contraseña incorrecta." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Esta cuenta d'usuariu ta protexida por contraseña" #: report_err_init msgid "Error initializing report system." msgstr "Error al entamar el sistema d'informes." #: report_not_connected msgid "not connected" msgstr "nun conectáu" #: report_err_creating msgid "Error creating reports agent" msgstr "Error al crear l'axente d'informes" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Tornar" #: action_return_tooltip msgid "Return to the last menu" msgstr "Tornar al menú postreru" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Soníos (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Archivos MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Archivos de video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Archivos Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Pelleyos (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Tolos recursos" #: filesystem_copyToRoot_1 msgid "The file" msgstr "L'archivu" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "atópase nuna carpeta estremada de la del proyeutu actual." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Encamiéntase tener tolos archivos nuna mesma carpeta" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "¿Quier copiar l'archivu escoyíu a la carpeta del proyeutu?" #: filesystem_copyFile msgid "Copying file" msgstr "Copiando ficheru" #: msg_loading msgid "Loading" msgstr "Cargando" #: report_err_bad_id msgid "Bad identifier!" msgstr "¡Identificador incorrectu!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "¡Esti identificador yá esiste na base de datos!" #: report_err_bad_name msgid "Bad name!" msgstr "¡Nome incorrectu!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "¡Les contraseñas nun coinciden!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "¡Error al conectar cola base de datos d'informes!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "EXIT: Nesti puntu'l programa va cerrase." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Nesti puntu va producise un altu al proyeutu:" #: ftype_image msgid "Image" msgstr "Imaxe" #: ftype_audio msgid "Digital audio" msgstr "Soníu dixital" #: ftype_midi msgid "MIDI file" msgstr "Ficheru MIDI" #: ftype_xml msgid "XML file" msgstr "Ficheru XML" #: ftype_anim msgid "Animation" msgstr "Animación" #: ftype_video msgid "Digital video" msgstr "Video dixital" #: ftype_font msgid "TrueType font" msgstr "Fonte TrueType" #: ftype_jclic msgid "JClic project" msgstr "Proyeutu JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script d'instalación de proyeutos JClic" #: ftype_unknown msgid "Unknown" msgstr "Desconocíu" #: ftype_animated msgid "animated" msgstr "animada" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Fontes (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documentos HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_ast.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_ast.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Col sofitu de:" #: about_window_systemInfo msgid "System information" msgstr "Información del sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Información del proyeutu actual" #: about_window_reportInfo msgid "Current session results" msgstr "Resultaos de la sesión actual" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Esti productu inclúi software desendolcáu por:" #: msg_saving_project msgid "Saving project..." msgstr "Guardando'l proyeutu..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Ficheros de testu (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Versión n'asturianu, pol Equipu JClic" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Esti programa ye software llibre; usté pue redistribuyilu y/o camudalu " "embaxo los términos de la Llicencia Pública Xeneral GNU (GPL), tal y como ta " "espublizada pola Free Software Foundation; yá seya la versión 2 de la " "Llicencia, o (a la so escoyeta) cualesquier versión " "posterior.
 
Esti programa distribúyese col envís de ser útil, " "pero ENSIN NENGUNA GARANTÍA; inclusive ensin la garantía implícita " "d'USABILIDÁ O UTILIDÁ PA UN FIN PARTICULAR. Vea la Llicencia Pública Xeneral " "GNU pa más detalles." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_es.po0000644000175000017500000004244611377161311022323 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-01-25 18:57+0000\n" "Last-Translator: Paco Molinero \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tiempo" #: label_actions msgid "tries" msgstr "intentos" #: label_score msgid "score" msgstr "aciertos" #: Skin msgid "Skin" msgstr "Aspecto" #: action_next_caption msgid "Next" msgstr "Siguiente" #: action_next_tooltip msgid "Next activity" msgstr "Actividad siguiente" #: action_prev_caption msgid "Previous" msgstr "Anterior" #: action_prev_tooltip msgid "Previous activity" msgstr "Actividad anterior" #: action_reset_caption msgid "Restart" msgstr "Reiniciar" #: action_reset_tooltip msgid "Restart activity" msgstr "Reiniciar la actividad" #: action_info_caption msgid "Information" msgstr "Información" #: about_window_lb_project msgid "Project" msgstr "Proyecto" #: about_window_lb_languages msgid "languages" msgstr "Idiomas" #: about_window_lb_language msgid "language" msgstr "Idioma" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Volver" #: about_window_caption msgid "About" msgstr "Acerca de..." #: action_about_tooltip msgid "User reports" msgstr "informes de usuario" #: about_window_lb_report msgid "Report" msgstr "Informes" #: about_window_browser_button msgid "View in browser" msgstr "Verlo en el navegador" #: report_no_activities msgid "No activities reported!" msgstr "¡No hay ninguna actividad reportada!" #: report_system_standard msgid "Report not registered in any DB" msgstr "El informe no se está registrando en ninguna base de datos" #: report_lb_time msgid "Time" msgstr "Tiempo" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Error al cargar la secuencia" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "¡Error al inicializar QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_es.html" #: filesystem_openURL msgid "Open URL..." msgstr "Abrir URL..." #: filesystem_openFile msgid "Open file..." msgstr "Abrir archivo..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Escriba la URL del recurso al que desea acceder." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Error al ejecutar la orden:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Mover el elemento seleccionado hacia abajo" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mover el elemento seleccionado hacia arriba" #: editor_moveDown msgid "Move down" msgstr "Mover hacia abajo" #: editor_moveUp msgid "Move up" msgstr "Mover hacia arriba" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Imágenes (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "Imágenes PNG" #: filefilter_jpg msgid "JPG images" msgstr "Imágenes JPG" #: filefilter_gif msgid "GIF images" msgstr "Imágenes GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Los archivos basados en una URL son de solo lectura." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Paquetes Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Todos los archivos" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Proyectos JClic y Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Proyectos JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Paquetes compactos Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Paquetes abiertos Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Proyectos JClic comprimidos (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Proyectos JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimedia" #: about_window_lb_level msgid "Level" msgstr "Nivel" #: about_window_lb_area msgid "Area" msgstr "Área" #: report_num_actions msgid "Actions done:" msgstr "Acciones efectuadas:" #: report_project msgid "Project:" msgstr "Proyecto:" #: report_lb_totals msgid "Total:" msgstr "Totales:" #: report_num_projects msgid "Projects:" msgstr "Proyectos:" #: report_session msgid "Session:" msgstr "Sesión:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Por razones de seguridad la invocación a programas externos está " "deshabilitada en los applets JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "¡Error al iniciar la actividad!" #: msg_error_loading_project msgid "Error loading project" msgstr "Error al cargar el proyecto" #: msg_error_playing_media msgid "Error playing media!" msgstr "¡Error del recurso multimedia!" #: msg_activity_finished msgid "Activity finished!" msgstr "¡Actividad terminada!" #: msg_playing_media msgid "Playing media" msgstr "Reproduciendo multimedia" #: msg_activity_running msgid "Activity running" msgstr "Actividad en marcha" #: msg_activity_ready msgid "Activity ready" msgstr "Actividad preparada" #: msg_initializing msgid "Initializing..." msgstr "Inicializando..." #: msg_preparing_media msgid "Preparing media" msgstr "Preparando multimedia" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Error al cargar la actividad" #: msg_loading_activity msgid "Loading activity" msgstr "Cargando actividad" #: msg_loading_project msgid "Loading project..." msgstr "Cargando proyecto..." #: msg_ready msgid "Ready" msgstr "Listo" #: err_reading_data msgid "Error loading file" msgstr "Error al leer el archivo" #: err_file_save msgid "Error saving file!" msgstr "¡Error al guardar el archivo!" #: err_file_open msgid "Error opening file!" msgstr "¡Error al abrir el archivo!" #: report_started msgid "Session started:" msgstr "Inicio de sessión:" #: report_lb_score msgid "Score" msgstr "Puntuación" #: report_lb_actions msgid "Actions" msgstr "Acciones" #: report_lb_solved msgid "Ok" msgstr "Correcta" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Actividad" #: report_lb_sequence msgid "Sequence" msgstr "Secuencia" #: report_global_score msgid "Global score:" msgstr "Puntuación global:" #: report_total_time msgid "Total time on activities:" msgstr "Tiempo total en actividades:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Actividades correctas:" #: report_num_activities msgid "Activities done:" msgstr "Actividades realizadas:" #: report_num_sequences msgid "Sequences:" msgstr "Secuencias:" #: report_system msgid "Report system:" msgstr "Sistema de informes:" #: report_user msgid "User:" msgstr "Usuario:" #: report_not_finished msgid "Activity not finished" msgstr "Actividad aun no acabada" #: action_info_tooltip msgid "Additional information" msgstr "Información adicional" #: action_help_caption msgid "Help" msgstr "Ayuda" #: action_help_tooltip msgid "Help about this activity" msgstr "Ayuda sobre la actividad" #: action_audio_caption msgid "Sounds" msgstr "Sonidos" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Activar/desactivar los sonidos" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memoria total" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memoria libre" #: about_window_lb_java_home msgid "Java home" msgstr "Ubicación de Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Máquina virtual Java" #: about_window_lb_java_version msgid "Java version" msgstr "Versión Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operativo" #: about_window_lb_version msgid "Version" msgstr "Versión" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descriptores" #: about_window_lb_description msgid "Description" msgstr "Descripción" #: about_window_lb_history msgid "History" msgstr "Revisiones" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizaciones" #: about_window_lb_organization msgid "Organization" msgstr "Organización" #: about_window_lb_authors msgid "Authors" msgstr "Autores/as" #: about_window_lb_author msgid "Author" msgstr "Autor/a" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Actividad" #: help_window_close_button msgid "Return to activity" msgstr "Volver a la actividad" #: help_window_caption msgid "Help window" msgstr "Ventana de ayuda" #: action_about_caption msgid "Reports" msgstr "Informes" #: action_about_keys msgid "RR" msgstr "II" #: action_audio_keys msgid "SS" msgstr "OS" #: action_help_keys msgid "HH" msgstr "YY" #: action_info_keys msgid "II" msgstr "NN" #: action_next_keys msgid "N*" msgstr "S*" #: action_prev_keys msgid "P*" msgstr "A*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Instaladores de proyectos JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "No hay ningún usuario definido en la base de datos de informes." #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "No hay ningún usuario definido para este grupo en la base de datos de " "informes!" #: report_new_user msgid "New user..." msgstr "Nuevo usuario..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Crear un nuevo usuario en la base de datos de informes" #: report_err_creating_user msgid "Error creating new user!" msgstr "¡Error al crear el nuevo usuario!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificación de usuario para la base de datos de informes" #: report_userlist_title msgid "Please select your name:" msgstr "Seleccione su nombre:" #: report_ident_user msgid "User identification" msgstr "Identificación de usuario" #: report_name_prompt msgid "Name:" msgstr "Nombre:" #: report_id_prompt msgid "Login:" msgstr "Identificador:" #: report_pw_prompt msgid "Password:" msgstr "Contraseña:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmar contraseña:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Creación de un nuevo usuario:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Datos incorrectos!" #: report_generic_group_name msgid "Generic" msgstr "Genérico" #: report_new_group msgid "Create a new group..." msgstr "Crear un nuevo grupo..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "¡Error al crear el nuevo grupo!" #: report_grouplist_title msgid "Please select your group:" msgstr "Seleccione su grupo:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Creación de un nuevo grupo de usuarios:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Usuario inexistente o contraseña incorrecta." #: report_user_has_pwd msgid "This account is password-protected." msgstr "La cuenta de este usuario está protegida por contraseña:" #: report_err_init msgid "Error initializing report system." msgstr "Error al inicializar el sistema de informes." #: report_not_connected msgid "not connected" msgstr "no conectado" #: report_err_creating msgid "Error creating reports agent" msgstr "Error al crear el agente de informes" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Volver" #: action_return_tooltip msgid "Return to the last menu" msgstr "Volver al último menú" #: action_return_keys msgid "T*" msgstr "V*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sonidos (*.wav, *.mp3, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Archivos MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Archivos Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Entornos visuales (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Todos los recursos" #: filesystem_copyToRoot_1 msgid "The file" msgstr "El archivo" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "se encuentra en una carpeta distinta a la del proyecto actual." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Se recomienda tener todos los archivos en la misma carpeta." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "¿Desea copiar el archivo seleccionado a la carpeta del proyecto?" #: filesystem_copyFile msgid "Copying file" msgstr "Copiando el archivo" #: msg_loading msgid "Loading" msgstr "Cargando" #: report_err_bad_id msgid "Bad identifier!" msgstr "¡Identificador incorrecto!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "¡Este identificador ya existe en la base de datos!" #: report_err_bad_name msgid "Bad name!" msgstr "¡Nombre incorrecto!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "¡Las contraseñas no coinciden!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "¡Error al conectar con la base de datos de informes!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "EXIT: En este punto el programa se cerraría." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "En este punto se produciría un salto al proyecto:" #: ftype_image msgid "Image" msgstr "Imagen" #: ftype_audio msgid "Digital audio" msgstr "Sonido digital" #: ftype_midi msgid "MIDI file" msgstr "Archivo MIDI" #: ftype_xml msgid "XML file" msgstr "Archivo XML" #: ftype_anim msgid "Animation" msgstr "Animación" #: ftype_video msgid "Digital video" msgstr "Video digital" #: ftype_font msgid "TrueType font" msgstr "Tipo de letra TrueType" #: ftype_jclic msgid "JClic project" msgstr "Proyecto JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script de instalación de proyectos JClic" #: ftype_unknown msgid "Unknown" msgstr "Desconocido" #: ftype_animated msgid "animated" msgstr "animada" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Tipos de letra (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "R#38" #: editor_moveDown_keys msgid "W#40" msgstr "B#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documentos HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_es.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_es.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Con el soporte de:" #: about_window_systemInfo msgid "System information" msgstr "Información del sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Información del proyecto actual" #: about_window_reportInfo msgid "Current session results" msgstr "Resultados de la sesión actual" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Este producto incluye software desarrollado por:" #: msg_saving_project msgid "Saving project..." msgstr "Guardando el proyecto..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Archivos de texto (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Versión en español, por el Equipo Clic" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Este programa es software libre; usted puede redistribuirlo y/o modificarlo " "bajo los términos de la Licencia Pública General GNU (GPL), " "tal y como está publicada por la Free Software Foundation; ya sea la " "versión 2 de la Licencia, o (a su elección) cualquier " "versión posterior.
 
Este programa se distribuye con la " "intención de ser útil, pero SIN NINGUNA GARANTÍA; " "incluso sin la garantía implícita de USABILIDAD O UTILIDAD " "PARA UN FIN PARTICULAR. Vea la Licencia Pública " "General GNU para más detalles." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_pt.po0000644000175000017500000004220111377161311022324 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2010-01-17 17:13+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tempo" #: label_actions msgid "tries" msgstr "tentativas" #: label_score msgid "score" msgstr "acertos" #: Skin msgid "Skin" msgstr "Aspecto" #: action_next_caption msgid "Next" msgstr "Seguinte" #: action_next_tooltip msgid "Next activity" msgstr "Actividade seguinte" #: action_prev_caption msgid "Previous" msgstr "Anterior" #: action_prev_tooltip msgid "Previous activity" msgstr "Actividade anterior" #: action_reset_caption msgid "Restart" msgstr "Reiniciar" #: action_reset_tooltip msgid "Restart activity" msgstr "Reiniciar a actividade" #: action_info_caption msgid "Information" msgstr "Informação" #: about_window_lb_project msgid "Project" msgstr "Projecto" #: about_window_lb_languages msgid "languages" msgstr "Idiomas" #: about_window_lb_language msgid "language" msgstr "Idioma" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Voltar" #: about_window_caption msgid "About" msgstr "Sobre..." #: action_about_tooltip msgid "User reports" msgstr "Relatórios do utilizador" #: about_window_lb_report msgid "Report" msgstr "Relatórios" #: about_window_browser_button msgid "View in browser" msgstr "Ver no navegador" #: report_no_activities msgid "No activities reported!" msgstr "Nenhuma actividade registada!" #: report_system_standard msgid "Report not registered in any DB" msgstr "O relatório não está registado em nenhuma base de dados" #: report_lb_time msgid "Time" msgstr "Tempo" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Erro ao carregar a sequência" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Erro ao iniciar QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_pt.html" #: filesystem_openURL msgid "Open URL..." msgstr "Abrir URL..." #: filesystem_openFile msgid "Open file..." msgstr "Abrir ficheiro..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Escreva URL do recurso a que deseja aceder" #: msg_error_executing_external msgid "Error executing the command:" msgstr "Erro ao executar o comando:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Mover para baixo o elemento seleccionado" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mover para cima o elemento seleccionado" #: editor_moveDown msgid "Move down" msgstr "Mover para baixo" #: editor_moveUp msgid "Move up" msgstr "Mover para cima" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Imagens (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "Imagens PNG" #: filefilter_jpg msgid "JPG images" msgstr "Imagens JPG" #: filefilter_gif msgid "GIF images" msgstr "Imagens GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Ficheiros de URL só de leitura." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Pacotes Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Todos os ficheiros" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Projectos JClic e Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Projectos JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Pacotes compactos Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Pacotes abertos Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Projectos JClic comprimidos (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Projectos JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimédia" #: about_window_lb_level msgid "Level" msgstr "Nível" #: about_window_lb_area msgid "Area" msgstr "Área" #: report_num_actions msgid "Actions done:" msgstr "Acções efectuadas:" #: report_project msgid "Project:" msgstr "Projecto:" #: report_lb_totals msgid "Total:" msgstr "Total:" #: report_num_projects msgid "Projects:" msgstr "Projectos:" #: report_session msgid "Session:" msgstr "Sessão:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Por razões de segurança, a execução de programas externos está desactivada " "nos applets JClic" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Erro ao iniciar a actividade!" #: msg_error_loading_project msgid "Error loading project" msgstr "Erro ao carregar o projecto" #: msg_error_playing_media msgid "Error playing media!" msgstr "Erro do recurso multimédia!" #: msg_activity_finished msgid "Activity finished!" msgstr "Actividade terminada!" #: msg_playing_media msgid "Playing media" msgstr "Multimédia em execução" #: msg_activity_running msgid "Activity running" msgstr "Actividade em execução" #: msg_activity_ready msgid "Activity ready" msgstr "Actividade preparada" #: msg_initializing msgid "Initializing..." msgstr "A iniciar..." #: msg_preparing_media msgid "Preparing media" msgstr "A preparar multimédia" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Erro ao carregar a actividade" #: msg_loading_activity msgid "Loading activity" msgstr "A carregar actividade" #: msg_loading_project msgid "Loading project..." msgstr "A carregar projecto..." #: msg_ready msgid "Ready" msgstr "Pronto" #: err_reading_data msgid "Error loading file" msgstr "Erro ao carregar ficheiro" #: err_file_save msgid "Error saving file!" msgstr "Erro ao guardar o ficheiro!" #: err_file_open msgid "Error opening file!" msgstr "Erro ao abrir o ficheiro!" #: report_started msgid "Session started:" msgstr "Início da sessão:" #: report_lb_score msgid "Score" msgstr "Pontuação" #: report_lb_actions msgid "Actions" msgstr "Acções" #: report_lb_solved msgid "Ok" msgstr "Correcta" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Actividade" #: report_lb_sequence msgid "Sequence" msgstr "Sequência" #: report_global_score msgid "Global score:" msgstr "Pontuação global:" #: report_total_time msgid "Total time on activities:" msgstr "Tempo total das actividades:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Actividades correctas:" #: report_num_activities msgid "Activities done:" msgstr "Actividades realizadas:" #: report_num_sequences msgid "Sequences:" msgstr "Sequências:" #: report_system msgid "Report system:" msgstr "Sistema de relatórios:" #: report_user msgid "User:" msgstr "Utilizador:" #: report_not_finished msgid "Activity not finished" msgstr "Actividade não concluída" #: action_info_tooltip msgid "Additional information" msgstr "Informação adicional" #: action_help_caption msgid "Help" msgstr "Ajuda" #: action_help_tooltip msgid "Help about this activity" msgstr "Ajuda sobre a actividade" #: action_audio_caption msgid "Sounds" msgstr "Sons" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Activar/desactivar sons" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memória total" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memória livre" #: about_window_lb_java_home msgid "Java home" msgstr "Página do Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Máquina virtual Java" #: about_window_lb_java_version msgid "Java version" msgstr "Versão Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operativo" #: about_window_lb_version msgid "Version" msgstr "Versão" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descritores" #: about_window_lb_description msgid "Description" msgstr "Descrição" #: about_window_lb_history msgid "History" msgstr "Histórico" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizações" #: about_window_lb_organization msgid "Organization" msgstr "Organização" #: about_window_lb_authors msgid "Authors" msgstr "Autores/as" #: about_window_lb_author msgid "Author" msgstr "Autor/a" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Actividade" #: help_window_close_button msgid "Return to activity" msgstr "Voltar à actividade" #: help_window_caption msgid "Help window" msgstr "Janela de ajuda" #: action_about_caption msgid "Reports" msgstr "Relatórios" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "OS" #: action_help_keys msgid "HH" msgstr "YY" #: action_info_keys msgid "II" msgstr "NN" #: action_next_keys msgid "N*" msgstr "S*" #: action_prev_keys msgid "P*" msgstr "A*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Instaladores de projectos JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Nenhum utilizador definido na base de dados de relatórios!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Nenhum utilizador definido para este grupo na base de dados de relatórios!" #: report_new_user msgid "New user..." msgstr "Novo utilizador..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Criar um novo utilizador na base de dados de relatórios!" #: report_err_creating_user msgid "Error creating new user!" msgstr "Erro ao criar um novo utilizador!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificação de utilizador para base de dados de relatórios" #: report_userlist_title msgid "Please select your name:" msgstr "Seleccione seu nome:" #: report_ident_user msgid "User identification" msgstr "Identificação de utilizador" #: report_name_prompt msgid "Name:" msgstr "Nome:" #: report_id_prompt msgid "Login:" msgstr "Nome de Utilizador:" #: report_pw_prompt msgid "Password:" msgstr "Palavra-passe:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmar palavra-chave:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Criação de novo utilizador:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Dados incorrectos!" #: report_generic_group_name msgid "Generic" msgstr "Genérico" #: report_new_group msgid "Create a new group..." msgstr "Criar un novo grupo..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Erro ao criar o novo grupo!" #: report_grouplist_title msgid "Please select your group:" msgstr "Seleccione grupo:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Criação de novo grupo de utilizadores:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Utilizador inexistente ou palavra-passe incorrecta." #: report_user_has_pwd msgid "This account is password-protected." msgstr "A conta deste utilizador está protegida por palavra-chave:" #: report_err_init msgid "Error initializing report system." msgstr "Erro ao iniciar o sistema de relatórios." #: report_not_connected msgid "not connected" msgstr "não conectado" #: report_err_creating msgid "Error creating reports agent" msgstr "Erro ao criar o agente de relatórios" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Voltar" #: action_return_tooltip msgid "Return to the last menu" msgstr "Voltar ao último menu" #: action_return_keys msgid "T*" msgstr "V*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sons (*.wav, *.mp3, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Ficheiros MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Ficheiros Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Ambientes visuais (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Todos os ficheiros multimédia" #: filesystem_copyToRoot_1 msgid "The file" msgstr "O ficheiro" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "não se encontra na pasta do projecto actual." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Recomenda-se ter todos os ficheiros na mesma pasta." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Deseja copiar o ficheiro seleccionado para a pasta do projecto?" #: filesystem_copyFile msgid "Copying file" msgstr "A copiar o ficheiro" #: msg_loading msgid "Loading" msgstr "A carregar" #: report_err_bad_id msgid "Bad identifier!" msgstr "Identificador incorrecto!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Este identificador já existe na base de dados!" #: report_err_bad_name msgid "Bad name!" msgstr "Nome incorrecto!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "As palavras-chave não coincidem!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Erro ao ligar à base de dados de relatórios!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "SAIR: O programa vai ser encerrado." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "O programa vai ligar-se a outro projecto:" #: ftype_image msgid "Image" msgstr "Imagem" #: ftype_audio msgid "Digital audio" msgstr "Som digital" #: ftype_midi msgid "MIDI file" msgstr "Ficheiro MIDI" #: ftype_xml msgid "XML file" msgstr "Ficheiro XML" #: ftype_anim msgid "Animation" msgstr "Animação" #: ftype_video msgid "Digital video" msgstr "Vídeo digital" #: ftype_font msgid "TrueType font" msgstr "Tipo de letra TrueType" #: ftype_jclic msgid "JClic project" msgstr "Projecto JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script de instalação de projectos JClic" #: ftype_unknown msgid "Unknown" msgstr "Desconhecido" #: ftype_animated msgid "animated" msgstr "animada" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Tipos de letra (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "R#38" #: editor_moveDown_keys msgid "W#40" msgstr "B#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documentos HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "Sobre/Créditos_pt.html" #: about_licenseDoc msgid "about/license.html" msgstr "Sobre/Licença_pt.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Com o suporte de:" #: about_window_systemInfo msgid "System information" msgstr "Informações do sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Informação sobre projecto actual" #: about_window_reportInfo msgid "Current session results" msgstr "Resultados da sessão actual" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Este produto inclui software desenvolvido por:" #: msg_saving_project msgid "Saving project..." msgstr "A guardar projecto..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Ficheiros de texto (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Revisão do português por Rui Fernandes" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Este programa é software livre (\"free software\"); você pode redistribui-lo " "e/ou modificá-lo de acordo com os termos da Licença Pública Geral GNU como " "publicada pela Free Software Foundation; tanto segundo a versão 2 dessa " "licença quanto (por sua opção) por uma versão posterior.
 
Este " "programa é distribuído na expectativa de ser útil, mas SEM QUALQUER " "GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO " "A QUALQUER PROPÓSITO EM PARTICULAR. Consulte GNU General Public License para obter " "mais detalhes." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_he.po0000644000175000017500000004045311377161311022304 0ustar # Hebrew translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-07-29 19:34+0000\n" "Last-Translator: Amir Elion \n" "Language-Team: Hebrew \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "זמן" #: label_actions msgid "tries" msgstr "נסיונות" #: label_score msgid "score" msgstr "ניקוד" #: Skin msgid "Skin" msgstr "מעטפת" #: action_next_caption msgid "Next" msgstr "הבא" #: action_next_tooltip msgid "Next activity" msgstr "הפעילות הבאה" #: action_prev_caption msgid "Previous" msgstr "הקודם" #: action_prev_tooltip msgid "Previous activity" msgstr "הפעילות הקודמת" #: action_reset_caption msgid "Restart" msgstr "התחל מחדש" #: action_reset_tooltip msgid "Restart activity" msgstr "התחל פעילות מחדש" #: action_info_caption msgid "Information" msgstr "מידע" #: about_window_lb_project msgid "Project" msgstr "פרוייקט" #: about_window_lb_languages msgid "languages" msgstr "שפות" #: about_window_lb_language msgid "language" msgstr "שפה" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "" #: about_window_caption msgid "About" msgstr "אודות" #: action_about_tooltip msgid "User reports" msgstr "דוחות משתמש" #: about_window_lb_report msgid "Report" msgstr "דוח" #: about_window_browser_button msgid "View in browser" msgstr "הצג בדפדפן" #: report_no_activities msgid "No activities reported!" msgstr "לא דווחו פעילויות!" #: report_system_standard msgid "Report not registered in any DB" msgstr "הדיווח אינו רשום במסד נתונים כלשהו" #: report_lb_time msgid "Time" msgstr "שעה" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "שגיאה בטעינת הרצף" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "שגיאה בהפעלת QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "פתח קישור..." #: filesystem_openFile msgid "Open file..." msgstr "פתח קובץ..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "נא הזן את כתובת המשאב לטעינה" #: msg_error_executing_external msgid "Error executing the command:" msgstr "שגיאה בהפעלת הפקודה:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "העבר את הרכיב הנבחר מטה" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "העבר את הרכיב הנבחר מעלה" #: editor_moveDown msgid "Move down" msgstr "העבר מטה" #: editor_moveUp msgid "Move up" msgstr "העבר מעלה" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "קבצי תמונה (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "תמונות PNG" #: filefilter_jpg msgid "JPG images" msgstr "תמונות JPG" #: filefilter_gif msgid "GIF images" msgstr "תמונות GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "קבצים מבוססי כתובת הינם לקריאה בלבד." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "חבילות Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "כל הקבצים" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "פרוייקטים של JClic ו-Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "פרוייקטים של JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "חבילות חסכוניות של Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "חבילות פתוחות של Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "חבילות דחוסות של JClic (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "פרוייקטים של JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "מערכת מולטימדיה" #: about_window_lb_level msgid "Level" msgstr "רמה" #: about_window_lb_area msgid "Area" msgstr "אזור" #: report_num_actions msgid "Actions done:" msgstr "פעולות שבוצעו:" #: report_project msgid "Project:" msgstr "פרוייקט:" #: report_lb_totals msgid "Total:" msgstr "סך הכל:" #: report_num_projects msgid "Projects:" msgstr "פרוייקטים:" #: report_session msgid "Session:" msgstr "הפעלה:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "מטעמי בטיחות, הפעלת תוכנות חיצוניות מבוטלת ביישומוני JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "שגיאה בהתחלת הפעילות!" #: msg_error_loading_project msgid "Error loading project" msgstr "שגיאה בטעינת הפרוייקט" #: msg_error_playing_media msgid "Error playing media!" msgstr "שגיאה בנגינת המדיה!" #: msg_activity_finished msgid "Activity finished!" msgstr "הפעילות הסתיימה!" #: msg_playing_media msgid "Playing media" msgstr "מנגן מדיה" #: msg_activity_running msgid "Activity running" msgstr "פעילות שרצה" #: msg_activity_ready msgid "Activity ready" msgstr "פעילות מוכנה" #: msg_initializing msgid "Initializing..." msgstr "מתחיל..." #: msg_preparing_media msgid "Preparing media" msgstr "מכין את המדיה" #: msg_error_loading_activity msgid "Error loading activity" msgstr "שגיאה בטעינת הפעילות" #: msg_loading_activity msgid "Loading activity" msgstr "טוען פעילות" #: msg_loading_project msgid "Loading project..." msgstr "טוען פרוייקט..." #: msg_ready msgid "Ready" msgstr "מוכן" #: err_reading_data msgid "Error loading file" msgstr "שגיאה בטעינת קובץ" #: err_file_save msgid "Error saving file!" msgstr "שגיאה בשמירת קובץ!" #: err_file_open msgid "Error opening file!" msgstr "שגיאה בפתיחת קובץ!" #: report_started msgid "Session started:" msgstr "הפעלה החלה:" #: report_lb_score msgid "Score" msgstr "ניקוד" #: report_lb_actions msgid "Actions" msgstr "פעולות" #: report_lb_solved msgid "Ok" msgstr "אישור" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "פעילות" #: report_lb_sequence msgid "Sequence" msgstr "רצף" #: report_global_score msgid "Global score:" msgstr "ניקוד כללי:" #: report_total_time msgid "Total time on activities:" msgstr "משך הפעילויות המצטבר:" #: report_num_activities_solved msgid "Activities ok:" msgstr "פעילויות מאושרות:" #: report_num_activities msgid "Activities done:" msgstr "פעילויות שהושלמו:" #: report_num_sequences msgid "Sequences:" msgstr "רצפים:" #: report_system msgid "Report system:" msgstr "מערכת דוחות:" #: report_user msgid "User:" msgstr "משתמש:" #: report_not_finished msgid "Activity not finished" msgstr "פעילות לא הסתיימה" #: action_info_tooltip msgid "Additional information" msgstr "מידע נוסף" #: action_help_caption msgid "Help" msgstr "עזרה" #: action_help_tooltip msgid "Help about this activity" msgstr "עזרה על פעילות זו" #: action_audio_caption msgid "Sounds" msgstr "צלילים" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "הפעל/בטל צלילים" #: about_window_lb_system msgid "System" msgstr "מערכת" #: about_window_lb_total_mem msgid "Total memory" msgstr "זכרון כולל" #: about_window_lb_free_mem msgid "Free memory" msgstr "זכרון פנוי" #: about_window_lb_java_home msgid "Java home" msgstr "עמוד הבית של ג'אווה" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "סביבת ג'אווה וירטאולית" #: about_window_lb_java_version msgid "Java version" msgstr "גירסת הג'אווה" #: about_window_lb_os msgid "Operating system" msgstr "מערכת הפעלה" #: about_window_lb_version msgid "Version" msgstr "גירסה" #: about_window_lb_descriptors msgid "Descriptors" msgstr "המתארים" #: about_window_lb_description msgid "Description" msgstr "תיאור" #: about_window_lb_history msgid "History" msgstr "היסטוריה" #: about_window_lb_organizations msgid "Organizations" msgstr "ארגונים" #: about_window_lb_organization msgid "Organization" msgstr "ארגון" #: about_window_lb_authors msgid "Authors" msgstr "מחברים" #: about_window_lb_author msgid "Author" msgstr "מחבר" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "פעילות" #: help_window_close_button msgid "Return to activity" msgstr "חזור לפעילות" #: help_window_caption msgid "Help window" msgstr "חלון עזרה" #: action_about_caption msgid "Reports" msgstr "דוחות" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "חבילות התקנת פרוייקט JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "אין משתמשים שהוגדרו בבסיס נתוני הדוחות!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "אין משתמשים שהוגדרו בקבוצה זו של בסיס נתוני הדוחות!" #: report_new_user msgid "New user..." msgstr "משתמש חדש..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "צור משתמש חדש בבסיס נתוני הדוחות" #: report_err_creating_user msgid "Error creating new user!" msgstr "תקלה ביצירת משתמש חדש!" #: report_select_user msgid "User identification for the reports database" msgstr "זיהוי משתמש לבסיס נתוני הדוחות" #: report_userlist_title msgid "Please select your name:" msgstr "אנא בחר את שמך:" #: report_ident_user msgid "User identification" msgstr "זיהוי משתמש" #: report_name_prompt msgid "Name:" msgstr "שם:" #: report_id_prompt msgid "Login:" msgstr "התחבר:" #: report_pw_prompt msgid "Password:" msgstr "סיסמא:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "אימות סיסמא:" #: report_new_user_data msgid "Creation of a new user:" msgstr "יצירת משתמש חדש:" #: report_err_bad_data msgid "Incorrect data!" msgstr "נתונים שגויים!" #: report_generic_group_name msgid "Generic" msgstr "כללי" #: report_new_group msgid "Create a new group..." msgstr "צור קבוצה חדשה..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "תקלה ביצירת קבוצה חדשה!" #: report_grouplist_title msgid "Please select your group:" msgstr "אנא בחר את הקבוצה שלך:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "יצירת קבוצת משתמשים חדשה:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "חסר קוד משתמש או סיסמא לא נכונה." #: report_user_has_pwd msgid "This account is password-protected." msgstr "חשבון זה מוגן על ידי סיסמא." #: report_err_init msgid "Error initializing report system." msgstr "תקלה באתחול מערכת הדוחות." #: report_not_connected msgid "not connected" msgstr "לא מחובר" #: report_err_creating msgid "Error creating reports agent" msgstr "" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "חזור" #: action_return_tooltip msgid "Return to the last menu" msgstr "חזור לתפריט האחרון" #: action_return_keys msgid "T*" msgstr "" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "צלילים (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "קבצי MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "קבצי וידאו (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "קבצי Flash (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "" #: filefilter_all_media msgid "All media files" msgstr "" #: filesystem_copyToRoot_1 msgid "The file" msgstr "" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" #: filesystem_copyFile msgid "Copying file" msgstr "" #: msg_loading msgid "Loading" msgstr "" #: report_err_bad_id msgid "Bad identifier!" msgstr "" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "" #: report_err_bad_name msgid "Bad name!" msgstr "" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "" #: ftype_image msgid "Image" msgstr "" #: ftype_audio msgid "Digital audio" msgstr "" #: ftype_midi msgid "MIDI file" msgstr "" #: ftype_xml msgid "XML file" msgstr "" #: ftype_anim msgid "Animation" msgstr "" #: ftype_video msgid "Digital video" msgstr "" #: ftype_font msgid "TrueType font" msgstr "" #: ftype_jclic msgid "JClic project" msgstr "" #: ftype_inst msgid "JClic project installer script" msgstr "" #: ftype_unknown msgid "Unknown" msgstr "" #: ftype_animated msgid "animated" msgstr "" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "" #: editor_moveUp_keys msgid "U#38" msgstr "" #: editor_moveDown_keys msgid "W#40" msgstr "" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "" #: about_creditsDoc msgid "about/credits.html" msgstr "" #: about_licenseDoc msgid "about/license.html" msgstr "" #: about_sponsorsCaption msgid "With the support of:" msgstr "" #: about_window_systemInfo msgid "System information" msgstr "" #: about_window_projectInfo msgid "Current project info" msgstr "" #: about_window_reportInfo msgid "Current session results" msgstr "" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "" #: msg_saving_project msgid "Saving project..." msgstr "" #: filefilter_text msgid "Text files (*.txt)" msgstr "" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_wo.po0000644000175000017500000003136411377161311022336 0ustar # Wolof translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2008-06-05 17:45+0000\n" "Last-Translator: FULL NAME \n" "Language-Team: Wolof \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "" #: label_actions msgid "tries" msgstr "" #: label_score msgid "score" msgstr "" #: Skin msgid "Skin" msgstr "" #: action_next_caption msgid "Next" msgstr "" #: action_next_tooltip msgid "Next activity" msgstr "" #: action_prev_caption msgid "Previous" msgstr "" #: action_prev_tooltip msgid "Previous activity" msgstr "" #: action_reset_caption msgid "Restart" msgstr "" #: action_reset_tooltip msgid "Restart activity" msgstr "" #: action_info_caption msgid "Information" msgstr "" #: about_window_lb_project msgid "Project" msgstr "" #: about_window_lb_languages msgid "languages" msgstr "" #: about_window_lb_language msgid "language" msgstr "" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "" #: about_window_caption msgid "About" msgstr "" #: action_about_tooltip msgid "User reports" msgstr "" #: about_window_lb_report msgid "Report" msgstr "" #: about_window_browser_button msgid "View in browser" msgstr "" #: report_no_activities msgid "No activities reported!" msgstr "" #: report_system_standard msgid "Report not registered in any DB" msgstr "" #: report_lb_time msgid "Time" msgstr "" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "" #: media_check_url msgid "messages/checkmedia.html" msgstr "" #: filesystem_openURL msgid "Open URL..." msgstr "" #: filesystem_openFile msgid "Open file..." msgstr "" #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "" #: msg_error_executing_external msgid "Error executing the command:" msgstr "" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "" #: editor_moveDown msgid "Move down" msgstr "" #: editor_moveUp msgid "Move up" msgstr "" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "" #: filefilter_png msgid "PNG images" msgstr "" #: filefilter_jpg msgid "JPG images" msgstr "" #: filefilter_gif msgid "GIF images" msgstr "" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "" #: filefilter_all msgid "All files" msgstr "" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "" #: about_window_lb_level msgid "Level" msgstr "" #: about_window_lb_area msgid "Area" msgstr "" #: report_num_actions msgid "Actions done:" msgstr "" #: report_project msgid "Project:" msgstr "" #: report_lb_totals msgid "Total:" msgstr "" #: report_num_projects msgid "Projects:" msgstr "" #: report_session msgid "Session:" msgstr "" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "" #: msg_error_loading_project msgid "Error loading project" msgstr "" #: msg_error_playing_media msgid "Error playing media!" msgstr "" #: msg_activity_finished msgid "Activity finished!" msgstr "" #: msg_playing_media msgid "Playing media" msgstr "" #: msg_activity_running msgid "Activity running" msgstr "" #: msg_activity_ready msgid "Activity ready" msgstr "" #: msg_initializing msgid "Initializing..." msgstr "" #: msg_preparing_media msgid "Preparing media" msgstr "" #: msg_error_loading_activity msgid "Error loading activity" msgstr "" #: msg_loading_activity msgid "Loading activity" msgstr "" #: msg_loading_project msgid "Loading project..." msgstr "" #: msg_ready msgid "Ready" msgstr "" #: err_reading_data msgid "Error loading file" msgstr "" #: err_file_save msgid "Error saving file!" msgstr "" #: err_file_open msgid "Error opening file!" msgstr "" #: report_started msgid "Session started:" msgstr "" #: report_lb_score msgid "Score" msgstr "" #: report_lb_actions msgid "Actions" msgstr "" #: report_lb_solved msgid "Ok" msgstr "" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "" #: report_lb_sequence msgid "Sequence" msgstr "" #: report_global_score msgid "Global score:" msgstr "" #: report_total_time msgid "Total time on activities:" msgstr "" #: report_num_activities_solved msgid "Activities ok:" msgstr "" #: report_num_activities msgid "Activities done:" msgstr "" #: report_num_sequences msgid "Sequences:" msgstr "" #: report_system msgid "Report system:" msgstr "" #: report_user msgid "User:" msgstr "" #: report_not_finished msgid "Activity not finished" msgstr "" #: action_info_tooltip msgid "Additional information" msgstr "" #: action_help_caption msgid "Help" msgstr "" #: action_help_tooltip msgid "Help about this activity" msgstr "" #: action_audio_caption msgid "Sounds" msgstr "" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "" #: about_window_lb_system msgid "System" msgstr "" #: about_window_lb_total_mem msgid "Total memory" msgstr "" #: about_window_lb_free_mem msgid "Free memory" msgstr "" #: about_window_lb_java_home msgid "Java home" msgstr "" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "" #: about_window_lb_java_version msgid "Java version" msgstr "" #: about_window_lb_os msgid "Operating system" msgstr "" #: about_window_lb_version msgid "Version" msgstr "" #: about_window_lb_descriptors msgid "Descriptors" msgstr "" #: about_window_lb_description msgid "Description" msgstr "" #: about_window_lb_history msgid "History" msgstr "" #: about_window_lb_organizations msgid "Organizations" msgstr "" #: about_window_lb_organization msgid "Organization" msgstr "" #: about_window_lb_authors msgid "Authors" msgstr "" #: about_window_lb_author msgid "Author" msgstr "" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "" #: help_window_close_button msgid "Return to activity" msgstr "" #: help_window_caption msgid "Help window" msgstr "" #: action_about_caption msgid "Reports" msgstr "" #: action_about_keys msgid "RR" msgstr "" #: action_audio_keys msgid "SS" msgstr "" #: action_help_keys msgid "HH" msgstr "" #: action_info_keys msgid "II" msgstr "" #: action_next_keys msgid "N*" msgstr "" #: action_prev_keys msgid "P*" msgstr "" #: action_reset_keys msgid "R*" msgstr "" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" #: report_new_user msgid "New user..." msgstr "" #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "" #: report_err_creating_user msgid "Error creating new user!" msgstr "" #: report_select_user msgid "User identification for the reports database" msgstr "" #: report_userlist_title msgid "Please select your name:" msgstr "" #: report_ident_user msgid "User identification" msgstr "" #: report_name_prompt msgid "Name:" msgstr "" #: report_id_prompt msgid "Login:" msgstr "" #: report_pw_prompt msgid "Password:" msgstr "" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "" #: report_new_user_data msgid "Creation of a new user:" msgstr "" #: report_err_bad_data msgid "Incorrect data!" msgstr "" #: report_generic_group_name msgid "Generic" msgstr "" #: report_new_group msgid "Create a new group..." msgstr "" #: report_err_creating_group msgid "Error creating the new group!" msgstr "" #: report_grouplist_title msgid "Please select your group:" msgstr "" #: report_new_group_data msgid "Creation of a new users group:" msgstr "" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "" #: report_user_has_pwd msgid "This account is password-protected." msgstr "" #: report_err_init msgid "Error initializing report system." msgstr "" #: report_not_connected msgid "not connected" msgstr "" #: report_err_creating msgid "Error creating reports agent" msgstr "" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "" #: action_return_tooltip msgid "Return to the last menu" msgstr "" #: action_return_keys msgid "T*" msgstr "" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "" #: filefilter_skins msgid "Skins (*.xml)" msgstr "" #: filefilter_all_media msgid "All media files" msgstr "" #: filesystem_copyToRoot_1 msgid "The file" msgstr "" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" #: filesystem_copyFile msgid "Copying file" msgstr "" #: msg_loading msgid "Loading" msgstr "" #: report_err_bad_id msgid "Bad identifier!" msgstr "" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "" #: report_err_bad_name msgid "Bad name!" msgstr "" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "" #: ftype_image msgid "Image" msgstr "" #: ftype_audio msgid "Digital audio" msgstr "" #: ftype_midi msgid "MIDI file" msgstr "" #: ftype_xml msgid "XML file" msgstr "" #: ftype_anim msgid "Animation" msgstr "" #: ftype_video msgid "Digital video" msgstr "" #: ftype_font msgid "TrueType font" msgstr "" #: ftype_jclic msgid "JClic project" msgstr "" #: ftype_inst msgid "JClic project installer script" msgstr "" #: ftype_unknown msgid "Unknown" msgstr "" #: ftype_animated msgid "animated" msgstr "" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "" #: editor_moveUp_keys msgid "U#38" msgstr "" #: editor_moveDown_keys msgid "W#40" msgstr "" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "" #: about_creditsDoc msgid "about/credits.html" msgstr "" #: about_licenseDoc msgid "about/license.html" msgstr "" #: about_sponsorsCaption msgid "With the support of:" msgstr "" #: about_window_systemInfo msgid "System information" msgstr "" #: about_window_projectInfo msgid "Current project info" msgstr "" #: about_window_reportInfo msgid "Current session results" msgstr "" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "" #: msg_saving_project msgid "Saving project..." msgstr "" #: filefilter_text msgid "Text files (*.txt)" msgstr "" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_gl.po0000644000175000017500000004217511377161311022315 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-12-15 14:18+0000\n" "Last-Translator: Susana Sotelo Docío \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tempo" #: label_actions msgid "tries" msgstr "intentos" #: label_score msgid "score" msgstr "acertos" #: Skin msgid "Skin" msgstr "Aspecto" #: action_next_caption msgid "Next" msgstr "Seguinte" #: action_next_tooltip msgid "Next activity" msgstr "Seguinte actividade" #: action_prev_caption msgid "Previous" msgstr "Anterior" #: action_prev_tooltip msgid "Previous activity" msgstr "Actividade previa" #: action_reset_caption msgid "Restart" msgstr "Reiniciar" #: action_reset_tooltip msgid "Restart activity" msgstr "Reiniciar a actividade" #: action_info_caption msgid "Information" msgstr "Información" #: about_window_lb_project msgid "Project" msgstr "Proxecto" #: about_window_lb_languages msgid "languages" msgstr "Linguas" #: about_window_lb_language msgid "language" msgstr "Lingua" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Volver" #: about_window_caption msgid "About" msgstr "Acerca de" #: action_about_tooltip msgid "User reports" msgstr "Informes de usuario" #: about_window_lb_report msgid "Report" msgstr "Informe" #: about_window_browser_button msgid "View in browser" msgstr "Velo no navegador" #: report_no_activities msgid "No activities reported!" msgstr "Non hai ningunha actividade reportada!" #: report_system_standard msgid "Report not registered in any DB" msgstr "O informe non está rexistrado en ningunha base de datos" #: report_lb_time msgid "Time" msgstr "Tempo" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Erro ao cargar a secuencia" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Erro ao inicializar QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_gl.html" #: filesystem_openURL msgid "Open URL..." msgstr "Abrir URL..." #: filesystem_openFile msgid "Open file..." msgstr "Abrir arquivo..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Escriba a URL do recurso ao que desexa acceder." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Erro ao executar o comando:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Mover o elemento seleccionado cara abaixo" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mover o elemento seleccionado cara arriba" #: editor_moveDown msgid "Move down" msgstr "Mover cara abaixo" #: editor_moveUp msgid "Move up" msgstr "Mover cara arriba" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Imaxes (*.gif, *.jpg, *.png)" #: filefilter_png msgid "PNG images" msgstr "Imaxes PNG" #: filefilter_jpg msgid "JPG images" msgstr "Imaxes JPG" #: filefilter_gif msgid "GIF images" msgstr "Imaxes GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Os arquivos baseados nunha URL son de só lectura." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Paquetes Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Todos os arquivos" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Proxectos JClic e Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Proxectos JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Paquetes compactos Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Paquetes abertos Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Proxectos JClic comprimidos (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Proxectos JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimedia" #: about_window_lb_level msgid "Level" msgstr "Nivel" #: about_window_lb_area msgid "Area" msgstr "Área" #: report_num_actions msgid "Actions done:" msgstr "Accións efectuadas:" #: report_project msgid "Project:" msgstr "Proxecto:" #: report_lb_totals msgid "Total:" msgstr "Total:" #: report_num_projects msgid "Projects:" msgstr "Proxectos:" #: report_session msgid "Session:" msgstr "Sesión:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Por razóns de seguridade a invocación a programas externos está " "deshabilitada nos applets JClic" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Erro ao iniciar a actividade!" #: msg_error_loading_project msgid "Error loading project" msgstr "Erro ao cargar o proxecto" #: msg_error_playing_media msgid "Error playing media!" msgstr "Erro do recurso multimedia!" #: msg_activity_finished msgid "Activity finished!" msgstr "Actividade rematada!" #: msg_playing_media msgid "Playing media" msgstr "Interpretando multimedia" #: msg_activity_running msgid "Activity running" msgstr "Actividade en marcha" #: msg_activity_ready msgid "Activity ready" msgstr "Actividade preparada" #: msg_initializing msgid "Initializing..." msgstr "A inicializar..." #: msg_preparing_media msgid "Preparing media" msgstr "Preparando multimedia" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Erro ao cargar a actividade" #: msg_loading_activity msgid "Loading activity" msgstr "Abrindo actividade" #: msg_loading_project msgid "Loading project..." msgstr "Abrindo proxecto..." #: msg_ready msgid "Ready" msgstr "Listo" #: err_reading_data msgid "Error loading file" msgstr "Erro ao ler o arquivo" #: err_file_save msgid "Error saving file!" msgstr "Erro ao gardar o arquivo!" #: err_file_open msgid "Error opening file!" msgstr "Erro ao abrir o arquivo!" #: report_started msgid "Session started:" msgstr "Inicio de sesión:" #: report_lb_score msgid "Score" msgstr "Puntuación" #: report_lb_actions msgid "Actions" msgstr "Accións" #: report_lb_solved msgid "Ok" msgstr "Correcta" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Actividade" #: report_lb_sequence msgid "Sequence" msgstr "Secuencia" #: report_global_score msgid "Global score:" msgstr "Puntuación global:" #: report_total_time msgid "Total time on activities:" msgstr "Tempo total nas actividades:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Actividades correctas:" #: report_num_activities msgid "Activities done:" msgstr "Actividades realizadas:" #: report_num_sequences msgid "Sequences:" msgstr "Secuencias:" #: report_system msgid "Report system:" msgstr "Sistema de informes:" #: report_user msgid "User:" msgstr "Usuario:" #: report_not_finished msgid "Activity not finished" msgstr "Actividade aínda non rematada" #: action_info_tooltip msgid "Additional information" msgstr "Información adicional" #: action_help_caption msgid "Help" msgstr "Axuda" #: action_help_tooltip msgid "Help about this activity" msgstr "Axuda sobre a actividade" #: action_audio_caption msgid "Sounds" msgstr "Sons" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Activar/desactivar os sons" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memoria total" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memoria libre" #: about_window_lb_java_home msgid "Java home" msgstr "Situación de Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Máquina virtual Java" #: about_window_lb_java_version msgid "Java version" msgstr "Versión de Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operativo" #: about_window_lb_version msgid "Version" msgstr "Versión" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descritor" #: about_window_lb_description msgid "Description" msgstr "Descrición" #: about_window_lb_history msgid "History" msgstr "Revisións" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizacións" #: about_window_lb_organization msgid "Organization" msgstr "Organización" #: about_window_lb_authors msgid "Authors" msgstr "Autores/as" #: about_window_lb_author msgid "Author" msgstr "Autor/a" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Actividade" #: help_window_close_button msgid "Return to activity" msgstr "Volver á actividade" #: help_window_caption msgid "Help window" msgstr "Ventana de axuda" #: action_about_caption msgid "Reports" msgstr "Informes" #: action_about_keys msgid "RR" msgstr "II" #: action_audio_keys msgid "SS" msgstr "OS" #: action_help_keys msgid "HH" msgstr "YY" #: action_info_keys msgid "II" msgstr "NN" #: action_next_keys msgid "N*" msgstr "S*" #: action_prev_keys msgid "P*" msgstr "A*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Instaladores de proxectos JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Non hai ningún usuario definido na base de datos de informes." #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Non hai ningún usuario definido para este grupo na base de datos de informes!" #: report_new_user msgid "New user..." msgstr "Novo usuario..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Crear un novo usuario na base de datos de informes" #: report_err_creating_user msgid "Error creating new user!" msgstr "Erro ao crear o novo usuario!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificación de usuario para a base de datos de informes" #: report_userlist_title msgid "Please select your name:" msgstr "Seleccione o seu nome:" #: report_ident_user msgid "User identification" msgstr "Identificación de usuario" #: report_name_prompt msgid "Name:" msgstr "Nome:" #: report_id_prompt msgid "Login:" msgstr "Identificador:" #: report_pw_prompt msgid "Password:" msgstr "Sinal:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmar Sinal:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Creación dun novo usuario:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Datos incorrectos!" #: report_generic_group_name msgid "Generic" msgstr "Xenérico" #: report_new_group msgid "Create a new group..." msgstr "Crear un novo grupo..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Erro ao crear o novo grupo!" #: report_grouplist_title msgid "Please select your group:" msgstr "Seleccione o seu grupo:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Creación dun novo grupo de usuarios:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Usuario inexistente ou sinal incorrecto." #: report_user_has_pwd msgid "This account is password-protected." msgstr "A conta deste usuario está protexida por sinal:" #: report_err_init msgid "Error initializing report system." msgstr "Erro ao inicializar o sistema de informes." #: report_not_connected msgid "not connected" msgstr "non conectado" #: report_err_creating msgid "Error creating reports agent" msgstr "Erro ao crear o axente de informes" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Volver" #: action_return_tooltip msgid "Return to the last menu" msgstr "Volver ao último menú" #: action_return_keys msgid "T*" msgstr "V*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sons (*.wav, *.mp3, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Arquivos MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Vídeo (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Arquivos Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Entornos visuais (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Todos os recursos" #: filesystem_copyToRoot_1 msgid "The file" msgstr "O arquivo" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "áchase nun cartafol distinto ao do proxecto actual." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Recoméndase ter todos os arquivos no mesmo cartafol." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Desexa copiar o arquivo seleccionado ao cartafol do proxecto?" #: filesystem_copyFile msgid "Copying file" msgstr "Copiando o arquivo" #: msg_loading msgid "Loading" msgstr "Abrindo" #: report_err_bad_id msgid "Bad identifier!" msgstr "Identificador incorrecto!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Este identificador xa existe na base de datos!" #: report_err_bad_name msgid "Bad name!" msgstr "Nome incorrecto!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Os sinais non coinciden!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Erro ao conectar coa base de datos de informes!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "EXIT: Neste punto o programa cerraríase." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Neste punto produciríase un salto ao proxecto:" #: ftype_image msgid "Image" msgstr "Imaxe" #: ftype_audio msgid "Digital audio" msgstr "Son dixital" #: ftype_midi msgid "MIDI file" msgstr "Arquivo MIDI" #: ftype_xml msgid "XML file" msgstr "Arquivo XML" #: ftype_anim msgid "Animation" msgstr "Animación" #: ftype_video msgid "Digital video" msgstr "Vídeo dixital" #: ftype_font msgid "TrueType font" msgstr "Tipo de letra TrueType" #: ftype_jclic msgid "JClic project" msgstr "Proxecto JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script de instalación de proxectos JClic" #: ftype_unknown msgid "Unknown" msgstr "Descoñecido" #: ftype_animated msgid "animated" msgstr "animada" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Tipos de letra (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "R#38" #: editor_moveDown_keys msgid "W#40" msgstr "B#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documentos HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_gl.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_gl.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Co soporte de:" #: about_window_systemInfo msgid "System information" msgstr "Información do sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Información do proxecto actual" #: about_window_reportInfo msgid "Current session results" msgstr "Resultados da sesión actual" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Este produto inclúe software desenvolvido por:" #: msg_saving_project msgid "Saving project..." msgstr "Gardando o proxecto..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Arquivos de texto (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" "A tradución ao galego foi realizada por Edugaliza." #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Este programa é software libre; podes distribuílo e/ou modificalo baixo os " "termos da Licenza Pública Xeral de GNU (GNU General Public License) tal e " "como é publicada pola Free Software Foundation, ben sexa a versión 2 da " "licenza ou (á súa escolla) calquera outra versión " "posterior.
 
Este programa distribúese coa esperanza de que sexa " "útil, pero SEN NINGUNHA GARANTÍA; mesmo sen as garantías implícitas de " "COMERCIABILIDADE ou IDONEIDADE PARA UN PROPÓSITO PARTICULAR. Para dispor de " "máis información, consulte a Licenza Pública Xeral de GNU." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_ca.po0000644000175000017500000004223111377161311022267 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2010-01-22 17:51+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "temps" #: label_actions msgid "tries" msgstr "intents" #: label_score msgid "score" msgstr "encerts" #: Skin msgid "Skin" msgstr "Entorn visual" #: action_next_caption msgid "Next" msgstr "Següent" #: action_next_tooltip msgid "Next activity" msgstr "Activitat següent" #: action_prev_caption msgid "Previous" msgstr "Anterior" #: action_prev_tooltip msgid "Previous activity" msgstr "Activitat anterior" #: action_reset_caption msgid "Restart" msgstr "Reinicia" #: action_reset_tooltip msgid "Restart activity" msgstr "Reinicia l'activitat" #: action_info_caption msgid "Information" msgstr "Informació" #: about_window_lb_project msgid "Project" msgstr "Projecte" #: about_window_lb_languages msgid "languages" msgstr "Idiomes" #: about_window_lb_language msgid "language" msgstr "Idioma" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Torna" #: about_window_caption msgid "About" msgstr "Quant a..." #: action_about_tooltip msgid "User reports" msgstr "Informes d'usuari" #: about_window_lb_report msgid "Report" msgstr "Informes" #: about_window_browser_button msgid "View in browser" msgstr "Veure-ho en el navegador" #: report_no_activities msgid "No activities reported!" msgstr "No hi ha cap activitat reportada!" #: report_system_standard msgid "Report not registered in any DB" msgstr "L'informe no s'està enregistrant en cap base de dades" #: report_lb_time msgid "Time" msgstr "Temps" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Error en carregar la seqüència" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Error en inicialitzar el QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_ca.html" #: filesystem_openURL msgid "Open URL..." msgstr "Obre una ubicació web..." #: filesystem_openFile msgid "Open file..." msgstr "Obre el fitxer..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Escriviu l'URL del recurs al qual voleu accedir." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Error en executar l'ordre:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Mou l'element seleccionat avall" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mou l'element seleccionat amunt" #: editor_moveDown msgid "Move down" msgstr "Mou avall" #: editor_moveUp msgid "Move up" msgstr "Mou amunt" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Imatges (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "Imatges PNG" #: filefilter_jpg msgid "JPG images" msgstr "Imatges JPG" #: filefilter_gif msgid "GIF images" msgstr "Imatges GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Els fitxers obtinguts d'un URL són només de lectura." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Paquets Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Tots els fitxers" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Projectes JClic i Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Projectes JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Paquets compactes Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Paquets oberts Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Projectes JClic comprimits (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Projectes JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimèdia" #: about_window_lb_level msgid "Level" msgstr "Nivell" #: about_window_lb_area msgid "Area" msgstr "Àrea" #: report_num_actions msgid "Actions done:" msgstr "Accions fetes:" #: report_project msgid "Project:" msgstr "Projecte:" #: report_lb_totals msgid "Total:" msgstr "Totals:" #: report_num_projects msgid "Projects:" msgstr "Projectes:" #: report_session msgid "Session:" msgstr "Sessió:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Per raons de seguretat l'execució de programes externs està deshabilitada en " "els applets JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Error en iniciar l'activitat!" #: msg_error_loading_project msgid "Error loading project" msgstr "Error en carregar el projecte" #: msg_error_playing_media msgid "Error playing media!" msgstr "Error del recurs multimèdia!" #: msg_activity_finished msgid "Activity finished!" msgstr "Activitat acabada!" #: msg_playing_media msgid "Playing media" msgstr "Interpretant multimèdia" #: msg_activity_running msgid "Activity running" msgstr "Activitat en marxa" #: msg_activity_ready msgid "Activity ready" msgstr "Activitat preparada" #: msg_initializing msgid "Initializing..." msgstr "Inicialitzant..." #: msg_preparing_media msgid "Preparing media" msgstr "Preparant multimèdia" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Error en carregar l'activitat" #: msg_loading_activity msgid "Loading activity" msgstr "Carregant l'activitat..." #: msg_loading_project msgid "Loading project..." msgstr "Carregant el projecte..." #: msg_ready msgid "Ready" msgstr "Fet" #: err_reading_data msgid "Error loading file" msgstr "Error en llegir el fitxer" #: err_file_save msgid "Error saving file!" msgstr "Error en desar el fitxer!" #: err_file_open msgid "Error opening file!" msgstr "Error en obrir el fitxer!" #: report_started msgid "Session started:" msgstr "Inici de sessió:" #: report_lb_score msgid "Score" msgstr "Puntuació" #: report_lb_actions msgid "Actions" msgstr "Accions" #: report_lb_solved msgid "Ok" msgstr "Correcta" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Activitat" #: report_lb_sequence msgid "Sequence" msgstr "Seqüència" #: report_global_score msgid "Global score:" msgstr "Puntuació global:" #: report_total_time msgid "Total time on activities:" msgstr "Temps total en activitats:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Activitats correctes:" #: report_num_activities msgid "Activities done:" msgstr "Activitats realitzades:" #: report_num_sequences msgid "Sequences:" msgstr "Seqüències:" #: report_system msgid "Report system:" msgstr "Sistema d'informes:" #: report_user msgid "User:" msgstr "Usuari:" #: report_not_finished msgid "Activity not finished" msgstr "Activitat encara no acabada" #: action_info_tooltip msgid "Additional information" msgstr "Informació addicional" #: action_help_caption msgid "Help" msgstr "Ajuda" #: action_help_tooltip msgid "Help about this activity" msgstr "Ajuda sobre l'activitat" #: action_audio_caption msgid "Sounds" msgstr "Sons" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Activar/desactivar els sons" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memòria total" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memòria lliure" #: about_window_lb_java_home msgid "Java home" msgstr "Ubicació de Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Màquina virtual Java" #: about_window_lb_java_version msgid "Java version" msgstr "Versió de Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operatiu" #: about_window_lb_version msgid "Version" msgstr "Versió" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descriptors" #: about_window_lb_description msgid "Description" msgstr "Descripció" #: about_window_lb_history msgid "History" msgstr "Revisions" #: about_window_lb_organizations msgid "Organizations" msgstr "Organitzacions" #: about_window_lb_organization msgid "Organization" msgstr "Organització" #: about_window_lb_authors msgid "Authors" msgstr "Autors/es" #: about_window_lb_author msgid "Author" msgstr "Autor/a" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Activitat" #: help_window_close_button msgid "Return to activity" msgstr "Torna a l'activitat" #: help_window_caption msgid "Help window" msgstr "Finestra d'ajuda" #: action_about_caption msgid "Reports" msgstr "Informes" #: action_about_keys msgid "RR" msgstr "II" #: action_audio_keys msgid "SS" msgstr "OS" #: action_help_keys msgid "HH" msgstr "JJ" #: action_info_keys msgid "II" msgstr "NN" #: action_next_keys msgid "N*" msgstr "S*" #: action_prev_keys msgid "P*" msgstr "A*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Instal·ladors de projectes JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "No hi ha cap usuari definit a la base de dades d'informes!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "No hi ha cap usuari definit en aquest grup a la base de dades d'informes!" #: report_new_user msgid "New user..." msgstr "Usuari nou..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Crea un nou usuari a la base de dades d'informes" #: report_err_creating_user msgid "Error creating new user!" msgstr "Error en crear el nou usuari!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificació d'usuari per la base de dades d'informes" #: report_userlist_title msgid "Please select your name:" msgstr "Seleccioneu el vostre nom:" #: report_ident_user msgid "User identification" msgstr "Identificació d'usuari" #: report_name_prompt msgid "Name:" msgstr "Nom:" #: report_id_prompt msgid "Login:" msgstr "Identificador:" #: report_pw_prompt msgid "Password:" msgstr "Contrasenya:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmació de la contrasenya:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Creació d'un nou usuari" #: report_err_bad_data msgid "Incorrect data!" msgstr "Dades incorrectes!" #: report_generic_group_name msgid "Generic" msgstr "Genèric" #: report_new_group msgid "Create a new group..." msgstr "Crea un nou grup..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Error en crear el nou grup!" #: report_grouplist_title msgid "Please select your group:" msgstr "Seleccioneu el vostre grup:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Creació d'un nou grup d'usuaris:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Usuari inexistent o contrasenya incorrecta." #: report_user_has_pwd msgid "This account is password-protected." msgstr "El compte d'aquest usuari està protegit per contrasenya." #: report_err_init msgid "Error initializing report system." msgstr "Error en inicialitzar el sistema d'informes." #: report_not_connected msgid "not connected" msgstr "no connectat" #: report_err_creating msgid "Error creating reports agent" msgstr "Error en crear l'agent d'informes" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Torna" #: action_return_tooltip msgid "Return to the last menu" msgstr "Torna al darrer menú" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sons (*.wav, *.mp3, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Fitxers MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Fitxers Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Entorns visuals (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Tots els recursos" #: filesystem_copyToRoot_1 msgid "The file" msgstr "El fitxer" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "es troba en una carpeta diferent a la de l'actual projecte." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Es recomana tenir tots els fitxers en la mateixa carpeta." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Voleu copiar el fitxer seleccionat a la carpeta del projecte?" #: filesystem_copyFile msgid "Copying file" msgstr "Copiant el fitxer" #: msg_loading msgid "Loading" msgstr "Carregant" #: report_err_bad_id msgid "Bad identifier!" msgstr "Identificador incorrecte!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Aquest identificador ja existeix a la base de dades!" #: report_err_bad_name msgid "Bad name!" msgstr "Nom incorrecte!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Les contrasenyes no coïncideixen!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Error en connectar amb la base de dades d'informes!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "EXIT: En aquest punt el JClic es tancaria." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "En aquest punt es produïria un salt al projecte:" #: ftype_image msgid "Image" msgstr "Imatge" #: ftype_audio msgid "Digital audio" msgstr "So digital" #: ftype_midi msgid "MIDI file" msgstr "Fitxer MIDI" #: ftype_xml msgid "XML file" msgstr "Fitxer XML" #: ftype_anim msgid "Animation" msgstr "Animació" #: ftype_video msgid "Digital video" msgstr "Vídeo digital" #: ftype_font msgid "TrueType font" msgstr "Tipus de lletra TrueType" #: ftype_jclic msgid "JClic project" msgstr "Projecte JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Seqüència d'instal·lació de projectes JClic" #: ftype_unknown msgid "Unknown" msgstr "Desconegut" #: ftype_animated msgid "animated" msgstr "animada" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Tipus de lletra (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "V#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documents HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_ca.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_ca.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Amb el suport de:" #: about_window_systemInfo msgid "System information" msgstr "Informació del sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Informació del projecte actual" #: about_window_reportInfo msgid "Current session results" msgstr "Resultats de la sessió actual" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Aquest producte inclou programari desenvolupat per:" #: msg_saving_project msgid "Saving project..." msgstr "Desant el projecte..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Fitxers de text (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Versió en català, per l'Equip Clic" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Aquest programa és lliure. Podeu distribuir-lo i/o modificar-lo " "conforme a les disposicions de la Llicència Pública General de " "GNU (GPL), publicada per la Free Software Foundation, ja sigui la " "versió 2 de la llicència o qualsevol versió " "posterior.
 
Aquest programa es distribueix amb la " "intenció de resultar útil, però SENSE CAP GARANTIA, " "fins i tot sense la garantia implícita de COMERCIABILITAT o " "CONVENIÈNCIA PER A UN PROPÒSIT PARTICULAR. Per a més " "detalls, vegeu la Llicència " "Pública General de GNU." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_cs.po0000644000175000017500000003471611377161311022322 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-12-03 21:13+0000\n" "Last-Translator: Konki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "čas" #: label_actions msgid "tries" msgstr "pokusí" #: label_score msgid "score" msgstr "Skóre" #: Skin msgid "Skin" msgstr "Motiv" #: action_next_caption msgid "Next" msgstr "Další" #: action_next_tooltip msgid "Next activity" msgstr "Další aktivita" #: action_prev_caption msgid "Previous" msgstr "Předchozí" #: action_prev_tooltip msgid "Previous activity" msgstr "Předchozí aktivita" #: action_reset_caption msgid "Restart" msgstr "Spustit znovu" #: action_reset_tooltip msgid "Restart activity" msgstr "Restartovat aktivitu" #: action_info_caption msgid "Information" msgstr "Informace" #: about_window_lb_project msgid "Project" msgstr "Projekt" #: about_window_lb_languages msgid "languages" msgstr "jazyky" #: about_window_lb_language msgid "language" msgstr "jazyk" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Návrat" #: about_window_caption msgid "About" msgstr "O aplikaci" #: action_about_tooltip msgid "User reports" msgstr "Uživatelská sestava" #: about_window_lb_report msgid "Report" msgstr "Sestava" #: about_window_browser_button msgid "View in browser" msgstr "Zobrazit v prohlížeči" #: report_no_activities msgid "No activities reported!" msgstr "Nebyly nahlášeny žádné aktivity!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Zpráva není registrována v žádném DB" #: report_lb_time msgid "Time" msgstr "Čas" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Chyba při načítání sekvence" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Chyba při inicializaci QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "" #: filesystem_openURL msgid "Open URL..." msgstr "Otevřít URL..." #: filesystem_openFile msgid "Open file..." msgstr "Otevřít soubor..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "" "Prosím zadejte internetovou adresu pro zdroje, které mají být načteny." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Chyba při provádění příkazu:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "" #: editor_moveDown msgid "Move down" msgstr "Posunout dolů" #: editor_moveUp msgid "Move up" msgstr "Posunout nahoru" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Soubory obrázků (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG obrázky" #: filefilter_jpg msgid "JPG images" msgstr "JPG obrázky" #: filefilter_gif msgid "GIF images" msgstr "GIF obrázky" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Clic 3.0 balíčky (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Všechny soubory" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "JClic a Clic 3.0 projekty (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "JClic projekty (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Clic 3.0 kompaktní balíčky (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 otevřené balíčky (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "JClic zkomprimované projekty (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "JClic projekty (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Systém multimédií" #: about_window_lb_level msgid "Level" msgstr "Úroveň" #: about_window_lb_area msgid "Area" msgstr "Oblast" #: report_num_actions msgid "Actions done:" msgstr "Provedené akce:" #: report_project msgid "Project:" msgstr "Projekt:" #: report_lb_totals msgid "Total:" msgstr "Celkem:" #: report_num_projects msgid "Projects:" msgstr "Projekty:" #: report_session msgid "Session:" msgstr "" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "" #: msg_error_loading_project msgid "Error loading project" msgstr "Chyba při načítání projektu" #: msg_error_playing_media msgid "Error playing media!" msgstr "Chyba při přehrávání média!" #: msg_activity_finished msgid "Activity finished!" msgstr "Činnost dokončena!" #: msg_playing_media msgid "Playing media" msgstr "Přehrávaná média" #: msg_activity_running msgid "Activity running" msgstr "Běžící činnost" #: msg_activity_ready msgid "Activity ready" msgstr "Činnost připravena" #: msg_initializing msgid "Initializing..." msgstr "Probíhá inicializace..." #: msg_preparing_media msgid "Preparing media" msgstr "Připravuji médium" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Chyba při načítání" #: msg_loading_activity msgid "Loading activity" msgstr "" #: msg_loading_project msgid "Loading project..." msgstr "Načítám projekt..." #: msg_ready msgid "Ready" msgstr "Připraven" #: err_reading_data msgid "Error loading file" msgstr "Chyba při načítání souboru" #: err_file_save msgid "Error saving file!" msgstr "Chyba při ukládání souboru!" #: err_file_open msgid "Error opening file!" msgstr "Chyba při otvírání souboru!" #: report_started msgid "Session started:" msgstr "" #: report_lb_score msgid "Score" msgstr "Skóre" #: report_lb_actions msgid "Actions" msgstr "Akce" #: report_lb_solved msgid "Ok" msgstr "Budiž" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "" #: report_lb_sequence msgid "Sequence" msgstr "" #: report_global_score msgid "Global score:" msgstr "" #: report_total_time msgid "Total time on activities:" msgstr "Celkový čas aktivit:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Aktivity ok:" #: report_num_activities msgid "Activities done:" msgstr "Vyzkoušené aktivity:" #: report_num_sequences msgid "Sequences:" msgstr "Sekvence:" #: report_system msgid "Report system:" msgstr "Systém zprávy:" #: report_user msgid "User:" msgstr "Uživatel:" #: report_not_finished msgid "Activity not finished" msgstr "Činnost nebyla dokončena" #: action_info_tooltip msgid "Additional information" msgstr "Další informace" #: action_help_caption msgid "Help" msgstr "Nápověda" #: action_help_tooltip msgid "Help about this activity" msgstr "Nápověda k této činnosti" #: action_audio_caption msgid "Sounds" msgstr "Zvuky" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Zapnout/vypnout zvuky" #: about_window_lb_system msgid "System" msgstr "Systém" #: about_window_lb_total_mem msgid "Total memory" msgstr "Celková paměť" #: about_window_lb_free_mem msgid "Free memory" msgstr "Volná paměť" #: about_window_lb_java_home msgid "Java home" msgstr "Java domov" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Virtuální počítač Java" #: about_window_lb_java_version msgid "Java version" msgstr "Verze Javy" #: about_window_lb_os msgid "Operating system" msgstr "Operační systém" #: about_window_lb_version msgid "Version" msgstr "Verze" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Popisovatelé" #: about_window_lb_description msgid "Description" msgstr "Popiska" #: about_window_lb_history msgid "History" msgstr "Historie" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizace" #: about_window_lb_organization msgid "Organization" msgstr "Organizace" #: about_window_lb_authors msgid "Authors" msgstr "Autoři" #: about_window_lb_author msgid "Author" msgstr "Tvůrce" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Činnost" #: help_window_close_button msgid "Return to activity" msgstr "Návrat k činnosti" #: help_window_caption msgid "Help window" msgstr "Okno nápovědy" #: action_about_caption msgid "Reports" msgstr "Sestavy" #: action_about_keys msgid "RR" msgstr "" #: action_audio_keys msgid "SS" msgstr "" #: action_help_keys msgid "HH" msgstr "" #: action_info_keys msgid "II" msgstr "" #: action_next_keys msgid "N*" msgstr "" #: action_prev_keys msgid "P*" msgstr "" #: action_reset_keys msgid "R*" msgstr "" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" #: report_new_user msgid "New user..." msgstr "" #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "" #: report_err_creating_user msgid "Error creating new user!" msgstr "" #: report_select_user msgid "User identification for the reports database" msgstr "" #: report_userlist_title msgid "Please select your name:" msgstr "" #: report_ident_user msgid "User identification" msgstr "" #: report_name_prompt msgid "Name:" msgstr "" #: report_id_prompt msgid "Login:" msgstr "" #: report_pw_prompt msgid "Password:" msgstr "" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "" #: report_new_user_data msgid "Creation of a new user:" msgstr "" #: report_err_bad_data msgid "Incorrect data!" msgstr "" #: report_generic_group_name msgid "Generic" msgstr "" #: report_new_group msgid "Create a new group..." msgstr "" #: report_err_creating_group msgid "Error creating the new group!" msgstr "" #: report_grouplist_title msgid "Please select your group:" msgstr "" #: report_new_group_data msgid "Creation of a new users group:" msgstr "" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "" #: report_user_has_pwd msgid "This account is password-protected." msgstr "" #: report_err_init msgid "Error initializing report system." msgstr "" #: report_not_connected msgid "not connected" msgstr "" #: report_err_creating msgid "Error creating reports agent" msgstr "" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "" #: action_return_tooltip msgid "Return to the last menu" msgstr "" #: action_return_keys msgid "T*" msgstr "" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "" #: filefilter_skins msgid "Skins (*.xml)" msgstr "" #: filefilter_all_media msgid "All media files" msgstr "" #: filesystem_copyToRoot_1 msgid "The file" msgstr "" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" #: filesystem_copyFile msgid "Copying file" msgstr "" #: msg_loading msgid "Loading" msgstr "" #: report_err_bad_id msgid "Bad identifier!" msgstr "" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "" #: report_err_bad_name msgid "Bad name!" msgstr "" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "" #: ftype_image msgid "Image" msgstr "" #: ftype_audio msgid "Digital audio" msgstr "" #: ftype_midi msgid "MIDI file" msgstr "" #: ftype_xml msgid "XML file" msgstr "" #: ftype_anim msgid "Animation" msgstr "" #: ftype_video msgid "Digital video" msgstr "" #: ftype_font msgid "TrueType font" msgstr "" #: ftype_jclic msgid "JClic project" msgstr "" #: ftype_inst msgid "JClic project installer script" msgstr "" #: ftype_unknown msgid "Unknown" msgstr "" #: ftype_animated msgid "animated" msgstr "" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "" #: editor_moveUp_keys msgid "U#38" msgstr "" #: editor_moveDown_keys msgid "W#40" msgstr "" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "" #: about_creditsDoc msgid "about/credits.html" msgstr "" #: about_licenseDoc msgid "about/license.html" msgstr "" #: about_sponsorsCaption msgid "With the support of:" msgstr "" #: about_window_systemInfo msgid "System information" msgstr "" #: about_window_projectInfo msgid "Current project info" msgstr "" #: about_window_reportInfo msgid "Current session results" msgstr "" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "" #: msg_saving_project msgid "Saving project..." msgstr "" #: filefilter_text msgid "Text files (*.txt)" msgstr "" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_eu.po0000644000175000017500000004253111377161311022320 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-02-18 15:47+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "denbora" #: label_actions msgid "tries" msgstr "saiakerak" #: label_score msgid "score" msgstr "puntuazioa" #: Skin msgid "Skin" msgstr "Itxura" #: action_next_caption msgid "Next" msgstr "Hurrengoa" #: action_next_tooltip msgid "Next activity" msgstr "Hurrengo jarduera" #: action_prev_caption msgid "Previous" msgstr "Aurrekoa" #: action_prev_tooltip msgid "Previous activity" msgstr "Aurreko jarduera" #: action_reset_caption msgid "Restart" msgstr "Hasi berriro" #: action_reset_tooltip msgid "Restart activity" msgstr "Jarduera berriro hasi" #: action_info_caption msgid "Information" msgstr "Informazioa" #: about_window_lb_project msgid "Project" msgstr "Proiektua" #: about_window_lb_languages msgid "languages" msgstr "hizkuntzak" #: about_window_lb_language msgid "language" msgstr "hizkuntza" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Itzuli" #: about_window_caption msgid "About" msgstr "Honi buruz" #: action_about_tooltip msgid "User reports" msgstr "Erabiltzailearen txostenak" #: about_window_lb_report msgid "Report" msgstr "Txostena" #: about_window_browser_button msgid "View in browser" msgstr "Nabigatzailean ikusi" #: report_no_activities msgid "No activities reported!" msgstr "Ez da jardueren txostenik!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Txostena ez dago ezein datu-basetan" #: report_lb_time msgid "Time" msgstr "Denbora" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Errorea sekuentzia kargatzean" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Errorea Quick Time abiaraztean!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_eu.html" #: filesystem_openURL msgid "Open URL..." msgstr "Ireki URL-a..." #: filesystem_openFile msgid "Open file..." msgstr "Ireki fitxategia..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Mesedez, sartu bilatu behar den baliabidearen URL-aa" #: msg_error_executing_external msgid "Error executing the command:" msgstr "Errorea komandoa exekutatzean" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Eraman behera aukeratutako elementua" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mugitu gora aukeratutako elementua" #: editor_moveDown msgid "Move down" msgstr "Eraman behera" #: editor_moveUp msgid "Move up" msgstr "Eraman gora" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Irudi-fitxategiak (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG irudiak" #: filefilter_jpg msgid "JPG images" msgstr "JPG irudiak" #: filefilter_gif msgid "GIF images" msgstr "GIF irudiak" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "UR-Letan oinarritutako fitxategiak irakurtzeko dira bakarrik" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Clic 3.0 paketeak (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Fitxategi guztiak" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "JClic eta Clic 3.0 proiektuak (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "JClic proiektuak (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Konpaktatutako Clic 3.0 paketeak (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 pakete irekiak (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Konprimitutako JClic proiektuak (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "JClic proiektuak (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Multimedia-sistema" #: about_window_lb_level msgid "Level" msgstr "Maila" #: about_window_lb_area msgid "Area" msgstr "Eremua" #: report_num_actions msgid "Actions done:" msgstr "Burututako ekintzak:" #: report_project msgid "Project:" msgstr "Proiektua:" #: report_lb_totals msgid "Total:" msgstr "Guztira:" #: report_num_projects msgid "Projects:" msgstr "Proiektuak" #: report_session msgid "Session:" msgstr "Saioa:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Segurtasun-arazoak direla-eta, ezgaituta dago kanpoko programen exekutatzea " "JClic aplikazioetan" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Errorea jarduera hastean!" #: msg_error_loading_project msgid "Error loading project" msgstr "Errorea proiektua kargatzean" #: msg_error_playing_media msgid "Error playing media!" msgstr "Errorea media erreproduzitzean!" #: msg_activity_finished msgid "Activity finished!" msgstr "Jarduera amaitu da" #: msg_playing_media msgid "Playing media" msgstr "Media erreproduzitzen" #: msg_activity_running msgid "Activity running" msgstr "Jarduera martxan" #: msg_activity_ready msgid "Activity ready" msgstr "Jarduera prest" #: msg_initializing msgid "Initializing..." msgstr "Abiarazten..." #: msg_preparing_media msgid "Preparing media" msgstr "Media prestatzen" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Errorea jarduera kargatzean" #: msg_loading_activity msgid "Loading activity" msgstr "Jarduera kargatzen" #: msg_loading_project msgid "Loading project..." msgstr "Proiektua kargatzen" #: msg_ready msgid "Ready" msgstr "Prest" #: err_reading_data msgid "Error loading file" msgstr "Errorea fitxategia kargatzean" #: err_file_save msgid "Error saving file!" msgstr "Errorea fitxategia gordetzean" #: err_file_open msgid "Error opening file!" msgstr "Errorea fitxategia zabaltzean!" #: report_started msgid "Session started:" msgstr "Saio-hasiera:" #: report_lb_score msgid "Score" msgstr "Puntuazioa" #: report_lb_actions msgid "Actions" msgstr "Ekintzak" #: report_lb_solved msgid "Ok" msgstr "Ados" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Jarduera" #: report_lb_sequence msgid "Sequence" msgstr "Sekuentzia" #: report_global_score msgid "Global score:" msgstr "Puntuazio orokorra:" #: report_total_time msgid "Total time on activities:" msgstr "Jardueretan emandako denbora guztira:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Jarduera zuzenak:" #: report_num_activities msgid "Activities done:" msgstr "Burututako ekinzak:" #: report_num_sequences msgid "Sequences:" msgstr "Sekuentziak:" #: report_system msgid "Report system:" msgstr "Txosten-sistema:" #: report_user msgid "User:" msgstr "Erabiltzailea:" #: report_not_finished msgid "Activity not finished" msgstr "Bukatu gabeko jarduera" #: action_info_tooltip msgid "Additional information" msgstr "Informazio gehigarria" #: action_help_caption msgid "Help" msgstr "Laguntza" #: action_help_tooltip msgid "Help about this activity" msgstr "Laguntza jarduera honetarako" #: action_audio_caption msgid "Sounds" msgstr "Soinuak" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Soinuak gaitu/desgaitu" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memoria guztira" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memoria libre" #: about_window_lb_java_home msgid "Java home" msgstr "Java-ren kokapena" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java makina birtuala" #: about_window_lb_java_version msgid "Java version" msgstr "Java bertsioa" #: about_window_lb_os msgid "Operating system" msgstr "Sistema eragilea" #: about_window_lb_version msgid "Version" msgstr "Bertsioa" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Deskribatzaileak" #: about_window_lb_description msgid "Description" msgstr "Deskribapena" #: about_window_lb_history msgid "History" msgstr "Historia" #: about_window_lb_organizations msgid "Organizations" msgstr "Erakundeak" #: about_window_lb_organization msgid "Organization" msgstr "Erakundea" #: about_window_lb_authors msgid "Authors" msgstr "Egileak" #: about_window_lb_author msgid "Author" msgstr "Egilea" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Jarduera" #: help_window_close_button msgid "Return to activity" msgstr "Itzuli jarduerara" #: help_window_caption msgid "Help window" msgstr "Laguntza-leihoa" #: action_about_caption msgid "Reports" msgstr "Txostenak" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "HH" #: action_help_keys msgid "HH" msgstr "OO" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "U*" #: action_prev_keys msgid "P*" msgstr "A*" #: action_reset_keys msgid "R*" msgstr "B*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "JClic proiektuen instalatzaileak (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Ez dago definitutako erabiltzailerik txostenen datu-basean!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Ez dago talde honetarako definitutako erabiltzailerik txostenen datu-basean!" #: report_new_user msgid "New user..." msgstr "Erabiltzaile berria..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Erabiltzaile berria sortu txostenen datu-basean" #: report_err_creating_user msgid "Error creating new user!" msgstr "Errorea erabiltzaile berria sortzean!" #: report_select_user msgid "User identification for the reports database" msgstr "Txostenen datu-baserako erabiltzaile-identifikazioa" #: report_userlist_title msgid "Please select your name:" msgstr "Mesedez, aukera ezazu zeure izena:" #: report_ident_user msgid "User identification" msgstr "Erabiltzailearen identifikazioa" #: report_name_prompt msgid "Name:" msgstr "Izena:" #: report_id_prompt msgid "Login:" msgstr "Erabiltzaile-izena:" #: report_pw_prompt msgid "Password:" msgstr "Pasahitza:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Pasahitza berretsi:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Erabiltzaile berria sortu:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Datuak ez dira zuzenak!" #: report_generic_group_name msgid "Generic" msgstr "Generikoa" #: report_new_group msgid "Create a new group..." msgstr "Talde berria sortu..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Errorea talde berria sortzean!" #: report_grouplist_title msgid "Please select your group:" msgstr "Mesedez, aukera ezazu zeure taldea:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Erabiltzaile-talde berria sortu:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Erabiltzailearen ID-a falta da edo pasahitza ez da zuzena." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Erabiltzaile honen kontua pasahitz batek babesten du." #: report_err_init msgid "Error initializing report system." msgstr "Errorea txosten sistema abiaraztean." #: report_not_connected msgid "not connected" msgstr "konektatu gabe" #: report_err_creating msgid "Error creating reports agent" msgstr "Errorea txosten-agentea sortzean" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Itzuli" #: action_return_tooltip msgid "Return to the last menu" msgstr "Itzuli azken menura" #: action_return_keys msgid "T*" msgstr "I*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Soinuak (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI fitxategiak (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Bideo-fitxategiak (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 fitxategiak (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Itxurak (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Media fitxategi guztiak" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Fitxategia" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "oraingo proiektuaren direktoriotik kanpo dago." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Ez da gomendagarria fitxategi guztiak direktorio berean edukitzea." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" "Aukeratutako fitxategia proiektuaren direktoriora kopiatu nahi al duzu?" #: filesystem_copyFile msgid "Copying file" msgstr "Fitxategia kopiatzen" #: msg_loading msgid "Loading" msgstr "Kargatzen" #: report_err_bad_id msgid "Bad identifier!" msgstr "Okerreko identifikatzailea!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Identifikatzaile hori dagoeneko badago datu-basean!" #: report_err_bad_name msgid "Bad name!" msgstr "Okerreko izena!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Pasahitzak ez datoz bat!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Errorea txostenen datu-basearekin konektatzean!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "IRTEN: Hemendik aurrera, programatik irten egingo zara." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Hemen programak ondorengo proiektu honetara egingo du jauzi:" #: ftype_image msgid "Image" msgstr "Irudia" #: ftype_audio msgid "Digital audio" msgstr "Audio digitala" #: ftype_midi msgid "MIDI file" msgstr "MIDI fitxategia" #: ftype_xml msgid "XML file" msgstr "XML fitxategia" #: ftype_anim msgid "Animation" msgstr "Animazioa" #: ftype_video msgid "Digital video" msgstr "Bideo digitala" #: ftype_font msgid "TrueType font" msgstr "TrueType letra-tipoa" #: ftype_jclic msgid "JClic project" msgstr "JClic proiektua" #: ftype_inst msgid "JClic project installer script" msgstr "JClic proiektua instalatzeko script-a" #: ftype_unknown msgid "Unknown" msgstr "Ezezaguna" #: ftype_animated msgid "animated" msgstr "animatua" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Fonts (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML dokumentuak (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "honi buruz/kredituak.html" #: about_licenseDoc msgid "about/license.html" msgstr "honi buruz/lizentzia.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Honen laguntzarekin:" #: about_window_systemInfo msgid "System information" msgstr "Sistemaren informazioa" #: about_window_projectInfo msgid "Current project info" msgstr "Oraingo proiektuaren informazioa" #: about_window_reportInfo msgid "Current session results" msgstr "Oraingo saioaren emaitzak" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Produktu honek ondorengoak/ek garatutako softwarea du:" #: msg_saving_project msgid "Saving project..." msgstr "Proiektua gordetzen..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Testu-fitxategiak (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Itzultzaileak: Abel Camacho, Pedro Lonbide" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Programa hau software librea da; zabaldu edota aldatu egin dezakezu Free " "Software Foundation-ek argitaratutako GNU General Public License-n " "ezarritakoaren arabera; lizentziaren edozein 2. bertsio edo (zure aukera) " "ondorengo bertsioren bat.
 
Programa hau erabilgarri izango " "delakoan banatzen da, baina INONGO BERMERIK GABE; ezta KOMERTZIALIZAZIO edo " "HELBURU JAKIN BATERAKO EGOKITASUNerako berme inpliziturik gabe. Begiratu GNU General Public " "License zehaztasun gehiagorako." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_it.po0000644000175000017500000004252311377161311022324 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2008-10-01 17:30+0000\n" "Last-Translator: Matteo Ferrabone \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tempo" #: label_actions msgid "tries" msgstr "tentativi" #: label_score msgid "score" msgstr "punteggio" #: Skin msgid "Skin" msgstr "Skin" #: action_next_caption msgid "Next" msgstr "Avanti" #: action_next_tooltip msgid "Next activity" msgstr "Attività successiva" #: action_prev_caption msgid "Previous" msgstr "Precedente" #: action_prev_tooltip msgid "Previous activity" msgstr "Attività precedente" #: action_reset_caption msgid "Restart" msgstr "Riavvia" #: action_reset_tooltip msgid "Restart activity" msgstr "Riavvia l'attività" #: action_info_caption msgid "Information" msgstr "Informazioni" #: about_window_lb_project msgid "Project" msgstr "Progetto" #: about_window_lb_languages msgid "languages" msgstr "lingue" #: about_window_lb_language msgid "language" msgstr "lingua" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Torna al programma" #: about_window_caption msgid "About" msgstr "Informazioni su..." #: action_about_tooltip msgid "User reports" msgstr "Rapporti utente" #: about_window_lb_report msgid "Report" msgstr "Rapporto" #: about_window_browser_button msgid "View in browser" msgstr "Vedi nel browser" #: report_no_activities msgid "No activities reported!" msgstr "Nessuna attività a rapporto!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Rapporto non registrato in alcun database" #: report_lb_time msgid "Time" msgstr "Tempi" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Errore al caricamento della sequenza" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Errore nell'inizializzazione di Quick Time!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_it.html" #: filesystem_openURL msgid "Open URL..." msgstr "Apri URL" #: filesystem_openFile msgid "Open file..." msgstr "Apri file..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Per favore, inserisci l'URL della risorsa da caricare." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Errore nell'esecuzione del comando:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Sposta in basso l'elemento selezionato" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Sposta in alto l'elemento selezionato" #: editor_moveDown msgid "Move down" msgstr "Sposta in basso" #: editor_moveUp msgid "Move up" msgstr "Sposta in alto" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Immagini (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "Immagini PNG" #: filefilter_jpg msgid "JPG images" msgstr "Immagini JPG" #: filefilter_gif msgid "GIF images" msgstr "Immagini GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "I files a base URL sono in sola lettura." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Pacchetti di Clic 3.0" #: filefilter_all msgid "All files" msgstr "Tutti i file" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Progetti di JClic e Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Progetti di JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Clic 3.0 pacchetti compattati (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 pacchetti aperti (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Progetti di JClic compressi (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Progetti di JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimediale" #: about_window_lb_level msgid "Level" msgstr "Livello" #: about_window_lb_area msgid "Area" msgstr "Dominio" #: report_num_actions msgid "Actions done:" msgstr "Azioni compiute:" #: report_project msgid "Project:" msgstr "Progetto:" #: report_lb_totals msgid "Total:" msgstr "Totale:" #: report_num_projects msgid "Projects:" msgstr "Progetti:" #: report_session msgid "Session:" msgstr "Sessione:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Per ragioni di sicurezza, l'esecuzione di programmi esterni nelle applet di " "JClic è disabilitata." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Errore nell'avvio dell'attività!" #: msg_error_loading_project msgid "Error loading project" msgstr "Errore nel caricamento del progetto" #: msg_error_playing_media msgid "Error playing media!" msgstr "Errore nella riproduzione del file multimediale!" #: msg_activity_finished msgid "Activity finished!" msgstr "Attività terminata!" #: msg_playing_media msgid "Playing media" msgstr "Lettura del file multimediale" #: msg_activity_running msgid "Activity running" msgstr "Attività in corso" #: msg_activity_ready msgid "Activity ready" msgstr "Attività pronta" #: msg_initializing msgid "Initializing..." msgstr "Inizializzazione..." #: msg_preparing_media msgid "Preparing media" msgstr "Preparazione del file multimediale" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Errore nel caricamento dell'attività" #: msg_loading_activity msgid "Loading activity" msgstr "Caricamento dell'attività" #: msg_loading_project msgid "Loading project..." msgstr "Caricamento del progetto..." #: msg_ready msgid "Ready" msgstr "Pronto" #: err_reading_data msgid "Error loading file" msgstr "Errore durante il caricamento del file" #: err_file_save msgid "Error saving file!" msgstr "Errore durante il salvataggio del file!" #: err_file_open msgid "Error opening file!" msgstr "Errore durante l'apertura del file!" #: report_started msgid "Session started:" msgstr "Sessione avviata:" #: report_lb_score msgid "Score" msgstr "Punteggio" #: report_lb_actions msgid "Actions" msgstr "Azioni" #: report_lb_solved msgid "Ok" msgstr "Ok" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Attività" #: report_lb_sequence msgid "Sequence" msgstr "Sequenza" #: report_global_score msgid "Global score:" msgstr "Punteggio globale:" #: report_total_time msgid "Total time on activities:" msgstr "Tempo totale nelle attività:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Attività ok:" #: report_num_activities msgid "Activities done:" msgstr "Attività eseguite:" #: report_num_sequences msgid "Sequences:" msgstr "Sequenze:" #: report_system msgid "Report system:" msgstr "Sistema dei rapporti:" #: report_user msgid "User:" msgstr "Utente:" #: report_not_finished msgid "Activity not finished" msgstr "Attività non conclusa" #: action_info_tooltip msgid "Additional information" msgstr "Informazioni aggiuntive" #: action_help_caption msgid "Help" msgstr "Aiuto" #: action_help_tooltip msgid "Help about this activity" msgstr "Aiuto su questa attività" #: action_audio_caption msgid "Sounds" msgstr "Suoni" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Abilita/disabilita suoni" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memoria totale" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memoria libera" #: about_window_lb_java_home msgid "Java home" msgstr "Java home" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java virtual machine" #: about_window_lb_java_version msgid "Java version" msgstr "Versione di Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operativo" #: about_window_lb_version msgid "Version" msgstr "Versione" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descrittori" #: about_window_lb_description msgid "Description" msgstr "Descrizione" #: about_window_lb_history msgid "History" msgstr "Cronologia" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizzazioni" #: about_window_lb_organization msgid "Organization" msgstr "Organizzazione" #: about_window_lb_authors msgid "Authors" msgstr "Autori" #: about_window_lb_author msgid "Author" msgstr "Autore" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Attività" #: help_window_close_button msgid "Return to activity" msgstr "Ritorna all'attività" #: help_window_caption msgid "Help window" msgstr "Finestra di aiuto" #: action_about_caption msgid "Reports" msgstr "Rapporti" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Installatori di progetti JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Nessun utente è stato definito nel database dei rapporti!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Nessun utente è stato definito per questo gruppo nel database dei rapporti!" #: report_new_user msgid "New user..." msgstr "Nuovo utente..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Crea un nuovo utente nel database dei rapporti" #: report_err_creating_user msgid "Error creating new user!" msgstr "Errore nella creazione di un nuovo utente!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificazione dell'utente per il database dei rapporti" #: report_userlist_title msgid "Please select your name:" msgstr "Per favore, seleziona il tuo nome:" #: report_ident_user msgid "User identification" msgstr "Identificazione dell'utente" #: report_name_prompt msgid "Name:" msgstr "Nome:" #: report_id_prompt msgid "Login:" msgstr "Login:" #: report_pw_prompt msgid "Password:" msgstr "Password:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Conferma password:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Creazione di un nuovo utente:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Dati inesatti!" #: report_generic_group_name msgid "Generic" msgstr "Generico" #: report_new_group msgid "Create a new group..." msgstr "Crea un nuovo gruppo..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Errore nella creazione del nuovo gruppo!" #: report_grouplist_title msgid "Please select your group:" msgstr "Per favore, seleziona il tuo gruppo:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Creazione di un nuovo gruppo di utenti:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Manca la user ID oppure la password è sbagliata." #: report_user_has_pwd msgid "This account is password-protected." msgstr "L'accesso è protetto da password." #: report_err_init msgid "Error initializing report system." msgstr "Errore nell'inizializzazione del sistema dei rapporti." #: report_not_connected msgid "not connected" msgstr "non connesso" #: report_err_creating msgid "Error creating reports agent" msgstr "Errore nella creazione di un agente dei rapporti" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Torna al programma" #: action_return_tooltip msgid "Return to the last menu" msgstr "Ritorna all'ultimo menu" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Suoni (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Skins (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Tutti i file multimediali" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Il file" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "è fuori dalla cartella del progetto corrente." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "E' consigliabile tenere tutti i file nella stessa cartella." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Vuoi copiare i file selezionati nella cartella del progetto?" #: filesystem_copyFile msgid "Copying file" msgstr "Copia del file" #: msg_loading msgid "Loading" msgstr "Caricamento" #: report_err_bad_id msgid "Bad identifier!" msgstr "Identificatore non corretto!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Questo identificatore già esiste nel database!" #: report_err_bad_name msgid "Bad name!" msgstr "Nome non corretto!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Le password non coincidono!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Errore di connessione al database dei rapporti!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "ESCI: A questo punto termina il programma." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "A questo punto il programma salterà verso il progetto:" #: ftype_image msgid "Image" msgstr "Immagine" #: ftype_audio msgid "Digital audio" msgstr "Audio digitale" #: ftype_midi msgid "MIDI file" msgstr "File MIDI" #: ftype_xml msgid "XML file" msgstr "File XML" #: ftype_anim msgid "Animation" msgstr "Animazione" #: ftype_video msgid "Digital video" msgstr "Video digitale" #: ftype_font msgid "TrueType font" msgstr "Carattere TrueType" #: ftype_jclic msgid "JClic project" msgstr "Progetto JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script d'installatore di progetto JClic" #: ftype_unknown msgid "Unknown" msgstr "Sconosciuto" #: ftype_animated msgid "animated" msgstr "animato" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Caratteri (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documenti HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_it.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_it.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Con l'aiuto di:" #: about_window_systemInfo msgid "System information" msgstr "Informazioni sul sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Informazioni sul progetto corrente" #: about_window_reportInfo msgid "Current session results" msgstr "Risultati della sessione corrente" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Questo prodotto contiene software sviluppato da:" #: msg_saving_project msgid "Saving project..." msgstr "Salvataggio del progetto..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Testi (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Version Italiana: Roberto Marcolin e Giorgio Musilli" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public " "License for more details." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_nl.po0000644000175000017500000004177011377161311022324 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2008-08-11 12:56+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tijd" #: label_actions msgid "tries" msgstr "pogingen" #: label_score msgid "score" msgstr "punten" #: Skin msgid "Skin" msgstr "Achtergrond" #: action_next_caption msgid "Next" msgstr "Volgende" #: action_next_tooltip msgid "Next activity" msgstr "Volgende activiteit" #: action_prev_caption msgid "Previous" msgstr "Vorige" #: action_prev_tooltip msgid "Previous activity" msgstr "Vorige activiteit" #: action_reset_caption msgid "Restart" msgstr "Herstarten" #: action_reset_tooltip msgid "Restart activity" msgstr "Herstart activiteit" #: action_info_caption msgid "Information" msgstr "Informatie" #: about_window_lb_project msgid "Project" msgstr "Project" #: about_window_lb_languages msgid "languages" msgstr "talen" #: about_window_lb_language msgid "language" msgstr "taal" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Terug" #: about_window_caption msgid "About" msgstr "Informatie" #: action_about_tooltip msgid "User reports" msgstr "Gebruikers rapport" #: about_window_lb_report msgid "Report" msgstr "Rapport" #: about_window_browser_button msgid "View in browser" msgstr "Bekijken in browser" #: report_no_activities msgid "No activities reported!" msgstr "Geen activiteiten gerapporteerd!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Rapport niet geregistreerd in een DB" #: report_lb_time msgid "Time" msgstr "Tijd" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Fout tijdens het laden" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Fout bij starten QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "berichten/testmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "URL-adres openen..." #: filesystem_openFile msgid "Open file..." msgstr "Bestand openen..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Voer URL van de bron in." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Fout tijdens de uitvoering van het commando:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Het geselecteerd element omlaag" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Het geselecteerd element omhoog" #: editor_moveDown msgid "Move down" msgstr "Omlaag" #: editor_moveUp msgid "Move up" msgstr "Omhoog" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Afbeeldingen (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG afbeeldingen" #: filefilter_jpg msgid "JPG images" msgstr "JPG afbeeldingen" #: filefilter_gif msgid "GIF images" msgstr "GIF afbeeldingen" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "URL-bestanden zijn read-only." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Clic 3.0 packages (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Alle bestanden" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "JClic en Clic 3.0 projecten (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "JClic projecten (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Clic 3.0 compact packages (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 open packages (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "JClic compressed projecten (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "JClic projecten (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Multimedia systeem" #: about_window_lb_level msgid "Level" msgstr "Niveau" #: about_window_lb_area msgid "Area" msgstr "Gebied" #: report_num_actions msgid "Actions done:" msgstr "Einde activiteiten:" #: report_project msgid "Project:" msgstr "Project:" #: report_lb_totals msgid "Total:" msgstr "Totaal:" #: report_num_projects msgid "Projects:" msgstr "Projecten:" #: report_session msgid "Session:" msgstr "Reeks:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Starten van externe programma's is uitgeschakeld om veiligheidsredenen." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Fout bij het starten van een activiteit!" #: msg_error_loading_project msgid "Error loading project" msgstr "Fout bij laden van het project" #: msg_error_playing_media msgid "Error playing media!" msgstr "Fout bij het afspelen van media!" #: msg_activity_finished msgid "Activity finished!" msgstr "Einde activiteit!" #: msg_playing_media msgid "Playing media" msgstr "Madia afspelen" #: msg_activity_running msgid "Activity running" msgstr "Activiteit gestart" #: msg_activity_ready msgid "Activity ready" msgstr "Activiteit klaar" #: msg_initializing msgid "Initializing..." msgstr "Initialiseren..." #: msg_preparing_media msgid "Preparing media" msgstr "Media voorbereiden" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Fout bij het laden van een activiteit" #: msg_loading_activity msgid "Loading activity" msgstr "Activiteit laden" #: msg_loading_project msgid "Loading project..." msgstr "Project laden..." #: msg_ready msgid "Ready" msgstr "Gereed" #: err_reading_data msgid "Error loading file" msgstr "Fout tijdens laden bestand" #: err_file_save msgid "Error saving file!" msgstr "Fout tijdens opslaan bestand!" #: err_file_open msgid "Error opening file!" msgstr "Fout bij openen bestand!" #: report_started msgid "Session started:" msgstr "Reeks gestart:" #: report_lb_score msgid "Score" msgstr "Punten" #: report_lb_actions msgid "Actions" msgstr "Acties" #: report_lb_solved msgid "Ok" msgstr "Ok" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Activiteit" #: report_lb_sequence msgid "Sequence" msgstr "Volgorde" #: report_global_score msgid "Global score:" msgstr "Puntentotaal:" #: report_total_time msgid "Total time on activities:" msgstr "Totale tijd activiteiten:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Activiteiten ok:" #: report_num_activities msgid "Activities done:" msgstr "Activiteiten klaar:" #: report_num_sequences msgid "Sequences:" msgstr "Reeksen:" #: report_system msgid "Report system:" msgstr "Rapporteer systeem:" #: report_user msgid "User:" msgstr "Gebruiker:" #: report_not_finished msgid "Activity not finished" msgstr "Activiteit nog niet gedaan" #: action_info_tooltip msgid "Additional information" msgstr "Verdere informatie" #: action_help_caption msgid "Help" msgstr "Help" #: action_help_tooltip msgid "Help about this activity" msgstr "Help bij deze activiteit" #: action_audio_caption msgid "Sounds" msgstr "Geluiden" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Geluid aan/uit" #: about_window_lb_system msgid "System" msgstr "Systeem" #: about_window_lb_total_mem msgid "Total memory" msgstr "Totaal geheugen" #: about_window_lb_free_mem msgid "Free memory" msgstr "Beschikbaar geheugen" #: about_window_lb_java_home msgid "Java home" msgstr "Java home" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java virtual machine" #: about_window_lb_java_version msgid "Java version" msgstr "Java-versie" #: about_window_lb_os msgid "Operating system" msgstr "Besturingssysteem" #: about_window_lb_version msgid "Version" msgstr "Versie" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Beschrijvingen" #: about_window_lb_description msgid "Description" msgstr "Beschrijving" #: about_window_lb_history msgid "History" msgstr "Geschiedenis" #: about_window_lb_organizations msgid "Organizations" msgstr "Organisaties" #: about_window_lb_organization msgid "Organization" msgstr "Organisatie" #: about_window_lb_authors msgid "Authors" msgstr "Auteurs" #: about_window_lb_author msgid "Author" msgstr "Auteur" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Activiteit" #: help_window_close_button msgid "Return to activity" msgstr "Terug naar activiteit" #: help_window_caption msgid "Help window" msgstr "Help venster" #: action_about_caption msgid "Reports" msgstr "Rapporten" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "JClic project installers (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Geen gebruikers gedefinieerd in de rapporten database!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Geen gebruikers gedefinieerd voor deze groep in de rapporten database!" #: report_new_user msgid "New user..." msgstr "Nieuwe gebruiker..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Maak een nieuwe gebruiker in de rapporten database" #: report_err_creating_user msgid "Error creating new user!" msgstr "Fout bij het maken van een gebruiker!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificatie van de gebruiker in de rapporten database" #: report_userlist_title msgid "Please select your name:" msgstr "Kies uw naam:" #: report_ident_user msgid "User identification" msgstr "Identificatie van de gebruiker" #: report_name_prompt msgid "Name:" msgstr "Naam:" #: report_id_prompt msgid "Login:" msgstr "Gebruikersnaam:" #: report_pw_prompt msgid "Password:" msgstr "Wachtwoord:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Bevestig wachtwoord:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Aanmaken nieuwe gebruiker:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Verkeerde gegevens!" #: report_generic_group_name msgid "Generic" msgstr "Algemeen" #: report_new_group msgid "Create a new group..." msgstr "Maak een nieuwe groep..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Fout bij het maken van een nieuwe groep" #: report_grouplist_title msgid "Please select your group:" msgstr "Kies groep:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Maken van een nieuwe gebruikersgroep:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Gebruikers identificatie verkeerd of ontbreekt." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Deze aanmelding is beveiligd met een wachtwoord." #: report_err_init msgid "Error initializing report system." msgstr "Fout bij het initialiseren van het rapport systeem." #: report_not_connected msgid "not connected" msgstr "Niet verbonden" #: report_err_creating msgid "Error creating reports agent" msgstr "Fout bij het aanmaken van het rapport" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Vorige" #: action_return_tooltip msgid "Return to the last menu" msgstr "Vorig menu" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Geluiden (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI bestanden (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video bestanden (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 bestanden (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Skins (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Alle mediabestanden" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Het bestand" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "is buiten de map van het huidig project." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Het is gemakkelijk als alle bestanden in dezelfde map zitten." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Wil je een kopie van het gekozen bestand in de map van het project?" #: filesystem_copyFile msgid "Copying file" msgstr "Bestand kopiëren" #: msg_loading msgid "Loading" msgstr "Laden" #: report_err_bad_id msgid "Bad identifier!" msgstr "Verkeerde identificatie!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Deze identificatie bestaat reeds in de database!" #: report_err_bad_name msgid "Bad name!" msgstr "Verkeerde naam!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "De wachtwoorden komen niet overeen!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Fout bij het verbinden met de rapporten database!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "EXIT: Nu zal het programma stoppen." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Nu zal het programma naar het project gaan:" #: ftype_image msgid "Image" msgstr "Afbeelding" #: ftype_audio msgid "Digital audio" msgstr "Digital audio" #: ftype_midi msgid "MIDI file" msgstr "MIDI bestand" #: ftype_xml msgid "XML file" msgstr "XML-bestand" #: ftype_anim msgid "Animation" msgstr "Animatie" #: ftype_video msgid "Digital video" msgstr "Digital video" #: ftype_font msgid "TrueType font" msgstr "TrueType lettertype" #: ftype_jclic msgid "JClic project" msgstr "JClic project" #: ftype_inst msgid "JClic project installer script" msgstr "JClic project installeer script" #: ftype_unknown msgid "Unknown" msgstr "Onbekend" #: ftype_animated msgid "animated" msgstr "geanimeerd" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Lettertypen (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML documenten (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "info/credits.html" #: about_licenseDoc msgid "about/license.html" msgstr "info/license.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Met ondersteuning van:" #: about_window_systemInfo msgid "System information" msgstr "Systeem informatie" #: about_window_projectInfo msgid "Current project info" msgstr "Huidig project informatie" #: about_window_reportInfo msgid "Current session results" msgstr "Huidige reeksresultaten" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Dit product bevat software ontwikkeld door:" #: msg_saving_project msgid "Saving project..." msgstr "Project bewaren..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Tekst bestanden (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Engelse versie, door Het JClic team" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_fr.po0000644000175000017500000004246711377161311022326 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-01-17 19:00+0000\n" "Last-Translator: Renaud de Colombel \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "temps" #: label_actions msgid "tries" msgstr "essais" #: label_score msgid "score" msgstr "résultat" #: Skin msgid "Skin" msgstr "Thème" #: action_next_caption msgid "Next" msgstr "Suivant" #: action_next_tooltip msgid "Next activity" msgstr "Activité suivante" #: action_prev_caption msgid "Previous" msgstr "Précédent" #: action_prev_tooltip msgid "Previous activity" msgstr "Activité précédente" #: action_reset_caption msgid "Restart" msgstr "Recommencer" #: action_reset_tooltip msgid "Restart activity" msgstr "Recommencer l'activité" #: action_info_caption msgid "Information" msgstr "Information" #: about_window_lb_project msgid "Project" msgstr "Projet" #: about_window_lb_languages msgid "languages" msgstr "langages" #: about_window_lb_language msgid "language" msgstr "langage" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Retour" #: about_window_caption msgid "About" msgstr "A propos de" #: action_about_tooltip msgid "User reports" msgstr "Rapports utilisateur" #: about_window_lb_report msgid "Report" msgstr "Rapport" #: about_window_browser_button msgid "View in browser" msgstr "Voir dans l'explorateur" #: report_no_activities msgid "No activities reported!" msgstr "Pas d'activités rapportées\\!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Le rapport n'est enregistré dans aucune base de données" #: report_lb_time msgid "Time" msgstr "Temps" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Erreur au chargement de la séquence" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Erreur à l'initialisation de QuickTime\\!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_fr.html" #: filesystem_openURL msgid "Open URL..." msgstr "Ouvrir URL..." #: filesystem_openFile msgid "Open file..." msgstr "Ouvrir fichier..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Entrez l'URL de la ressource à charger." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Erreur à l'exécution de la commande\\:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Déplacer l'élément sélectionné vers le bas" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Déplacer l'élément sélectionné vers le haut" #: editor_moveDown msgid "Move down" msgstr "Déplacer vers le bas" #: editor_moveUp msgid "Move up" msgstr "Déplacer vers le haut" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Fichiers images (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG images" #: filefilter_jpg msgid "JPG images" msgstr "JPG images" #: filefilter_gif msgid "GIF images" msgstr "GIF images" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Les fichiers URL-based sont en lecture seule." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Clic 3.0 packages (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Tous les fichiers" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Projets JClic et Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Projets JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Clic 3.0 compact compactés (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 packages ouverts (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Projets JClic compressés (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Projets JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Système multimedia" #: about_window_lb_level msgid "Level" msgstr "Niveau" #: about_window_lb_area msgid "Area" msgstr "Domaine" #: report_num_actions msgid "Actions done:" msgstr "Actions faites\\:" #: report_project msgid "Project:" msgstr "Projet\\:" #: report_lb_totals msgid "Total:" msgstr "Total\\:" #: report_num_projects msgid "Projects:" msgstr "Projets\\:" #: report_session msgid "Session:" msgstr "Session\\:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Pour des raisons de sécurité, l'exécution de programmes externes est " "désassemblée dans JClic applet." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Erreur au démmarrage de l'activité\\!" #: msg_error_loading_project msgid "Error loading project" msgstr "Erreur de chargement du projet" #: msg_error_playing_media msgid "Error playing media!" msgstr "Erreur de lecture du média\\!" #: msg_activity_finished msgid "Activity finished!" msgstr "Activité terminée\\!" #: msg_playing_media msgid "Playing media" msgstr "Lecture du média" #: msg_activity_running msgid "Activity running" msgstr "Activité en cours" #: msg_activity_ready msgid "Activity ready" msgstr "Activité prête" #: msg_initializing msgid "Initializing..." msgstr "Initialisation..." #: msg_preparing_media msgid "Preparing media" msgstr "Préparation du média" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Erreur au chargement de l'activité" #: msg_loading_activity msgid "Loading activity" msgstr "Chargement de l'activité" #: msg_loading_project msgid "Loading project..." msgstr "Chargement du projet..." #: msg_ready msgid "Ready" msgstr "Prêt" #: err_reading_data msgid "Error loading file" msgstr "Erreur de chargement du fichier" #: err_file_save msgid "Error saving file!" msgstr "Erreur de sauvegarde du fichier\\!" #: err_file_open msgid "Error opening file!" msgstr "Erreur à l'ouverture du fichier\\!" #: report_started msgid "Session started:" msgstr "Session démarrée\\:" #: report_lb_score msgid "Score" msgstr "Score" #: report_lb_actions msgid "Actions" msgstr "Actions" #: report_lb_solved msgid "Ok" msgstr "Ok" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Activité" #: report_lb_sequence msgid "Sequence" msgstr "Séquence" #: report_global_score msgid "Global score:" msgstr "Score global\\:" #: report_total_time msgid "Total time on activities:" msgstr "Temps total sur l'activité\\:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Activités ok\\:" #: report_num_activities msgid "Activities done:" msgstr "Activités faites\\:" #: report_num_sequences msgid "Sequences:" msgstr "Séquences\\:" #: report_system msgid "Report system:" msgstr "Report système\\:" #: report_user msgid "User:" msgstr "Utilisateur\\:" #: report_not_finished msgid "Activity not finished" msgstr "Activité non terminée" #: action_info_tooltip msgid "Additional information" msgstr "Information additionnelle" #: action_help_caption msgid "Help" msgstr "Aide" #: action_help_tooltip msgid "Help about this activity" msgstr "Aide à propos de cette activité" #: action_audio_caption msgid "Sounds" msgstr "Sons" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Activer/Désactiver sons" #: about_window_lb_system msgid "System" msgstr "Système" #: about_window_lb_total_mem msgid "Total memory" msgstr "Mémoire totale" #: about_window_lb_free_mem msgid "Free memory" msgstr "Mémoire libre" #: about_window_lb_java_home msgid "Java home" msgstr "Java home" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java virtual machine" #: about_window_lb_java_version msgid "Java version" msgstr "Java version" #: about_window_lb_os msgid "Operating system" msgstr "Operating system" #: about_window_lb_version msgid "Version" msgstr "Version" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descripteurs" #: about_window_lb_description msgid "Description" msgstr "Description" #: about_window_lb_history msgid "History" msgstr "Historique" #: about_window_lb_organizations msgid "Organizations" msgstr "Organisations" #: about_window_lb_organization msgid "Organization" msgstr "Organisation" #: about_window_lb_authors msgid "Authors" msgstr "Auteurs" #: about_window_lb_author msgid "Author" msgstr "Auteur" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Activité" #: help_window_close_button msgid "Return to activity" msgstr "Retour à l'activité" #: help_window_caption msgid "Help window" msgstr "Fenêtre d'aide" #: action_about_caption msgid "Reports" msgstr "Rapports" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Installateurs de projets JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Aucun utilisateur n'est défini dans la base de rapports\\!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Aucun utiliateur n'est défini pour ce groupe dans la base de données\\!" #: report_new_user msgid "New user..." msgstr "Nouvel utiliateur..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Créer un nouvel utilisateur dans la base de rapports" #: report_err_creating_user msgid "Error creating new user!" msgstr "Erreur à la création d'un nouvel utilisateur\\!" #: report_select_user msgid "User identification for the reports database" msgstr "Identification de l'utilisateur pour la base de rapports" #: report_userlist_title msgid "Please select your name:" msgstr "Sélectionnez votre nom\\:" #: report_ident_user msgid "User identification" msgstr "Identification de l'utilisateur" #: report_name_prompt msgid "Name:" msgstr "Nom\\:" #: report_id_prompt msgid "Login:" msgstr "Login\\:" #: report_pw_prompt msgid "Password:" msgstr "Mot de passe\\:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmer mot de passe\\:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Création d'un nouvel utilisateur\\:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Donnée incorrecte\\!" #: report_generic_group_name msgid "Generic" msgstr "Générique" #: report_new_group msgid "Create a new group..." msgstr "Créer un nouveau groupe..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Erreur à la création d'un nouveau groupe\\!" #: report_grouplist_title msgid "Please select your group:" msgstr "Sélectionnez votre groupe\\:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Création d'un nouveau groupe d'utilisateurs\\:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "ID utilisateur absente ou mot de passe incorrect." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Ce compte est protégé par un mot de passe." #: report_err_init msgid "Error initializing report system." msgstr "Erreur à l'initialisation du système de rapports." #: report_not_connected msgid "not connected" msgstr "non connecté" #: report_err_creating msgid "Error creating reports agent" msgstr "Erreur à la création d'un agent de rapports" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Retour" #: action_return_tooltip msgid "Return to the last menu" msgstr "Retour au dernier menu" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sons (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Fichiers MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Fichiers Video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Fichiers Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Habillages (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Tous les fichiers média" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Le fichier" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "est en dehors du dossier du projet courant." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Il est conseillé de placer tous les fichiers dans le même dossier." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" "Voulez-vous copier les fichiers sélectionnés dans le dossier du projets ?" #: filesystem_copyFile msgid "Copying file" msgstr "Copie de fichier" #: msg_loading msgid "Loading" msgstr "Chargement" #: report_err_bad_id msgid "Bad identifier!" msgstr "Mauvais identifiant\\!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Cet identifiant existe déjà dans la base de données\\!" #: report_err_bad_name msgid "Bad name!" msgstr "Mauvais nom\\!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Les mots de passe ne fonctionnent pas\\!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Erreur de connexion à la base de rapports\\!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "QUITTER\\: A ce point, le programme se termine." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "A ce point le programme sautera vers le projet\\:" #: ftype_image msgid "Image" msgstr "Image" #: ftype_audio msgid "Digital audio" msgstr "Digital audio" #: ftype_midi msgid "MIDI file" msgstr "Fichier MIDI" #: ftype_xml msgid "XML file" msgstr "Fichier XML" #: ftype_anim msgid "Animation" msgstr "Animation" #: ftype_video msgid "Digital video" msgstr "Digital video" #: ftype_font msgid "TrueType font" msgstr "Type de police TrueType" #: ftype_jclic msgid "JClic project" msgstr "Projet JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script d'installateur de projet JClic" #: ftype_unknown msgid "Unknown" msgstr "Inconnu" #: ftype_animated msgid "animated" msgstr "animé" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Styles (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U\\#38" #: editor_moveDown_keys msgid "W#40" msgstr "W\\#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML documents (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_fr.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_fr.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Avec le support de\\:" #: about_window_systemInfo msgid "System information" msgstr "Système information" #: about_window_projectInfo msgid "Current project info" msgstr "Info projet courant" #: about_window_reportInfo msgid "Current session results" msgstr "Résultats de session courante" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Ce produit inclus les logiciels développés par\\:" #: msg_saving_project msgid "Saving project..." msgstr "Enregistrement du projet..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Fichiers textes(*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Version Française: Gilles Parenna et Ahmet Yavuz" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Ce programme est un logiciel libre ; vous pouvez le redistribuer et/ou le " "modifier conformément aux dispositions de la Licence Publique Générale GNU, " "telle que publiée par la Free Software Foundation ; version 2 de la licence, " "ou encore (à votre choix) toute version ultérieure.
 
Ce " "programme est distribué dans l’espoir qu’il sera utile, mais SANS AUCUNE " "GARANTIE ; sans même la garantie implicite de COMMERCIALISATION ou " "D’ADAPTATION A UN OBJET PARTICULIER. Pour plus de détails, voir la Licence Publique Générale " "GNU." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_ru.po0000644000175000017500000005031011377161311022327 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-11-15 20:19+0000\n" "Last-Translator: Serafim Nenarokov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "время" #: label_actions msgid "tries" msgstr "попытки" #: label_score msgid "score" msgstr "счёт" #: Skin msgid "Skin" msgstr "Оформление" #: action_next_caption msgid "Next" msgstr "Следующий" #: action_next_tooltip msgid "Next activity" msgstr "Следующее действие" #: action_prev_caption msgid "Previous" msgstr "Предыдущий" #: action_prev_tooltip msgid "Previous activity" msgstr "Предыдущее действие" #: action_reset_caption msgid "Restart" msgstr "Перезапустить" #: action_reset_tooltip msgid "Restart activity" msgstr "Перезапуск действия" #: action_info_caption msgid "Information" msgstr "Информация" #: about_window_lb_project msgid "Project" msgstr "Проект" #: about_window_lb_languages msgid "languages" msgstr "языки" #: about_window_lb_language msgid "language" msgstr "язык" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Вернуться" #: about_window_caption msgid "About" msgstr "О программе" #: action_about_tooltip msgid "User reports" msgstr "Отчёты пользователя" #: about_window_lb_report msgid "Report" msgstr "Отчет" #: about_window_browser_button msgid "View in browser" msgstr "Посмотреть в браузере" #: report_no_activities msgid "No activities reported!" msgstr "Нет сообщенных действий!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Отчёт не зарегистрирован в БД" #: report_lb_time msgid "Time" msgstr "Время" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Ошибка загрузки последовательности" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Ошибка инициализации QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "Открыть URL..." #: filesystem_openFile msgid "Open file..." msgstr "Открыть файл..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Пожалуйста, введите URL ресурса для загрузки." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Ошибка выполнения команды:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Переместить выделенный элемент вниз" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Переместить выделенный элемент вверх" #: editor_moveDown msgid "Move down" msgstr "Переместить вниз" #: editor_moveUp msgid "Move up" msgstr "Переместить вверх" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Файлы изображений (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG изображения" #: filefilter_jpg msgid "JPG images" msgstr "JPG изображения" #: filefilter_gif msgid "GIF images" msgstr "GIF изображения" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "URL-файлы доступны только для чтения." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Пакеты Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Все файлы" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Проекты JClic и Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Проекты JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Сжатые пакеты Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Открытые проекты Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Сжатые пакеты JClic (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Проекты JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Мультимедиа система" #: about_window_lb_level msgid "Level" msgstr "Уровень" #: about_window_lb_area msgid "Area" msgstr "Область" #: report_num_actions msgid "Actions done:" msgstr "Завершено действий:" #: report_project msgid "Project:" msgstr "Проект:" #: report_lb_totals msgid "Total:" msgstr "Итого:" #: report_num_projects msgid "Projects:" msgstr "Проекты:" #: report_session msgid "Session:" msgstr "Сессия:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "В целях безопасности, выполнение внешних программ запрещено в апплетах JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Ошибка начала действия!" #: msg_error_loading_project msgid "Error loading project" msgstr "Ошибка загрузки проекта" #: msg_error_playing_media msgid "Error playing media!" msgstr "Ошибка проигрывания медиа!" #: msg_activity_finished msgid "Activity finished!" msgstr "Действие завершено!" #: msg_playing_media msgid "Playing media" msgstr "Проигрывание медиа" #: msg_activity_running msgid "Activity running" msgstr "Действие выполняется" #: msg_activity_ready msgid "Activity ready" msgstr "Действие готово" #: msg_initializing msgid "Initializing..." msgstr "Инициализация..." #: msg_preparing_media msgid "Preparing media" msgstr "Подготовка медиа" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Ошибка загрузки действия" #: msg_loading_activity msgid "Loading activity" msgstr "Загрузка действия" #: msg_loading_project msgid "Loading project..." msgstr "Загрузка проекта..." #: msg_ready msgid "Ready" msgstr "Готово" #: err_reading_data msgid "Error loading file" msgstr "Ошибка загрузки файла" #: err_file_save msgid "Error saving file!" msgstr "Ошибка сохранения файла!" #: err_file_open msgid "Error opening file!" msgstr "Ошибка открытия файла!" #: report_started msgid "Session started:" msgstr "Сессия начата:" #: report_lb_score msgid "Score" msgstr "Счёт" #: report_lb_actions msgid "Actions" msgstr "Действия" #: report_lb_solved msgid "Ok" msgstr "Ok" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Активность" #: report_lb_sequence msgid "Sequence" msgstr "Последовательность" #: report_global_score msgid "Global score:" msgstr "Общий счёт:" #: report_total_time msgid "Total time on activities:" msgstr "Общее время активности:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Действия в порядке:" #: report_num_activities msgid "Activities done:" msgstr "Совершенные действия:" #: report_num_sequences msgid "Sequences:" msgstr "Последовательности:" #: report_system msgid "Report system:" msgstr "Система отчётов:" #: report_user msgid "User:" msgstr "Пользователь:" #: report_not_finished msgid "Activity not finished" msgstr "Действие не завершено" #: action_info_tooltip msgid "Additional information" msgstr "Дополнительная информация" #: action_help_caption msgid "Help" msgstr "Справка" #: action_help_tooltip msgid "Help about this activity" msgstr "Помощь по этому действию" #: action_audio_caption msgid "Sounds" msgstr "Звуки" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Включить/выключить звуки" #: about_window_lb_system msgid "System" msgstr "Система" #: about_window_lb_total_mem msgid "Total memory" msgstr "Всего памяти" #: about_window_lb_free_mem msgid "Free memory" msgstr "Свободная память" #: about_window_lb_java_home msgid "Java home" msgstr "Java home" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Виртуальная машина Java" #: about_window_lb_java_version msgid "Java version" msgstr "Версия Java" #: about_window_lb_os msgid "Operating system" msgstr "Операционная система" #: about_window_lb_version msgid "Version" msgstr "Версия" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Дескрипторы" #: about_window_lb_description msgid "Description" msgstr "Описание" #: about_window_lb_history msgid "History" msgstr "История" #: about_window_lb_organizations msgid "Organizations" msgstr "Организации" #: about_window_lb_organization msgid "Organization" msgstr "Организация" #: about_window_lb_authors msgid "Authors" msgstr "Авторы" #: about_window_lb_author msgid "Author" msgstr "Автор" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Активность" #: help_window_close_button msgid "Return to activity" msgstr "Возврат к действию" #: help_window_caption msgid "Help window" msgstr "Окно справки" #: action_about_caption msgid "Reports" msgstr "Отчёты" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Установочные файлы проектов JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Пользователи не определены в базе данных отчётов!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "Пользователи не определены для этой группы в базе данных отчётов!" #: report_new_user msgid "New user..." msgstr "Новый пользователь..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Создать нового пользователя в базе данных отчётов" #: report_err_creating_user msgid "Error creating new user!" msgstr "Ошибка создания нового пользователя!" #: report_select_user msgid "User identification for the reports database" msgstr "Идентификация пользователя для базы данных отчётов" #: report_userlist_title msgid "Please select your name:" msgstr "Пожалуйста, выберите ваше имя:" #: report_ident_user msgid "User identification" msgstr "Идентификация пользователя" #: report_name_prompt msgid "Name:" msgstr "Имя:" #: report_id_prompt msgid "Login:" msgstr "Логин:" #: report_pw_prompt msgid "Password:" msgstr "Пароль:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Подтверждение пароля:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Создание нового пользователя:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Неверные данные!" #: report_generic_group_name msgid "Generic" msgstr "Родовой" #: report_new_group msgid "Create a new group..." msgstr "Создать новую группу..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Ошибка создания новой группы!" #: report_grouplist_title msgid "Please select your group:" msgstr "Пожалуйста, выберите Вашу группу:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Создание новой группы пользователей" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "ID пользователя отсутствует или пароль неверный." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Этот аккаунт защищен паролем." #: report_err_init msgid "Error initializing report system." msgstr "Ошибка инициализации системы отчетов." #: report_not_connected msgid "not connected" msgstr "не соединено." #: report_err_creating msgid "Error creating reports agent" msgstr "Ошибка создания агента отчетов" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Возврат" #: action_return_tooltip msgid "Return to the last menu" msgstr "Вернуться в предыдущее меню" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Звуки (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI файлы (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Видеофайлы (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Файлы Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Скины (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Все медиафайлы" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Файл" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "вне текущей папки проекта." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Целесообразно иметь все файлы в одной папке." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Вы хотите скопировать выбранный файл в папку проекта?" #: filesystem_copyFile msgid "Copying file" msgstr "Копирование файла" #: msg_loading msgid "Loading" msgstr "Загрузка" #: report_err_bad_id msgid "Bad identifier!" msgstr "Плохой идентификатор!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Этот идентификатор уже существует в базе!" #: report_err_bad_name msgid "Bad name!" msgstr "Плохое имя!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Пароли не совпадают!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Ошибка соединения с базой отчетов!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "ВЫХОД: в этой точке программа завершится." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "В этой точке программа прыгнет в проект:" #: ftype_image msgid "Image" msgstr "Изображение" #: ftype_audio msgid "Digital audio" msgstr "Цифровое аудио" #: ftype_midi msgid "MIDI file" msgstr "MIDI файл" #: ftype_xml msgid "XML file" msgstr "XML файл" #: ftype_anim msgid "Animation" msgstr "Анимация" #: ftype_video msgid "Digital video" msgstr "Цифровое видео" #: ftype_font msgid "TrueType font" msgstr "Шрифт TrueType" #: ftype_jclic msgid "JClic project" msgstr "Проект JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Скрипт-инсталлятор проекта JClic" #: ftype_unknown msgid "Unknown" msgstr "Неизвестный" #: ftype_animated msgid "animated" msgstr "анимированный" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Шрифты (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML документы (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "При поддержке:" #: about_window_systemInfo msgid "System information" msgstr "Информация о системе" #: about_window_projectInfo msgid "Current project info" msgstr "Информация о текущем проекте" #: about_window_reportInfo msgid "Current session results" msgstr "Результаты текущей сессии" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Этот продукт содержит ПО, разработанное:" #: msg_saving_project msgid "Saving project..." msgstr "Сохранение проекта..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Текстовые файлы (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Анлийская версия разработана командой JClic" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Данная программа является свободным программным обеспечением. Вы вправе " "распространять ее и/или модифицировать в соответствии с условиями " "Стандартной Общественной Лицензии GNU, опубликованной Free Software " "Foundation; либо с условиями версии 2 лицензии, либо (по вашему выбору) " "любыми более поздними версиями.
 
Мы распространяем данную " "программу в надежде на то, что она будет вам полезной, однако НЕ " "ПРЕДОСТАВЛЯЕМ НА НЕЕ НИКАКИХ ГАРАНТИЙ; даже без гарантии ТОВАРНОГО СОСТОЯНИЯ " "ПРИ ПРОДАЖЕ и ПРИГОДНОСТИ ДЛЯ ИСПОЛЬЗОВАНИЯ В КОНКРЕТНЫХ ЦЕЛЯХ. Смотрите GNU General Public " "License для получения более подробной информации." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_tr.po0000644000175000017500000004206011377161311022331 0ustar # Turkish translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-03-12 09:08+0000\n" "Last-Translator: Ahmet YAVUZ \n" "Language-Team: Turkish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "zaman" #: label_actions msgid "tries" msgstr "Denemeler" #: label_score msgid "score" msgstr "sonuç" #: Skin msgid "Skin" msgstr "Görünüm" #: action_next_caption msgid "Next" msgstr "Sonraki" #: action_next_tooltip msgid "Next activity" msgstr "Bir sonraki etkinlik" #: action_prev_caption msgid "Previous" msgstr "Önceki" #: action_prev_tooltip msgid "Previous activity" msgstr "Bir önceki etkinlik" #: action_reset_caption msgid "Restart" msgstr "Yeniden Başla" #: action_reset_tooltip msgid "Restart activity" msgstr "Etkinliği tekrar başlat" #: action_info_caption msgid "Information" msgstr "Bilgi" #: about_window_lb_project msgid "Project" msgstr "Proje" #: about_window_lb_languages msgid "languages" msgstr "Diller" #: about_window_lb_language msgid "language" msgstr "dil" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Geri" #: about_window_caption msgid "About" msgstr "Hakkında" #: action_about_tooltip msgid "User reports" msgstr "Kullanıcı raporları" #: about_window_lb_report msgid "Report" msgstr "Rapor" #: about_window_browser_button msgid "View in browser" msgstr "Tarayıcıda gör" #: report_no_activities msgid "No activities reported!" msgstr "Etkinlik raporu yok!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Rapor herhangi bir veritabanında kaydedilmedi" #: report_lb_time msgid "Time" msgstr "Zaman" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Etkinlik dizisi yüklenirken hata oluştu" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "QuickTime başlatılamıyor!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "URL Aç..." #: filesystem_openFile msgid "Open file..." msgstr "Dosya aç..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Yüklenecek URL'yi giriniz." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Komut çalıştırılamadı:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Seçilen öğeyi aşağıya kaydır" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Seçilen öğeyi yukarıya kaydır" #: editor_moveDown msgid "Move down" msgstr "Aşağı Kaydır" #: editor_moveUp msgid "Move up" msgstr "Yukarı kaydır" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Resim dosyaları *.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG resim dosyası" #: filefilter_jpg msgid "JPG images" msgstr "JPG resim dosyası" #: filefilter_gif msgid "GIF images" msgstr "GIF resim dosyası" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Salt okunur URL dosyaları" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Clic 3.0 paketi (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Tüm dosyalar" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "JClic ve Clic 3.0 projeleri (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "JClic projeleri(*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Clic 3.0 kompakt paket (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 open packages (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "JClic sıkıştırılmış projeleri (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "JClic projeleri (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Çoklu ortam sistemi" #: about_window_lb_level msgid "Level" msgstr "Seviye" #: about_window_lb_area msgid "Area" msgstr "Alan" #: report_num_actions msgid "Actions done:" msgstr "Eylem gerçekleştiriliyor:" #: report_project msgid "Project:" msgstr "Proje:" #: report_lb_totals msgid "Total:" msgstr "Toplam:" #: report_num_projects msgid "Projects:" msgstr "Projeler:" #: report_session msgid "Session:" msgstr "Oturum:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "Güvenlik nedeniyle dış programlar JClic içerisinde çalıştırılmıyor." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Etkinlik başlatılamıyor!" #: msg_error_loading_project msgid "Error loading project" msgstr "Proje yüklenemiyor" #: msg_error_playing_media msgid "Error playing media!" msgstr "Çoklu ortam oynatma hatası!" #: msg_activity_finished msgid "Activity finished!" msgstr "Etkinlik tamamlandı!" #: msg_playing_media msgid "Playing media" msgstr "Çoklu ortam oynatılıyor" #: msg_activity_running msgid "Activity running" msgstr "Etkinlik başlatıldı" #: msg_activity_ready msgid "Activity ready" msgstr "Etkinlik hazır" #: msg_initializing msgid "Initializing..." msgstr "Başlatılıyor..." #: msg_preparing_media msgid "Preparing media" msgstr "Çoklu ortam hazırlanıyor" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Etkinlik yükleme hatası" #: msg_loading_activity msgid "Loading activity" msgstr "Etkinlik yükleniyor" #: msg_loading_project msgid "Loading project..." msgstr "Proje yükleniyor..." #: msg_ready msgid "Ready" msgstr "Hazır" #: err_reading_data msgid "Error loading file" msgstr "Dosya yükleme hatası" #: err_file_save msgid "Error saving file!" msgstr "Dosya kaydetme hatası!" #: err_file_open msgid "Error opening file!" msgstr "Dosya açılamıyor!" #: report_started msgid "Session started:" msgstr "Oturum başlatıldı" #: report_lb_score msgid "Score" msgstr "Skor" #: report_lb_actions msgid "Actions" msgstr "Eylemler" #: report_lb_solved msgid "Ok" msgstr "Tamam" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Etkinlik" #: report_lb_sequence msgid "Sequence" msgstr "Etkinlik dizisi" #: report_global_score msgid "Global score:" msgstr "Genel sonuç:" #: report_total_time msgid "Total time on activities:" msgstr "Etkinlikde geçirilen toplam zaman:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Etkinlikler tamam:" #: report_num_activities msgid "Activities done:" msgstr "Etkinlikler başlatılıyor:" #: report_num_sequences msgid "Sequences:" msgstr "Etkinlik dizisi" #: report_system msgid "Report system:" msgstr "Sistem raporu:" #: report_user msgid "User:" msgstr "Kullanıcı:" #: report_not_finished msgid "Activity not finished" msgstr "Etkinlik tamamlanmadı" #: action_info_tooltip msgid "Additional information" msgstr "Ek bilgi" #: action_help_caption msgid "Help" msgstr "Yardım" #: action_help_tooltip msgid "Help about this activity" msgstr "Bu etkinlik hakkında yardım" #: action_audio_caption msgid "Sounds" msgstr "Sesler" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Ses aç/kapa" #: about_window_lb_system msgid "System" msgstr "Sistem" #: about_window_lb_total_mem msgid "Total memory" msgstr "Toplam bellek" #: about_window_lb_free_mem msgid "Free memory" msgstr "Boş bellek" #: about_window_lb_java_home msgid "Java home" msgstr "Java anasayfa" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java sanal makine" #: about_window_lb_java_version msgid "Java version" msgstr "Java sürüm" #: about_window_lb_os msgid "Operating system" msgstr "İşletim sistemi" #: about_window_lb_version msgid "Version" msgstr "Sürüm" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Açıklayıcılar" #: about_window_lb_description msgid "Description" msgstr "Açıklama" #: about_window_lb_history msgid "History" msgstr "Geçmiş" #: about_window_lb_organizations msgid "Organizations" msgstr "Kurumlar" #: about_window_lb_organization msgid "Organization" msgstr "Kurum" #: about_window_lb_authors msgid "Authors" msgstr "Yazarlar" #: about_window_lb_author msgid "Author" msgstr "Yazar" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Etkinlik" #: help_window_close_button msgid "Return to activity" msgstr "Etkinliğe geri dön" #: help_window_caption msgid "Help window" msgstr "Yardım penceresi" #: action_about_caption msgid "Reports" msgstr "Raporlar" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HT" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "JClic proje kurucusu (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Rapor veritabanında kullanıcılar tanımlanmadı!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "Rapor veritabanında bu grup için kullanıcılar tanımlanmadı!" #: report_new_user msgid "New user..." msgstr "Yeni kullanıcı..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Rapor veritabanında yeni kullanıcı oluştur" #: report_err_creating_user msgid "Error creating new user!" msgstr "Yeni kullanıcı oluşturma hatası" #: report_select_user msgid "User identification for the reports database" msgstr "Veri tabanı raporları için kullanıcı tanımlanması" #: report_userlist_title msgid "Please select your name:" msgstr "Lütfen isminizi seçiniz:" #: report_ident_user msgid "User identification" msgstr "Kullanıcı kimliği" #: report_name_prompt msgid "Name:" msgstr "İsim:" #: report_id_prompt msgid "Login:" msgstr "Giriş:" #: report_pw_prompt msgid "Password:" msgstr "Şifre" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Şifreyi onaylayınız:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Yeni kullanıcı oluşturma" #: report_err_bad_data msgid "Incorrect data!" msgstr "Hatalı veri!" #: report_generic_group_name msgid "Generic" msgstr "Genel" #: report_new_group msgid "Create a new group..." msgstr "Yeni grup oluştur..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "yeni grup oluştururken hata meydana geldi!" #: report_grouplist_title msgid "Please select your group:" msgstr "Lütfen grubunuzu seçiniz:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Yeni kullanıcılar grubu oluştur" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Böyle bir kullanıcı yok veya hatalı şifre." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Bu hesap şifreyle korunmaktadır." #: report_err_init msgid "Error initializing report system." msgstr "Rapor sistemi başlatılırken hata oluştu." #: report_not_connected msgid "not connected" msgstr "bağlı değil" #: report_err_creating msgid "Error creating reports agent" msgstr "Rapor oluşturulurken hata oluştu" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Geri" #: action_return_tooltip msgid "Return to the last menu" msgstr "Son menüye geri dön" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sesler (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI dosyaları (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video dosyaları (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 dosyaları (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Dış görünümler (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Tüm ortam dosyaları" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Dosya" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "Geçerli proje klasörünün dışında" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Tüm dosyaların aynı klasörde olması önerilir" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Seçili dosyaları proje klasörüne kopyalamak istiyormusunuz?" #: filesystem_copyFile msgid "Copying file" msgstr "Dosya kopyalanıyor" #: msg_loading msgid "Loading" msgstr "Yükleniyor" #: report_err_bad_id msgid "Bad identifier!" msgstr "Hatalı kullanıcı!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Veri tabanında mevcut!" #: report_err_bad_name msgid "Bad name!" msgstr "İsim hatalı!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Şifre kullanıcı adına karşılık gelmiyor!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Rapor veritabanına bağlanma hatası!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "ÇIK: Bu noktada program kapatılacaktır." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Bu noktada program projeye geçiş yapacaktır:" #: ftype_image msgid "Image" msgstr "Resim" #: ftype_audio msgid "Digital audio" msgstr "Dijital ses" #: ftype_midi msgid "MIDI file" msgstr "Midi dosyası" #: ftype_xml msgid "XML file" msgstr "XML dosyası" #: ftype_anim msgid "Animation" msgstr "Canlandırma" #: ftype_video msgid "Digital video" msgstr "Dijital video" #: ftype_font msgid "TrueType font" msgstr "TrueType yazıtipi" #: ftype_jclic msgid "JClic project" msgstr "JClic projesi" #: ftype_inst msgid "JClic project installer script" msgstr "JClic proje kurulum skripti" #: ftype_unknown msgid "Unknown" msgstr "Bilinmeyen" #: ftype_animated msgid "animated" msgstr "canlandırıldı" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Yazıtipleri (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML belgeleri (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "hakkında/katkıda bulunanlar.html" #: about_licenseDoc msgid "about/license.html" msgstr "hakkında/lisans.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Katkıda bulunanlar:" #: about_window_systemInfo msgid "System information" msgstr "Sistem bilgisi" #: about_window_projectInfo msgid "Current project info" msgstr "Geçerli proje bilgisi" #: about_window_reportInfo msgid "Current session results" msgstr "Geçerli oturum sonuçları" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "" "Bu ürün aşağıdaki kişiler veya kurumlar tarafından geliştirilen yazılımları " "içermektedir:" #: msg_saving_project msgid "Saving project..." msgstr "Proje kaydediliyor..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Metin dosyaları *.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Turkish version by Ahmet YAVUZ" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public " "License for more details." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_ar.po0000644000175000017500000003347111377161311022314 0ustar # Arabic translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-09-18 01:44+0000\n" "Last-Translator: Nizar Kerkeni \n" "Language-Team: Arabic \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "الوقت" #: label_actions msgid "tries" msgstr "المحاولات" #: label_score msgid "score" msgstr "النتيجة" #: Skin msgid "Skin" msgstr "الكسوة" #: action_next_caption msgid "Next" msgstr "التالي" #: action_next_tooltip msgid "Next activity" msgstr "النشاط التالي" #: action_prev_caption msgid "Previous" msgstr "السابق" #: action_prev_tooltip msgid "Previous activity" msgstr "النشاط السابق" #: action_reset_caption msgid "Restart" msgstr "استئنف" #: action_reset_tooltip msgid "Restart activity" msgstr "استئنف النشاط" #: action_info_caption msgid "Information" msgstr "المعلومة" #: about_window_lb_project msgid "Project" msgstr "المشروع" #: about_window_lb_languages msgid "languages" msgstr "اللغات" #: about_window_lb_language msgid "language" msgstr "اللغة" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "عُد" #: about_window_caption msgid "About" msgstr "عنْ" #: action_about_tooltip msgid "User reports" msgstr "تقارير المستخدم" #: about_window_lb_report msgid "Report" msgstr "التقرير" #: about_window_browser_button msgid "View in browser" msgstr "اعرض في متصفح" #: report_no_activities msgid "No activities reported!" msgstr "" #: report_system_standard msgid "Report not registered in any DB" msgstr "" #: report_lb_time msgid "Time" msgstr "الوقت" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "" #: media_check_url msgid "messages/checkmedia.html" msgstr "" #: filesystem_openURL msgid "Open URL..." msgstr "" #: filesystem_openFile msgid "Open file..." msgstr "إفتح ملفا..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "" #: msg_error_executing_external msgid "Error executing the command:" msgstr "" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "" #: editor_moveDown msgid "Move down" msgstr "حرّك إلى الأسفل" #: editor_moveUp msgid "Move up" msgstr "حرّك إلى الأعلى" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "" #: filefilter_png msgid "PNG images" msgstr "" #: filefilter_jpg msgid "JPG images" msgstr "" #: filefilter_gif msgid "GIF images" msgstr "" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "" #: filefilter_all msgid "All files" msgstr "جميع الملفات" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "" #: about_window_lb_level msgid "Level" msgstr "المستوى" #: about_window_lb_area msgid "Area" msgstr "المساحة" #: report_num_actions msgid "Actions done:" msgstr "" #: report_project msgid "Project:" msgstr "المشروع:" #: report_lb_totals msgid "Total:" msgstr "المجموع:" #: report_num_projects msgid "Projects:" msgstr "المشاريع:" #: report_session msgid "Session:" msgstr "الجلسة:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "" #: msg_error_loading_project msgid "Error loading project" msgstr "" #: msg_error_playing_media msgid "Error playing media!" msgstr "" #: msg_activity_finished msgid "Activity finished!" msgstr "" #: msg_playing_media msgid "Playing media" msgstr "" #: msg_activity_running msgid "Activity running" msgstr "" #: msg_activity_ready msgid "Activity ready" msgstr "" #: msg_initializing msgid "Initializing..." msgstr "" #: msg_preparing_media msgid "Preparing media" msgstr "" #: msg_error_loading_activity msgid "Error loading activity" msgstr "" #: msg_loading_activity msgid "Loading activity" msgstr "" #: msg_loading_project msgid "Loading project..." msgstr "" #: msg_ready msgid "Ready" msgstr "جاهز" #: err_reading_data msgid "Error loading file" msgstr "" #: err_file_save msgid "Error saving file!" msgstr "" #: err_file_open msgid "Error opening file!" msgstr "" #: report_started msgid "Session started:" msgstr "" #: report_lb_score msgid "Score" msgstr "النتيجة" #: report_lb_actions msgid "Actions" msgstr "الإجراءات" #: report_lb_solved msgid "Ok" msgstr "موافق" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "النشاط" #: report_lb_sequence msgid "Sequence" msgstr "التسلسل" #: report_global_score msgid "Global score:" msgstr "" #: report_total_time msgid "Total time on activities:" msgstr "" #: report_num_activities_solved msgid "Activities ok:" msgstr "" #: report_num_activities msgid "Activities done:" msgstr "" #: report_num_sequences msgid "Sequences:" msgstr "" #: report_system msgid "Report system:" msgstr "" #: report_user msgid "User:" msgstr "المستخدم:" #: report_not_finished msgid "Activity not finished" msgstr "" #: action_info_tooltip msgid "Additional information" msgstr "معلومات إضافية" #: action_help_caption msgid "Help" msgstr "المساعدة" #: action_help_tooltip msgid "Help about this activity" msgstr "" #: action_audio_caption msgid "Sounds" msgstr "الأصوات" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "" #: about_window_lb_system msgid "System" msgstr "النّظام" #: about_window_lb_total_mem msgid "Total memory" msgstr "" #: about_window_lb_free_mem msgid "Free memory" msgstr "" #: about_window_lb_java_home msgid "Java home" msgstr "" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "" #: about_window_lb_java_version msgid "Java version" msgstr "" #: about_window_lb_os msgid "Operating system" msgstr "نظام التشغيل" #: about_window_lb_version msgid "Version" msgstr "الإصدار" #: about_window_lb_descriptors msgid "Descriptors" msgstr "" #: about_window_lb_description msgid "Description" msgstr "الوصف" #: about_window_lb_history msgid "History" msgstr "التأريخ" #: about_window_lb_organizations msgid "Organizations" msgstr "المنظمات" #: about_window_lb_organization msgid "Organization" msgstr "المنظمة" #: about_window_lb_authors msgid "Authors" msgstr "المؤلفون" #: about_window_lb_author msgid "Author" msgstr "المؤلف" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "النشاط" #: help_window_close_button msgid "Return to activity" msgstr "" #: help_window_caption msgid "Help window" msgstr "نافذة المساعدة" #: action_about_caption msgid "Reports" msgstr "التقارير" #: action_about_keys msgid "RR" msgstr "" #: action_audio_keys msgid "SS" msgstr "" #: action_help_keys msgid "HH" msgstr "" #: action_info_keys msgid "II" msgstr "" #: action_next_keys msgid "N*" msgstr "" #: action_prev_keys msgid "P*" msgstr "" #: action_reset_keys msgid "R*" msgstr "" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" #: report_new_user msgid "New user..." msgstr "مستخدم جديد..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "" #: report_err_creating_user msgid "Error creating new user!" msgstr "" #: report_select_user msgid "User identification for the reports database" msgstr "" #: report_userlist_title msgid "Please select your name:" msgstr "" #: report_ident_user msgid "User identification" msgstr "" #: report_name_prompt msgid "Name:" msgstr "الإسم:" #: report_id_prompt msgid "Login:" msgstr "الولوج:" #: report_pw_prompt msgid "Password:" msgstr "كلمة السّر:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "أكد كلمة السر:" #: report_new_user_data msgid "Creation of a new user:" msgstr "" #: report_err_bad_data msgid "Incorrect data!" msgstr "" #: report_generic_group_name msgid "Generic" msgstr "عام" #: report_new_group msgid "Create a new group..." msgstr "" #: report_err_creating_group msgid "Error creating the new group!" msgstr "" #: report_grouplist_title msgid "Please select your group:" msgstr "" #: report_new_group_data msgid "Creation of a new users group:" msgstr "" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "" #: report_user_has_pwd msgid "This account is password-protected." msgstr "" #: report_err_init msgid "Error initializing report system." msgstr "" #: report_not_connected msgid "not connected" msgstr "غير متصل" #: report_err_creating msgid "Error creating reports agent" msgstr "" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "عُد" #: action_return_tooltip msgid "Return to the last menu" msgstr "" #: action_return_keys msgid "T*" msgstr "" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "" #: filefilter_skins msgid "Skins (*.xml)" msgstr "" #: filefilter_all_media msgid "All media files" msgstr "كل ملفات الوسائط المتعددة" #: filesystem_copyToRoot_1 msgid "The file" msgstr "الملف" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" #: filesystem_copyFile msgid "Copying file" msgstr "" #: msg_loading msgid "Loading" msgstr "" #: report_err_bad_id msgid "Bad identifier!" msgstr "" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "" #: report_err_bad_name msgid "Bad name!" msgstr "" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "" #: ftype_image msgid "Image" msgstr "الصورة" #: ftype_audio msgid "Digital audio" msgstr "" #: ftype_midi msgid "MIDI file" msgstr "" #: ftype_xml msgid "XML file" msgstr "" #: ftype_anim msgid "Animation" msgstr "الحركة" #: ftype_video msgid "Digital video" msgstr "" #: ftype_font msgid "TrueType font" msgstr "" #: ftype_jclic msgid "JClic project" msgstr "" #: ftype_inst msgid "JClic project installer script" msgstr "" #: ftype_unknown msgid "Unknown" msgstr "مجهول" #: ftype_animated msgid "animated" msgstr "متحركة" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "" #: editor_moveUp_keys msgid "U#38" msgstr "" #: editor_moveDown_keys msgid "W#40" msgstr "" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "" #: about_creditsDoc msgid "about/credits.html" msgstr "" #: about_licenseDoc msgid "about/license.html" msgstr "" #: about_sponsorsCaption msgid "With the support of:" msgstr "" #: about_window_systemInfo msgid "System information" msgstr "معلومات النظام" #: about_window_projectInfo msgid "Current project info" msgstr "" #: about_window_reportInfo msgid "Current session results" msgstr "" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "" #: msg_saving_project msgid "Saving project..." msgstr "" #: filefilter_text msgid "Text files (*.txt)" msgstr "" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_zh_TW.po0000644000175000017500000003625211377161311022745 0ustar # Traditional Chinese translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-04-12 13:29+0000\n" "Last-Translator: tclin \n" "Language-Team: Traditional Chinese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "時間" #: label_actions msgid "tries" msgstr "" #: label_score msgid "score" msgstr "分數" #: Skin msgid "Skin" msgstr "外觀" #: action_next_caption msgid "Next" msgstr "下一首" #: action_next_tooltip msgid "Next activity" msgstr "下一個活動" #: action_prev_caption msgid "Previous" msgstr "上一頁" #: action_prev_tooltip msgid "Previous activity" msgstr "上一個活動" #: action_reset_caption msgid "Restart" msgstr "重新開始" #: action_reset_tooltip msgid "Restart activity" msgstr "重設活動" #: action_info_caption msgid "Information" msgstr "相關資訊" #: about_window_lb_project msgid "Project" msgstr "專案" #: about_window_lb_languages msgid "languages" msgstr "語言" #: about_window_lb_language msgid "language" msgstr "語言" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "返回" #: about_window_caption msgid "About" msgstr "關於" #: action_about_tooltip msgid "User reports" msgstr "使用者報告" #: about_window_lb_report msgid "Report" msgstr "報告" #: about_window_browser_button msgid "View in browser" msgstr "在瀏覽器檢視" #: report_no_activities msgid "No activities reported!" msgstr "沒有活動報告" #: report_system_standard msgid "Report not registered in any DB" msgstr "" #: report_lb_time msgid "Time" msgstr "時間" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "載入順序錯誤" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "QuickTime 初始化錯誤!" #: media_check_url msgid "messages/checkmedia.html" msgstr "" #: filesystem_openURL msgid "Open URL..." msgstr "開啟 URL..." #: filesystem_openFile msgid "Open file..." msgstr "開啟檔案..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "" #: msg_error_executing_external msgid "Error executing the command:" msgstr "執行指令錯誤:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "向下移動選取的元件" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "向上移動選取的元件" #: editor_moveDown msgid "Move down" msgstr "下移" #: editor_moveUp msgid "Move up" msgstr "上移" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "影像檔 (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG 檔" #: filefilter_jpg msgid "JPG images" msgstr "JPG 檔" #: filefilter_gif msgid "GIF images" msgstr "GIF 檔" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Clic 3.0 套件 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "所有檔案" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "JClic 與 Clic 3.0 專案 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "JClic 專案 (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Clic 3.0 組裝包 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Clic 3.0 開放包 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "JClic 壓縮專案 (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "JClic 專案 (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "多媒體系統" #: about_window_lb_level msgid "Level" msgstr "等級" #: about_window_lb_area msgid "Area" msgstr "" #: report_num_actions msgid "Actions done:" msgstr "活動完成:" #: report_project msgid "Project:" msgstr "專案:" #: report_lb_totals msgid "Total:" msgstr "總計:" #: report_num_projects msgid "Projects:" msgstr "專案:" #: report_session msgid "Session:" msgstr "" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "活動開始錯誤" #: msg_error_loading_project msgid "Error loading project" msgstr "載入專案錯誤" #: msg_error_playing_media msgid "Error playing media!" msgstr "播放媒體錯誤" #: msg_activity_finished msgid "Activity finished!" msgstr "活動完成!" #: msg_playing_media msgid "Playing media" msgstr "播放媒體" #: msg_activity_running msgid "Activity running" msgstr "活動進行中" #: msg_activity_ready msgid "Activity ready" msgstr "活動準備" #: msg_initializing msgid "Initializing..." msgstr "正在初始化..." #: msg_preparing_media msgid "Preparing media" msgstr "媒體準備中" #: msg_error_loading_activity msgid "Error loading activity" msgstr "活動載入錯誤" #: msg_loading_activity msgid "Loading activity" msgstr "活動載入中" #: msg_loading_project msgid "Loading project..." msgstr "專案載入中..." #: msg_ready msgid "Ready" msgstr "準備就緒" #: err_reading_data msgid "Error loading file" msgstr "檔案載入錯誤" #: err_file_save msgid "Error saving file!" msgstr "檔案儲存錯誤!" #: err_file_open msgid "Error opening file!" msgstr "開始檔案錯誤!" #: report_started msgid "Session started:" msgstr "" #: report_lb_score msgid "Score" msgstr "分數" #: report_lb_actions msgid "Actions" msgstr "動作" #: report_lb_solved msgid "Ok" msgstr "確定" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "活動" #: report_lb_sequence msgid "Sequence" msgstr "順序" #: report_global_score msgid "Global score:" msgstr "總成績" #: report_total_time msgid "Total time on activities:" msgstr "活動總時間" #: report_num_activities_solved msgid "Activities ok:" msgstr "活動完成" #: report_num_activities msgid "Activities done:" msgstr "" #: report_num_sequences msgid "Sequences:" msgstr "順序:" #: report_system msgid "Report system:" msgstr "報告系統" #: report_user msgid "User:" msgstr "使用者:" #: report_not_finished msgid "Activity not finished" msgstr "活動沒有完成" #: action_info_tooltip msgid "Additional information" msgstr "額外資訊" #: action_help_caption msgid "Help" msgstr "說明" #: action_help_tooltip msgid "Help about this activity" msgstr "" #: action_audio_caption msgid "Sounds" msgstr "音效" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "啟用/停用 音效" #: about_window_lb_system msgid "System" msgstr "系統" #: about_window_lb_total_mem msgid "Total memory" msgstr "全部記憶體" #: about_window_lb_free_mem msgid "Free memory" msgstr "未用記憶體" #: about_window_lb_java_home msgid "Java home" msgstr "Java 首頁" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java 虛擬機器" #: about_window_lb_java_version msgid "Java version" msgstr "Java版本" #: about_window_lb_os msgid "Operating system" msgstr "作業系統" #: about_window_lb_version msgid "Version" msgstr "版本" #: about_window_lb_descriptors msgid "Descriptors" msgstr "描述" #: about_window_lb_description msgid "Description" msgstr "描述" #: about_window_lb_history msgid "History" msgstr "歷史紀錄" #: about_window_lb_organizations msgid "Organizations" msgstr "組織" #: about_window_lb_organization msgid "Organization" msgstr "組織" #: about_window_lb_authors msgid "Authors" msgstr "作者" #: about_window_lb_author msgid "Author" msgstr "開發者" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "活動" #: help_window_close_button msgid "Return to activity" msgstr "返回活動" #: help_window_caption msgid "Help window" msgstr "說明視窗" #: action_about_caption msgid "Reports" msgstr "報告" #: action_about_keys msgid "RR" msgstr "" #: action_audio_keys msgid "SS" msgstr "" #: action_help_keys msgid "HH" msgstr "" #: action_info_keys msgid "II" msgstr "" #: action_next_keys msgid "N*" msgstr "" #: action_prev_keys msgid "P*" msgstr "" #: action_reset_keys msgid "R*" msgstr "" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "JClic 安裝專案 (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "在報告資料庫中沒有使用者被定義" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "在報告資料庫群組中沒有使用者被定義" #: report_new_user msgid "New user..." msgstr "新使用者..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "在報告資料庫建立新使用者" #: report_err_creating_user msgid "Error creating new user!" msgstr "建立新使用者錯誤!" #: report_select_user msgid "User identification for the reports database" msgstr "報告資料庫的使用者認證" #: report_userlist_title msgid "Please select your name:" msgstr "請選取您的姓名:" #: report_ident_user msgid "User identification" msgstr "使用者認證" #: report_name_prompt msgid "Name:" msgstr "名稱:" #: report_id_prompt msgid "Login:" msgstr "帳號:" #: report_pw_prompt msgid "Password:" msgstr "密碼:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "確認密碼:" #: report_new_user_data msgid "Creation of a new user:" msgstr "建立新使用者:" #: report_err_bad_data msgid "Incorrect data!" msgstr "不正確的資料!" #: report_generic_group_name msgid "Generic" msgstr "一般" #: report_new_group msgid "Create a new group..." msgstr "建立新的群組" #: report_err_creating_group msgid "Error creating the new group!" msgstr "建立新群組錯誤!" #: report_grouplist_title msgid "Please select your group:" msgstr "請選擇您的群組" #: report_new_group_data msgid "Creation of a new users group:" msgstr "建立新的使用者群組" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "錯誤的使用者帳號或不正確的密碼。" #: report_user_has_pwd msgid "This account is password-protected." msgstr "這個帳號有密碼保護。" #: report_err_init msgid "Error initializing report system." msgstr "報告系統初始化錯誤。" #: report_not_connected msgid "not connected" msgstr "未連線" #: report_err_creating msgid "Error creating reports agent" msgstr "" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "返回" #: action_return_tooltip msgid "Return to the last menu" msgstr "返回到最後的選單" #: action_return_keys msgid "T*" msgstr "" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "音效 (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI 檔 (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "影片檔 (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 檔 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "模板 (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "所有媒體檔案" #: filesystem_copyToRoot_1 msgid "The file" msgstr "檔案" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "不在目前的專案資料夾" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "" #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "您要複製所選取的檔案到專案資料夾嗎?" #: filesystem_copyFile msgid "Copying file" msgstr "複製檔案" #: msg_loading msgid "Loading" msgstr "載入中" #: report_err_bad_id msgid "Bad identifier!" msgstr "" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "" #: report_err_bad_name msgid "Bad name!" msgstr "" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "兩次輸入的密碼不符!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "連線到報告資料庫錯誤!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "" #: ftype_image msgid "Image" msgstr "影像" #: ftype_audio msgid "Digital audio" msgstr "數位音樂" #: ftype_midi msgid "MIDI file" msgstr "MIDI 檔" #: ftype_xml msgid "XML file" msgstr "XML 檔" #: ftype_anim msgid "Animation" msgstr "動畫" #: ftype_video msgid "Digital video" msgstr "數位影片" #: ftype_font msgid "TrueType font" msgstr "TrueType 字型檔" #: ftype_jclic msgid "JClic project" msgstr "JClic 專案" #: ftype_inst msgid "JClic project installer script" msgstr "" #: ftype_unknown msgid "Unknown" msgstr "未知" #: ftype_animated msgid "animated" msgstr "" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "字型 (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "" #: editor_moveDown_keys msgid "W#40" msgstr "" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML 文件 (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "" #: about_licenseDoc msgid "about/license.html" msgstr "" #: about_sponsorsCaption msgid "With the support of:" msgstr "" #: about_window_systemInfo msgid "System information" msgstr "系統資訊" #: about_window_projectInfo msgid "Current project info" msgstr "目前專案資訊" #: about_window_reportInfo msgid "Current session results" msgstr "" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "" #: msg_saving_project msgid "Saving project..." msgstr "儲存專案中..." #: filefilter_text msgid "Text files (*.txt)" msgstr "文字檔 (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_de.po0000644000175000017500000004170011377161311022274 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-08-22 13:45+0000\n" "Last-Translator: Keruskerfuerst \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "Zeit" #: label_actions msgid "tries" msgstr "Versuche" #: label_score msgid "score" msgstr "Ergebnis" #: Skin msgid "Skin" msgstr "Design" #: action_next_caption msgid "Next" msgstr "Weiter" #: action_next_tooltip msgid "Next activity" msgstr "Nächste Übung" #: action_prev_caption msgid "Previous" msgstr "Zurück" #: action_prev_tooltip msgid "Previous activity" msgstr "Vorherige Übung" #: action_reset_caption msgid "Restart" msgstr "Neu starten" #: action_reset_tooltip msgid "Restart activity" msgstr "Übung neu starten" #: action_info_caption msgid "Information" msgstr "Information" #: about_window_lb_project msgid "Project" msgstr "Sammlung" #: about_window_lb_languages msgid "languages" msgstr "Sprachen" #: about_window_lb_language msgid "language" msgstr "Sprache" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Zurück" #: about_window_caption msgid "About" msgstr "Info" #: action_about_tooltip msgid "User reports" msgstr "Benutzerberichte" #: about_window_lb_report msgid "Report" msgstr "Übungsbericht" #: about_window_browser_button msgid "View in browser" msgstr "Ansicht im Browser" #: report_no_activities msgid "No activities reported!" msgstr "Keine Übungsberichte vorhanden!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Bericht in keiner Datenbank eingetragen" #: report_lb_time msgid "Time" msgstr "Zeit" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Fehler beim Laden der Sequenz" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Fehler beim Starten von QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "URL öffnen..." #: filesystem_openFile msgid "Open file..." msgstr "Datei öffnen..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "URL der zu ladenden Datei hier eintragen." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Fehler beim Ausführen des Befehls:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Ausgewähltes Element hinunter verschieben" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Ausgewähltes Element nach oben verschieben" #: editor_moveDown msgid "Move down" msgstr "Abwärts" #: editor_moveUp msgid "Move up" msgstr "Aufwärts" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Grafikdateien (*.gif, *.jpg, *.png)" #: filefilter_png msgid "PNG images" msgstr "PNG-Grafiken" #: filefilter_jpg msgid "JPG images" msgstr "JPG-Grafiken" #: filefilter_gif msgid "GIF images" msgstr "GIF-Dateien" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "URL-basierte Dateien können nicht überschrieben werden." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Click 3.0 Pakete (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Alle Dateien" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "JClic und Clic 3.0.Projekte (*.jclic, *.jclic.zip, *.pac. *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "JClic-Projekte (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Komprimierte Clic 3.0.-Pakete (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Offene Clic 3.0-Pakete (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Gezippte JClic-Projekte (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "JClic-Projekte (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Multimediasystem" #: about_window_lb_level msgid "Level" msgstr "Stufe" #: about_window_lb_area msgid "Area" msgstr "Bereich" #: report_num_actions msgid "Actions done:" msgstr "Durchgeführte Aktionen:" #: report_project msgid "Project:" msgstr "Projekt:" #: report_lb_totals msgid "Total:" msgstr "Gesamt:" #: report_num_projects msgid "Projects:" msgstr "Projekte:" #: report_session msgid "Session:" msgstr "Sitzung:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Aus Sicherheitsgründen wurde das Ausführen externer Programme in JClic-" "Applets deaktiviert." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Fehler beim Starten der Übung!" #: msg_error_loading_project msgid "Error loading project" msgstr "Fehler beim Laden der Sammlung" #: msg_error_playing_media msgid "Error playing media!" msgstr "Fehler beim Abspielen des Mediums!" #: msg_activity_finished msgid "Activity finished!" msgstr "Übung beendet!" #: msg_playing_media msgid "Playing media" msgstr "Multimediadatei wird abgespielt" #: msg_activity_running msgid "Activity running" msgstr "Übung läuft" #: msg_activity_ready msgid "Activity ready" msgstr "Übung bereit" #: msg_initializing msgid "Initializing..." msgstr "Wird gestartet..." #: msg_preparing_media msgid "Preparing media" msgstr "Multimediadatei wird geladen" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Fehler beim Laden der Übung" #: msg_loading_activity msgid "Loading activity" msgstr "Übung wird geladen" #: msg_loading_project msgid "Loading project..." msgstr "Sammlung wird geladen..." #: msg_ready msgid "Ready" msgstr "Bereit" #: err_reading_data msgid "Error loading file" msgstr "Fehler beim Laden der Datei" #: err_file_save msgid "Error saving file!" msgstr "Fehler beim Speichern der Datei!" #: err_file_open msgid "Error opening file!" msgstr "Fehler beim Öffnen der Datei!" #: report_started msgid "Session started:" msgstr "Sitzung gestartet:" #: report_lb_score msgid "Score" msgstr "Ergebnis" #: report_lb_actions msgid "Actions" msgstr "Aktionen" #: report_lb_solved msgid "Ok" msgstr "OK" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Übung" #: report_lb_sequence msgid "Sequence" msgstr "Sequenz" #: report_global_score msgid "Global score:" msgstr "Gesamtpunktezahl:" #: report_total_time msgid "Total time on activities:" msgstr "Übungs-Gesamtzeit:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Korrekte Übungen:" #: report_num_activities msgid "Activities done:" msgstr "Beendete Übungen:" #: report_num_sequences msgid "Sequences:" msgstr "Sequenzen:" #: report_system msgid "Report system:" msgstr "Report System:" #: report_user msgid "User:" msgstr "User:" #: report_not_finished msgid "Activity not finished" msgstr "Übung nicht beendet" #: action_info_tooltip msgid "Additional information" msgstr "Zusatzinfos" #: action_help_caption msgid "Help" msgstr "Hilfe" #: action_help_tooltip msgid "Help about this activity" msgstr "Hilfe zu dieser Übung" #: action_audio_caption msgid "Sounds" msgstr "Sounds" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Sound ein/aus" #: about_window_lb_system msgid "System" msgstr "System" #: about_window_lb_total_mem msgid "Total memory" msgstr "Gesamter Speicherplatz" #: about_window_lb_free_mem msgid "Free memory" msgstr "Freier Speicherplatz" #: about_window_lb_java_home msgid "Java home" msgstr "Java Home" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Java Virtual Machine" #: about_window_lb_java_version msgid "Java version" msgstr "Java Version" #: about_window_lb_os msgid "Operating system" msgstr "Betriebssystem" #: about_window_lb_version msgid "Version" msgstr "Version" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Deskriptoren" #: about_window_lb_description msgid "Description" msgstr "Beschreibung" #: about_window_lb_history msgid "History" msgstr "History" #: about_window_lb_organizations msgid "Organizations" msgstr "Organisationen" #: about_window_lb_organization msgid "Organization" msgstr "Organisation" #: about_window_lb_authors msgid "Authors" msgstr "Autor/innen" #: about_window_lb_author msgid "Author" msgstr "Autor/in" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Übung" #: help_window_close_button msgid "Return to activity" msgstr "Zurück zur Übung" #: help_window_caption msgid "Help window" msgstr "Hilfe-Fenster" #: action_about_caption msgid "Reports" msgstr "Übungsberichte" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "JClic-Projekt-Installer (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Keine Usereinträge in der Datenbank." #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "Keine Usereinträge für diese Gruppe in der Datenbank." #: report_new_user msgid "New user..." msgstr "Neuer User..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Neuen User in der Benutzerdatenbank anlegen" #: report_err_creating_user msgid "Error creating new user!" msgstr "Fehler beim Anlegen des neuen Users!" #: report_select_user msgid "User identification for the reports database" msgstr "User-ID für die Berichtsdatenbank" #: report_userlist_title msgid "Please select your name:" msgstr "Namen auswählen:" #: report_ident_user msgid "User identification" msgstr "User-ID" #: report_name_prompt msgid "Name:" msgstr "Name:" #: report_id_prompt msgid "Login:" msgstr "Login:" #: report_pw_prompt msgid "Password:" msgstr "Passwort:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Passwort bestätigen:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Neuer User wird angelegt:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Falsche Eingabe!" #: report_generic_group_name msgid "Generic" msgstr "Allgemein" #: report_new_group msgid "Create a new group..." msgstr "Neue Gruppe anlegen..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Fehler beim Anlegen der neuen Gruppe!" #: report_grouplist_title msgid "Please select your group:" msgstr "Bitte Gruppe auswählen:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Neue Usergruppe wird angelegt:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Falsche User-ID oder falsches Passwort." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Dieser Account ist passwortgeschützt." #: report_err_init msgid "Error initializing report system." msgstr "Fehler beim Starten des Report Systems." #: report_not_connected msgid "not connected" msgstr "keine Verbindung" #: report_err_creating msgid "Error creating reports agent" msgstr "Fehler beim Erstellen des Übungsberichts" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Zurück" #: action_return_tooltip msgid "Return to the last menu" msgstr "Zurück zu vorherigem Menü" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI-Files (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Videodateien (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 files (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Skins (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Alle Mediendateien" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Datei" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "befindet sich nicht im aktuellen Projektordner." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Es wird empfohlen, alle Dateien im gleichen Ordner abzuspeichern." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" "Möchten Sie die ausgewählte Datei in den Projektordner hineinkopieren?" #: filesystem_copyFile msgid "Copying file" msgstr "Datei wird kopiert" #: msg_loading msgid "Loading" msgstr "Wird geladen" #: report_err_bad_id msgid "Bad identifier!" msgstr "Falsche Bezeichnung!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "User existiert bereits in der Datenbank!" #: report_err_bad_name msgid "Bad name!" msgstr "Falscher Name!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Falsches Passwort!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Fehler beim Übermitteln des Übungsberichts an die Datenbank!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "EXIT: Programm wird geschlossen" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Übergang vom Programm zum Projekt:" #: ftype_image msgid "Image" msgstr "Grafik" #: ftype_audio msgid "Digital audio" msgstr "Sounddatei" #: ftype_midi msgid "MIDI file" msgstr "MIDI-File" #: ftype_xml msgid "XML file" msgstr "XML-Datei" #: ftype_anim msgid "Animation" msgstr "Animation" #: ftype_video msgid "Digital video" msgstr "Digitale Video-Datei" #: ftype_font msgid "TrueType font" msgstr "True-Type Schrift" #: ftype_jclic msgid "JClic project" msgstr "JClic Projekt" #: ftype_inst msgid "JClic project installer script" msgstr "JClicProjekt-Installer Skript" #: ftype_unknown msgid "Unknown" msgstr "Unbekannt" #: ftype_animated msgid "animated" msgstr "animiert" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Fonts (*.tff)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML-Dokumente (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_de.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_de.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Unterstützt von:" #: about_window_systemInfo msgid "System information" msgstr "Systeminformationen" #: about_window_projectInfo msgid "Current project info" msgstr "Info über aktuelle Sammlung" #: about_window_reportInfo msgid "Current session results" msgstr "Übungsbericht" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Dieses Produkt basiert auf Software von:" #: msg_saving_project msgid "Saving project..." msgstr "Projekt wird gespeichert..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Textdateien (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" "Deutsche Fassung:
EDUCATION HIGHWAY
Innovationszentrum für Schule " "und Neue Technologie GmbH
Linz/Austria, http://www.eduhi.at
Gemeinsam " "mit:
Astrid Leeb
Ingeborg Kanz
Monika Andraschko
Caroline Weigner" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Dieses Programm ist eine kostenlose Software, es kann unter den Bedingungen " "der GNU General Public License (veröffentlicht von der Free Software " "Foundation - entweder Version 2 der Lizenz oder eine andere spätere " "Version) vertrieben und/oder modifiziert werden.
 
Dieses " "Programm wird OHNE JEGLICHE GEWÄHR; GEBRAUCHSTAUGLICHKEIT oder " "TAUGLICHKEIT FÜR EINEN BESTIMMTEN ZWECK vertrieben. Nähere " "Information unter GNU " "General Public License" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_el.po0000644000175000017500000005230111377161311022303 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2008-07-06 08:31+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "χρόνος" #: label_actions msgid "tries" msgstr "προσπάθειες" #: label_score msgid "score" msgstr "βαθμολογία" #: Skin msgid "Skin" msgstr "Θέμα" #: action_next_caption msgid "Next" msgstr "Επόμενο" #: action_next_tooltip msgid "Next activity" msgstr "Επόμενη δραστηριότητα" #: action_prev_caption msgid "Previous" msgstr "Προηγούμενο" #: action_prev_tooltip msgid "Previous activity" msgstr "Προηγούμενη δραστηριότητα" #: action_reset_caption msgid "Restart" msgstr "Επανεκκίνηση" #: action_reset_tooltip msgid "Restart activity" msgstr "Επανεκκίνηση δραστηριότητας" #: action_info_caption msgid "Information" msgstr "Πληροφορίες" #: about_window_lb_project msgid "Project" msgstr "Έργο" #: about_window_lb_languages msgid "languages" msgstr "γλώσσες" #: about_window_lb_language msgid "language" msgstr "γλώσσα" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Επιστροφή" #: about_window_caption msgid "About" msgstr "Σχετικά" #: action_about_tooltip msgid "User reports" msgstr "Αναφορές χρήστη" #: about_window_lb_report msgid "Report" msgstr "Αναφορά" #: about_window_browser_button msgid "View in browser" msgstr "Προβολή στον φυλλομετρητή" #: report_no_activities msgid "No activities reported!" msgstr "Για καμμία δραστηριότητα δεν έχει υποβληθεί αναφορά!" #: report_system_standard msgid "Report not registered in any DB" msgstr "Η αναφορά δεν εγγράφηκε στις βάσεις δεδομένων" #: report_lb_time msgid "Time" msgstr "Χρόνος" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Σφάλμα φόρτωσης αλληλουχίας" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Σφάλμα αρχικοποίησης του QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia.html" #: filesystem_openURL msgid "Open URL..." msgstr "Άνοιγμα URL..." #: filesystem_openFile msgid "Open file..." msgstr "Άνοιγμα αρχείου..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Παρακαλώ εισάγετε το URL στον πόρο για να φορτωθεί" #: msg_error_executing_external msgid "Error executing the command:" msgstr "Σφάλμα εκτέλεσης της εντολής:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Μετακίνηση επιλεγμένου στοιχείου κάτω" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Μετακίνηση επιλεγμένου στοιχείου πάνω" #: editor_moveDown msgid "Move down" msgstr "Μετακίνηση κάτω" #: editor_moveUp msgid "Move up" msgstr "Μετακίνηση πάνω" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Αρχεία εικόνων (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "Εικόνες PNG" #: filefilter_jpg msgid "JPG images" msgstr "Εικόνες JPG" #: filefilter_gif msgid "GIF images" msgstr "Εικόνες GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Τα αρχεία που στηρίζονται σε URL είναι μόνο για ανάγνωση." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Πακέτα του Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Όλα τα αρχεία" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "Έργα του JClic και του Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "Έργα του JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Συμπιεσμένα πακέτα του Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "To Clic 3.0 ανοίγει πακέτα (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "Συμπιεσμένα έργα του JClic (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "Έργα του JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Σύστημα πολυμέσων" #: about_window_lb_level msgid "Level" msgstr "Επίπεδο" #: about_window_lb_area msgid "Area" msgstr "Περιοχή" #: report_num_actions msgid "Actions done:" msgstr "Οι ενέργειες ολοκληρώθηκαν:" #: report_project msgid "Project:" msgstr "Έργο:" #: report_lb_totals msgid "Total:" msgstr "Σύνολο:" #: report_num_projects msgid "Projects:" msgstr "Έργα:" #: report_session msgid "Session:" msgstr "Συνεδρίες:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Για λόγους ασφαλείας, η εκτέλεση εξωτερικών εφαρμογών είναι απενεργοποιημένη " "στις μικροεφαρμογές του JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Σφάλμα έναρξης της δραστηριότητας!" #: msg_error_loading_project msgid "Error loading project" msgstr "Σφάλμα φόρτωσης του έργου" #: msg_error_playing_media msgid "Error playing media!" msgstr "Σφάλμα αναπαραγωγής του μέσου!" #: msg_activity_finished msgid "Activity finished!" msgstr "Η δραστηριότητα ολοκληρώθηκε!" #: msg_playing_media msgid "Playing media" msgstr "Αναπαραγωγή μέσων" #: msg_activity_running msgid "Activity running" msgstr "Η δραστηριότητα εκτελείται" #: msg_activity_ready msgid "Activity ready" msgstr "Η δραστηριότητα είναι έτοιμη" #: msg_initializing msgid "Initializing..." msgstr "Αρχικοποίηση..." #: msg_preparing_media msgid "Preparing media" msgstr "Προετοιμασία των μέσων" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Σφάλμα φόρτωσης της δραστηριότητας" #: msg_loading_activity msgid "Loading activity" msgstr "Φόρτωση δραστηριότητας" #: msg_loading_project msgid "Loading project..." msgstr "Φόρτωση έργου..." #: msg_ready msgid "Ready" msgstr "Έτοιμο" #: err_reading_data msgid "Error loading file" msgstr "Σφάλμα φόρτωσης αρχείου" #: err_file_save msgid "Error saving file!" msgstr "Σφάλμα αποθήκευσης του αρχείου!" #: err_file_open msgid "Error opening file!" msgstr "Σφάλμα ανοίγματος του αρχείου!" #: report_started msgid "Session started:" msgstr "Έναρξη συνεδρίας:" #: report_lb_score msgid "Score" msgstr "Βαθμολογία" #: report_lb_actions msgid "Actions" msgstr "Ενέργειες" #: report_lb_solved msgid "Ok" msgstr "Εντάξει" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Δραστηριότητα" #: report_lb_sequence msgid "Sequence" msgstr "Αλληλουχία" #: report_global_score msgid "Global score:" msgstr "Συνολική βαθμολογία:" #: report_total_time msgid "Total time on activities:" msgstr "Συνολικός χρόνος δραστηριοτήτων:" #: report_num_activities_solved msgid "Activities ok:" msgstr "Δραστηριότητες, εντάξει:" #: report_num_activities msgid "Activities done:" msgstr "Ολοκληρωμένες δραστηριότητες:" #: report_num_sequences msgid "Sequences:" msgstr "Αλληλουχίες" #: report_system msgid "Report system:" msgstr "Σύστημα αναφορών:" #: report_user msgid "User:" msgstr "Χρήστης:" #: report_not_finished msgid "Activity not finished" msgstr "Η δραστηριότητα δεν ολοκληρώθηκε" #: action_info_tooltip msgid "Additional information" msgstr "Πρόσθετες πληροφορίες" #: action_help_caption msgid "Help" msgstr "Βοήθεια" #: action_help_tooltip msgid "Help about this activity" msgstr "Βοήθεια για αυτή τη δραστηριότητα" #: action_audio_caption msgid "Sounds" msgstr "Ήχοι" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Ενεργοποίηση/Απενεργοποίηση ήχων" #: about_window_lb_system msgid "System" msgstr "Σύστημα" #: about_window_lb_total_mem msgid "Total memory" msgstr "Συνολική μνήμη" #: about_window_lb_free_mem msgid "Free memory" msgstr "Ελεύθερη μνήμη" #: about_window_lb_java_home msgid "Java home" msgstr "Φάκελος Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Εικονική μηχανή Java" #: about_window_lb_java_version msgid "Java version" msgstr "Έκδοση Java" #: about_window_lb_os msgid "Operating system" msgstr "Λειτουργικό σύστημα" #: about_window_lb_version msgid "Version" msgstr "Έκδοση" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Περιγραφείς" #: about_window_lb_description msgid "Description" msgstr "Περιγραφή" #: about_window_lb_history msgid "History" msgstr "Ιστορικό" #: about_window_lb_organizations msgid "Organizations" msgstr "Φορείς" #: about_window_lb_organization msgid "Organization" msgstr "Φορέας" #: about_window_lb_authors msgid "Authors" msgstr "Δημιουργοί" #: about_window_lb_author msgid "Author" msgstr "Δημιουργός" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Δραστηριότητα" #: help_window_close_button msgid "Return to activity" msgstr "Επιστροφή στη δραστηριότητα" #: help_window_caption msgid "Help window" msgstr "Παράθυρο βοήθειας" #: action_about_caption msgid "Reports" msgstr "Αναφορές" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "ΩΩ" #: action_info_keys msgid "II" msgstr "ΙΙ" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Εγκαταστάτες έργων JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Δεν ορίστηκαν χρήστες στη βάση δεδομένων των αναφορών!" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Δεν εντοπίστηκαν χρήστες για αυτή την ομάδα στη βάση δεδομένων των αναφορών!" #: report_new_user msgid "New user..." msgstr "Νέος χρήστης..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Δημιουργία νέου χρήστη στη βάση δεδομένων των αναφορών" #: report_err_creating_user msgid "Error creating new user!" msgstr "Σφάλμα κατά τη δημιουργία νέου χρήστη!" #: report_select_user msgid "User identification for the reports database" msgstr "Αναγνώριση χρήστη για τη βάση δεδομένων των αναφορών" #: report_userlist_title msgid "Please select your name:" msgstr "Παρακαλώ επιλέξτε το όνομά σας:" #: report_ident_user msgid "User identification" msgstr "Αναγνώριση χρήστη" #: report_name_prompt msgid "Name:" msgstr "Όνομα" #: report_id_prompt msgid "Login:" msgstr "Είσοδος:" #: report_pw_prompt msgid "Password:" msgstr "Κωδικός πρόσβασης:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Επιβεβαίωση κωδικού πρόσβασης:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Δημιουργία νέου χρήστη:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Λανθασμένα δεδομένα!" #: report_generic_group_name msgid "Generic" msgstr "Γενικό" #: report_new_group msgid "Create a new group..." msgstr "Δημιουργία νέας ομάδας..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Σφάλμα κατά τη δημιουργία νέας ομάδας!" #: report_grouplist_title msgid "Please select your group:" msgstr "Παρακαλώ επιλέξτε την ομάδα σας:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Δημιουργία μιας νέας ομάδας χρηστών:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Ελλιπές όνομα χρήστη ή λανθασμένος κωδικός πρόσβασης." #: report_user_has_pwd msgid "This account is password-protected." msgstr "Αυτός ο λογαριασμός έχει προστασία κωδικού πρόσβασης" #: report_err_init msgid "Error initializing report system." msgstr "Σφάλμα έναρξης συστήματος αναφορών." #: report_not_connected msgid "not connected" msgstr "δεν συνδέθηκε" #: report_err_creating msgid "Error creating reports agent" msgstr "Σφάλμα στη δημιουργία συντελεστή αναφορών" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Επιστροφή" #: action_return_tooltip msgid "Return to the last menu" msgstr "Επιστροφή στο τελευταίο μενού" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Ήχοι (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Αρχεία MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Αρχεία βίντεο (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Αρχεία Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Θέματα (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Όλα τα αρχεία πολυμέσων" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Το αρχείο" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "βρίσκεται εκτός φακέλου του παρόντος έργου." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Προτείνεται όλα τα αρχεία να αποθηκεύονται στον ίδιο φάκελο." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Θέλετε να αντιγράψετε το επιλεγμένο αρχείο στον φάκελο του έργου;" #: filesystem_copyFile msgid "Copying file" msgstr "Αντιγραφή αρχείου" #: msg_loading msgid "Loading" msgstr "Φόρτωση" #: report_err_bad_id msgid "Bad identifier!" msgstr "Εσφαλμένο αναγνωριστικό!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Αυτό το αναγνωριστικό υπάρχει ήδη στη βάση δεδομένων!" #: report_err_bad_name msgid "Bad name!" msgstr "Εσφαλμένο όνομα!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Οι κωδικοί πρόσβασης δεν ταιριάζουν!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Σφάλμα κατά τη σύνδεση στη βάση δεδομένων των αναφορών" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "ΕΞΟΔΟΣ: Σε αυτό το σημείο, το πρόγραμμα θα κλείσει." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Σε αυτό το σημείο το πρόγραμμα θα μεταβεί στο έργο:" #: ftype_image msgid "Image" msgstr "Εικόνα" #: ftype_audio msgid "Digital audio" msgstr "Ψηφιακός ήχος" #: ftype_midi msgid "MIDI file" msgstr "Αρχείο MIDI" #: ftype_xml msgid "XML file" msgstr "Αρχείο XML" #: ftype_anim msgid "Animation" msgstr "Κινούμενη απεικόνιση" #: ftype_video msgid "Digital video" msgstr "Ψηφιακό βίντεο" #: ftype_font msgid "TrueType font" msgstr "Γραμματοσειρά TrueType" #: ftype_jclic msgid "JClic project" msgstr "Έργο του JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Σενάριο εγκατάστασης έργου του JClic" #: ftype_unknown msgid "Unknown" msgstr "Άγνωστο" #: ftype_animated msgid "animated" msgstr "κινούμενο" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Γραμματοσειρές (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "U#38" #: editor_moveDown_keys msgid "W#40" msgstr "W#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Αρχεία HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Με την υποστήριξη:" #: about_window_systemInfo msgid "System information" msgstr "Πληροφορίες συστήματος" #: about_window_projectInfo msgid "Current project info" msgstr "Πληροφορίες τρέχοντος έργου" #: about_window_reportInfo msgid "Current session results" msgstr "Αποτελέσματα τρέχουσας συνεδρίας" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Αυτό το προϊόν περιλαμβάνει λογισμικό που έχει αναπτυχθεί από:" #: msg_saving_project msgid "Saving project..." msgstr "Αποθήκευση έργου..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Αρχεία κειμένου (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" "Ελληνική έκδοση, από τους: Γιάννη Κασκαμανίδη (ttnfy17@yahoo.gr), Κυριάκο " "Μήτκα, Γιώργο Μακαρατζή, Γιάννη Κίκα" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Αυτή η εφαρμογή ανήκει στο Ελεύθερο Λογισμικό. Μπορείτε να την αναδιανείμετε " "ή/και να την τροποποιήσετε υπό τους όρους της Γενικής Άδειας Χρήσης GNU " "(έκδοση 2 ή επόμενη), που εκδόθηκε από το Ίδρυμα Ελεύθερου Λογισμικού (Free " "Software Foundation).
 
Η εφαρμογή διανέμεται με την προσδοκία " "ότι θα είναι χρήσιμη, χωρίς όμως εγγύηση ποιότητας ή καλής λειτουργίας και, " "ακόμη, χωρίς υποδηλούμενη εγγύηση εμπορευσιμότητας ή καταλληλότητας για " "συγκεκριμένους σκοπούς. Δείτε τη Γενική Άδεια Χρήσης GNU για " "περισσότερες λεπτομέρειες." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_da.po0000644000175000017500000003523511377161311022276 0ustar # Danish translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2008-10-14 20:06+0000\n" "Last-Translator: Peter Skov \n" "Language-Team: Danish \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tid" #: label_actions msgid "tries" msgstr "forsøg" #: label_score msgid "score" msgstr "score" #: Skin msgid "Skin" msgstr "Skin" #: action_next_caption msgid "Next" msgstr "Næste" #: action_next_tooltip msgid "Next activity" msgstr "Næste aktivitet" #: action_prev_caption msgid "Previous" msgstr "Forrige" #: action_prev_tooltip msgid "Previous activity" msgstr "Forrige aktivitet" #: action_reset_caption msgid "Restart" msgstr "Genstart" #: action_reset_tooltip msgid "Restart activity" msgstr "Genstart aktivitet" #: action_info_caption msgid "Information" msgstr "Information" #: about_window_lb_project msgid "Project" msgstr "Projekt" #: about_window_lb_languages msgid "languages" msgstr "sprog" #: about_window_lb_language msgid "language" msgstr "sprog" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Retur" #: about_window_caption msgid "About" msgstr "Om" #: action_about_tooltip msgid "User reports" msgstr "Bruger rapport" #: about_window_lb_report msgid "Report" msgstr "Rapport" #: about_window_browser_button msgid "View in browser" msgstr "Vis i browser" #: report_no_activities msgid "No activities reported!" msgstr "Ingen aktiviteter rapporteret!" #: report_system_standard msgid "Report not registered in any DB" msgstr "" #: report_lb_time msgid "Time" msgstr "Tid" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "" #: media_check_url msgid "messages/checkmedia.html" msgstr "" #: filesystem_openURL msgid "Open URL..." msgstr "Åbn URL..." #: filesystem_openFile msgid "Open file..." msgstr "Åbn fil..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "" #: msg_error_executing_external msgid "Error executing the command:" msgstr "" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Flyt det valgte element ned" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Flyt det valgte element op" #: editor_moveDown msgid "Move down" msgstr "Flyt ned" #: editor_moveUp msgid "Move up" msgstr "Flyt op" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Billed filer (*.gif, *.jpg, *.png, *.bmp, *.ico)" #: filefilter_png msgid "PNG images" msgstr "PNG billed" #: filefilter_jpg msgid "JPG images" msgstr "JPG billed" #: filefilter_gif msgid "GIF images" msgstr "GIF billed" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "" #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "" #: filefilter_all msgid "All files" msgstr "Alle filer" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "" #: about_window_lb_level msgid "Level" msgstr "Niveau" #: about_window_lb_area msgid "Area" msgstr "Område" #: report_num_actions msgid "Actions done:" msgstr "" #: report_project msgid "Project:" msgstr "Projekt:" #: report_lb_totals msgid "Total:" msgstr "Total:" #: report_num_projects msgid "Projects:" msgstr "Projekter:" #: report_session msgid "Session:" msgstr "" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Fejl ved start af aktivitet!" #: msg_error_loading_project msgid "Error loading project" msgstr "Fejl ved indlæsning af projekt" #: msg_error_playing_media msgid "Error playing media!" msgstr "Fejl ved afspilning af medie!" #: msg_activity_finished msgid "Activity finished!" msgstr "Aktivitet afsluttet!" #: msg_playing_media msgid "Playing media" msgstr "Afspiller medie" #: msg_activity_running msgid "Activity running" msgstr "Aktivitet kører" #: msg_activity_ready msgid "Activity ready" msgstr "Aktivitet klar" #: msg_initializing msgid "Initializing..." msgstr "Initierer..." #: msg_preparing_media msgid "Preparing media" msgstr "Forbereder medie" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Fejl ved indlæsning af aktivitet" #: msg_loading_activity msgid "Loading activity" msgstr "Indlæser aktivitet..." #: msg_loading_project msgid "Loading project..." msgstr "Indlæser projekt..." #: msg_ready msgid "Ready" msgstr "Klar" #: err_reading_data msgid "Error loading file" msgstr "Fejl ved indlæsning af fil" #: err_file_save msgid "Error saving file!" msgstr "Fejl ved gemning af fil!" #: err_file_open msgid "Error opening file!" msgstr "Fejl ved åbning af fil!" #: report_started msgid "Session started:" msgstr "" #: report_lb_score msgid "Score" msgstr "" #: report_lb_actions msgid "Actions" msgstr "Handlinger" #: report_lb_solved msgid "Ok" msgstr "Ok" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "Aktivitet" #: report_lb_sequence msgid "Sequence" msgstr "Sekvens" #: report_global_score msgid "Global score:" msgstr "" #: report_total_time msgid "Total time on activities:" msgstr "" #: report_num_activities_solved msgid "Activities ok:" msgstr "Aktiviteter OK:" #: report_num_activities msgid "Activities done:" msgstr "Aktiviteter udført:" #: report_num_sequences msgid "Sequences:" msgstr "Sekvenser:" #: report_system msgid "Report system:" msgstr "" #: report_user msgid "User:" msgstr "Bruger:" #: report_not_finished msgid "Activity not finished" msgstr "Aktivitet ikke afsluttet" #: action_info_tooltip msgid "Additional information" msgstr "Yderligere oplysninger" #: action_help_caption msgid "Help" msgstr "Hjælp" #: action_help_tooltip msgid "Help about this activity" msgstr "Hjælp til denne aktivitet" #: action_audio_caption msgid "Sounds" msgstr "Lyde" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "" #: about_window_lb_system msgid "System" msgstr "System" #: about_window_lb_total_mem msgid "Total memory" msgstr "Total hukommelse" #: about_window_lb_free_mem msgid "Free memory" msgstr "Fri hukommelse" #: about_window_lb_java_home msgid "Java home" msgstr "" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "" #: about_window_lb_java_version msgid "Java version" msgstr "Java version" #: about_window_lb_os msgid "Operating system" msgstr "Operativ system" #: about_window_lb_version msgid "Version" msgstr "Version" #: about_window_lb_descriptors msgid "Descriptors" msgstr "" #: about_window_lb_description msgid "Description" msgstr "Beskrivelse" #: about_window_lb_history msgid "History" msgstr "Historie" #: about_window_lb_organizations msgid "Organizations" msgstr "Organisationer" #: about_window_lb_organization msgid "Organization" msgstr "Organisation" #: about_window_lb_authors msgid "Authors" msgstr "Forfattere" #: about_window_lb_author msgid "Author" msgstr "Forfatter" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "Aktivitet" #: help_window_close_button msgid "Return to activity" msgstr "Tilbage til aktivitet" #: help_window_caption msgid "Help window" msgstr "Hjælpe vindue" #: action_about_caption msgid "Reports" msgstr "Rapporter" #: action_about_keys msgid "RR" msgstr "RR" #: action_audio_keys msgid "SS" msgstr "SS" #: action_help_keys msgid "HH" msgstr "HH" #: action_info_keys msgid "II" msgstr "II" #: action_next_keys msgid "N*" msgstr "N*" #: action_prev_keys msgid "P*" msgstr "P*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "" #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" #: report_new_user msgid "New user..." msgstr "Ny bruger..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "" #: report_err_creating_user msgid "Error creating new user!" msgstr "" #: report_select_user msgid "User identification for the reports database" msgstr "" #: report_userlist_title msgid "Please select your name:" msgstr "Vælg venligst dit navn:" #: report_ident_user msgid "User identification" msgstr "Bruger identifikation" #: report_name_prompt msgid "Name:" msgstr "Navn:" #: report_id_prompt msgid "Login:" msgstr "Logind:" #: report_pw_prompt msgid "Password:" msgstr "Adgangskode:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Bekræft adgangskode:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Oprettelse af ny bruger:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Ukorrekte data!" #: report_generic_group_name msgid "Generic" msgstr "Generisk" #: report_new_group msgid "Create a new group..." msgstr "Opret en ny gruppe..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Fejl ved oprettelse af ny gruppe!" #: report_grouplist_title msgid "Please select your group:" msgstr "Vælg venligst din gruppe:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "" #: report_user_has_pwd msgid "This account is password-protected." msgstr "Denne konto er beskyttet af en adgangskode." #: report_err_init msgid "Error initializing report system." msgstr "" #: report_not_connected msgid "not connected" msgstr "ikke forbundet" #: report_err_creating msgid "Error creating reports agent" msgstr "" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Retur" #: action_return_tooltip msgid "Return to the last menu" msgstr "Retur til sidste menu" #: action_return_keys msgid "T*" msgstr "T*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Lyde (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "MIDI filer (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video filer (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Flash 2.0 filer (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "" #: filefilter_all_media msgid "All media files" msgstr "Alle mediefiler" #: filesystem_copyToRoot_1 msgid "The file" msgstr "Filen" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "" #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Det er tilrådeligt at have alle filer i samme mappe." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "" #: filesystem_copyFile msgid "Copying file" msgstr "Kopierer fil" #: msg_loading msgid "Loading" msgstr "Indlæser" #: report_err_bad_id msgid "Bad identifier!" msgstr "" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "" #: report_err_bad_name msgid "Bad name!" msgstr "Ugyldigt navn!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "Adgangskoderne er ikke ens!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "" #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "" #: ftype_image msgid "Image" msgstr "Billede" #: ftype_audio msgid "Digital audio" msgstr "" #: ftype_midi msgid "MIDI file" msgstr "MIDI fil" #: ftype_xml msgid "XML file" msgstr "XML fil" #: ftype_anim msgid "Animation" msgstr "Animation" #: ftype_video msgid "Digital video" msgstr "Digital video" #: ftype_font msgid "TrueType font" msgstr "TrueType skrifttype" #: ftype_jclic msgid "JClic project" msgstr "" #: ftype_inst msgid "JClic project installer script" msgstr "" #: ftype_unknown msgid "Unknown" msgstr "Ukendt" #: ftype_animated msgid "animated" msgstr "animeret" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Fonte (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "" #: editor_moveDown_keys msgid "W#40" msgstr "" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "HTML dokumenter (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "" #: about_licenseDoc msgid "about/license.html" msgstr "om/licens.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Med støtte fra:" #: about_window_systemInfo msgid "System information" msgstr "System information" #: about_window_projectInfo msgid "Current project info" msgstr "Aktuel projekt info" #: about_window_reportInfo msgid "Current session results" msgstr "" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Dette produkt inkluderer software udviklet af:" #: msg_saving_project msgid "Saving project..." msgstr "Gemmer projekt..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Tekst filer (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "Danish version by carson" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-core/JClicMessages_pt_BR.po0000644000175000017500000004224111377161311022713 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-03-27 00:34+0200\n" "PO-Revision-Date: 2009-02-25 12:17+0000\n" "Last-Translator: Alexandre R Soares \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #. #JClic main messages #: label_time msgid "time" msgstr "tempo" #: label_actions msgid "tries" msgstr "tentativas" #: label_score msgid "score" msgstr "acertos" #: Skin msgid "Skin" msgstr "Aspecto" #: action_next_caption msgid "Next" msgstr "Próximo" #: action_next_tooltip msgid "Next activity" msgstr "atividade seguinte" #: action_prev_caption msgid "Previous" msgstr "Anterior" #: action_prev_tooltip msgid "Previous activity" msgstr "atividade anterior" #: action_reset_caption msgid "Restart" msgstr "Reiniciar" #: action_reset_tooltip msgid "Restart activity" msgstr "Reiniciar a atividade" #: action_info_caption msgid "Information" msgstr "Informação" #: about_window_lb_project msgid "Project" msgstr "projeto" #: about_window_lb_languages msgid "languages" msgstr "Idiomas" #: about_window_lb_language msgid "language" msgstr "Idioma" #: about_window_close_button msgctxt "about_window_close_button" msgid "Return" msgstr "Voltar" #: about_window_caption msgid "About" msgstr "Sobre..." #: action_about_tooltip msgid "User reports" msgstr "relatórios de usuário" #: about_window_lb_report msgid "Report" msgstr "Relatórios" #: about_window_browser_button msgid "View in browser" msgstr "Ver no navegador" #: report_no_activities msgid "No activities reported!" msgstr "Nenhuma atividade registrada!" #: report_system_standard msgid "Report not registered in any DB" msgstr "O relatório não está registrando em nenhuma base de dados" #: report_lb_time msgid "Time" msgstr "Tempo" #: msg_error_loading_sequence msgid "Error loading sequence" msgstr "Erro ao carregar a seqüência" #: media_qt_error_initializing msgid "Error initializing QuickTime!" msgstr "Erro ao inicializar QuickTime!" #: media_check_url msgid "messages/checkmedia.html" msgstr "messages/checkmedia_pt_BR.html" #: filesystem_openURL msgid "Open URL..." msgstr "Abrir URL..." #: filesystem_openFile msgid "Open file..." msgstr "Abrir arquivo..." #: filesystem_enterURL msgid "Please enter the URL to the resource to be loaded." msgstr "Escreva a URL do recurso que deseja acessar." #: msg_error_executing_external msgid "Error executing the command:" msgstr "Erro ao executar o comando:" #: editor_moveDown_tooltip msgid "Move the selected element down" msgstr "Mover para baixo o elemento selecionado" #: editor_moveUp_tooltip msgid "Move the selected element up" msgstr "Mover para cima o elemento selecionado" #: editor_moveDown msgid "Move down" msgstr "Mover para baixo" #: editor_moveUp msgid "Move up" msgstr "Mover para cima" #: filefilter_all_images msgid "Image files (*.gif, *.jpg, *.png, *.bmp, *.ico)" msgstr "Imagens (*.gif, *.jpg, *.png)" #: filefilter_png msgid "PNG images" msgstr "Imagens PNG" #: filefilter_jpg msgid "JPG images" msgstr "Imagens JPG" #: filefilter_gif msgid "GIF images" msgstr "Imagens GIF" #: filesystem_saveURLerror msgid "URL-based files are read-only." msgstr "Os arquivos baseados na URL são de leitura apenas." #: filefilter_all_clic msgid "Clic 3.0 packages (*.pac, *.pcc)" msgstr "Pacotes Clic 3.0 (*.pac, *.pcc)" #: filefilter_all msgid "All files" msgstr "Todos os arquivos" #: filefilter_all_jclic_clic msgid "JClic and Clic 3.0 projects (*.jclic, *.jclic.zip, *.pac, *.pcc)" msgstr "projetos JClic e Clic 3.0 (*.jclic, *.jclic.zip, *.pac, *.pcc)" #: filefilter_all_jclic msgid "JClic projects (*.jclic, *.jclic.zip)" msgstr "projetos JClic (*.jclic, *.jclic.zip)" #: filefilter_pcc msgid "Clic 3.0 compact packages (*.pcc)" msgstr "Pacotes compactos Clic 3.0 (*.pcc)" #: filefilter_pac msgid "Clic 3.0 open packages (*.pac)" msgstr "Pacotes abertos Clic 3.0 (*.pac)" #: filefilter_jclic_zip msgid "JClic compressed projects (*.jclic.zip)" msgstr "projetos JClic comprimidos (*.jclic.zip)" #: filefilter_jclic msgid "JClic projects (*.jclic)" msgstr "projetos JClic (*.jclic)" #: about_window_lb_mediaSystem msgid "Multimedia system" msgstr "Sistema multimeio" #: about_window_lb_level msgid "Level" msgstr "Nível" #: about_window_lb_area msgid "Area" msgstr "Área" #: report_num_actions msgid "Actions done:" msgstr "Ações efetuadas:" #: report_project msgid "Project:" msgstr "projeto:" #: report_lb_totals msgid "Total:" msgstr "Total:" #: report_num_projects msgid "Projects:" msgstr "projetos:" #: report_session msgid "Session:" msgstr "Sessão:" #: msg_warn_no_exec_in_applets msgid "" "For security reasons, execution of external programs is disabled in JClic " "applets." msgstr "" "Por razões de segurança a chamada de programas externos está desabilitada " "nos applets JClic." #: msg_error_starting_activity msgid "Error starting activity!" msgstr "Erro ao iniciar a atividade!" #: msg_error_loading_project msgid "Error loading project" msgstr "Erro ao carregar o projeto" #: msg_error_playing_media msgid "Error playing media!" msgstr "Erro ao executar a mídia!" #: msg_activity_finished msgid "Activity finished!" msgstr "atividade terminada!" #: msg_playing_media msgid "Playing media" msgstr "Interpretando mídia" #: msg_activity_running msgid "Activity running" msgstr "atividade em andamento" #: msg_activity_ready msgid "Activity ready" msgstr "atividade pronta" #: msg_initializing msgid "Initializing..." msgstr "A inicializar..." #: msg_preparing_media msgid "Preparing media" msgstr "Preparando mídia" #: msg_error_loading_activity msgid "Error loading activity" msgstr "Erro ao carregar a atividade" #: msg_loading_activity msgid "Loading activity" msgstr "A carregar atividade" #: msg_loading_project msgid "Loading project..." msgstr "A carregar projeto..." #: msg_ready msgid "Ready" msgstr "Pronto" #: err_reading_data msgid "Error loading file" msgstr "Erro ao ler o arquivo" #: err_file_save msgid "Error saving file!" msgstr "Erro ao salvar o arquivo!" #: err_file_open msgid "Error opening file!" msgstr "Erro ao abrir o arquivo!" #: report_started msgid "Session started:" msgstr "Início da sessão:" #: report_lb_score msgid "Score" msgstr "Pontuação" #: report_lb_actions msgid "Actions" msgstr "Ações" #: report_lb_solved msgid "Ok" msgstr "Correta" #: report_lb_activity msgctxt "report_lb_activity" msgid "Activity" msgstr "atividade" #: report_lb_sequence msgid "Sequence" msgstr "Sequência" #: report_global_score msgid "Global score:" msgstr "Pontuação geral:" #: report_total_time msgid "Total time on activities:" msgstr "Tempo total das atividades:" #: report_num_activities_solved msgid "Activities ok:" msgstr "atividades corretas:" #: report_num_activities msgid "Activities done:" msgstr "atividades realizadas:" #: report_num_sequences msgid "Sequences:" msgstr "Sequências:" #: report_system msgid "Report system:" msgstr "Sistema de relatórios:" #: report_user msgid "User:" msgstr "Usuário:" #: report_not_finished msgid "Activity not finished" msgstr "atividade ainda não acabada" #: action_info_tooltip msgid "Additional information" msgstr "Informação adicional" #: action_help_caption msgid "Help" msgstr "Ajuda" #: action_help_tooltip msgid "Help about this activity" msgstr "Ajuda sobre a atividade" #: action_audio_caption msgid "Sounds" msgstr "Sons" #: action_audio_tooltip msgid "Enable/disable sounds" msgstr "Ativar/desativar sons" #: about_window_lb_system msgid "System" msgstr "Sistema" #: about_window_lb_total_mem msgid "Total memory" msgstr "Memória total" #: about_window_lb_free_mem msgid "Free memory" msgstr "Memória livre" #: about_window_lb_java_home msgid "Java home" msgstr "Local do Java" #: about_window_lb_java_vm msgid "Java virtual machine" msgstr "Máquina virtual Java" #: about_window_lb_java_version msgid "Java version" msgstr "Versão Java" #: about_window_lb_os msgid "Operating system" msgstr "Sistema operacional" #: about_window_lb_version msgid "Version" msgstr "Versão" #: about_window_lb_descriptors msgid "Descriptors" msgstr "Descritores" #: about_window_lb_description msgid "Description" msgstr "Descrição" #: about_window_lb_history msgid "History" msgstr "Revisões" #: about_window_lb_organizations msgid "Organizations" msgstr "Organizações" #: about_window_lb_organization msgid "Organization" msgstr "Organização" #: about_window_lb_authors msgid "Authors" msgstr "Autores/as" #: about_window_lb_author msgid "Author" msgstr "Autor/a" #: about_window_lb_activity msgctxt "about_window_lb_activity" msgid "Activity" msgstr "atividade" #: help_window_close_button msgid "Return to activity" msgstr "Voltar à atividade" #: help_window_caption msgid "Help window" msgstr "Janela de ajuda" #: action_about_caption msgid "Reports" msgstr "relatórios" #: action_about_keys msgid "RR" msgstr "II" #: action_audio_keys msgid "SS" msgstr "OS" #: action_help_keys msgid "HH" msgstr "YY" #: action_info_keys msgid "II" msgstr "NN" #: action_next_keys msgid "N*" msgstr "S*" #: action_prev_keys msgid "P*" msgstr "A*" #: action_reset_keys msgid "R*" msgstr "R*" #: filefilter_install msgid "JClic project installers (*.jclic.inst)" msgstr "Instaladores de projetos JClic (*.jclic.inst)" #: report_err_no_users msgid "No users defined in the reports database!" msgstr "Não há nenhum usuário definido na base de dados de relatórios." #: report_err_no_users_in_group msgid "No users defined for this group in the reports database!" msgstr "" "Não há nenhum usuário definido para este grupo na base de dados de " "relatórios!" #: report_new_user msgid "New user..." msgstr "Novo usuário..." #: report_new_user_tooltip msgid "Create a new user in the reports database" msgstr "Criar um novo usuário na base de dados de relatórios" #: report_err_creating_user msgid "Error creating new user!" msgstr "Erro ao criar o novo usuário!" #: report_select_user msgid "User identification for the reports database" msgstr "Identificação de usuário para a base de dados de relatórios" #: report_userlist_title msgid "Please select your name:" msgstr "Selecione seu nome:" #: report_ident_user msgid "User identification" msgstr "Identificação de usuário" #: report_name_prompt msgid "Name:" msgstr "Nome:" #: report_id_prompt msgid "Login:" msgstr "Identificador:" #: report_pw_prompt msgid "Password:" msgstr "Senha:" #: report_pw_prompt_confirm msgid "Confirm password:" msgstr "Confirmar senha:" #: report_new_user_data msgid "Creation of a new user:" msgstr "Criação de um novo usuário:" #: report_err_bad_data msgid "Incorrect data!" msgstr "Dados incorretos!" #: report_generic_group_name msgid "Generic" msgstr "Genérico" #: report_new_group msgid "Create a new group..." msgstr "Criar um novo grupo..." #: report_err_creating_group msgid "Error creating the new group!" msgstr "Erro ao criar o novo grupo!" #: report_grouplist_title msgid "Please select your group:" msgstr "Selecione seu grupo:" #: report_new_group_data msgid "Creation of a new users group:" msgstr "Criação de um novo grupo de usuários:" #: report_err_invalid_user msgid "Missing user ID or incorrect password." msgstr "Usuário inexistente ou senha incorreta." #: report_user_has_pwd msgid "This account is password-protected." msgstr "A conta deste usuário está protegida por senha." #: report_err_init msgid "Error initializing report system." msgstr "Erro ao inicializar o sistema de relatórios." #: report_not_connected msgid "not connected" msgstr "não conectado" #: report_err_creating msgid "Error creating reports agent" msgstr "Erro ao criar o agente de relatórios" #: action_return_caption msgctxt "action_return_caption" msgid "Return" msgstr "Voltar" #: action_return_tooltip msgid "Return to the last menu" msgstr "Voltar ao último menu" #: action_return_keys msgid "T*" msgstr "V*" #: filefilter_all_sounds msgid "Sounds (*.wav, *.mp3, *.ogg, *.au, *.aiff)" msgstr "Sons (*.wav, *.mp3, *.ogg, *.au, *.aiff)" #: filefilter_midi msgid "MIDI files (*.mid)" msgstr "Arquivos MIDI (*.mid)" #: filefilter_all_video msgid "Video files (*.avi, *.mov, *.mpeg)" msgstr "Video (*.avi, *.mov, *.mpeg)" #: filefilter_all_anim msgid "Flash 2.0 files (*.swf)" msgstr "Arquivos Flash 2.0 (*.swf)" #: filefilter_skins msgid "Skins (*.xml)" msgstr "Entornos visuais (*.xml)" #: filefilter_all_media msgid "All media files" msgstr "Todos os recursos" #: filesystem_copyToRoot_1 msgid "The file" msgstr "O arquivo" #: filesystem_copyToRoot_2 msgid "is out of the current project's folder." msgstr "se encontra numa pasta diferente do projeto atual." #: filesystem_copyToRoot_3 msgid "It's advisable to have all the files in the same folder." msgstr "Recomenda-se ter todos os arquivos na mesma pasta." #: filesystem_copyToRoot_4 msgid "Do you want to copy the selected file to the project's folder?" msgstr "Deseja copiar o arquivo seleccionado para a pasta do projeto?" #: filesystem_copyFile msgid "Copying file" msgstr "Copiando o arquivo" #: msg_loading msgid "Loading" msgstr "Carregando" #: report_err_bad_id msgid "Bad identifier!" msgstr "Identificador incorreto!" #: report_err_duplicate_id msgid "This identifier already exists in the database!" msgstr "Este identificador já existe na base de dados!" #: report_err_bad_name msgid "Bad name!" msgstr "Nome incorreto!" #: report_err_bad_pw msgid "Passwords don't match!" msgstr "As senhas não coincidem!" #: report_err_connect msgid "Error connecting to the reports database!" msgstr "Erro ao conectar com a base de dados de relatórios!" #: test_alert_exit msgid "EXIT: At this point, the program will exit." msgstr "SAIR: Neste ponto o programa seria fechado." #: test_alert_jump_to msgid "At this point the program will jump to the project:" msgstr "Neste ponto, saltaria ao projeto:" #: ftype_image msgid "Image" msgstr "Imagem" #: ftype_audio msgid "Digital audio" msgstr "Som digital" #: ftype_midi msgid "MIDI file" msgstr "Arquivo MIDI" #: ftype_xml msgid "XML file" msgstr "Arquivo XML" #: ftype_anim msgid "Animation" msgstr "Animação" #: ftype_video msgid "Digital video" msgstr "Video digital" #: ftype_font msgid "TrueType font" msgstr "Tipo de letra TrueType" #: ftype_jclic msgid "JClic project" msgstr "projeto JClic" #: ftype_inst msgid "JClic project installer script" msgstr "Script de instalação de projetos JClic" #: ftype_unknown msgid "Unknown" msgstr "Desconhecido" #: ftype_animated msgid "animated" msgstr "animada" #: filefilter_fonts msgid "Fonts (*.ttf)" msgstr "Tipos de letra (*.ttf)" #: editor_moveUp_keys msgid "U#38" msgstr "R#38" #: editor_moveDown_keys msgid "W#40" msgstr "B#40" #: filefilter_all_html msgid "HTML documents (*.htm, *.html)" msgstr "Documentos HTML (*.htm, *.html)" #: about_creditsDoc msgid "about/credits.html" msgstr "about/credits_pt_BR.html" #: about_licenseDoc msgid "about/license.html" msgstr "about/license_pt_BR.html" #: about_sponsorsCaption msgid "With the support of:" msgstr "Com o suporte de:" #: about_window_systemInfo msgid "System information" msgstr "Informação do sistema" #: about_window_projectInfo msgid "Current project info" msgstr "Informação do projeto atual" #: about_window_reportInfo msgid "Current session results" msgstr "Resultados da sessão atual" #: about_otherCreditsCaption msgid "This product includes software developed by:" msgstr "Este producto inclui software desenvolvido por:" #: msg_saving_project msgid "Saving project..." msgstr "Salvando projeto..." #: filefilter_text msgid "Text files (*.txt)" msgstr "Documentos de texto (*.txt)" #. #Translation credits displayed on the about window, in HTML format #: html_translation_credits msgid "English version, by The JClic team" msgstr "" "Brazilian Portuguese version, by The JClic team contributors (http://sites.google.com/s" "ite/boatecp/jclic)" #. #Abstract of the GPL license, version 2.0, as shown on the About window #: html_gpl_license msgid "" "This program is free software; you can redistribute it and/or modify it " "under the terms of the GNU General Public License as published by the Free " "Software Foundation; either version 2 of the License, or (at your option) " "any later version.
 
This program is distributed in the hope that " "it will be useful, but WITHOUT ANY WARRANTY; without even the implied " "warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the " "GNU General Public " "License for more details." msgstr "" "Este programa é software livre (\"free software\"); você pode redistribuí-lo " "e/ou modificá-lo de acordo com os termos da Licença Pública Geral GNU como " "publicada pela Free Software Foundation; tanto segundo a versão 2 dessa " "licença quanto (por sua opção) por uma versão posterior.
 
Este " "programa é distribuído na expectativa de ser útil, mas SEM QUALQUER " "GARANTIA; sem mesmo a garantia implícita de COMERCIALIZAÇÃO ou de ADEQUAÇÃO " "A QUALQUER PROPÓSITO EM PARTICULAR. Consulte GNU General Public License para obter " "mais detalhes." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/0000755000175000017500000000000011377161311020022 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_de.po0000644000175000017500000001566611377161311024110 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Mehrfache Zuordnung|Zwei Informationstafeln mit einer unterschiedlichen " "Anzahl von Elementen zwischen denen verschiedene Arten von Beziehungen " "bestehen. z.B: eins-zu-eins; mehrere zu eins; Elemente ohne Bezug usw." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Einfache Zuordnung|Zwei Informationstafeln die aus gleich vielen Elementen " "bestehen. Jedes Element auf Tafel 1 entspricht einem Bild auf Tafel 2" #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Paare finden|Jedes Element kommt 2 Mal vor. Bei jedem Spielgang müssen zwei " "verdeckte Spielkarten umgedreht und wieder zurückgelegt werden, wenn sie " "nicht zusammenpassen. Ziel ist, alle zusammengehörigen Paare zu finden." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Forschendes Lernen|Ein kleiner Teil der Information ist zu sehen, beim " "Anklicken jedes Elements wird ein weiteres Element angezeigt" #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Suchübung|Eine einzige Informationstafel. Die Übenden müssen die Teile davon " "anklicken, die eine bestimmte Bedingung erfüllen." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Darstellung von Information|Eine Informationstafel wird angezeigt. Zu jedem " "einzelnen Element können Multimediaelemente aktiviert werden." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Puzzle: Ordnen|Zwei Spielfelder werden angezeigt. Eines enthält vermischte " "Puzzlesteine, die andere ist leer. Das Bild soll auf dem leeren Spielfeld " "durch Ziehen der Steine mit der Maus richtig rekonstruiert werden." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Puzzle: Austauschen| Die Puzzlesteine innerhalb selben Spielfelds sind " "ertauscht. Man muss so lange jeweils zwei Steine gegenander austauschen, bis " "das Bild richtig erscheint." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle: Verschieben|Auf dem Spielfeld fehlt ein Stein, die anderen Steine " "sind vermischt. In jedem Spielgang muss einer der Steine neben dem Leerfeld " "verschoben werden, bis sich alle Steine wieder an der richtigen Stelle " "befinden." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Begriff eingeben|Ein Informationsblock wird angezeigt. Fehlende Textteile " "müssen schriftlich ergänzt werden." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Text: Lückentext|Der Spieler/die Spielerin muss in einem Text fehlende oder " "verborgene Wörter, Buchstaben und Sätze ergänzen. Es gibt verschiedene " "Lösungsmöglichkeiten: Fehlende Elemente eintragen, Fehler korrigieren oder " "Auswahl aus mehreren möglichen Antworten auf einer Liste." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Text: Wörter finden| Der Spieler/die Spielerin muss Wörter, Buchstaben, " "Zahlen, Symbole oder Satztzeichen mit der Maus anklicken." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Text: Wörter ordnen| Beim Erstellen dieser Übung werden Wörter oder Absätze " "vertauscht. Die Spieler/in muss sie wieder in die richtige Reihenfolge " "bringen." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Text\\: Text ergänzen|Verschiedene Elemente eines Textes (Buchstaben, " "Wörter, Satzzeichen oder Sätze) fehlen. Der/die Übende muss sie ergänzen." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Kreuzworträtsel|Das Rätsel muss anhand von Definitionen gelöst werden. Diese " "können aus Text, Grafiken oder Sounddateien bestehen. Die Definition der " "beiden Begriffe, die sich an der Stelle, wo sich der Cursor befindet " "kreuzen, wird vom Programm automatisch angezeigt." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Wortsuchübung|In einer Tabelle müssen versteckte Begriffe gesucht werden. " "Leerzellen (ohne Worter) in der Tabelle werden mit durch Zufallsprinzip " "ausgewählten Buchstaben gefüllt." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_ast.po0000644000175000017500000001654111377161311024300 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-10-01 10:36+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Asociación complexa|Nesta triba de xera preséntense tamién dos conxuntos " "d'información, pero éstos puen tener un númberu estremáu d'elementos y ente " "ellos pueden dase delles tribes de rellación: Ún a ún, dellos a ún, " "elementos ensin asociar..." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Asociación simple|Preséntense dos conxuntos d'información que tienen el " "mesmu númberu d'elementos. A cada elementu del conxuntu imaxe correspuende " "namás qu'un elementu del conxuntu orixe." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Guetar pareyes|Cada una de las pieces que formen l' oxetu apaez anubrida dos " "vegaes dientro de la ventana de xuegu. En cada xugada destápense un par de " "pieces, que se'escuende otra vuelta si nun son idéntiques. L'oxetivu ya " "atopar toles pareyes." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Xera d'esploración|Amuésase una información d'aniciu y al facer clic nella " "apaez, pa cada elementu, una determinada pieza d'información." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Xera d'identificación|Preséntase namás qu'un conxuntu d'información y hai " "que calcar naquellos elementos que cumplan un condición determinada." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Pantalla d'información|Amuésase un conxuntu d'informacióny, opcionalmente, " "úfrese la posibilidá d'activar el conteníu multimedia arreyáu a cada " "elementu." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Puzzle doble|Amuésense dos paneles. Nún apaez la información desordenada y " "l'otru ta ermu. Hai que reconstruyir l'oxetu nel panel ermu arrastrando les " "pieces d'una nuna." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Puzzle d'intercambiu|Nun panel únicu mécese tola información. En cada xugada " "se intercambien les posiciones de dos pieces fasta ordenar l'oxetu." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle de furacu|Nun panel únicu faise desapaecer una pieza y mécense les " "demás. En cada xugada pue movese una de les pieces que llenden col furacu, " "fasta teneles toes nel orde orixinal." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Rempuesta escrita|Amuésase un conxuntu d'información y, pa caún de los " "elementos, hai qu'escribir el testu que correspuenda." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Testu: enllenar furacos|Nun testu escuéyense delles pallabres, lletres y/o " "frases que s'escuende o camuflen. La resolución de caún de los elementos " "escondíos pue plantegase de menes estremaes: escribiendo nun espaciu ermu, " "corrixiendo una espresión que contién errores o seleicionando nuna llista " "ente posibles rempuestes." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Testu: identificar elementos|L'usuariu tien de señalar calcando col mur " "determinaes pallabres, lletres, cifres, símbolos o signod de puntuación." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Testu: ordenar elementos|Nel intre de diseñar la xera seleiciónense nel " "testu delles pallabres o párrafos que se van mecer ente ellos. L'usuariu " "tien de volver a ponelo n'orde." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Testu: completar testu|Nun testu faense desapaecer dellos elementos " "(lleters, pallabres, signos de puntuación, frases) y l'usuariu tien de " "completalu." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Crucigrama|Hai que dir enllenando el panel de pallabres a partir de les " "definiciones. Les definiciones puen ser testuales, gráfiques o sonores. El " "programa amuesa automáticamente les definiciones de les dos pallabres que se " "crucen na posición onde s'atope'l cursor en cada momentu." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Sopa de lletres|Hai qu'atopar les pallabres escondíes nuna caxella de " "lletres. Les celdes neutres de la caxella (les que nun pertenecen a pallabra " "denguna) enllénense con carauteres seleicionaos al azar en cada xugada." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_pt_BR.po0000644000175000017500000001633411377161311024517 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Associação complexa|Nesta atividade há dois conjuntos de informação, mas " "estes conjuntos podem ter um número diferente de elementos e podem existir " "diferentes tipos de relação entre eles, por exemplo: um-para-um, vários para " "um, partes sem uma relação, etc." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Associação simples|Há dois conjuntos de informação que possuem o mesmo " "número de partes. Cada parte do conjunto original corresponde a uma, e " "somente uma, parte do segundo conjunto." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Jogo da memória|Cada um dos pedaços (de uma imagem selecionada) aparece duas " "vezes, mas com a face voltada para baixo. A cada tentativa dois pedaços são " "revelados e têm sua face novamente voltada para baixo se não forem iguais. O " "objetivo é encontrar todos os pares." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Atividade de exploração|Um pedaço inicial de informação é mostrado e, ao " "clique do mouse, uma pequena informação é fornecida para cada elemento." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Atividade de identificação|Há somente um conjunto de informações e você deve " "clicar nas partes que corresponderem a uma certa condição." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Tela de informação|Um conjunto de informações é exibido e existe a opção de " "ativar um conteúdo de multimídia para cada parte da informação." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Quebra-cabeças duplo|Duas grades são exibidas. Uma contém a informação " "desordenada e outra está vazia. O objeto tem de ser reorganizado na grade " "vazia arrastando-se as partes da informação, uma a uma." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Quebra-cabeças de troca|A informação é embaralhada dentro do mesmo painel. A " "cada tentativa dois pedaços trocam de posição até que o objeto estiver " "reordenado." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Quebra-cabeças de lacuna|Num mesmo painel um pedaço está faltando e os " "outros estão embaralhados. A cada tentativa um dos pedaços próximo à lacuna " "é movido até que todos os pedaços retornem à ordem original." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Resposta escrita|Um conjunto de informações é exibido e o texto " "correspondente para cada uma das partes deve ser escrito." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Texto: Preencha as lacunas|O usuário deve completar certas palavras, letras " "e frases que foram escondidas ou camufladas em um texto. A solução para cada " "um dos elementos deve ser estabelecida de diferentes maneiras: escrita em um " "espaço em branco; corrigindo a frase que contém erros; ou selecionando a " "partir de uma lista de várias possíveis respostas." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Texto: Identifique os elementos|O usuário deve destacar algumas palavras, " "letras, números, símbolos ou pontuação com o clique do mouse." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Texto: Ordenar elementos|Ao preparar esta atividade algumas das palavras ou " "parágrafos de um texto são selecionadas para serem embaralhadas. O usuário " "deve ordená-las corretamente." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Texto: Completar o texto|Várias partes de um texto (letras, palavras, " "pontuação, ou frases) são retiradas e o usuário deve completá-las." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Palavras Cruzadas|A tabela de palavras deve ser completada de acordo com " "suas definições. As definições podem ser exibidas na forma de texto, imagens " "ou som. O programa automaticamente exibe as definições de duas palavras que " "cruzam a posição do cursor." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Caça-palavras|As palavras escondidas devem ser encontradas em uma grade de " "letras. As células neutras na grade (aquelas sem palavras) são completadas " "com caracteres escolhidos aleatoriamente." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_fr.po0000644000175000017500000001607011377161311024115 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Association complexe|Dans cette activité il y a aussi deux jeux " "d'information, mais ils peuvent avoir des nombres de cases différentes et " "peuvent avoir des relations différentes entre elles ex : un vers un, " "plusieurs vers un, parties sans relations etc..." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Association simple|Il y a deux jeux d'information qui ont le même nombre de " "cellules. A chaque partie correspond une et une seule concordance dans le " "second jeu." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Jeu mémory|Chaque pièce apparaît deux fois, mais face cachée. A chaque fois " "que deux pièces sont retournées and are turned back over if they are not the " "same. L'objectif est de retrouver toutes les paires." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Activité d'exploration|Une pièce initiale d'information est montrée et, en " "cliquant dessus, une pièce donnée d'information est montrée pour chaque " "élément." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Identification de cellules|Il y a juste un jeu d'information et vous avez " "juste à cliquer sur les parties qui remplissent certaines conditions." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Ecran d'information|Un jeu d'information est mmontré et il y a une option " "d'activation de contenu multimédia pour chaque pièce d'information." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Double puzzle| Deux grilles sont montrées. Une contient les informations en " "désordre et la seconde est vide. L'objectif est de réarranger la grille vide " "en prenant les pièces une à une." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Puzzle d'échange|The information is swapped within the same panel. In each " "go two pieces swap position until the object is reordered." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle à trou|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Réponse écrite|Un jeu d'information est montré et le texte correspondant à " "chaque partie doit être écrit." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Text: Remplir les blancs|L'utilisateur doit compléter certains mots, lettres " "et phrases qui ont été cachés ou camouflés dans le texte. La solution pour " "chaque élément peut être définie de différentes manières : remplir un champ " "vide, corriger une phrase contenant des erreurs, ou en sélectionnant une " "réponse dans une liste de réponses possibles." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Text: Identifier des éléments|L'utilisateur doit pointer ceratains mots, " "lettres, nombres, symboles ou marques de ponctuation en cliquant avec la " "souris." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Text: Mise en ordre d'éléments|Dans cette activité, certains mots ou " "paragraphes d'un texte sont sélectionnés et mélangés. L'utilisateur doit les " "remettre en ordre." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Text: Texte à compléter|Différentes parties d'un texte (lettres, mots, " "signes de ponctuation, ou phrases) sont retirées et l'utilisateur doit le " "compléter." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Mots croisés|Le tableau de mots doit être complété en accord avec les " "définitions. Les définitions peuvent être du texte, graphique ou son. Le " "programme montre automatiquement les définitions des deux mots qui croisent " "une position du curseur." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Recherche de mots|Les mots cachés doivent être trouvés dans une grille de " "lettres. Les cellules neutres dans la grille(celles qui n'ont pas de mots) " "sont complétées avec des lettres choisie au hasard." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_es.po0000644000175000017500000001651611377161311024122 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:43+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Asociación compleja|En este tipo de activitat se presentan también dos " "conjuntos de información, pero éstos pueden tener un número diferente de " "elementos y entre ellos se pueden dar diversos tipos de relación: Uno a uno, " "diversos a uno, elementos sin asignar..." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Asociación simple|Se presentan dos conjuntos de información que tienen el " "mismo número de elementos. A cada elemento del conjunto imagen corresponde " "sólo un elemento del conjunto origen." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Juego de memoria|Cada una de las piezas que forman el objeto aparece " "escondido dos veces dentro de la ventana de juego. En cada jugada se " "destapan un par de piezas, que se vuelven a esconder si no son idénticas. El " "objetivo es localizar todas las parejas." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Actividad de exploración|Se muestra una información inicial y al hacer clic " "en ella aparece, para cada elemento, una determinada pieza de información." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Actividad de identificación|Se presenta sólo un conjunto de información y " "hay que hacer clic en aquellos elementos que cumplan una determinada " "condición." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Pantalla de información|Se muestra un conjunto de información y, " "opcionalmente, se ofrece la posibilidad de activar el contenido multimedia " "asociado a cada elemento." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Puzzle doble|Se muestran dos paneles. En uno aparece la información " "desordenada y el otro está vacío. Hay que reconstruir el objeto en el panel " "vacío arrastrando las piezas una por una." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Puzzle de intercambio|En un único panel se mezcla la información. En cada " "jugada se conmutan las posiciones de dos piezas hasta ordenar el objeto." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle de agujero|En un único panel se hace desaparecer una pieza y se " "mezclan las restantes. En cada jugada se puede desplazar una de las piezas " "que limitan con el agujero, hasta tenerlas todas en el orden original." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Respuesta escrita|Se muestra un conjunto de información y, para cada uno de " "sus elementos, hay que escribir el texto correspondiente." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Texto: rellenar agujeros|En un texto se seleccionan determinadas palabras, " "letras y frases que se esconden o se camuflan. La resolución de cada uno de " "los elementos escondidos se puede plantear de maneras diferentes: " "Escribiendo en un espacio vacío, corrigiendo una expresión que contiene " "errores o seleccionando en una lista entre distintas respuestas posibles." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Texto: identificar elementos|El usuario debe señalar con un clic del ratón " "determinadas palabras, letras, cifras, símbolos o signos de puntuación." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Texto: ordenar elementos|En el momento de diseñar la actividad se " "seleccionan en el texto algunas palabras o párrafos que se mezclarán entre " "sí. El usuario ha de intentar volver a ponerlo en orden." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Texto: completar texto|En un texto se hacen desaparecer determinados " "elementos (letras, palabras, signos de puntuación, frases) y el usuario debe " "completarlo." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Crucigrama|Hay que ir rellenando el panel de palabras a partir de sus " "definiciones. Las definiciones pueden ser textuales, gráficas o sonoras. El " "programa muestra automáticamente las definiciones de las dos palabras que se " "cruzan en la posición donde se encuentre el cursor en cada momento." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Sopa de letras|Hay que encontrar las palabras escondidas en una parrilla de " "letras. Las casillas neutras de la parrilla (aquéllas que no pertenecen a " "ninguna palabra) se rellenan con caracteres seleccionados al azar en cada " "jugada." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_nl.po0000644000175000017500000001573211377161311024123 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-10 21:18+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Complexe associatie|In deze activiteit zijn er ook twee groepen informatie, " "maar deze kunnen verschillen in aantal en er kunnen verschillende type " "relaties zijn tussen de twee groepen zoals: een op een, verschillende op " "een, geen relatie, enzovoorts." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Simpele associatie|Er zijn twee groepen informatie, met evenveel elementen " "in elke groep. Elk element van de ene groep komt precies overeen met een " "element in de andere groep." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Duo's zoeken|Elk element komt twee keer voor, je ziet alleen de achterkant. " "Bij elke beurt worden er twee elementen zichtbaar gemaakt en terug " "onzichtbaar als ze niet gelijk zijn. Je moet alle duo's vinden." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Exploreren activiteit|Er wordt een lijst met informatie getoond, en als je " "op een element klikt, wordt er bijkomende uitleg gegeven." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Identificeer cellen|Er is een lijst met informatie en je moet op deze delen " "klikken die aan een bepaalde voorwaarde voldoen." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Informatie scherm|Er is een lijst met informatie en er is de optie om " "multimedia te vertonen voor elk element." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Dubbele puzzel|Er worden twee tabellen getoond. Een bevat de informatie die " "doorheen is geschud en de ander is leeg. Het doel is de lege tabel te vullen " "in de juiste volgorde door de stukken een voor een te verslepen." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Verwissel puzzel|De informatie is in dezelfde tabel door elkaar gehaald. Bij " "elke beurt moet je twee delen omwisselen totdat de puzzel is opgelost." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Gat puzzel|In dezelfde tabel ontbreekt een stukje en de andere zijn door " "elkaar geschud. Bij elke beurt wordt een stukje in de opening geschoven tot " "de puzzel gemaakt is.." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Geschreven antwoord|Er wordt informatie getoond en de overeenstemmende tekst " "moet geschreven worden." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Tekst: Invuloefening|De gebruiker moet sommige woorden, letters en zinnen " "die weggelaten zijn vervolledigen. De oplossing kan op verschillende " "manieren gegeven worden: invullen op een lege plaats, verbeteren van fouten " "of kiezen uit een aantal oplossingen." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Tekst: Identifier elementen|De gebruiker moet sommige woorden, letters, " "cijfers, symbolen of leestekens aanklikken met de muis." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Tekst: Elementen ordenen|Sommige woorden of alinea's zijn door elkaar gezet. " "De gebruiker moet ze weer in de juiste volgorde zetten." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Tekst: Vervolledig tekst|Verschillende delen van een tekst (letters, " "woorden, leestekens of zinnen) zijn weggelaten en de gebruiker moet de tekst " "vervolledigen." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Kruiswoordraadsel|Het kruiswoordraadsel moet ingevuld worden door gebruik te " "maken van de definities. De definities mogen met tekst, afbeeldingen of " "geluiden. Het programma geeft de twee definities van de woorden waar er een " "letter wordt ingevuld." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Woord zoeker|De verborgen woorden moeten gezocht worden in een rooster met " "letters. De cellen die geen letters van woorden bevatten, worden willekeurig " "opgevuld." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_el.po0000644000175000017500000002342611377161311024111 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-04-09 11:38+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Σύνθετη σχέση|Σε αυτή τη δραστηριότητα υπάρχουν δύο σύνολα πληροφοριών, αλλά " "ενδέχεται να έχουν διαφορετικό αριθμό τμημάτων ή να σχετίζονται με " "διαφορετικούς τύπους σχέσεων, για παράδειγμα: ένα προς ένα, πολλά προς ένα, " "τμήματα χωρίς σχέσεις, κλπ." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Απλή σχέση|Υπάρχουν δύο σύνολα πληροφοριών που έχουν τον ίδιο αριθμό " "τμημάτων. Κάθε τμήμα από το αρχικό σύνολο αντιστοιχεί σε ένα, και μόνον ένα, " "τμήμα του άλλου συνόλου." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Εύρεση ζευγών|Κάθε ένα από το κομμάτια εμφανίζεται δύο φορές, αλλά γυρισμένο " "από την πίσω όψη. Σε κάθε βήμα δύο κομμάτια είναι δυνατόν να " "αναποδογυριστούν, αλλά αν δεν είναι τα ίδια επιστρέφουν στην αρχική τους " "θέση." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Δραστηριότητα εξερεύνησης| Εμφανίζεται ένα αρχικό τμήμα πληροφορίας και αν " "κάνουμε κλικ σε αυτό εμφανίζεται ένα τμήμα δοσμένης πληροφορίας για κάθε " "στοιχείο." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Ταύτιση κελιών|Υπάρχει μόνο ένα σύνολο πληροφοριών, όπου πρέπει να γίνει " "κλικ σε κάθε ένα τμήμα του συνόλου ώστε να αναδιαταχθούν όλα τα τμήματα στη " "σωστή τους θέση." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Πληροφορίες οθόνης|Εμφανίζεται ένα συνολο πληροφοριών, όπου υπάρχει η " "δυνατότητα ενεργοποίησης πολυμεσικού περιεχομένου για κάθε τμήμα της " "πληροφορίας." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Διπλό παζλ|Εμφανίζονται δύο πλέγματα. Το ένα περιέχει τα τμήματα της " "πληροφορίας ανακατεμένα, ενώ το άλλο είναι άδειο. Σκοπός είναι η αναδιάταξη " "των τμημάτων στο άδειο πλέγμα με μετακίνησή τους σε αυτό." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Παζλ ανταλλαγής|Τα τμήματα της πληροφορίας είναι ανακατωμένα στο ίδιο " "πλαίσιο. Σε κάθε βήμα, δύο τμήματα ανταλλάσσουν τις θέσεις τους μέχρι να " "βρεθεί η σωστή τους θέση." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Παζλ με ένα κενό|Μέσα στο πλαίσιο της πληροφορίας λείπει ένα τμήμα της, ενώ " "τα άλλα είναι ανακατωμένα. Σε κάθε βήμα ένα από τα κομμάτια που βρίσκονται " "γύρω από το κενό μετακινείται, μέχρι να βρεθεί η σωστή θέση όλων των " "τμημάτων." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Γραπτή απάντηση|Εμφανίζεται ένα σύνολο πληροφοριών και για κάθε τμήμα πρέπει " "να δοθεί η αντίστοιχη γραπτή απάντηση." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Κείμενο: συμπλήρωση κενών|Ο χρήστης πρέπει να συμπληρώσει ορισμένες λέξεις, " "γράμματα ή φράσεις που λείπουν ή είναι παραλλαγμένες σε ένα κείμενο. Η λύση " "για κάθε ένα στοιχείο μπορεί να οριστεί με διαφορετικούς τρόπους: με γράψιμο " "σε ένα κενό διάστημα, διόρθωση μιας φράσης που περιέχει λάθη, επιλογή από " "μια λίστα με πιθανές απαντήσεις." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Κείμενο: ταυτοποίηση στοιχείων|Ο χρήστης πρέπει να δείξει με κλικ του " "ποντικιoύ λέξεις, γράμματα, αριθμούς ή σημεία στίξης." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Κείμενο: διάταξη στοιχείων|Κατά το σχεδιασμό αυτής της δραστηριότητας " "μερικές λέξεις ή παράγραφοι του κειμένου επιλέχθηκαν να είναι ανακατεμένες. " "Ο χρήστης πρέπει να τις βάλει στη σωστή σειρά." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Κείμενο: συμπλήρωση κειμένου| Τμήματα ενός κειμένου (γράμματα, λέξεις, " "σημεία στίξης, φράσεις) έχουν εξαιρεθεί και ο χρήστης πρέπει να τα " "συμπληρώσει." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Σταυρόλεξα|Το σταυρόλεξο πρέπει να συμπληρωθεί σύμφωνα με τους ορισμούς των " "λέξεων. Οι ορισμοί μπορεί να είναι κείμενο, γραφικό ή ήχος. Το πρόγραμμα " "δείχνει αυτόματα τους ορισμούς των δυο λέξεων που τέμνονται στο σημείο που " "βρίσκεται ο κέρσορας." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Αναζήτηση λέξεων|Οι λέξεις πρέπει να βρεθούν στο πλέγμα των γραμμάτων. Τα " "ουδέτερα κελιά του πλέγματος (αυτά που δεν έχουν λέξεις) συμπληρώνονται με " "τυχαίους χαρακτήρες." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_it.po0000644000175000017500000001556211377161311024127 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-29 14:29+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Associazione complessa|In questa attività ci sono due serie di informazioni, " "ma queste possono avere un diverso numero di parti e possono esserci " "differenti tipi di relazioni tra esse; es.: uno ad uno, vari con uno, parti " "con una relazione, etc." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Associazione semplice|Ci sono due serie di informazioni che hanno lo stesso " "numero di parti. Ciascuna parte della serie originale corrisponde a una, e " "solo una, parte dell'altra serie." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Memory|Ciascuno dei pezzi appare due volte, ma in fase di preparazione basta " "specificare una sola volta il contenuto di ogni cella. L'obiettivo del gioco " "è trovare le coppie." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Esplorazione|Un pezzo iniziale dell'informazione è mostrato e, cliccando su " "essa, un atro pezzo di informazione è mostrato per ciascun elemento." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Identificare celle|C'è una sola serie di informazioni: bisogna cliccare su " "quelle parti che rispondono a specifiche condizioni." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Schermata informativa|Una serie di informazioni viene mostrata e si possono " "attivare contenuti multimediali per ciascun pezzo di informazione." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Puzzle doppio|Sono mostrate due griglie. Una contiene le informazioni in " "disordine e l'altra è vuota. L'obiettivo del gioco è ricostruire le " "informazioni nella griglia vuota trascinando i pezzi uno ad uno." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Puzzle a scambio|Le informazioni sono inserite in un unico pannello. I pezzi " "vengono scambiati di posizione, fino al riordino completo delle informazioni." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle a buchi|Trascinamento di pezzi tagliati dal pannello originale." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Scrivi la risposta|Una serie di informazioni viene mostrata e deve essere " "scritto un testo corrispondente per ciascuna parte di essa." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Testo: Riempi gli spazi|L'utente deve completare determinate parole, lettere " "e frasi che sono state nascoste o camuffate in un testo. La soluzione di " "ciascun elemento può avvenire in diversi modi: scrittura nello spazio " "bianco; correzione di una frase con errori; selezione da una lista di " "possibili risposte." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Testo: Identifica gli elementi|L'utente deve cliccare su parole, lettere, " "numeri, simboli o segni di punteggiatura." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Testo: Ordina gli elementi|L'utente deve mettere in ordine le parole o i " "paragrafi presentati in disordine." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Testo: Completa il testo|L'utente deve completare un testo nel quale alcune " "parti (lettere, parole, segni di punteggiatura o frasi) sono state tolte." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Cruciverba|La tabella delle parole viene completata secondo le relative " "definizioni. Le definizioni possono essere testi, immagini o suoni. Il " "programma mostra automaticamente le definizioni alla selezione delle caselle." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Crucipuzzle|Ricerca di parole nascoste in una griglia di lettere. Le celle " "neutre della griglia vengono completate con caratteri scelti a caso." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_pt.po0000644000175000017500000001623311377161311024132 0ustar # Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-28 11:34+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Associação complexa|Neste tipo de actividade dois conjuntos (painéis) são " "associados entre si. Cada painel pode conter uma quantidade distinta de " "células e as relações podem ser: um-para-um, muitos para um, partes sem uma " "relação, etc." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Associação simples|Dois conjuntos de informação (painéis) com a mesma " "quantidade de células. Cada parte do conjunto original corresponde a uma - e " "somente uma - parte do segundo conjunto." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Jogo de memória|Cada uma das peças (de uma imagem escolhida) possui o seu " "par, todas com as faces voltadas para baixo. A cada tentativa, duas peças " "serão mostradas. Caso não formem um par (não sejam iguais), voltam-se de " "face para baixo. O objectivo é encontrar todos os pares." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "Exploração|Clicar sobre partes do painel mostra informações." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Identificar células|Existe um painel de informações. Clique nas partes que " "correspondem a determinada condição." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Ecrã de informação|Um conjunto de informações é mostrado. Existe a opção de " "activar um conteúdo da mediateca para cada parte da informação." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Quebra-cabeças duplo|São exibidos dois painéis. Um contém a informação " "desordenada e o outro está vazio. O objecto deve ser reorganizado no painel " "vazio arrastando cada peça." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Quebra-cabeças de troca|A informação é baralhada dentro do mesmo painel. A " "cada tentativa, duas peças trocam de posição até que o utilizador consiga " "colocar tudo em ordem." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Quebra-cabeças com lacuna|As peças (menos uma) surgem baralhadas num mesmo " "painel. Uma das peças contígua ao espaço vazio é movida até que todas sejam " "colocadas em ordem." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Resposta escrita|Um painel de informações é mostrado e o texto " "correspondente para cada uma das partes deve ser escrito." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Texto: Preencher lacunas|O utilizador completa palavras, letras e frases que " "foram escondidas ou camufladas num texto. A resolução de cada um dos " "elementos pode ser feita de diferentes modos: escrever num espaço em branco " "(lacuna); corrigir a frase que contém erros; ou seleccionar a resposta " "correcta a partir de uma lista." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Texto: Identificar elementos|O utilizador destaca algumas palavras, letras, " "números, símbolos ou pontuação com um clique." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Texto: Ordenar elementos|O utilizador ordena correctamente as palavras (ou " "parágrafos inteiros) de um texto previamente desordenadas." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Texto: Completar texto|Várias partes de um texto (letras, palavras, " "pontuação, ou frases) são retiradas e o utilizador deve completá-las." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Palavras Cruzadas|Completar a grelha de acordo com as definições. As " "definições podem ser mostradas como texto, imagens ou som. O jClic exibe " "automaticamente as definições de duas palavras que cruzam a posição do " "cursor." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Sopa de letras|As palavras escondidas devem ser encontradas numa grelha de " "letras. As células neutras na grelha (as que não têm palavras) são " "completadas com caracteres escolhidos aleatoriamente ou definidos pelo autor." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_cs.po0000644000175000017500000001213311377161311024107 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2010-01-22 09:28+0000\n" "Last-Translator: Konki \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Komplexní asociace|V této aktivitě jsou dvě sady informací, které mohou mít " "rozdílný počet částí a rozdílné vztahy mezi nimi např.: jeden-k-jedné, " "několik k jedné, části bez vztahu, apod." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Jednoduchá asociace|V této aktivitě jsou dvě sady informací, které mají " "stejný počet částí. Každá část původní sady odpovídá jedné a pouze jedné " "části obrázkové sady." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Hledání párů|Pexeso. Každá z částí se objeví dvakrát, ale lícem dolů. V " "každém kole se obrátí dvě karty a otočí se lícem dolu, když nejsou stejné. " "Cílem je najít všechny páry." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Informační obrazovka|Jedna sada informací je zobrazena s možností aktivace " "multimediálního obsahu každé části informace." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Hledání slov| Skrytá slova lze nalézt v mřížce dopisů. Neutrální buňky v " "mřížce (ty bez slov), jsou doplněny náhodně vybranými znaky." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_ca.po0000644000175000017500000001631111377161311024067 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-11 17:43+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Associació complexa|En aquest tipus d'activitat es presenten també dos " "conjunts d'informació, però aquests poden tenir un nombre diferent " "d'elements i entre ells es poden donar diversos tipus de relació: un a un, " "diversos a un, elements sense assignar..." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Associació simple|Es presenten dos conjunts d'informació que tenen el mateix " "nombre d'elements. A cada element del conjunt origen correspon un i només un " "element del conjunt imatge." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Joc de memòria|Cada una de les peces que formen l'objecte apareix amagat " "dues vegades dins de la finestra de joc. En cada tirada es destapen un " "parell de peces, que es tornen a amagar si no són idèntiques. L'objectiu és " "destapar totes les parelles." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Activitat d'exploracio|Es mostra una informació inicial i en fer clic damunt " "seu es mostra, per a cada element, una determinada peça d'informació." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Activitat d'identificació|Es presenta només un conjunt d'informació i cal " "fer clic damunt aquells elements que acompleixin una determinada condició." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Pantalla d'informació|Es mostra un conjunt d'informació i, opcionalment, " "s'ofereix la possibilitat d'activar el contingut multimèdia que porti cada " "element." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Puzzle doble|Es mostren dos plafons. En un hi ha la informació desordenada i " "l'altre està buit. Cal reconstruir l'objecte en el plafó buit portant-hi les " "peces una per una." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Puzzle d'intercanvi|En un únic plafó es barreja la informació. En cada " "tirada es commuten les posicions de dues peces, fins a ordenar l'objecte." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle de forat|En un únic plafó es fa desaparèixer una peça i es barregen " "les restants. En cada tirada es pot desplaçar una de les peces veïnes al " "forat, fins tenir-les totes en l'ordre original." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Resposta escrita|Es mostra un conjunt d'informació i, per a cadascun dels " "seus elements, cal escriure el text corresponent." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Text: Omplir forats|En un text se seleccionen determinades paraules, lletres " "i frases que s'amaguen o es camuflen i l'usuari ha de completar. La " "resolució de cadascun dels elements amagats es pot plantejar de maneres " "diferents: escrivint en un espai buit, corregint una expressió que conté " "errades o seleccionant en una llista de diverses respostes possibles." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Text: Identificar elements|L'usuari ha d'assenyalar amb un clic de ratolí " "determinades paraules, lletres, xifres, símbols o signes de puntuació." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Text: Ordenar elements|En el moment de dissenyar l'activitat es seleccionen " "en el text algunes paraules o paràgrafs que es barrejaran entre si. L'usuari " "ha de tornar a posar-ho en ordre." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Text: Completar text|En un text es fan desaparèixer determinades parts " "(lletres, paraules, signes de puntuació, frases) i l'usuari ha de completar-" "lo." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Mots encreuats|Cal anar omplint el tauler de paraules a partir de les seves " "definicions. Les definicions poden ser textuals, gràfiques o sonores. El " "programa mostra automàticament les definicions de les dues paraules que es " "creuen en la posició on es trobi el cursor en cada moment." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Sopa de lletres|Cal trobar les paraules amagades en una graella de lletres. " "Les caselles neutres de la graella (aquelles que no pertanyen a cap paraula) " "s'omplen amb caràcters seleccionats a l'atzar en cada jugada." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_gl.po0000644000175000017500000001620211377161311024105 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Asociación complexa|Neste tipo de actividade preséntanse tamén dous " "conxuntos de información, pero estes poden ter un número diferente de " "elementos e entre eles pódense dar diversos tipos de relacións: Un a un, " "varios a un, elementos sen asignar..." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Asociación simple|Preséntanse dous conxuntos de información que teñen o " "mesmo número de elementos. A cada elemento do conxunto orixe corresponde un " "e só un elemento do conxunto imaxe." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Xogo de memoria|Cada unha das pezas que forman o obxecto preséntase dúas " "veces e ocultas na xanela de xogo. En cada tirada descóbrense un par de " "pezas, que se volven a ocultar se non foren idénticas. O obxectivo é " "destapar todas as parellas." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Actividade de exploración|Móstrase unha información inicial e cando se fai " "clic nela aparece, para cada elemento, unha determinada peza de información." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Actividade de identificación|Preséntase só un conxunto de información e hai " "que facer clic nos elementos que cumpriren unha determinada condición." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Pantalla de información|Móstrase un conxunto de información e, " "opcionalmente, ofrécese a posibilidade de activar o contdo multimedia " "asociado a cada elemento." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Quebracabezas dobre|Móstranse dous paneis. Nun aparece a información " "desordenada e o outro está valeiro. Hai que reconstruír o obxecto neste " "último arrastando as pezas unha a unha." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Quebracabezas de intercambio|Nun único panel mestúrase a información. En " "cada xogada intercámbianse as posicións de dúas pezas ata ordenar o obxecto." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Quebracabezas de burato|Nun único panel faise desaparecer unha peza e " "mestúranse as restantes. En cada xogada pódese desprazar unha das pezas " "viciñas do burato, ata telas todas na orde orixinal." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Resposta escrita|Móstrase un conxunto de información e, para cada elemento, " "hai que escribir o texto correspondente ou de resposta." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Texto: encher buratos|Nun texto escóllense determinadas palabras, letras e " "frases que se ocultan ou camuflan. A resolución de cada un dos elementos " "ocultos pódese efectuar de xeitos diferentes: Escribindo nun espacio " "valeiro, corrixindo unha expresión que contén erros ou escolléndoa nunha " "lista entre distintas respostas posíbeis." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Texto: identificar elementos|O usuario ten que sinalar cun clic do rato " "palabras, letras, cifras, símbolos ou signos de puntuación." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Texto: ordenar elementos|No deseño da actividade escóllense no texto " "palabras ou parágrafos que se barallan. O usuario ten de intentar volver a " "pólo en orde." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Texto: completar texto|Nun texto fanse desaparecer algúns elementos (letras, " "palabras, signos de puntuación, frases) e o usuario ten de completalo." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Encrucillado|Hai que ir enchendo o panel de palabras a partir das " "definicións. As definicións poden ser textuais, gráficas ou sonoras. O " "programa mostra automaticamente as definicións das dúas palabras que se " "cruzan na posición actual do cursor." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Sopa de letras|Hai que encontrar as palabras escondidas nunha cuadrícula de " "letras. As celas neutras desta grella (as que non pertencen a ningunha " "palabra) énchense con caracteres escolleitos ao hazar en cada xogada." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_ru.po0000644000175000017500000001231511377161311024132 0ustar # Russian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-12-18 17:55+0000\n" "Last-Translator: Artem Karimov \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Сложные ассоциации|В этом задании также есть два набора информации, но эти " "могут иметь разное количество частей, а также могут иметь разный тип связи " "(один к одному, много к одному, лишняя часть и т.д.)." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Простые ассоциации|Есть два набора информации с одинаковым количеством " "частей. Каждая часть из оригинального набора соответствует одной части из " "набора изображений." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Нахождение пар|Каждый из кусков появляется дважды, но верх ногами. При " "каждой попытке два куска переворачиваются и, если они не одинаковы, " "переворачиваются назад. Нужно найти все пары" #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-activities/listactivities_eu.po0000644000175000017500000001611511377161311024117 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-02-18 15:55+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @associations.ComplexAssociation msgid "" "Complex association|In this activity there are also two sets of information, " "but these may have a different number of parts and there may be different " "types of relation between them e.g.: one-to-one, various to one, parts " "without a relation, etc." msgstr "" "Elkarketa berezia|Honek ere bi informazio multzo ditu baina zati kopuru " "ezberdina izan dezakete eta zatien harteko lotura ere ezberdina izan " "daiteke: lehenengoko bati bigarreneko bakarra, lehenengoko bati bigarreneko " "hainbat, loturarik gabeak, e.a." #: @associations.SimpleAssociation msgid "" "Simple association|There are two sets of information that have the same " "number of parts. Each part from the original set corresponds to one, and " "only one, part of the image set." msgstr "" "Elkarketa arrunta|Zati kopuru bera duten bi informazio multzo daude. " "Lehenengoaren zati bakoitzari bigarrenaren zati bakarra dagokio eta ez " "gehiago." #: @memory.MemoryGame msgid "" "Finding pairs|Each of the pieces appear twice, but face down. In each go two " "pieces are turned over and are turned back over if they are not the same. " "The objective is to find all the pairs." msgstr "" "Bikoteak egin| Zati bakoitza bi aldiz agertuko da buruz behera. Bakoitzean " "bi zati giratuko dira gora eta berriz ere buruz bera jarriko dira ez badute " "bikotea osatzen. Helburua bikote guztiak aurkitzea da." #: @panels.Explore msgid "" "Explore activity|An initial piece of information is shown and, upon clicking " "on it, a given piece of information is shown for each element." msgstr "" "Ikertu-jarduera| Informazioaren lehen zatia ematen da eta horretan sakatuta " "elementu bakoitzerako informazio zati zehatz bat erakusten da." #: @panels.Identify msgid "" "Identify cells|There is just one set of information and you have to click on " "those parts that meet a certain condition." msgstr "" "Identifikazu atalak| Informazio atal batzuk daude eta berauetan sakatuta " "adierazi behar duzu zeintzuk betetzen duten baldintza zehatz bat." #: @panels.InformationScreen msgid "" "Information screen|One set of information is shown and there is the option " "of activating the multimedia content for each piece of information." msgstr "" "Informazioa pantailan| Informazio atal batzuk daude eta aukera dago atal " "bakoitzerako multimedia edukia aktibatzeko bertan sakatuta." #: @puzzles.DoublePuzzle msgid "" "Double puzzle|Two grids are shown. One contains the disordered information " "and the other is empty. The object has to be rearranged in the empty grid by " "dragging the pieces one by one." msgstr "" "Puzzle bikoitza| Bi taula erakusten dira. Lehenengoak informazioa nahastuta " "du eta bigarrena hutsik dago. Helburua hutsik dagoen taula osatzea da " "lehenengoko piezak banan banan arrastaka eramanda." #: @puzzles.ExchangePuzzle msgid "" "Exchange puzzle|The information is swapped within the same panel. In each go " "two pieces swap position until the object is reordered." msgstr "" "Zatiak ordenatu|Informazioa nahastuta dago panel berean. Saiakera bakoitzean " "bi zati mugituko dira guztiak ordenatuta geratu arte." #: @puzzles.HolePuzzle msgid "" "Hole puzzle|In the same panel one piece is missing and the others are " "shuffled. In each go one of the pieces next to the empty space is moved " "until they are back in the original order." msgstr "" "Puzzle mugikorra|Panel batean informazio-piezak nahastuta daude eta bat " "kanpoan dago gainera. Piezak hutsik dagoen tartea erabilita mugitu egin " "behar dira bere posiziora eramateko eta kanpoan dagoen piezarentzat bere " "lekua libre uzteko." #: @text.WrittenAnswer msgid "" "Written answer|A set of information is shown and the corresponding text for " "each of its parts must be written." msgstr "" "Idatzi erantzuna|Informazio atalak erakusten dira eta horiei dagokien testua " "idatzi egin behar da." #: @text.FillInBlanks msgid "" "Text: Fill-in blanks|The user has to complete certain words, letters and " "phrases that have been hidden or camouflaged in a text. The solution of each " "of the elements may be set up in different ways: writing in a blank space; " "correcting a phrase that contains errors; or selecting from a list of " "various possible answers." msgstr "" "Testua: hutsuneak bete|Erabiltzaileak testuan ezkutatu edo kamuflatu diren " "hitzak, letrak edo esaldiak osatu behar ditu. Elementu bakoitzaren soluzioa " "era ezberdinetan eman daiteke: hutsunea bete, akatsak dituen esaldia zuzendu " "edo erantzun multzo batetik aukeratu." #: @text.Identify msgid "" "Text: Identify elements|The user has to point out some words, letters, " "numbers, symbols or punctuation marks with a click of the mouse." msgstr "" "Testua: Identifikatu elementuak|Erabiltzaileak hitzak, hizkiak, zenbakiak, " "sinboloak edo puntuazio-markak identifikatu behar ditu saguarekin markatuta." #: @text.Order msgid "" "Text: Order elements|When designing this activity some of the words or " "paragraphs of a text are selected to be shuffled around. The user has to put " "them back in order." msgstr "" "Testua: Elementuak ordenatu|Jarduera hau diseinatzean, hainbat hitz edo " "paragrafo aukeratzen dira testutik eta nahastu egiten dira bertan. " "Erabiltzaileak berriz ere bere lekura eraman beharko ditu." #: @text.Complete msgid "" "Text: Complete text|Various parts of a text (letters, words, punctuation " "signs, or phrases) are taken out and the user has to complete it." msgstr "" "Testua: Testua osatu|Testuaren hainbat zati (hizkiak, hitzak, puntuazio-" "markak edo esaldiak) testutik ateratzen dira eta erabiltzaileak osatu egin " "behar du." #: @textGrid.CrossWord msgid "" "Crosswords|The word table has to be completed according to its definitions. " "The definitions may be text, graphics or sound. The programme automatically " "shows the definitions of the two words which cross in the cursor position." msgstr "" "Hitz gurutzatuak|Hitzen taula definizioen bitartez osatu behar da. " "Definizioa testua, grafikoa edo soinu bidezkoa izan daiteke. Programak " "automatikoki erakusten ditu kurtsorearen kokapenean gurutzatzen diren bi " "hitzen definizioak." #: @textGrid.WordSearch msgid "" "Word search|The hidden words have to be found in a grid of letters. The " "neutral cells in the grid (those with no word) are completed with characters " "chosen at random." msgstr "" "Bilatu hitza|Ezkutuko hitzak letra taula batean daude. Taulako laukitxoetan " "dauden hizki neutralak (hitzarenak ez direnak) ausaz aukeratuko dira." jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/0000755000175000017500000000000011377161311017323 5ustar jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_el.po0000644000175000017500000000230111377161311022700 0ustar # Greek translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 19:45+0000\n" "Last-Translator: Yannis Kaskamanidis \n" "Language-Team: Greek \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Ορθογώνιο|Τυπικός σχεδιαστής ορθογωνίου" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Παζλ με ορθογώνιες ενώσεις" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Παζλ με τρίγωνες ενώσεις" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Παζλ με καμπύλες ενώσεις" #: @Holes msgid "Cuts" msgstr "Τομές" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_gl.po0000644000175000017500000000162111377161311022706 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangular|Recortador estándar rectangular" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Encaixes con unión rectangular" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Encaixes con unión triangular" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Encaixes con unión ovalada" #: @Holes msgid "Cuts" msgstr "Retrincos" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_de.po0000644000175000017500000000165211377161311022700 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 15:56+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangular|Rechteckige Standardformen" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Puzzle mit rechteckigen Verbindungsteilen" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Puzzle mit dreieckigen Verbindungsteilen" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Puzzle mit runden Verbindungsteilen" #: @Holes msgid "Cuts" msgstr "Einkerbungen" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_fr.po0000644000175000017500000000217511377161311022720 0ustar # French translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-01-17 17:55+0000\n" "Last-Translator: Renaud de Colombel \n" "Language-Team: French \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangulaire|Pieces rectangulaires classiques" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Puzzle à jonctions rectangulaires" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Puzzle à jonctions triangulaires" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Puzzle à jonctions arrondies" #: @Holes msgid "Cuts" msgstr "Formes personnalisées" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_eu.po0000644000175000017500000000220111377161311022710 0ustar # Basque translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-06-16 06:45+0000\n" "Last-Translator: Pedro Lonbide \n" "Language-Team: Basque \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Laukizuzena|Piezak laukizuzen estandarrak" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Puzzle-piezak laukizuzenen bidez lotuak" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Puzzle-piezak hirukien bidez lotuak" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Puzzle-piezak kurba bidez lotuak" #: @Holes msgid "Cuts" msgstr "Errekorteak" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_nl.po0000644000175000017500000000214011377161311022712 0ustar # Dutch translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-08-11 13:18+0000\n" "Last-Translator: mente \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rechthoekige|Standaard rechthoekige vorm" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Puzzel met rechthoekige gebieden" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Puzzel met driehoekige gebieden" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Puzzel met gebogen gebieden" #: @Holes msgid "Cuts" msgstr "Openingen" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_cs.po0000644000175000017500000000215211377161311022711 0ustar # Czech translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-07-24 22:07+0000\n" "Last-Translator: Martin Slavík \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Pravoúhlý|Standardní pravoúhlý tvar" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Skládačka s pravoúhlými díly" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Skládačka s trojúhelníkovými díly" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Skládačka se zakřivenými díly" #: @Holes msgid "Cuts" msgstr "Řezy" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_es.po0000644000175000017500000000161611377161311022717 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 15:56+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangular|Recortador rectangular estándar." #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Encajes con unión rectangular" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Encajes con unión triangular" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Encajes con unión ovalada" #: @Holes msgid "Cuts" msgstr "Recortes" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_ca.po0000644000175000017500000000161611377161311022673 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-02-18 15:55+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangular|Retallador rectangular estàndard." #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Encaixos amb unió rectangular" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Encaixos amb unió triangular" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Encaixos amb unió ovalada" #: @Holes msgid "Cuts" msgstr "Retalls" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_pt.po0000644000175000017500000000215211377161311022727 0ustar # Portuguese translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-28 11:42+0000\n" "Last-Translator: Rui Fernandes \n" "Language-Team: Portuguese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangular|Encaixe rectangular" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Encaixes (conexões) rectangulares" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Encaixes (conexões) triangulares" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Encaixes (conexões) curvos" #: @Holes msgid "Cuts" msgstr "Recortes" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_ast.po0000644000175000017500000000215411377161311023075 0ustar # Asturian translation for jclic # Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2009. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2009-09-29 18:48+0000\n" "Last-Translator: Xandru \n" "Language-Team: Asturian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rectangular|Recortador rectangular estándar." #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Encaxes con xuntura rectangular" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Encaxes con xuntura triangular" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Encaxes con xuntura ovalada" #: @Holes msgid "Cuts" msgstr "Recortes" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_pt_BR.po0000644000175000017500000000164411377161311023317 0ustar msgid "" msgstr "" "Project-Id-Version: JClic 0.2.0.0\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-03-04 17:19+0000\n" "Last-Translator: Francesc Busquets \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Retangular|Formatador retangular padrão" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Quebra-cabeças com uniões retangulares" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Quebra-cabeças com uniões triangulares" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Quebra-cabeças com uniões curvas" #: @Holes msgid "Cuts" msgstr "Cortes" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_it.po0000644000175000017500000000212211377161311022715 0ustar # Italian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-21 00:01+0000\n" "Last-Translator: giomu2 \n" "Language-Team: Italian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Rettangolare|Pezzi rettangolari standard" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Puzzle con unioni rettangolari" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Puzzle con unioni triangolari" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Puzzle con unioni a curva" #: @Holes msgid "Cuts" msgstr "Ritagli" jclic-0.2.1.0.orig/i18n/fromLaunchpad/po/jclic-shapers/listshapers_ru.po0000644000175000017500000000241711377161311022736 0ustar # Russian translation for jclic # Copyright (c) 2008 Rosetta Contributors and Canonical Ltd 2008 # This file is distributed under the same license as the jclic package. # FIRST AUTHOR , 2008. # msgid "" msgstr "" "Project-Id-Version: jclic\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2008-02-04 19:15+0200\n" "PO-Revision-Date: 2008-05-28 13:31+0000\n" "Last-Translator: Nkolay Parukhin \n" "Language-Team: Russian \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "X-Launchpad-Export-Date: 2010-01-25 07:52+0000\n" "X-Generator: Launchpad (build Unknown)\n" #: @Rectangular msgid "Rectangular|Standard rectangular shaper" msgstr "Прямоугольный|Стандартный прямоугольный формирователь" #: @JigSaw msgid "Jigsaw with rectangular unions" msgstr "Пила с прямоугольными соединениями" #: @TriangularJigSaw msgid "Jigsaw with triangular unions" msgstr "Пила с треугольными соединениями" #: @ClassicJigSaw msgid "Jigsaw with curved unions" msgstr "Пила с изогнутыми соединениями" #: @Holes msgid "Cuts" msgstr "Разрезы" jclic-0.2.1.0.orig/i18n/toLaunchpad/0000755000175000017500000000000011377161311013635 5ustar jclic-0.2.1.0.orig/i18n/toLaunchpad/build.xml0000644000175000017500000002670611377161311015471 0ustar jclic-0.2.1.0.orig/COPYING.txt0000644000175000017500000004313311377161311012471 0ustar GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. jclic-0.2.1.0.orig/extensions/0000755000175000017500000000000011377161311013013 5ustar jclic-0.2.1.0.orig/extensions/xml/0000755000175000017500000000000011377161311013613 5ustar jclic-0.2.1.0.orig/extensions/xml/customJdom-1.0/0000755000175000017500000000000011377161311016233 5ustar jclic-0.2.1.0.orig/extensions/xml/customJdom-1.0/src/0000755000175000017500000000000011377161311017022 5ustar jclic-0.2.1.0.orig/extensions/xml/customJdom-1.0/src/org/0000755000175000017500000000000011377161311017611 5ustar jclic-0.2.1.0.orig/extensions/xml/customJdom-1.0/src/org/jdom/0000755000175000017500000000000011377161311020542 5ustar jclic-0.2.1.0.orig/extensions/xml/customJdom-1.0/src/org/jdom/output/0000755000175000017500000000000011377161311022102 5ustar jclic-0.2.1.0.orig/extensions/xml/customJdom-1.0/src/org/jdom/output/SpecialXMLOutputter.java0000644000175000017500000000102511377161311026640 0ustar package org.jdom.output; import java.io.*; import java.util.*; import org.jdom.*; import org.jdom.output.*; public class SpecialXMLOutputter extends XMLOutputter { public SpecialXMLOutputter(String indent, boolean newlines, String encoding){ //super(indent, newlines, encoding); super(); Format format=Format.getPrettyFormat(); if(indent!=null) format.setIndent(indent); if(encoding!=null) format.setEncoding(encoding); setFormat(format); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/0000755000175000017500000000000011377161311015040 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/LICENSE.txt0000644000175000017500000000501111377161311016660 0ustar /*-- $Id: LICENSE.txt,v 1.1.1.1 2005/12/02 14:16:45 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/info.xml0000644000175000017500000000527311377161311016524 0ustar JDOM 1.0, built September 9 2004 JDOM is a Java-oriented object model which models XML documents. It provides a Java-centric means of generating and manipulating XML documents. While JDOM interoperates well with existing standards such as the Simple API for XML (SAX) and the Document Object Model (DOM), it is not an abstraction layer or enhancement to those APIs. Rather, it seeks to provide a robust, light-weight means of reading and writing XML data without the complex and memory-consumptive options that current API offerings provide. 2000-2004, Jason Hunter BSD/Apache style, see LICENSE.txt See the jdom-interest mailing list at jdom.org http://www.jdom.org/ Jason Hunter (primary) Brett McLaughlin (primary) Steven Gould Alex Chaffee Jon Baer Elliotte Rusty Harold Dan Schaffer Fred Trimble Jason Reid Kevin Regan Lucas Gonze Matthew Merlo Philip Nelson Wesley Biggs Wolfgang Werner Yusuf Goolamabbas Brad Huffman jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/MANIFEST.MF0000644000175000017500000000314311377161311016473 0ustar Manifest-Version: 1.0 Ant-Version: Apache Ant 1.5.2 Created-By: 1.2.2 (Sun Microsystems Inc.) Name: org/jdom/ Specification-Title: JDOM Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom Implementation-Version: 1.0 Implementation-Vendor: jdom.org Name: org/jdom/input/ Specification-Title: JDOM Input Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom.input Implementation-Version: 1.0 Implementation-Vendor: jdom.org Name: org/jdom/output/ Specification-Title: JDOM Output Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom.output Implementation-Version: 1.0 Implementation-Vendor: jdom.org Name: org/jdom/adapters/ Specification-Title: JDOM Adapter Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom.adapters Implementation-Version: 1.0 Implementation-Vendor: jdom.org Name: org/jdom/filter/ Specification-Title: JDOM Filter Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom.filter Implementation-Version: 1.0 Implementation-Vendor: jdom.org Name: org/jdom/transform/ Specification-Title: JDOM Transformation Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom.transform Implementation-Version: 1.0 Implementation-Vendor: jdom.org Name: org/jdom/xpath/ Specification-Title: JDOM XPath Classes Specification-Version: 1.0 Specification-Vendor: jdom.org Implementation-Title: org.jdom.xpath Implementation-Version: 1.0 Implementation-Vendor: jdom.org jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/0000755000175000017500000000000011377161311015627 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/0000755000175000017500000000000011377161311016416 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/0000755000175000017500000000000011377161311017347 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/transform/0000755000175000017500000000000011377161311021362 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/transform/XSLTransformException.java0000644000175000017500000000627611377161311026461 0ustar /*-- $Id: XSLTransformException.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2003-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.transform; import org.jdom.JDOMException; /** * Thrown when an XSL stylesheet fails to compile or an XSL transform fails * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Jason Hunter */ public class XSLTransformException extends JDOMException { private static final String CVS_ID = "@(#) $RCSfile: XSLTransformException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; public XSLTransformException() { } public XSLTransformException(String message) { super(message); } public XSLTransformException(String message, Exception cause) { super(message, cause); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/transform/JDOMSource.java0000644000175000017500000003737111377161311024152 0ustar /*-- $Id: JDOMSource.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2001-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.transform; import java.io.*; import java.util.*; import javax.xml.transform.sax.*; import org.jdom.*; import org.jdom.output.*; import org.xml.sax.*; /** * A holder for an XML Transformation source: a Document, Element, or list of * nodes. *

* The is provides input to a * {@link javax.xml.transform.Transformer JAXP TrAX Transformer}. *

* The following example shows how to apply an XSL Transformation * to a JDOM document and get the transformation result in the form * of a list of JDOM nodes: *


 *   public static List transform(Document doc, String stylesheet)
 *                                        throws JDOMException {
 *     try {
 *       Transformer transformer = TransformerFactory.newInstance()
 *                             .newTransformer(new StreamSource(stylesheet));
 *       JDOMSource in = new JDOMSource(doc);
 *       JDOMResult out = new JDOMResult();
 *       transformer.transform(in, out);
 *       return out.getResult();
 *     }
 *     catch (TransformerException e) {
 *       throw new JDOMException("XSLT Transformation failed", e);
 *     }
 *   }
 * 
* * @see org.jdom.transform.JDOMResult * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Laurent Bihanic * @author Jason Hunter */ public class JDOMSource extends SAXSource { private static final String CVS_ID = "@(#) $RCSfile: JDOMSource.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; /** * If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an * argument, the Transformer natively supports JDOM. *

* Note: This implementation does not override * the {@link SAXSource#FEATURE} value defined by its superclass * to be considered as a SAXSource by Transformer implementations * not natively supporting JDOM. *

*/ public final static String JDOM_FEATURE = "http://org.jdom.transform.JDOMSource/feature"; /** * The XMLReader object associated to this source or * null if no XMLReader has yet been requested. * * @see #getXMLReader */ private XMLReader xmlReader = null; /** * Creates a JDOM TrAX source wrapping a JDOM document. * * @param source the JDOM document to use as source for the * transformations * * @throws IllegalArgumentException if source is * null. */ public JDOMSource(Document source) { setDocument(source); } /** * Creates a JDOM TrAX source wrapping a list of JDOM nodes. * * @param source the JDOM nodes to use as source for the * transformations * * @throws IllegalArgumentException if source is * null. */ public JDOMSource(List source) { setNodes(source); } /** * Creates a JDOM TrAX source wrapping a JDOM element. * * @param source the JDOM element to use as source for the * transformations * * @throws IllegalArgumentException if source is * null. */ public JDOMSource(Element source) { List nodes = new ArrayList(); nodes.add(source); setNodes(nodes); } /** * Sets the source document used by this TrAX source. * * @param source the JDOM document to use as source for the * transformations * * @throws IllegalArgumentException if source is * null. * * @see #getDocument */ public void setDocument(Document source) { super.setInputSource(new JDOMInputSource(source)); } /** * Returns the source document used by this TrAX source. * * @return the source document used by this TrAX source or * null if the source is a node list. * * @see #setDocument */ public Document getDocument() { Object src = ((JDOMInputSource)getInputSource()).getSource(); Document doc = null; if (src instanceof Document) { doc = (Document)src; } return doc; } /** * Sets the source node list used by this TrAX source. * * @param source the JDOM nodes to use as source for the * transformations * * @throws IllegalArgumentException if source is * null. * * @see #getNodes */ public void setNodes(List source) { super.setInputSource(new JDOMInputSource(source)); } /** * Returns the source node list used by this TrAX source. * * @return the source node list used by this TrAX source or * null if the source is a JDOM document. * * @see #setDocument */ public List getNodes() { Object src = ((JDOMInputSource)getInputSource()).getSource(); List nodes = null; if (src instanceof List) { nodes = (List)src; } return nodes; } //------------------------------------------------------------------------- // SAXSource overwritten methods //------------------------------------------------------------------------- /** * Sets the SAX InputSource to be used for the Source. *

* As this implementation only supports JDOM document as data * source, this method always throws an * {@link UnsupportedOperationException}. *

* * @param inputSource a valid InputSource reference. * * @throws UnsupportedOperationException always! */ public void setInputSource(InputSource inputSource) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } /** * Set the XMLReader to be used for the Source. *

* As this implementation only supports JDOM document as data * source, this method throws an * {@link UnsupportedOperationException} if the provided reader * object does not implement the SAX {@link XMLFilter} * interface. Otherwise, the JDOM document reader will be * attached as parent of the filter chain.

* * @param reader a valid XMLReader or XMLFilter reference. * * @throws UnsupportedOperationException if reader * is not a SAX * {@link XMLFilter}. * @see #getXMLReader */ public void setXMLReader(XMLReader reader) throws UnsupportedOperationException { if (reader instanceof XMLFilter) { // Connect the filter chain to a document reader. XMLFilter filter = (XMLFilter)reader; while (filter.getParent() instanceof XMLFilter) { filter = (XMLFilter)(filter.getParent()); } filter.setParent(new DocumentReader()); // Read XML data from filter chain. this.xmlReader = reader; } else { throw new UnsupportedOperationException(); } } /** * Returns the XMLReader to be used for the Source. *

* This implementation returns a specific XMLReader reading * the XML data from the source JDOM document. *

* * @return an XMLReader reading the XML data from the source * JDOM document. */ public XMLReader getXMLReader() { if (this.xmlReader == null) { this.xmlReader = new DocumentReader(); } return this.xmlReader; } //========================================================================= // JDOMInputSource nested class //========================================================================= /** * A subclass of the SAX InputSource interface that wraps a JDOM * Document. *

* This class is nested in JDOMSource as it is not intented to * be used independently of its friend: DocumentReader. *

* * @see org.jdom.Document */ private static class JDOMInputSource extends InputSource { /** * The source as a JDOM document or a list of JDOM nodes. */ private Object source = null; /** * Builds a InputSource wrapping the specified JDOM Document. * * @param document the source document. */ public JDOMInputSource(Document document) { this.source = document; } /** * Builds a InputSource wrapping a list of JDOM nodes. * * @param nodes the source JDOM nodes. */ public JDOMInputSource(List nodes) { this.source = nodes; } /** * Returns the source. * * @return the source as a JDOM document or a list of JDOM nodes. */ public Object getSource() { return source; } //------------------------------------------------------------------------- // InputSource overwritten methods //------------------------------------------------------------------------- /** * Sets the character stream for this input source. *

* This implementation always throws an * {@link UnsupportedOperationException} as the only source * stream supported is the source JDOM document. *

* * @param characterStream a character stream containing * an XML document. * * @throws UnsupportedOperationException always! */ public void setCharacterStream(Reader characterStream) throws UnsupportedOperationException { throw new UnsupportedOperationException(); } /** * Gets the character stream for this input source. *

* Note that this method is only provided to make this * InputSource implementation acceptable by any XML * parser. As it generates an in-memory string representation * of the JDOM document, it is quite inefficient from both * speed and memory consumption points of view. *

* * @return a Reader to a string representation of the * source JDOM document. */ public Reader getCharacterStream() { Object src = this.getSource(); Reader reader = null; if (src instanceof Document) { // Get an in-memory string representation of the document // and return a reader on it. reader = new StringReader( new XMLOutputter().outputString((Document)src)); } else { if (src instanceof List) { reader = new StringReader( new XMLOutputter().outputString((List)src)); } // Else: No source, no reader! } return reader; } } //========================================================================= // DocumentReader nested class //========================================================================= /** * An implementation of the SAX2 XMLReader interface that presents * a SAX view of a JDOM Document. The actual generation of the * SAX events is delegated to JDOM's SAXOutputter. * * @see org.jdom.Document * @see org.jdom.output.SAXOutputter */ private static class DocumentReader extends SAXOutputter implements XMLReader { /** * Public default constructor. */ public DocumentReader() { super(); } //---------------------------------------------------------------------- // SAX XMLReader interface support //---------------------------------------------------------------------- /** * Parses an XML document from a system identifier (URI). *

* This implementation does not support reading XML data from * system identifiers, only from JDOM documents. Hence, * this method always throws a {@link SAXNotSupportedException}. *

* * @param systemId the system identifier (URI). * * @throws SAXNotSupportedException always! */ public void parse(String systemId) throws SAXNotSupportedException { throw new SAXNotSupportedException( "Only JDOM Documents are supported as input"); } /** * Parses an XML document. *

* The methods accepts only JDOMInputSources * instances as input sources. *

* * @param input the input source for the top-level of the * XML document. * * @throws SAXException any SAX exception, * possibly wrapping * another exception. * @throws SAXNotSupportedException if the input source does * not wrap a JDOM document. */ public void parse(InputSource input) throws SAXException { if (input instanceof JDOMInputSource) { try { Object source = ((JDOMInputSource)input).getSource(); if (source instanceof Document) { this.output((Document)source); } else { this.output((List)source); } } catch (JDOMException e) { throw new SAXException(e.getMessage(), e); } } else { throw new SAXNotSupportedException( "Only JDOM Documents are supported as input"); } } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/transform/XSLTransformer.java0000644000175000017500000002323611377161311025124 0ustar /*-- $Id: XSLTransformer.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2001-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.transform; import java.util.*; import java.io.*; import javax.xml.transform.*; import javax.xml.transform.stream.StreamSource; import org.jdom.*; /** * A convenience class to handle simple transformations. The JAXP TrAX classes * have more bells and whistles and can be used with {@link JDOMSource} and * {@link JDOMResult} for advanced uses. This class handles the common case and * presents a simple interface. XSLTransformer is thread safe and may be * used from multiple threads. * *

 * XSLTransformer transformer = new XSLTransformer("file.xsl");
 *
 * Document x2 = transformer.transform(x);  // x is a Document
 * Document y2 = transformer.transform(y);  // y is a Document
 * 
* * JDOM relies on TrAX to perform the transformation. * The javax.xml.transform.TransformerFactory Java system property * determines which XSLT engine TrAX uses. Its value should be * the fully qualified name of the implementation of the abstract * javax.xml.transform.TransformerFactory class. * Values of this property for popular XSLT processors include: *

*
  • Saxon 6.x: com.icl.saxon.TransformerFactoryImpl
  • *
  • Saxon 7.x: net.sf.saxon.TransformerFactoryImpl
  • *
  • Xalan: org.apache.xalan.processor.TransformerFactoryImpl
  • *
  • jd.xslt: jd.xml.xslt.trax.TransformerFactoryImpl
  • *
  • Oracle: oracle.xml.jaxp.JXSAXTransformerFactory
  • *
*

* This property can be set in all the usual ways a Java system property * can be set. TrAX picks from them in this order:

*
    *
  1. Invoking System.setProperty( "javax.xml.transform.TransformerFactory", * "classname")
  2. *
  3. The value specified at the command line using the * -Djavax.xml.transform.TransformerFactory=classname * option to the java interpreter
  4. *
  5. The class named in the lib/jaxp.properties properties file * in the JRE directory, in a line like this one: *
    javax.xml.parsers.DocumentBuilderFactory=classname
  6. *
  7. The class named in the * META-INF/services/javax.xml.transform.TransformerFactory file * in the JAR archives available to the runtime
  8. *
  9. Finally, if all of the above options fail, * a default implementation is chosen. In Sun's JDK 1.4, this is * Xalan 2.2d10.
  10. *
* @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Jason Hunter * @author Elliotte Rusty Harold */ public class XSLTransformer { private static final String CVS_ID = "@(#) $RCSfile: XSLTransformer.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; private Templates templates; // Internal constructor to support the other constructors private XSLTransformer(Source stylesheet) throws XSLTransformException { try { templates = TransformerFactory.newInstance() .newTemplates(stylesheet); } catch (TransformerException e) { throw new XSLTransformException("Could not construct XSLTransformer", e); } } /** * Creates a transformer for a given stylesheet system id. * * @param stylesheetSystemId source stylesheet as a Source object * @throws XSLTransformException if there's a problem in the TrAX back-end */ public XSLTransformer(String stylesheetSystemId) throws XSLTransformException { this(new StreamSource(stylesheetSystemId)); } /** *

* This will create a new XSLTransformer by * reading the stylesheet from the specified * InputStream. *

* * @param stylesheet InputStream from which the stylesheet is read. * @throws XSLTransformException when an IOException, format error, or * something else prevents the stylesheet from being compiled */ public XSLTransformer(InputStream stylesheet) throws XSLTransformException { this(new StreamSource(stylesheet)); } /** *

* This will create a new XSLTransformer by * reading the stylesheet from the specified * Reader. *

* * @param stylesheet Reader from which the stylesheet is read. * @throws XSLTransformException when an IOException, format error, or * something else prevents the stylesheet from being compiled */ public XSLTransformer(Reader stylesheet) throws XSLTransformException { this(new StreamSource(stylesheet)); } /** *

* This will create a new XSLTransformer by * reading the stylesheet from the specified * File. *

* * @param stylesheet File from which the stylesheet is read. * @throws XSLTransformException when an IOException, format error, or * something else prevents the stylesheet from being compiled */ public XSLTransformer(File stylesheet) throws XSLTransformException { this(new StreamSource(stylesheet)); } /** *

* This will create a new XSLTransformer by * reading the stylesheet from the specified * Document. *

* * @param stylesheet Document containing the stylesheet. * @throws XSLTransformException when the supplied Document * is not syntactically correct XSLT */ public XSLTransformer(Document stylesheet) throws XSLTransformException { this(new JDOMSource(stylesheet)); } /** * Transforms the given input nodes to a list of output nodes. * * @param inputNodes input nodes * @return transformed output nodes * @throws XSLTransformException if there's a problem in the transformation */ public List transform(List inputNodes) throws XSLTransformException { JDOMSource source = new JDOMSource(inputNodes); JDOMResult result = new JDOMResult(); try { templates.newTransformer().transform(source, result); return result.getResult(); } catch (TransformerException e) { throw new XSLTransformException("Could not perform transformation", e); } } /** * Transforms the given document to an output document. * * @param inputDoc input document * @return transformed output document * @throws XSLTransformException if there's a problem in the transformation */ public Document transform(Document inputDoc) throws XSLTransformException { JDOMSource source = new JDOMSource(inputDoc); JDOMResult result = new JDOMResult(); try { templates.newTransformer().transform(source, result); return result.getDocument(); } catch (TransformerException e) { throw new XSLTransformException("Could not perform transformation", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/transform/JDOMResult.java0000644000175000017500000005463311377161311024170 0ustar /*-- $Id: JDOMResult.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2001-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.transform; import java.util.*; import javax.xml.transform.sax.*; import org.jdom.*; import org.jdom.input.*; import org.xml.sax.*; import org.xml.sax.ext.*; import org.xml.sax.helpers.*; /** * A holder for an XSL Transformation result, generally a list of nodes * although it can be a JDOM Document also. As stated by the XSLT 1.0 * specification, the result tree generated by an XSL transformation is not * required to be a well-formed XML document. The result tree may have "any * sequence of nodes as children that would be possible for an * element node". *

* The following example shows how to apply an XSL Transformation * to a JDOM document and get the transformation result in the form * of a list of JDOM nodes: *


 *   public static List transform(Document doc, String stylesheet)
 *                                        throws JDOMException {
 *     try {
 *       Transformer transformer = TransformerFactory.newInstance()
 *                             .newTransformer(new StreamSource(stylesheet));
 *       JDOMSource in = new JDOMSource(doc);
 *       JDOMResult out = new JDOMResult();
 *       transformer.transform(in, out);
 *       return out.getResult();
 *     }
 *     catch (TransformerException e) {
 *       throw new JDOMException("XSLT Transformation failed", e);
 *     }
 *   }
 * 
* * @see org.jdom.transform.JDOMSource * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Laurent Bihanic * @author Jason Hunter */ public class JDOMResult extends SAXResult { private static final String CVS_ID = "@(#) $RCSfile: JDOMResult.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; /** * If {@link javax.xml.transform.TransformerFactory#getFeature} * returns true when passed this value as an * argument, the Transformer natively supports JDOM. *

* Note: This implementation does not override * the {@link SAXResult#FEATURE} value defined by its superclass * to be considered as a SAXResult by Transformer implementations * not natively supporting JDOM.

*/ public final static String JDOM_FEATURE = "http://org.jdom.transform.JDOMResult/feature"; /** * The result of a transformation, as set by Transformer * implementations that natively support JDOM, as a JDOM document * or a list of JDOM nodes. */ private Object result = null; /** * Whether the application queried the result (as a list or a * document) since it was last set. */ private boolean queried = false; /** * The custom JDOM factory to use when building the transformation * result or null to use the default JDOM classes. */ private JDOMFactory factory = null; /** * Public default constructor. */ public JDOMResult() { // Allocate custom builder object... DocumentBuilder builder = new DocumentBuilder(); // And use it as ContentHandler and LexicalHandler. super.setHandler(builder); super.setLexicalHandler(builder); } /** * Sets the object(s) produced as result of an XSL Transformation. *

* Note: This method shall be used by the * {@link javax.xml.transform.Transformer} implementations that * natively support JDOM to directly set the transformation * result rather than considering this object as a * {@link SAXResult}. Applications should not use this * method.

* * @param result the result of a transformation as a * {@link java.util.List list} of JDOM nodes * (Elements, Texts, Comments, PIs...). * * @see #getResult */ public void setResult(List result) { this.result = result; this.queried = false; } /** * Returns the result of an XSL Transformation as a list of JDOM * nodes. *

* If the result of the transformation is a JDOM document, * this method converts it into a list of JDOM nodes; any * subsequent call to {@link #getDocument} will return * null.

* * @return the transformation result as a (possibly empty) list of * JDOM nodes (Elements, Texts, Comments, PIs...). */ public List getResult() { List nodes = Collections.EMPTY_LIST; // Retrieve result from the document builder if not set. this.retrieveResult(); if (result instanceof List) { nodes = (List)result; } else { if ((result instanceof Document) && (queried == false)) { List content = ((Document)result).getContent(); nodes = new ArrayList(content.size()); while (content.size() != 0) { Object o = content.remove(0); nodes.add(o); } result = nodes; } } queried = true; return (nodes); } /** * Sets the document produced as result of an XSL Transformation. *

* Note: This method shall be used by the * {@link javax.xml.transform.Transformer} implementations that * natively support JDOM to directly set the transformation * result rather than considering this object as a * {@link SAXResult}. Applications should not use this * method.

* * @param document the JDOM document result of a transformation. * * @see #setResult * @see #getDocument */ public void setDocument(Document document) { this.result = document; this.queried = false; } /** * Returns the result of an XSL Transformation as a JDOM document. *

* If the result of the transformation is a list of nodes, * this method attempts to convert it into a JDOM document. If * successful, any subsequent call to {@link #getResult} will * return an empty list.

*

* Warning: The XSLT 1.0 specification states that * the output of an XSL transformation is not a well-formed XML * document but a list of nodes. Applications should thus use * {@link #getResult} instead of this method or at least expect * null documents to be returned. * * @return the transformation result as a JDOM document or * null if the result of the transformation * can not be converted into a well-formed document. * * @see #getResult */ public Document getDocument() { Document doc = null; // Retrieve result from the document builder if not set. this.retrieveResult(); if (result instanceof Document) { doc = (Document)result; } else { if ((result instanceof List) && (queried == false)) { // Try to create a document from the result nodes try { JDOMFactory f = this.getFactory(); if (f == null) { f = new DefaultJDOMFactory(); } doc = f.document(null); doc.setContent((List)result); result = doc; } catch (RuntimeException ex1) { // Some of the result nodes are not valid children of a // Document node. => return null. } } } queried = true; return (doc); } /** * Sets a custom JDOMFactory to use when building the * transformation result. Use a custom factory to build the tree * with your own subclasses of the JDOM classes. * * @param factory the custom JDOMFactory to use or * null to use the default JDOM * classes. * * @see #getFactory */ public void setFactory(JDOMFactory factory) { this.factory = factory; } /** * Returns the custom JDOMFactory used to build the transformation * result. * * @return the custom JDOMFactory used to build the * transformation result or null if the * default JDOM classes are being used. * * @see #setFactory */ public JDOMFactory getFactory() { return this.factory; } /** * Checks whether a transformation result has been set and, if not, * retrieves the result tree being built by the document builder. */ private void retrieveResult() { if (result == null) { this.setResult(((DocumentBuilder)this.getHandler()).getResult()); } } //------------------------------------------------------------------------- // SAXResult overwritten methods //------------------------------------------------------------------------- /** * Sets the target to be a SAX2 ContentHandler. * * @param handler Must be a non-null ContentHandler reference. */ public void setHandler(ContentHandler handler) { } /** * Sets the SAX2 LexicalHandler for the output. *

* This is needed to handle XML comments and the like. If the * lexical handler is not set, an attempt should be made by the * transformer to cast the ContentHandler to a LexicalHandler.

* * @param handler A non-null LexicalHandler for * handling lexical parse events. */ public void setLexicalHandler(LexicalHandler handler) { } //========================================================================= // FragmentHandler nested class //========================================================================= private static class FragmentHandler extends SAXHandler { /** * A dummy root element required by SAXHandler that can only * cope with well-formed documents. */ private Element dummyRoot = new Element("root", null, null); /** * Public constructor. */ public FragmentHandler(JDOMFactory factory) { super(factory); // Add a dummy root element to the being-built document as XSL // transformation can output node lists instead of well-formed // documents. this.pushElement(dummyRoot); } /** * Returns the result of an XSL Transformation. * * @return the transformation result as a (possibly empty) list of * JDOM nodes (Elements, Texts, Comments, PIs...). */ public List getResult() { // Flush remaining text content in case the last text segment is // outside an element. try { this.flushCharacters(); } catch (SAXException e) { /* Ignore... */ } return this.getDetachedContent(dummyRoot); } /** * Returns the content of a JDOM Element detached from it. * * @param elt the element to get the content from. * * @return a (possibly empty) list of JDOM nodes, detached from * their parent. */ private List getDetachedContent(Element elt) { List content = elt.getContent(); List nodes = new ArrayList(content.size()); while (content.size() != 0) { Object o = content.remove(0); nodes.add(o); } return (nodes); } } //========================================================================= // DocumentBuilder inner class //========================================================================= private class DocumentBuilder extends XMLFilterImpl implements LexicalHandler { /** * The actual JDOM document builder. */ private FragmentHandler saxHandler = null; /** * Whether the startDocument event was received. Some XSLT * processors such as Oracle's do not fire this event. */ private boolean startDocumentReceived = false; /** * Public default constructor. */ public DocumentBuilder() { } /** * Returns the result of an XSL Transformation. * * @return the transformation result as a (possibly empty) list of * JDOM nodes (Elements, Texts, Comments, PIs...) or * null if no new transformation occurred * since the result of the previous one was returned. */ public List getResult() { List result = null; if (this.saxHandler != null) { // Retrieve result from SAX content handler. result = this.saxHandler.getResult(); // Detach the (non-reusable) SAXHandler instance. this.saxHandler = null; // And get ready for the next transformation. this.startDocumentReceived = false; } return result; } private void ensureInitialization() throws SAXException { // Trigger document initialization if XSLT processor failed to // fire the startDocument event. if (this.startDocumentReceived == false) { this.startDocument(); } } //----------------------------------------------------------------------- // XMLFilterImpl overwritten methods //----------------------------------------------------------------------- /** * [SAX ContentHandler interface support] Processes a * start of document event. *

* This implementation creates a new JDOM document builder and * marks the current result as "under construction".

* * @throws SAXException if any error occurred while creating * the document builder. */ public void startDocument() throws SAXException { this.startDocumentReceived = true; // Reset any previously set result. setResult(null); // Create the actual JDOM document builder and register it as // ContentHandler on the superclass (XMLFilterImpl): this // implementation will take care of propagating the LexicalHandler // events. this.saxHandler = new FragmentHandler(getFactory()); super.setContentHandler(this.saxHandler); // And propagate event. super.startDocument(); } /** * [SAX ContentHandler interface support] Receives * notification of the beginning of an element. *

* This implementation ensures that startDocument() has been * called prior processing an element. * * @param nsURI the Namespace URI, or the empty string if * the element has no Namespace URI or if * Namespace processing is not being performed. * @param localName the local name (without prefix), or the * empty string if Namespace processing is * not being performed. * @param qName the qualified name (with prefix), or the * empty string if qualified names are not * available. * @param atts The attributes attached to the element. If * there are no attributes, it shall be an * empty Attributes object. * * @throws SAXException if any error occurred while creating * the document builder. */ public void startElement(String nsURI, String localName, String qName, Attributes atts) throws SAXException { this.ensureInitialization(); super.startElement(nsURI, localName, qName, atts); } /** * [SAX ContentHandler interface support] Begins the * scope of a prefix-URI Namespace mapping. */ public void startPrefixMapping(String prefix, String uri) throws SAXException { this.ensureInitialization(); super.startPrefixMapping(prefix, uri); } /** * [SAX ContentHandler interface support] Receives * notification of character data. */ public void characters(char ch[], int start, int length) throws SAXException { this.ensureInitialization(); super.characters(ch, start, length); } /** * [SAX ContentHandler interface support] Receives * notification of ignorable whitespace in element content. */ public void ignorableWhitespace(char ch[], int start, int length) throws SAXException { this.ensureInitialization(); super.ignorableWhitespace(ch, start, length); } /** * [SAX ContentHandler interface support] Receives * notification of a processing instruction. */ public void processingInstruction(String target, String data) throws SAXException { this.ensureInitialization(); super.processingInstruction(target, data); } /** * [SAX ContentHandler interface support] Receives * notification of a skipped entity. */ public void skippedEntity(String name) throws SAXException { this.ensureInitialization(); super.skippedEntity(name); } //----------------------------------------------------------------------- // LexicalHandler interface support //----------------------------------------------------------------------- /** * [SAX LexicalHandler interface support] Reports the * start of DTD declarations, if any. * * @param name the document type name. * @param publicId the declared public identifier for the * external DTD subset, or null * if none was declared. * @param systemId the declared system identifier for the * external DTD subset, or null * if none was declared. * * @throws SAXException The application may raise an exception. */ public void startDTD(String name, String publicId, String systemId) throws SAXException { this.ensureInitialization(); this.saxHandler.startDTD(name, publicId, systemId); } /** * [SAX LexicalHandler interface support] Reports the end * of DTD declarations. * * @throws SAXException The application may raise an exception. */ public void endDTD() throws SAXException { this.saxHandler.endDTD(); } /** * [SAX LexicalHandler interface support] Reports the * beginning of some internal and external XML entities. * * @param name the name of the entity. If it is a parameter * entity, the name will begin with '%', and if it * is the external DTD subset, it will be "[dtd]". * * @throws SAXException The application may raise an exception. */ public void startEntity(String name) throws SAXException { this.ensureInitialization(); this.saxHandler.startEntity(name); } /** * [SAX LexicalHandler interface support] Reports the end * of an entity. * * @param name the name of the entity that is ending. * * @throws SAXException The application may raise an exception. */ public void endEntity(String name) throws SAXException { this.saxHandler.endEntity(name); } /** * [SAX LexicalHandler interface support] Reports the * start of a CDATA section. * * @throws SAXException The application may raise an exception. */ public void startCDATA() throws SAXException { this.ensureInitialization(); this.saxHandler.startCDATA(); } /** * [SAX LexicalHandler interface support] Reports the end * of a CDATA section. * * @throws SAXException The application may raise an exception. */ public void endCDATA() throws SAXException { this.saxHandler.endCDATA(); } /** * [SAX LexicalHandler interface support] Reports an XML * comment anywhere in the document. * * @param ch an array holding the characters in the comment. * @param start the starting position in the array. * @param length the number of characters to use from the array. * * @throws SAXException The application may raise an exception. */ public void comment(char ch[], int start, int length) throws SAXException { this.ensureInitialization(); this.saxHandler.comment(ch, start, length); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Namespace.java0000644000175000017500000002520111377161311022106 0ustar /*-- $Id: Namespace.java,v 1.1.1.1 2005/12/02 14:16:45 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; /** * An XML namespace representation, as well as a factory for creating XML * namespace objects. Namespaces are not Serializable, however objects that use * namespaces have special logic to handle serialization manually. These classes * call the getNamespace() method on deserialization to ensure there is one * unique Namespace object for any unique prefix/uri pair. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:45 $ * @author Brett McLaughlin * @author Elliotte Rusty Harold * @author Jason Hunter * @author Wesley Biggs */ public final class Namespace { // XXX May want to use weak references to keep the maps from growing // large with extended use // XXX We may need to make the namespaces HashMap synchronized with // reader/writer locks or perhaps make Namespace no longer a flyweight. // As written, multiple put() calls may happen from different threads // concurrently and cause a ConcurrentModificationException. See // http://lists.denveronline.net/lists/jdom-interest/2000-September/003009.html. // No one has ever reported this over the many years, so don't worry yet. private static final String CVS_ID = "@(#) $RCSfile: Namespace.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:45 $ $Name: $"; /** * Factory list of namespaces. * Keys are prefix&URI. * Values are Namespace objects */ private static HashMap namespaces; /** Define a Namespace for when not in a namespace */ public static final Namespace NO_NAMESPACE = new Namespace("", ""); /** Define a Namespace for the standard xml prefix. */ public static final Namespace XML_NAMESPACE = new Namespace("xml", "http://www.w3.org/XML/1998/namespace"); /** The prefix mapped to this namespace */ private String prefix; /** The URI for this namespace */ private String uri; /** * This static initializer acts as a factory contructor. * It sets up storage and required initial values. */ static { namespaces = new HashMap(); // Add the "empty" namespace namespaces.put("&", NO_NAMESPACE); namespaces.put("xml&http://www.w3.org/XML/1998/namespace", XML_NAMESPACE); } /** * This will retrieve (if in existence) or create (if not) a * Namespace for the supplied prefix and URI. * * @param prefix String prefix to map to * Namespace. * @param uri String URI of new Namespace. * @return Namespace - ready to use namespace. * @throws IllegalNameException if the given prefix and uri make up * an illegal namespace name. */ public static Namespace getNamespace(String prefix, String uri) { // Sanity checking if ((prefix == null) || (prefix.trim().equals(""))) { prefix = ""; } if ((uri == null) || (uri.trim().equals(""))) { uri = ""; } // Return existing namespace if found. The preexisting namespaces // should all be legal. In other words, an illegal namespace won't // have been placed in this. Thus we can do this test before // verifying the URI and prefix. String lookup = new StringBuffer(64) .append(prefix).append('&').append(uri) // JCLIC modification //.toString(); .substring(0); Namespace preexisting = (Namespace) namespaces.get(lookup); if (preexisting != null) { return preexisting; } // Ensure proper naming String reason; if ((reason = Verifier.checkNamespacePrefix(prefix)) != null) { throw new IllegalNameException(prefix, "Namespace prefix", reason); } if ((reason = Verifier.checkNamespaceURI(uri)) != null) { throw new IllegalNameException(uri, "Namespace URI", reason); } // Unless the "empty" Namespace (no prefix and no URI), require a URI if ((!prefix.equals("")) && (uri.equals(""))) { throw new IllegalNameException("", "namespace", "Namespace URIs must be non-null and non-empty Strings"); } // Handle XML namespace mislabels. If the user requested the correct // namespace and prefix -- xml, http://www.w3.org/XML/1998/namespace // -- then it was already returned from the preexisting namespaces. // Thus any use of the xml prefix or the // http://www.w3.org/XML/1998/namespace URI at this point must be // incorrect. if (prefix.equals("xml")) { throw new IllegalNameException(prefix, "Namespace prefix", "The xml prefix can only be bound to " + "http://www.w3.org/XML/1998/namespace"); } // The erratum to Namespaces in XML 1.0 that suggests this // next check is controversial. Not everyone accepts it. if (uri.equals("http://www.w3.org/XML/1998/namespace")) { throw new IllegalNameException(uri, "Namespace URI", "The http://www.w3.org/XML/1998/namespace must be bound to " + "the xml prefix."); } // Finally, store and return Namespace ns = new Namespace(prefix, uri); namespaces.put(lookup, ns); return ns; } /** * This will retrieve (if in existence) or create (if not) a * Namespace for the supplied URI, and make it usable * as a default namespace, as no prefix is supplied. * * @param uri String URI of new Namespace. * @return Namespace - ready to use namespace. */ public static Namespace getNamespace(String uri) { return getNamespace("", uri); } /** * This constructor handles creation of a Namespace object * with a prefix and URI; it is intentionally left private * so that it cannot be invoked by external programs/code. * * @param prefix String prefix to map to this namespace. * @param uri String URI for namespace. */ private Namespace(String prefix, String uri) { this.prefix = prefix; this.uri = uri; } /** * This returns the prefix mapped to this Namespace. * * @return String - prefix for this Namespace. */ public String getPrefix() { return prefix; } /** * This returns the namespace URI for this Namespace. * * @return String - URI for this Namespace. */ public String getURI() { return uri; } /** * This tests for equality - Two Namespaces * are equal if and only if their URIs are byte-for-byte equals. * * @param ob Object to compare to this Namespace. * @return boolean - whether the supplied object is equal to * this Namespace. */ public boolean equals(Object ob) { if (this == ob) { return true; } if (ob instanceof Namespace) { // instanceof returns false if null return uri.equals(((Namespace)ob).uri); } return false; } /** * This returns a String representation of this * Namespace, suitable for use in debugging. * * @return String - information about this instance. */ public String toString() { return "[Namespace: prefix \"" + prefix + "\" is mapped to URI \"" + uri + "\"]"; } /** * This returns a probably unique hash code for the Namespace. * If two namespaces have the same URI, they are equal and have the same * hash code, even if they have different prefixes. * * @return int - hash code for this Namespace. */ public int hashCode() { return uri.hashCode(); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/ContentList.java0000644000175000017500000010506711377161311022471 0ustar /*-- $Id: ContentList.java,v 1.1.1.1 2005/12/02 14:16:48 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; import org.jdom.filter.*; /** * A non-public list implementation holding only legal JDOM content, including * content for Document or Element nodes. Users see this class as a simple List * implementation. * * @see CDATA * @see Comment * @see Element * @see EntityRef * @see ProcessingInstruction * @see Text * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:48 $ * @author Alex Rosen * @author Philippe Riand * @author Bradley S. Huffman */ final class ContentList extends AbstractList implements java.io.Serializable { private static final String CVS_ID = "@(#) $RCSfile: ContentList.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:48 $ $Name: $"; private static final int INITIAL_ARRAY_SIZE = 5; /** * Used inner class FilterListIterator to help hasNext and * hasPrevious the next index of our cursor (must be here * for JDK1.1). */ private static final int CREATE = 0; private static final int HASPREV = 1; private static final int HASNEXT = 2; private static final int PREV = 3; private static final int NEXT = 4; private static final int ADD = 5; private static final int REMOVE = 6; /** Our backing list */ // protected ArrayList list; private Content elementData[]; private int size; /** Document or Element this list belongs to */ private Parent parent; /** Force either a Document or Element parent */ ContentList(Parent parent) { this.parent = parent; } /** * Package internal method to support building from sources that are * 100% trusted. * * @param c content to add without any checks */ final void uncheckedAddContent(Content c) { c.parent = parent; ensureCapacity(size + 1); elementData[size++] = c; modCount++; } /** * Inserts the specified object at the specified position in this list. * Shifts the object currently at that position (if any) and any * subsequent objects to the right (adds one to their indices). * * @param index The location to set the value to. * @param obj The object to insert into the list. * throws IndexOutOfBoundsException if index < 0 || index > size() */ public void add(int index, Object obj) { if (obj == null) { throw new IllegalAddException("Cannot add null object"); } if ((obj instanceof Content)) { add(index, (Content) obj); } else { throw new IllegalAddException("Class " + obj.getClass().getName() + " is of unrecognized type and cannot be added"); } } /** * @see org.jdom.ContentList#add(int, org.jdom.Content) */ private void documentCanContain(int index, Content child) throws IllegalAddException { if (child instanceof Element) { if (indexOfFirstElement() >= 0) { throw new IllegalAddException( "Cannot add a second root element, only one is allowed"); } if (indexOfDocType() > index) { throw new IllegalAddException( "A root element cannot be added before the DocType"); } } if (child instanceof DocType) { if (indexOfDocType() >= 0) { throw new IllegalAddException( "Cannot add a second doctype, only one is allowed"); } int firstElt = indexOfFirstElement(); if (firstElt != -1 && firstElt < index) { throw new IllegalAddException( "A DocType cannot be added after the root element"); } } if (child instanceof CDATA) { throw new IllegalAddException("A CDATA is not allowed at the document root"); } if (child instanceof Text) { throw new IllegalAddException("A Text is not allowed at the document root"); } if (child instanceof EntityRef) { throw new IllegalAddException("An EntityRef is not allowed at the document root"); } } private static void elementCanContain(int index, Content child) throws IllegalAddException { if (child instanceof DocType) { throw new IllegalAddException( "A DocType is not allowed except at the document level"); } } /** * Check and add the Element to this list at * the given index. * * @param index index where to add Element * @param child Element to add */ void add(int index, Content child) { if (child == null) { throw new IllegalAddException("Cannot add null object"); } if (parent instanceof Document) { documentCanContain(index, child); } else { elementCanContain(index, child); } if (child.getParent() != null) { Parent p = child.getParent(); if (p instanceof Document) { throw new IllegalAddException((Element)child, "The Content already has an existing parent document"); } else { throw new IllegalAddException( "The Content already has an existing parent \"" + ((Element)p).getQualifiedName() + "\""); } } if (child == parent) { throw new IllegalAddException( "The Element cannot be added to itself"); } // Detect if we have and c.add(a) if ((parent instanceof Element && child instanceof Element) && ((Element) child).isAncestor((Element)parent)) { throw new IllegalAddException( "The Element cannot be added as a descendent of itself"); } if (index<0 || index>size) { throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); } child.setParent(parent); ensureCapacity(size+1); if( index==size ) { elementData[size++] = child; } else { System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = child; size++; } modCount++; } /** * Add the specified collecton to the end of this list. * * @param collection The collection to add to the list. * @return true if the list was modified as a result of * the add. */ public boolean addAll(Collection collection) { return addAll(size(), collection); } /** * Inserts the specified collecton at the specified position in this list. * Shifts the object currently at that position (if any) and any * subsequent objects to the right (adds one to their indices). * * @param index The offset to start adding the data in the collection * @param collection The collection to insert into the list. * @return true if the list was modified as a result of * the add. * throws IndexOutOfBoundsException if index < 0 || index > size() */ public boolean addAll(int index, Collection collection) { if (index<0 || index>size) { throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); } if ((collection == null) || (collection.size() == 0)) { return false; } ensureCapacity(size() + collection.size()); int count = 0; try { Iterator i = collection.iterator(); while (i.hasNext()) { Object obj = i.next(); add(index + count, obj); count++; } } catch (RuntimeException exception) { for (int i = 0; i < count; i++) { remove(index); } throw exception; } return true; } /** * Clear the current list. */ public void clear() { if (elementData != null) { for (int i = 0; i < size; i++) { Content obj = elementData[i]; removeParent(obj); } elementData = null; size = 0; } modCount++; } /** * Clear the current list and set it to the contents * of the Collection. * object. * * @param collection The collection to use. */ void clearAndSet(Collection collection) { Content[] old = elementData; int oldSize = size; elementData = null; size = 0; if ((collection != null) && (collection.size() != 0)) { ensureCapacity(collection.size()); try { addAll(0, collection); } catch (RuntimeException exception) { elementData = old; size = oldSize; throw exception; } } if (old != null) { for (int i = 0; i < oldSize; i++) { removeParent(old[i]); } } modCount++; } /** * Increases the capacity of this ContentList instance, * if necessary, to ensure that it can hold at least the number of * items specified by the minimum capacity argument. * * @param minCapacity the desired minimum capacity. */ void ensureCapacity(int minCapacity) { if( elementData==null ) { elementData = new Content[Math.max(minCapacity, INITIAL_ARRAY_SIZE)]; } else { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Object oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; if (newCapacity < minCapacity) newCapacity = minCapacity; elementData = new Content[newCapacity]; System.arraycopy(oldData, 0, elementData, 0, size); } } } /** * Return the object at the specified offset. * * @param index The offset of the object. * @return The Object which was returned. */ public Object get(int index) { if (index<0 || index>=size) { throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); } return elementData[index]; } /** * Return a view of this list based on the given filter. * * @param filter Filter for this view. * @return a list representing the rules of the Filter. */ List getView(Filter filter) { return new FilterList(filter); } /** * Return the index of the first Element in the list. If the parent * is a Document then the element is the root element. * If the list contains no Elements, it returns -1. * * @return index of first element, or -1 if one doesn't exist */ int indexOfFirstElement() { if( elementData!=null ) { for (int i = 0; i < size; i++) { if (elementData[i] instanceof Element) { return i; } } } return -1; } /** * Return the index of the DocType element in the list. If the list contains * no DocType, it returns -1. * * @return index of the DocType, or -1 if it doesn't * exist */ int indexOfDocType() { if (elementData != null) { for (int i = 0; i < size; i++) { if (elementData[i] instanceof DocType) { return i; } } } return -1; } /** * Remove the object at the specified offset. * * @param index The offset of the object. * @return The Object which was removed. */ public Object remove(int index) { if (index<0 || index>=size) throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); Content old = elementData[index]; removeParent(old); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index,numMoved); elementData[--size] = null; // Let gc do its work modCount++; return old; } /** Remove the parent of a Object */ private static void removeParent(Content c) { c.setParent(null); } /** * Set the object at the specified location to the supplied * object. * * @param index The location to set the value to. * @param obj The location to set the value to. * @return The object which was replaced. * throws IndexOutOfBoundsException if index < 0 || index >= size() */ public Object set(int index, Object obj) { if (index<0 || index>=size) throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); if ((obj instanceof Element) && (parent instanceof Document)) { int root = indexOfFirstElement(); if ((root >= 0) && (root != index)) { throw new IllegalAddException( "Cannot add a second root element, only one is allowed"); } } if ((obj instanceof DocType) && (parent instanceof Document)) { int docTypeIndex = indexOfDocType(); if ((docTypeIndex >= 0) && (docTypeIndex != index)) { throw new IllegalAddException( "Cannot add a second doctype, only one is allowed"); } } Object old = remove(index); try { add(index, obj); } catch (RuntimeException exception) { add(index, old); throw exception; } return old; } /** * Return the number of items in this list * * @return The number of items in this list. */ public int size() { return size; } /** * Return this list as a String * * @return The number of items in this list. */ public String toString() { return super.toString(); } /** Give access of ContentList.modCount to FilterList */ private int getModCount() { return modCount; } /* * * * * * * * * * * * * FilterList * * * * * * * * * * * * * * * */ /* * * * * * * * * * * * * FilterList * * * * * * * * * * * * * * * */ /** * FilterList represents legal JDOM content, including content * for Documents or Elements. */ class FilterList extends AbstractList implements java.io.Serializable { /** The Filter */ Filter filter; /** Current number of items in this view */ int count = 0; /** Expected modCount in our backing list */ int expected = -1; // Implementation Note: Directly after size() is called, expected // is sync'd with ContentList.modCount and count provides // the true size of this view. Before the first call to // size() or if the backing list is modified outside this // FilterList, both might contain bogus values and should // not be used without first calling size(); /** * Create a new instance of the FilterList with the specified Filter. */ FilterList(Filter filter) { this.filter = filter; } /** * Inserts the specified object at the specified position in this list. * Shifts the object currently at that position (if any) and any * subsequent objects to the right (adds one to their indices). * * @param index The location to set the value to. * @param obj The object to insert into the list. * throws IndexOutOfBoundsException if index < 0 || index > size() */ public void add(int index, Object obj) { if (filter.matches(obj)) { int adjusted = getAdjustedIndex(index); ContentList.this.add(adjusted, obj); expected++; count++; } else throw new IllegalAddException("Filter won't allow the " + obj.getClass().getName() + " '" + obj + "' to be added to the list"); } /** * Return the object at the specified offset. * * @param index The offset of the object. * @return The Object which was returned. */ public Object get(int index) { int adjusted = getAdjustedIndex(index); return ContentList.this.get(adjusted); } public Iterator iterator() { return new FilterListIterator(filter, 0); } public ListIterator listIterator() { return new FilterListIterator(filter, 0); } public ListIterator listIterator(int index) { return new FilterListIterator(filter, index); } /** * Remove the object at the specified offset. * * @param index The offset of the object. * @return The Object which was removed. */ public Object remove(int index) { int adjusted = getAdjustedIndex(index); Object old = ContentList.this.get(adjusted); if (filter.matches(old)) { old = ContentList.this.remove(adjusted); expected++; count--; } else { throw new IllegalAddException("Filter won't allow the " + (old.getClass()).getName() + " '" + old + "' (index " + index + ") to be removed"); } return old; } /** * Set the object at the specified location to the supplied * object. * * @param index The location to set the value to. * @param obj The location to set the value to. * @return The object which was replaced. * throws IndexOutOfBoundsException if index < 0 || index >= size() */ public Object set(int index, Object obj) { Object old = null; if (filter.matches(obj)) { int adjusted = getAdjustedIndex(index); old = ContentList.this.get(adjusted); if (!filter.matches(old)) { throw new IllegalAddException("Filter won't allow the " + (old.getClass()).getName() + " '" + old + "' (index " + index + ") to be removed"); } old = ContentList.this.set(adjusted, obj); expected += 2; } else { throw new IllegalAddException("Filter won't allow index " + index + " to be set to " + (obj.getClass()).getName()); } return old; } /** * Return the number of items in this list * * @return The number of items in this list. */ public int size() { // Implementation Note: Directly after size() is called, expected // is sync'd with ContentList.modCount and count provides // the true size of this view. Before the first call to // size() or if the backing list is modified outside this // FilterList, both might contain bogus values and should // not be used without first calling size(); if (expected == ContentList.this.getModCount()) { return count; } count = 0; for (int i = 0; i < ContentList.this.size(); i++) { Object obj = ContentList.this.elementData[i]; if (filter.matches(obj)) { count++; } } expected = ContentList.this.getModCount(); return count; } /** * Return the adjusted index * * @param index Index of in this view. * @return True index in backing list */ final private int getAdjustedIndex(int index) { int adjusted = 0; for (int i = 0; i < ContentList.this.size; i++) { Object obj = ContentList.this.elementData[i]; if (filter.matches(obj)) { if (index == adjusted) { return i; } adjusted++; } } if (index == adjusted) { return ContentList.this.size; } return ContentList.this.size + 1; } } /* * * * * * * * * * * * * FilterListIterator * * * * * * * * * * * */ /* * * * * * * * * * * * * FilterListIterator * * * * * * * * * * * */ class FilterListIterator implements ListIterator { /** The Filter that applies */ Filter filter; /** The last operation performed */ int lastOperation; /** Initial start index in backing list */ int initialCursor; /** Index in backing list of next object */ int cursor; /** Index in backing list of last object returned */ int last; /** Expected modCount in our backing list */ int expected; /** * Default constructor */ FilterListIterator(Filter filter, int start) { this.filter = filter; initialCursor = initializeCursor(start); last = -1; expected = ContentList.this.getModCount(); lastOperation = CREATE; } /** * Returns true if this list iterator has a next element. */ public boolean hasNext() { checkConcurrentModification(); switch(lastOperation) { case CREATE: cursor = initialCursor; break; case PREV: cursor = last; break; case ADD: case NEXT: cursor = moveForward(last + 1); break; case REMOVE: cursor = moveForward(last); break; case HASPREV: cursor = moveForward(cursor + 1); break; case HASNEXT: break; default: throw new IllegalStateException("Unknown operation"); } if (lastOperation != CREATE) { lastOperation = HASNEXT; } return (cursor < ContentList.this.size()) ? true : false; } /** * Returns the next element in the list. */ public Object next() { checkConcurrentModification(); if (hasNext()) { last = cursor; } else { last = ContentList.this.size(); throw new NoSuchElementException(); } lastOperation = NEXT; return ContentList.this.get(last); } /** * Returns true if this list iterator has more * elements when traversing the list in the reverse direction. */ public boolean hasPrevious() { checkConcurrentModification(); switch(lastOperation) { case CREATE: cursor = initialCursor; int size = ContentList.this.size(); if (cursor >= size) { cursor = moveBackward(size - 1); } break; case PREV: case REMOVE: cursor = moveBackward(last - 1); break; case HASNEXT: cursor = moveBackward(cursor - 1); break; case ADD: case NEXT: cursor = last; break; case HASPREV: break; default: throw new IllegalStateException("Unknown operation"); } if (lastOperation != CREATE) { lastOperation = HASPREV; } return (cursor < 0) ? false : true; } /** * Returns the previous element in the list. */ public Object previous() { checkConcurrentModification(); if (hasPrevious()) { last = cursor; } else { last = -1; throw new NoSuchElementException(); } lastOperation = PREV; return ContentList.this.get(last); } /** * Returns the index of the element that would be returned by a * subsequent call to next. */ public int nextIndex() { checkConcurrentModification(); hasNext(); int count = 0; for (int i = 0; i < ContentList.this.size(); i++) { if (filter.matches(ContentList.this.get(i))) { if (i == cursor) { return count; } count++; } } expected = ContentList.this.getModCount(); return count; } /** * Returns the index of the element that would be returned by a * subsequent call to previous. (Returns -1 if the * list iterator is at the beginning of the list.) */ public int previousIndex() { checkConcurrentModification(); if (hasPrevious()) { int count = 0; for (int i = 0; i < ContentList.this.size(); i++) { if (filter.matches(ContentList.this.get(i))) { if (i == cursor) { return count; } count++; } } } return -1; } /** * Inserts the specified element into the list. */ public void add(Object obj) { checkConcurrentModification(); if (filter.matches(obj)) { last = cursor + 1; ContentList.this.add(last, obj); } else { throw new IllegalAddException("Filter won't allow add of " + (obj.getClass()).getName()); } expected = ContentList.this.getModCount(); lastOperation = ADD; } /** * Removes from the list the last element that was returned by * next or previous. * the last call to next or previous. */ public void remove() { checkConcurrentModification(); if ((last < 0) || (lastOperation == REMOVE)) { throw new IllegalStateException("no preceeding call to " + "prev() or next()"); } if (lastOperation == ADD) { throw new IllegalStateException("cannot call remove() " + "after add()"); } Object old = ContentList.this.get(last); if (filter.matches(old)) { ContentList.this.remove(last); } else throw new IllegalAddException("Filter won't allow " + (old.getClass()).getName() + " (index " + last + ") to be removed"); expected = ContentList.this.getModCount(); lastOperation = REMOVE; } /** * Replaces the last element returned by next or * previous with the specified element. */ public void set(Object obj) { checkConcurrentModification(); if ((lastOperation == ADD) || (lastOperation == REMOVE)) { throw new IllegalStateException("cannot call set() after " + "add() or remove()"); } if (last < 0) { throw new IllegalStateException("no preceeding call to " + "prev() or next()"); } if (filter.matches(obj)) { Object old = ContentList.this.get(last); if (!filter.matches(old)) { throw new IllegalAddException("Filter won't allow " + (old.getClass()).getName() + " (index " + last + ") to be removed"); } ContentList.this.set(last, obj); } else { throw new IllegalAddException("Filter won't allow index " + last + " to be set to " + (obj.getClass()).getName()); } expected = ContentList.this.getModCount(); // Don't set lastOperation } /** * Returns index in the backing list by moving forward start * objects that match our filter. */ private int initializeCursor(int start) { if (start < 0) { throw new IndexOutOfBoundsException("Index: " + start); } int count = 0; for (int i = 0; i < ContentList.this.size(); i++) { Object obj = ContentList.this.get(i); if (filter.matches(obj)) { if (start == count) { return i; } count++; } } if (start > count) { throw new IndexOutOfBoundsException("Index: " + start + " Size: " + count); } return ContentList.this.size(); } /** * Returns index in the backing list of the next object matching * our filter, starting at the given index and moving forwards. */ private int moveForward(int start) { if (start < 0) { start = 0; } for (int i = start; i < ContentList.this.size(); i++) { Object obj = ContentList.this.get(i); if (filter.matches(obj)) { return i; } } return ContentList.this.size(); } /** * Returns index in the backing list of the next object matching * our filter, starting at the given index and moving backwards. */ private int moveBackward(int start) { if (start >= ContentList.this.size()) { start = ContentList.this.size() - 1; } for (int i = start; i >= 0; --i) { Object obj = ContentList.this.get(i); if (filter.matches(obj)) { return i; } } return -1; } /** * Check if are backing list is being modified by someone else. */ private void checkConcurrentModification() { if (expected != ContentList.this.getModCount()) { throw new ConcurrentModificationException(); } } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/JDOMFactory.java0000644000175000017500000003024111377161311022273 0ustar /*-- $Id: JDOMFactory.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; /** * An interface to be used by builders when constructing JDOM objects. The * DefaultJDOMFactory creates the standard top-level JDOM classes * (Element, Document, Comment, etc). Another implementation of this factory * could be used to create custom classes. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ * @author Ken Rune Holland * @author Phil Nelson * @author Bradley S. Huffman */ public interface JDOMFactory { // **** constructing Attributes **** /** *

* This will create a new Attribute with the * specified (local) name and value, and in the provided * {@link org.jdom.Namespace}. *

* * @param name String name of Attribute. * @param value String value for new attribute. */ public Attribute attribute(String name, String value, Namespace namespace); /** * This will create a new Attribute with the * specified (local) name, value, and type, and in the provided * {@link org.jdom.Namespace}. * * @param name String name of Attribute. * @param value String value for new attribute. * @param type int type for new attribute. * @param namespace Namespace namespace for new attribute. */ public Attribute attribute(String name, String value, int type, Namespace namespace); /** * This will create a new Attribute with the * specified (local) name and value, and does not place * the attribute in a {@link org.jdom.Namespace}. *

* Note: This actually explicitly puts the * Attribute in the "empty" Namespace * ({@link org.jdom.Namespace#NO_NAMESPACE}). *

* * @param name String name of Attribute. * @param value String value for new attribute. */ public Attribute attribute(String name, String value); /** * This will create a new Attribute with the * specified (local) name, value and type, and does not place * the attribute in a {@link org.jdom.Namespace}. *

* Note: This actually explicitly puts the * Attribute in the "empty" Namespace * ({@link org.jdom.Namespace#NO_NAMESPACE}). *

* * @param name String name of Attribute. * @param value String value for new attribute. * @param type int type for new attribute. */ public Attribute attribute(String name, String value, int type); // **** constructing CDATA **** /** * This creates the CDATA with the supplied text. * * @param str String content of CDATA. */ public CDATA cdata(String str); // **** constructing Text **** /** * This creates the Text with the supplied text. * * @param str String content of Text. */ public Text text(String str); // **** constructing Comment **** /** * This creates the comment with the supplied text. * * @param text String content of comment. */ public Comment comment(String text); // **** constructing DocType /** * This will create the DocType with * the specified element name and a reference to an * external DTD. * * @param elementName String name of * element being constrained. * @param publicID String public ID of * referenced DTD * @param systemID String system ID of * referenced DTD */ public DocType docType(String elementName, String publicID, String systemID); /** * This will create the DocType with * the specified element name and reference to an * external DTD. * * @param elementName String name of * element being constrained. * @param systemID String system ID of * referenced DTD */ public DocType docType(String elementName, String systemID); /** * This will create the DocType with * the specified element name * * @param elementName String name of * element being constrained. */ public DocType docType(String elementName); // **** constructing Document /** * This will create a new Document, * with the supplied {@link org.jdom.Element} * as the root element and the supplied * {@link org.jdom.DocType} declaration. * * @param rootElement Element for document root. * @param docType DocType declaration. */ public Document document(Element rootElement, DocType docType); /** * This will create a new Document, * with the supplied {@link org.jdom.Element} * as the root element and the supplied * {@link org.jdom.DocType} declaration. * * @param rootElement Element for document root. * @param docType DocType declaration. * @param baseURI the URI from which this doucment was loaded. */ public Document document(Element rootElement, DocType docType, String baseURI); /** * This will create a new Document, * with the supplied {@link org.jdom.Element} * as the root element, and no {@link org.jdom.DocType} * declaration. * * @param rootElement Element for document root */ public Document document(Element rootElement); // **** constructing Elements **** /** * This will create a new Element * with the supplied (local) name, and define * the {@link org.jdom.Namespace} to be used. * * @param name String name of element. * @param namespace Namespace to put element in. */ public Element element(String name, Namespace namespace); /** * This will create an Element in no * {@link org.jdom.Namespace}. * * @param name String name of element. */ public Element element(String name); /** * This will create a new Element with * the supplied (local) name, and specifies the URI * of the {@link org.jdom.Namespace} the Element * should be in, resulting it being unprefixed (in the default * namespace). * * @param name String name of element. * @param uri String URI for Namespace element * should be in. */ public Element element(String name, String uri); /** * This will create a new Element with * the supplied (local) name, and specifies the prefix and URI * of the {@link org.jdom.Namespace} the Element * should be in. * * @param name String name of element. * @param uri String URI for Namespace element * should be in. */ public Element element(String name, String prefix, String uri); // **** constructing ProcessingInstruction **** /** * This will create a new ProcessingInstruction * with the specified target and data. * * @param target String target of PI. * @param data Map data for PI, in * name/value pairs */ public ProcessingInstruction processingInstruction(String target, Map data); /** * This will create a new ProcessingInstruction * with the specified target and data. * * @param target String target of PI. * @param data String data for PI. */ public ProcessingInstruction processingInstruction(String target, String data); // **** constructing EntityRef **** /** * This will create a new EntityRef * with the supplied name. * * @param name String name of element. */ public EntityRef entityRef(String name); /** * This will create a new EntityRef * with the supplied name, public ID, and system ID. * * @param name String name of element. * @param publicID String public ID of element. * @param systemID String system ID of element. */ public EntityRef entityRef(String name, String publicID, String systemID); /** * This will create a new EntityRef * with the supplied name and system ID. * * @param name String name of element. * @param systemID String system ID of element. */ public EntityRef entityRef(String name, String systemID); // ===================================================================== // List manipulation // ===================================================================== public void addContent(Parent parent, Content content); public void setAttribute(Element element, Attribute a); public void addNamespaceDeclaration(Element element, Namespace additional); } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Element.java0000644000175000017500000015765211377161311021623 0ustar /*-- $Id: Element.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.io.*; import java.util.*; import org.jdom.filter.*; /** * An XML element. Methods allow the user to get and manipulate its child * elements and content, directly access the element's textual content, * manipulate its attributes, and manage namespaces. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ * @author Brett McLaughlin * @author Jason Hunter * @author Lucas Gonze * @author Kevin Regan * @author Dan Schaffer * @author Yusuf Goolamabbas * @author Kent C. Johnson * @author Jools Enticknap * @author Alex Rosen * @author Bradley S. Huffman */ public class Element extends Content implements Parent { private static final String CVS_ID = "@(#) $RCSfile: Element.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:47 $ $Name: $"; private static final int INITIAL_ARRAY_SIZE = 5; /** The local name of the element */ protected String name; /** The namespace of the element */ protected transient Namespace namespace; /** Additional namespace declarations to store on this element; useful * during output */ protected transient List additionalNamespaces; // See http://lists.denveronline.net/lists/jdom-interest/2000-September/003030.html // for a possible memory optimization here (using a RootElement subclass) /** * The attributes of the element. Subclassers have to * track attributes using their own mechanism. */ AttributeList attributes = new AttributeList(this); /** * The content of the element. Subclassers have to * track content using their own mechanism. */ ContentList content = new ContentList(this); /** * This protected constructor is provided in order to support an Element * subclass that wants full control over variable initialization. It * intentionally leaves all instance variables null, allowing a lightweight * subclass implementation. The subclass is responsible for ensuring all the * get and set methods on Element behave as documented. *

* When implementing an Element subclass which doesn't require full control * over variable initialization, be aware that simply calling super() (or * letting the compiler add the implicit super() call) will not initialize * the instance variables which will cause many of the methods to throw a * NullPointerException. Therefore, the constructor for these subclasses * should call one of the public constructors so variable initialization is * handled automatically. */ protected Element() { } /** * Creates a new element with the supplied (local) name and namespace. If * the provided namespace is null, the element will have no namespace. * * @param name local name of the element * @param namespace namespace for the element * @throws IllegalNameException if the given name is illegal as an element * name */ public Element(String name, Namespace namespace) { setName(name); setNamespace(namespace); } /** * Create a new element with the supplied (local) name and no namespace. * * @param name local name of the element * @throws IllegalNameException if the given name is illegal as an element * name. */ public Element(String name) { this(name, (Namespace) null); } /** * Creates a new element with the supplied (local) name and a namespace * given by a URI. The element will be put into the unprefixed (default) * namespace. * * @param name name of the element * @param uri namespace URI for the element * @throws IllegalNameException if the given name is illegal as an element * name or the given URI is illegal as a * namespace URI */ public Element(String name, String uri) { this(name, Namespace.getNamespace("", uri)); } /** * Creates a new element with the supplied (local) name and a namespace * given by the supplied prefix and URI combination. * * @param name local name of the element * @param prefix namespace prefix * @param uri namespace URI for the element * @throws IllegalNameException if the given name is illegal as an element * name, the given prefix is illegal as a * namespace prefix, or the given URI is * illegal as a namespace URI */ public Element(String name, String prefix, String uri) { this(name, Namespace.getNamespace(prefix, uri)); } /** * Returns the (local) name of the element (without any namespace prefix). * * @return local element name */ public String getName() { return name; } /** * Sets the (local) name of the element. * * @param name the new (local) name of the element * @return the target element * @throws IllegalNameException if the given name is illegal as an Element * name */ public Element setName(String name) { String reason = Verifier.checkElementName(name); if (reason != null) { throw new IllegalNameException(name, "element", reason); } this.name = name; return this; } /** * Returns the element's {@link Namespace}. * * @return the element's namespace */ public Namespace getNamespace() { return namespace; } /** * Sets the element's {@link Namespace}. If the provided namespace is null, * the element will have no namespace. * * @param namespace the new namespace * @return the target element */ public Element setNamespace(Namespace namespace) { if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } this.namespace = namespace; return this; } /** * Returns the namespace prefix of the element or an empty string if none * exists. * * @return the namespace prefix */ public String getNamespacePrefix() { return namespace.getPrefix(); } /** * Returns the namespace URI mapped to this element's prefix (or the * in-scope default namespace URI if no prefix). If no mapping is found, an * empty string is returned. * * @return the namespace URI for this element */ public String getNamespaceURI() { return namespace.getURI(); } /** * Returns the {@link Namespace} corresponding to the given prefix in scope * for this element. This involves searching up the tree, so the results * depend on the current location of the element. Returns null if there is * no namespace in scope with the given prefix at this point in the * document. * * @param prefix namespace prefix to look up * @return the Namespace for this prefix at this * location, or null if none */ public Namespace getNamespace(String prefix) { if (prefix == null) { return null; } if (prefix.equals("xml")) { // Namespace "xml" is always bound. return Namespace.XML_NAMESPACE; } // Check if the prefix is the prefix for this element if (prefix.equals(getNamespacePrefix())) { return getNamespace(); } // Scan the additional namespaces if (additionalNamespaces != null) { for (int i = 0; i < additionalNamespaces.size(); i++) { Namespace ns = (Namespace) additionalNamespaces.get(i); if (prefix.equals(ns.getPrefix())) { return ns; } } } // If we still don't have a match, ask the parent if (parent instanceof Element) { return ((Element)parent).getNamespace(prefix); } return null; } /** * Returns the full name of the element, in the form * [namespacePrefix]:[localName]. If the element does not have a namespace * prefix, then the local name is returned. * * @return qualified name of the element (including * namespace prefix) */ public String getQualifiedName() { // Note: Any changes here should be reflected in // XMLOutputter.printQualifiedName() if (namespace.getPrefix().equals("")) { return getName(); } return new StringBuffer(namespace.getPrefix()) .append(':') .append(name) // JCLIC modification //.toString(); .substring(0); } /** * Adds a namespace declarations to this element. This should not be * used to add the declaration for this element itself; that should be * assigned in the construction of the element. Instead, this is for adding * namespace declarations on the element not relating directly to itself. * It's used during output to for stylistic reasons move namespace * declarations higher in the tree than they would have to be. * * @param additional namespace to add * @throws IllegalAddException if the namespace prefix collides with another * namespace prefix on the element */ public void addNamespaceDeclaration(Namespace additional) { // Verify the new namespace prefix doesn't collide with another // declared namespace, an attribute prefix, or this element's prefix String reason = Verifier.checkNamespaceCollision(additional, this); if (reason != null) { throw new IllegalAddException(this, additional, reason); } if (additionalNamespaces == null) { additionalNamespaces = new ArrayList(INITIAL_ARRAY_SIZE); } additionalNamespaces.add(additional); } /** * Removes an additional namespace declarations from this element. This * should not be used to remove the declaration for this element * itself; that should be handled in the construction of the element. * Instead, this is for removing namespace declarations on the element not * relating directly to itself. If the declaration is not present, this * method does nothing. * * @param additionalNamespace namespace to remove */ public void removeNamespaceDeclaration(Namespace additionalNamespace) { if (additionalNamespaces == null) { return; } additionalNamespaces.remove(additionalNamespace); } /** * Returns a list of the additional namespace declarations on this element. * This includes only additional namespace, not the namespace of the element * itself, which can be obtained through {@link #getNamespace()}. If there * are no additional declarations, this returns an empty list. Note, the * returned list is unmodifiable. * * @return a List of the additional namespace * declarations */ public List getAdditionalNamespaces() { // Not having the returned list be live allows us to avoid creating a // new list object when XMLOutputter calls this method on an element // with an empty list. if (additionalNamespaces == null) { return Collections.EMPTY_LIST; } return Collections.unmodifiableList(additionalNamespaces); } /** * Returns the XPath 1.0 string value of this element, which is the * complete, ordered content of all text node descendants of this element * (i.e. the text that's left after all references are resolved * and all other markup is stripped out.) * * @return a concatentation of all text node descendants */ public String getValue() { StringBuffer buffer = new StringBuffer(); Iterator itr = getContent().iterator(); while (itr.hasNext()) { Content child = (Content) itr.next(); if (child instanceof Element || child instanceof Text) { buffer.append(child.getValue()); } } return buffer // JCLIC modification //.toString(); .substring(0); } /** * Returns whether this element is a root element. This can be used in * tandem with {@link #getParent} to determine if an element has any * "attachments" to a parent element or document. * * @return whether this is a root element */ public boolean isRootElement() { return parent instanceof Document; } public int getContentSize() { return content.size(); } public int indexOf(Content child) { return content.indexOf(child); } // private int indexOf(int start, Filter filter) { // int size = getContentSize(); // for (int i = start; i < size; i++) { // if (filter.matches(getContent(i))) { // return i; // } // } // return -1; // } /** * Returns the textual content directly held under this element as a string. * This includes all text within this single element, including whitespace * and CDATA sections if they exist. It's essentially the concatenation of * all {@link Text} and {@link CDATA} nodes returned by {@link #getContent}. * The call does not recurse into child elements. If no textual value exists * for the element, an empty string is returned. * * @return text content for this element, or empty * string if none */ public String getText() { if (content.size() == 0) { return ""; } // If we hold only a Text or CDATA, return it directly if (content.size() == 1) { Object obj = content.get(0); if (obj instanceof Text) { return ((Text) obj).getText(); } else { return ""; } } // Else build String up StringBuffer textContent = new StringBuffer(); boolean hasText = false; for (int i = 0; i < content.size(); i++) { Object obj = content.get(i); if (obj instanceof Text) { textContent.append(((Text) obj).getText()); hasText = true; } } if (!hasText) { return ""; } else { return textContent // JCLIC modification //.toString(); .substring(0); } } /** * Returns the textual content of this element with all surrounding * whitespace removed. If no textual value exists for the element, or if * only whitespace exists, the empty string is returned. * * @return trimmed text content for this element, or * empty string if none */ public String getTextTrim() { return getText().trim(); } /** * Returns the textual content of this element with all surrounding * whitespace removed and internal whitespace normalized to a single space. * If no textual value exists for the element, or if only whitespace exists, * the empty string is returned. * * @return normalized text content for this element, or * empty string if none */ public String getTextNormalize() { return Text.normalizeString(getText()); } /** * Returns the textual content of the named child element, or null if * there's no such child. This method is a convenience because calling * getChild().getText() can throw a NullPointerException. * * @param name the name of the child * @return text content for the named child, or null if * no such child */ public String getChildText(String name) { Element child = getChild(name); if (child == null) { return null; } return child.getText(); } /** * Returns the trimmed textual content of the named child element, or null * if there's no such child. See {@link #getTextTrim()} for * details of text trimming. * * @param name the name of the child * @return trimmed text content for the named child, or * null if no such child */ public String getChildTextTrim(String name) { Element child = getChild(name); if (child == null) { return null; } return child.getTextTrim(); } /** * Returns the normalized textual content of the named child element, or * null if there's no such child. See {@link * #getTextNormalize()} for details of text normalizing. * * @param name the name of the child * @return normalized text content for the named child, * or null if no such child */ public String getChildTextNormalize(String name) { Element child = getChild(name); if (child == null) { return null; } return child.getTextNormalize(); } /** * Returns the textual content of the named child element, or null if * there's no such child. * * @param name the name of the child * @param ns the namespace of the child * @return text content for the named child, or null if * no such child */ public String getChildText(String name, Namespace ns) { Element child = getChild(name, ns); if (child == null) { return null; } return child.getText(); } /** * Returns the trimmed textual content of the named child element, or null * if there's no such child. * * @param name the name of the child * @param ns the namespace of the child * @return trimmed text content for the named child, or * null if no such child */ public String getChildTextTrim(String name, Namespace ns) { Element child = getChild(name, ns); if (child == null) { return null; } return child.getTextTrim(); } /** * Returns the normalized textual content of the named child element, or * null if there's no such child. * * @param name the name of the child * @param ns the namespace of the child * @return normalized text content for the named child, * or null if no such child */ public String getChildTextNormalize(String name, Namespace ns) { Element child = getChild(name, ns); if (child == null) { return null; } return child.getTextNormalize(); } /** * Sets the content of the element to be the text given. All existing text * content and non-text context is removed. If this element should have both * textual content and nested elements, use {@link #setContent} * instead. Setting a null text value is equivalent to setting an empty * string value. * * @param text new text content for the element * @return the target element * @throws IllegalDataException if the assigned text contains an illegal * character such as a vertical tab (as * determined by {@link * org.jdom.Verifier#checkCharacterData}) */ public Element setText(String text) { content.clear(); if (text != null) { addContent(new Text(text)); } return this; } /** * This returns the full content of the element as a List which * may contain objects of type Text, Element, * Comment, ProcessingInstruction, * CDATA, and EntityRef. * The List returned is "live" in document order and modifications * to it affect the element's actual contents. Whitespace content is * returned in its entirety. * *

* Sequential traversal through the List is best done with an Iterator * since the underlying implement of List.size() may require walking the * entire list. *

* * @return a List containing the mixed content of the * element: may contain Text, * {@link Element}, {@link Comment}, * {@link ProcessingInstruction}, * {@link CDATA}, and * {@link EntityRef} objects. */ public List getContent() { return content; } /** * Return a filter view of this Element's content. * *

* Sequential traversal through the List is best done with a Iterator * since the underlying implement of List.size() may require walking the * entire list. *

* * @param filter Filter to apply * @return List - filtered Element content */ public List getContent(Filter filter) { return content.getView(filter); } /** * Removes all child content from this parent. * * @return list of the old children detached from this parent */ public List removeContent() { List old = new ArrayList(content); content.clear(); return old; } /** * Remove all child content from this parent matching the supplied filter. * * @param filter filter to select which content to remove * @return list of the old children detached from this parent */ public List removeContent(Filter filter) { List old = new ArrayList(); Iterator itr = content.getView(filter).iterator(); while (itr.hasNext()) { Content child = (Content) itr.next(); old.add(child); itr.remove(); } return old; } /** * This sets the content of the element. The supplied List should * contain only objects of type Element, Text, * CDATA, Comment, * ProcessingInstruction, and EntityRef. * *

* When all objects in the supplied List are legal and before the new * content is added, all objects in the old content will have their * parentage set to null (no parent) and the old content list will be * cleared. This has the effect that any active list (previously obtained * with a call to {@link #getContent} or {@link #getChildren}) will also * change to reflect the new content. In addition, all objects in the * supplied List will have their parentage set to this element, but the * List itself will not be "live" and further removals and additions will * have no effect on this elements content. If the user wants to continue * working with a "live" list, then a call to setContent should be * followed by a call to {@link #getContent} or {@link #getChildren} to * obtain a "live" version of the content. *

* *

* Passing a null or empty List clears the existing content. *

* *

* In event of an exception the original content will be unchanged and * the objects in the supplied content will be unaltered. *

* * @param newContent List of content to set * @return this element modified * @throws IllegalAddException if the List contains objects of * illegal types or with existing parentage. */ public Element setContent(Collection newContent) { content.clearAndSet(newContent); return this; } /** * Replace the current child the given index with the supplied child. *

* In event of an exception the original content will be unchanged and * the supplied child will be unaltered. *

* * @param index - index of child to replace. * @param child - child to add. * @return element on which this method was invoked * @throws IllegalAddException if the supplied child is already attached * or not legal content for this parent. * @throws IndexOutOfBoundsException if index is negative or greater * than the current number of children. */ public Element setContent(int index, Content child) { content.set(index, child); return this; } /** * Replace the child at the given index whith the supplied * collection. *

* In event of an exception the original content will be unchanged and * the content in the supplied collection will be unaltered. *

* * @param index - index of child to replace. * @param collection - collection of content to add. * @return object on which this method was invoked * @throws IllegalAddException if the collection contains objects of * illegal types. * @throws IndexOutOfBoundsException if index is negative or greater * than the current number of children. */ public Parent setContent(int index, Collection collection) { content.remove(index); content.addAll(index, collection); return this; } /** * This adds text content to this element. It does not replace the * existing content as does setText(). * * @param str String to add * @return this element modified * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) */ public Element addContent(String str) { return addContent(new Text(str)); } /** * Appends the child to the end of the element's content list. * * @param child child to append to end of content list * @return the element on which the method was called * @throws IllegalAddException if the given child already has a parent. */ public Element addContent(Content child) { content.add(child); return this; } /** * Appends all children in the given collection to the end of * the content list. In event of an exception during add the * original content will be unchanged and the objects in the supplied * collection will be unaltered. * * @param collection collection to append * @return the element on which the method was called * @throws IllegalAddException if any item in the collection * already has a parent or is of an inappropriate type. */ public Element addContent(Collection collection) { content.addAll(collection); return this; } /** * Inserts the child into the content list at the given index. * * @param index location for adding the collection * @param child child to insert * @return the parent on which the method was called * @throws IndexOutOfBoundsException if index is negative or beyond * the current number of children * @throws IllegalAddException if the given child already has a parent. */ public Element addContent(int index, Content child) { content.add(index, child); return this; } /** * Inserts the content in a collection into the content list * at the given index. In event of an exception the original content * will be unchanged and the objects in the supplied collection will be * unaltered. * * @param index location for adding the collection * @param c collection to insert * @return the parent on which the method was called * @throws IndexOutOfBoundsException if index is negative or beyond * the current number of children * @throws IllegalAddException if any item in the collection * already has a parent or is of an inappropriate type. */ public Element addContent(int index, Collection c) { content.addAll(index, c); return this; } public List cloneContent() { int size = getContentSize(); List list = new ArrayList(size); for (int i = 0; i < size; i++) { Content child = getContent(i); list.add(child.clone()); } return list; } public Content getContent(int index) { return (Content) content.get(index); } // public Content getChild(Filter filter) { // int i = indexOf(0, filter); // return (i < 0) ? null : getContent(i); // } public boolean removeContent(Content child) { return content.remove(child); } public Content removeContent(int index) { return (Content) content.remove(index); } /** * Set this element's content to be the supplied child. *

* If the supplied child is legal content for this parent and before * it is added, all content in the current content list will * be cleared and all current children will have their parentage set to * null. *

* This has the effect that any active list (previously obtained with * a call to one of the {@link #getContent} methods will also change * to reflect the new content. In addition, all content in the supplied * collection will have their parentage set to this parent. If the user * wants to continue working with a "live" list of this parent's * child, then a call to setContent should be followed by a call to one * of the {@link #getContent} methods to obtain a "live" * version of the children. *

* Passing a null child clears the existing content. *

* In event of an exception the original content will be unchanged and * the supplied child will be unaltered. * * @param child new content to replace existing content * @return the parent on which the method was called * @throws IllegalAddException if the supplied child is already attached * or not legal content for an Element */ public Element setContent(Content child) { content.clear(); content.add(child); return this; } /** * Determines if this element is the ancestor of another element. * * @param element Element to check against * @return true if this element is the ancestor of the * supplied element */ public boolean isAncestor(Element element) { Object p = element.getParent(); while (p instanceof Element) { if (p == this) { return true; } p = ((Element) p).getParent(); } return false; } /** *

* This returns the complete set of attributes for this element, as a * List of Attribute objects in no particular * order, or an empty list if there are none. * The returned list is "live" and changes to it affect the * element's actual attributes. *

* * @return attributes for the element */ public List getAttributes() { return attributes; } /** *

* This returns the attribute for this element with the given name * and within no namespace, or null if no such attribute exists. *

* * @param name name of the attribute to return * @return attribute for the element */ public Attribute getAttribute(String name) { return getAttribute(name, Namespace.NO_NAMESPACE); } /** *

* This returns the attribute for this element with the given name * and within the given Namespace, or null if no such attribute exists. *

* * @param name name of the attribute to return * @param ns Namespace to search within * @return attribute for the element */ public Attribute getAttribute(String name, Namespace ns) { return (Attribute) attributes.get(name, ns); } /** *

* This returns the attribute value for the attribute with the given name * and within no namespace, null if there is no such attribute, and the * empty string if the attribute value is empty. *

* * @param name name of the attribute whose value to be returned * @return the named attribute's value, or null if no such attribute */ public String getAttributeValue(String name) { return getAttributeValue(name, Namespace.NO_NAMESPACE); } /** *

* This returns the attribute value for the attribute with the given name * and within no namespace, or the passed-in default if there is no * such attribute. *

* * @param name name of the attribute whose value to be returned * @param def a default value to return if the attribute does not exist * @return the named attribute's value, or the default if no such attribute */ public String getAttributeValue(String name, String def) { return getAttributeValue(name, Namespace.NO_NAMESPACE, def); } /** *

* This returns the attribute value for the attribute with the given name * and within the given Namespace, null if there is no such attribute, and * the empty string if the attribute value is empty. *

* * @param name name of the attribute whose valud is to be returned * @param ns Namespace to search within * @return the named attribute's value, or null if no such attribute */ public String getAttributeValue(String name, Namespace ns) { return getAttributeValue(name, ns, null); } /** *

* This returns the attribute value for the attribute with the given name * and within the given Namespace, or the passed-in default if there is no * such attribute. *

* * @param name name of the attribute whose valud is to be returned * @param ns Namespace to search within * @param def a default value to return if the attribute does not exist * @return the named attribute's value, or the default if no such attribute */ public String getAttributeValue(String name, Namespace ns, String def) { Attribute attribute = (Attribute) attributes.get(name, ns); return (attribute == null) ? def : attribute.getValue(); } /** *

* This sets the attributes of the element. The supplied List should * contain only objects of type Attribute. *

* *

* When all objects in the supplied List are legal and before the new * attributes are added, all old attributes will have their * parentage set to null (no parent) and the old attribute list will be * cleared. This has the effect that any active attribute list (previously * obtained with a call to {@link #getAttributes}) will also change to * reflect the new attributes. In addition, all attributes in the supplied * List will have their parentage set to this element, but the List itself * will not be "live" and further removals and additions will have no * effect on this elements attributes. If the user wants to continue * working with a "live" attribute list, then a call to setAttributes * should be followed by a call to {@link #getAttributes} to obtain a * "live" version of the attributes. *

* *

* Passing a null or empty List clears the existing attributes. *

* *

* In cases where the List contains duplicate attributes, only the last * one will be retained. This has the same effect as calling * {@link #setAttribute(Attribute)} sequentially. *

* *

* In event of an exception the original attributes will be unchanged and * the attributes in the supplied attributes will be unaltered. *

* * @param newAttributes List of attributes to set * @return this element modified * @throws IllegalAddException if the List contains objects * that are not instances of Attribute, * or if any of the Attribute objects have * conflicting namespace prefixes. */ public Element setAttributes(List newAttributes) { attributes.clearAndSet(newAttributes); return this; } /** *

* This sets an attribute value for this element. Any existing attribute * with the same name and namespace URI is removed. *

* * @param name name of the attribute to set * @param value value of the attribute to set * @return this element modified * @throws IllegalNameException if the given name is illegal as an * attribute name. * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}). */ public Element setAttribute(String name, String value) { return setAttribute(new Attribute(name, value)); } /** *

* This sets an attribute value for this element. Any existing attribute * with the same name and namespace URI is removed. *

* * @param name name of the attribute to set * @param value value of the attribute to set * @param ns namespace of the attribute to set * @return this element modified * @throws IllegalNameException if the given name is illegal as an * attribute name, or if the namespace is an unprefixed default * namespace * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}). * @throws IllegalAddException if the attribute namespace prefix * collides with another namespace prefix on the element. */ public Element setAttribute(String name, String value, Namespace ns) { return setAttribute(new Attribute(name, value, ns)); } /** *

* This sets an attribute value for this element. Any existing attribute * with the same name and namespace URI is removed. *

* * @param attribute Attribute to set * @return this element modified * @throws IllegalAddException if the attribute being added already has a * parent or if the attribute namespace prefix collides with another * namespace prefix on the element. */ public Element setAttribute(Attribute attribute) { attributes.add(attribute); return this; } /** *

* This removes the attribute with the given name and within no * namespace. If no such attribute exists, this method does nothing. *

* * @param name name of attribute to remove * @return whether the attribute was removed */ public boolean removeAttribute(String name) { return removeAttribute(name, Namespace.NO_NAMESPACE); } /** *

* This removes the attribute with the given name and within the * given Namespace. If no such attribute exists, this method does * nothing. *

* * @param name name of attribute to remove * @param ns namespace URI of attribute to remove * @return whether the attribute was removed */ public boolean removeAttribute(String name, Namespace ns) { return attributes.remove(name, ns); } /** *

* This removes the supplied Attribute should it exist. *

* * @param attribute Reference to the attribute to be removed. * @return whether the attribute was removed */ public boolean removeAttribute(Attribute attribute) { return attributes.remove(attribute); } /** *

* This returns a String representation of the * Element, suitable for debugging. If the XML * representation of the Element is desired, * {@link org.jdom.output.XMLOutputter#outputString(Element)} * should be used. *

* * @return String - information about the * Element */ public String toString() { StringBuffer stringForm = new StringBuffer(64) .append("[Element: <") .append(getQualifiedName()); String nsuri = getNamespaceURI(); if (!nsuri.equals("")) { stringForm .append(" [Namespace: ") .append(nsuri) .append("]"); } stringForm.append("/>]"); return stringForm // JCLIC modification //.toString(); .substring(0); } /** *

* This returns a deep clone of this element. * The new element is detached from its parent, and getParent() * on the clone will return null. *

* * @return the clone of this element */ public Object clone() { // Ken Rune Helland is our local clone() guru Element element = null; element = (Element) super.clone(); // name and namespace are references to immutable objects // so super.clone() handles them ok // Reference to parent is copied by super.clone() // (Object.clone()) so we have to remove it // Actually, super is a Content, which has already detached in the clone(). // element.parent = null; // Reference to content list and attribute lists are copyed by // super.clone() so we set it new lists if the original had lists element.content = new ContentList(element); element.attributes = new AttributeList(element); // Cloning attributes if (attributes != null) { for (int i = 0; i < attributes.size(); i++) { Object obj = attributes.get(i); Attribute attribute = (Attribute)((Attribute)obj).clone(); element.attributes.add(attribute); } } // Cloning additional namespaces if (additionalNamespaces != null) { int additionalSize = additionalNamespaces.size(); element.additionalNamespaces = new ArrayList(additionalSize); for (int i = 0; i < additionalSize; i++) { Object additional = additionalNamespaces.get(i); element.additionalNamespaces.add(additional); } } // Cloning content if (content != null) { for (int i = 0; i < content.size(); i++) { Object obj = content.get(i); if (obj instanceof Element) { Element elt = (Element)((Element)obj).clone(); element.content.add(elt); } else if (obj instanceof CDATA) { CDATA cdata = (CDATA)((CDATA)obj).clone(); element.content.add(cdata); } else if (obj instanceof Text) { Text text = (Text)((Text)obj).clone(); element.content.add(text); } else if (obj instanceof Comment) { Comment comment = (Comment)((Comment)obj).clone(); element.content.add(comment); } else if (obj instanceof ProcessingInstruction) { ProcessingInstruction pi = (ProcessingInstruction) ((ProcessingInstruction)obj).clone(); element.content.add(pi); } else if (obj instanceof EntityRef) { EntityRef entity = (EntityRef)((EntityRef)obj).clone(); element.content.add(entity); } } } // Handle additional namespaces if (additionalNamespaces != null) { // Avoid additionalNamespaces.clone() because List isn't Cloneable element.additionalNamespaces = new ArrayList(); element.additionalNamespaces.addAll(additionalNamespaces); } return element; } // Support a custom Namespace serialization so no two namespace // object instances may exist for the same prefix/uri pair private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); // We use writeObject() and not writeUTF() to minimize space // This allows for writing pointers to already written strings out.writeObject(namespace.getPrefix()); out.writeObject(namespace.getURI()); if (additionalNamespaces == null) { out.write(0); } else { int size = additionalNamespaces.size(); out.write(size); for (int i = 0; i < size; i++) { Namespace additional = (Namespace) additionalNamespaces.get(i); out.writeObject(additional.getPrefix()); out.writeObject(additional.getURI()); } } } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); namespace = Namespace.getNamespace( (String)in.readObject(), (String)in.readObject()); int size = in.read(); if (size != 0) { additionalNamespaces = new ArrayList(size); for (int i = 0; i < size; i++) { Namespace additional = Namespace.getNamespace( (String)in.readObject(), (String)in.readObject()); additionalNamespaces.add(additional); } } } /** * Returns an iterator that walks over all descendants in document order. * * @return an iterator to walk descendants */ public Iterator getDescendants() { return new DescendantIterator(this); } /** * Returns an iterator that walks over all descendants in document order * applying the Filter to return only elements that match the filter rule. * With filters you can match only Elements, only Comments, Elements or * Comments, only Elements with a given name and/or prefix, and so on. * * @param filter filter to select which descendants to see * @return an iterator to walk descendants within a filter */ public Iterator getDescendants(Filter filter) { return new FilterIterator(new DescendantIterator(this), filter); } /** * This returns a List of all the child elements * nested directly (one level deep) within this element, as * Element objects. If this target element has no nested * elements, an empty List is returned. The returned list is "live" * in document order and changes to it affect the element's actual * contents. * *

* Sequential traversal through the List is best done with a Iterator * since the underlying implement of List.size() may not be the most * efficient. *

* *

* No recursion is performed, so elements nested two levels deep * would have to be obtained with: *

     * 
     *   Iterator itr = (currentElement.getChildren()).iterator();
     *   while(itr.hasNext()) {
     *     Element oneLevelDeep = (Element)itr.next();
     *     List twoLevelsDeep = oneLevelDeep.getChildren();
     *     // Do something with these children
     *   }
     * 
     * 
*

* * @return list of child Element objects for this element */ public List getChildren() { return content.getView(new ElementFilter()); } /** * This returns a List of all the child elements * nested directly (one level deep) within this element with the given * local name and belonging to no namespace, returned as * Element objects. If this target element has no nested * elements with the given name outside a namespace, an empty List * is returned. The returned list is "live" in document order * and changes to it affect the element's actual contents. *

* Please see the notes for {@link #getChildren} * for a code example. *

* * @param name local name for the children to match * @return all matching child elements */ public List getChildren(String name) { return getChildren(name, Namespace.NO_NAMESPACE); } /** * This returns a List of all the child elements * nested directly (one level deep) within this element with the given * local name and belonging to the given Namespace, returned as * Element objects. If this target element has no nested * elements with the given name in the given Namespace, an empty List * is returned. The returned list is "live" in document order * and changes to it affect the element's actual contents. *

* Please see the notes for {@link #getChildren} * for a code example. *

* * @param name local name for the children to match * @param ns Namespace to search within * @return all matching child elements */ public List getChildren(String name, Namespace ns) { return content.getView(new ElementFilter(name, ns)); } /** * This returns the first child element within this element with the * given local name and belonging to the given namespace. * If no elements exist for the specified name and namespace, null is * returned. * * @param name local name of child element to match * @param ns Namespace to search within * @return the first matching child element, or null if not found */ public Element getChild(String name, Namespace ns) { List elements = content.getView(new ElementFilter(name, ns)); Iterator i = elements.iterator(); if (i.hasNext()) { return (Element) i.next(); } return null; } /** * This returns the first child element within this element with the * given local name and belonging to no namespace. * If no elements exist for the specified name and namespace, null is * returned. * * @param name local name of child element to match * @return the first matching child element, or null if not found */ public Element getChild(String name) { return getChild(name, Namespace.NO_NAMESPACE); } /** *

* This removes the first child element (one level deep) with the * given local name and belonging to no namespace. * Returns true if a child was removed. *

* * @param name the name of child elements to remove * @return whether deletion occurred */ public boolean removeChild(String name) { return removeChild(name, Namespace.NO_NAMESPACE); } /** *

* This removes the first child element (one level deep) with the * given local name and belonging to the given namespace. * Returns true if a child was removed. *

* * @param name the name of child element to remove * @param ns Namespace to search within * @return whether deletion occurred */ public boolean removeChild(String name, Namespace ns) { List old = content.getView(new ElementFilter(name, ns)); Iterator i = old.iterator(); if (i.hasNext()) { i.next(); i.remove(); return true; } return false; } /** *

* This removes all child elements (one level deep) with the * given local name and belonging to no namespace. * Returns true if any were removed. *

* * @param name the name of child elements to remove * @return whether deletion occurred */ public boolean removeChildren(String name) { return removeChildren(name, Namespace.NO_NAMESPACE); } /** *

* This removes all child elements (one level deep) with the * given local name and belonging to the given namespace. * Returns true if any were removed. *

* * @param name the name of child elements to remove * @param ns Namespace to search within * @return whether deletion occurred */ public boolean removeChildren(String name, Namespace ns) { boolean deletedSome = false; List old = content.getView(new ElementFilter(name, ns)); Iterator i = old.iterator(); while (i.hasNext()) { i.next(); i.remove(); deletedSome = true; } return deletedSome; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/0000755000175000017500000000000011377161311020506 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/JAXPParserFactory.java0000644000175000017500000001576511377161311024636 0ustar /*-- $Id: JAXPParserFactory.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; import java.util.*; import javax.xml.parsers.*; import org.jdom.*; import org.xml.sax.*; /** * A non-public utility class to allocate JAXP SAX parsers. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Laurent Bihanic */ class JAXPParserFactory { // package protected private static final String CVS_ID = "@(#) $RCSfile: JAXPParserFactory.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** JAXP 1.2 schema language property id. */ private static final String JAXP_SCHEMA_LANGUAGE_PROPERTY = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; /** JAXP 1.2 schema location property id. */ private static final String JAXP_SCHEMA_LOCATION_PROPERTY = "http://java.sun.com/xml/jaxp/properties/schemaSource"; /** * Private constructor to forbid allocating instances of this utility * class. */ private JAXPParserFactory() { // Never called. } /* Implementor's note regarding createParser() design: The features and properties are normally set in SAXBuilder, but we take them in createParser() as well because some features or properties may need to be applied during the JAXP parser construction. Today, for example, properties is used as it's the only way to configure schema validation: JAXP defines schema validation properties but SAX does not. This reflects in the Apache Xerces implementation where the SAXParser implementation supports the JAXP properties but the XMLReader does not. Hence, configuring schema validation must be done on the SAXParser object which is only visible in JAXParserFactory. Features is also passed in case some future JAXP release defines JAXP-specific features. */ /** * Creates a SAX parser allocated through the configured JAXP SAX * parser factory. * * @param validating whether a validating parser is requested. * @param features the user-defined SAX features. * @param properties the user-defined SAX properties. * * @return a configured XMLReader. * * @throws JDOMException if any error occurred when allocating or * configuring the JAXP SAX parser. */ public static XMLReader createParser(boolean validating, Map features, Map properties) throws JDOMException { try { SAXParser parser = null; // Allocate and configure JAXP SAX parser factory. SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(validating); factory.setNamespaceAware(true); try { // Allocate parser. parser = factory.newSAXParser(); } catch (ParserConfigurationException e) { throw new JDOMException("Could not allocate JAXP SAX Parser", e); } // Set user-defined JAXP properties (if any) setProperty(parser, properties, JAXP_SCHEMA_LANGUAGE_PROPERTY); setProperty(parser, properties, JAXP_SCHEMA_LOCATION_PROPERTY); // Return configured SAX XMLReader. return parser.getXMLReader(); } catch (SAXException e) { throw new JDOMException("Could not allocate JAXP SAX Parser", e); } } /** * Sets a property on a JAXP SAX parser object if and only if it * is declared in the user-defined properties. * * @param parser the JAXP SAX parser to configure. * @param properties the user-defined SAX properties. * @param name the name of the property to set. * * @throws JDOMException if any error occurred while configuring * the property. */ private static void setProperty(SAXParser parser, Map properties, String name) throws JDOMException { try { if (properties.containsKey(name)) { parser.setProperty(name, properties.get(name)); } } catch (SAXNotSupportedException e) { throw new JDOMException( name + " property not supported for JAXP parser " + parser.getClass().getName()); } catch (SAXNotRecognizedException e) { throw new JDOMException( name + " property not recognized for JAXP parser " + parser.getClass().getName()); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/SAXHandler.java0000644000175000017500000010123111377161311023300 0ustar /*-- $Id: SAXHandler.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; import java.util.*; import org.jdom.*; import org.xml.sax.*; import org.xml.sax.ext.*; import org.xml.sax.helpers.*; /** * A support class for {@link SAXBuilder}. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Brett McLaughlin * @author Jason Hunter * @author Philip Nelson * @author Bradley S. Huffman * @author phil@triloggroup.com */ public class SAXHandler extends DefaultHandler implements LexicalHandler, DeclHandler, DTDHandler { private static final String CVS_ID = "@(#) $RCSfile: SAXHandler.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** Hash table to map SAX attribute type names to JDOM attribute types. */ private static final Map attrNameToTypeMap = new HashMap(13); /** Document object being built */ private Document document; /** Element object being built */ private Element currentElement; /** Indicator of where in the document we are */ private boolean atRoot; /** Indicator of whether we are in the DocType. Note that the DTD consists * of both the internal subset (inside the tag) and the * external subset (in a separate .dtd file). */ private boolean inDTD = false; /** Indicator of whether we are in the internal subset */ private boolean inInternalSubset = false; /** Indicator of whether we previously were in a CDATA */ private boolean previousCDATA = false; /** Indicator of whether we are in a CDATA */ private boolean inCDATA = false; /** Indicator of whether we should expand entities */ private boolean expand = true; /** Indicator of whether we are actively suppressing (non-expanding) a current entity */ private boolean suppress = false; /** How many nested entities we're currently within */ private int entityDepth = 0; // XXX may not be necessary anymore? /** Temporary holder for namespaces that have been declared with * startPrefixMapping, but are not yet available on the element */ private List declaredNamespaces; /** Temporary holder for the internal subset */ private StringBuffer internalSubset = new StringBuffer(); /** Temporary holder for Text and CDATA */ private TextBuffer textBuffer = new TextBuffer(); /** The external entities defined in this document */ private Map externalEntities; /** The JDOMFactory used for JDOM object creation */ private JDOMFactory factory; /** Whether to ignore ignorable whitespace */ private boolean ignoringWhite = false; /** The SAX Locator object provided by the parser */ private Locator locator; /** * Class initializer: Populate a table to translate SAX attribute * type names into JDOM attribute type value (integer). *

* Note that all the mappings defined below are compliant with * the SAX 2.0 specification exception for "ENUMERATION" with is * specific to Crimson 1.1.X and Xerces 2.0.0-betaX which report * attributes of enumerated types with a type "ENUMERATION" * instead of the expected "NMTOKEN". *

*

* Note also that Xerces 1.4.X is not SAX 2.0 compliant either * but handling its case requires * {@link #getAttributeType specific code}. *

*/ static { attrNameToTypeMap.put("CDATA", new Integer(Attribute.CDATA_TYPE)); attrNameToTypeMap.put("ID", new Integer(Attribute.ID_TYPE)); attrNameToTypeMap.put("IDREF", new Integer(Attribute.IDREF_TYPE)); attrNameToTypeMap.put("IDREFS", new Integer(Attribute.IDREFS_TYPE)); attrNameToTypeMap.put("ENTITY", new Integer(Attribute.ENTITY_TYPE)); attrNameToTypeMap.put("ENTITIES", new Integer(Attribute.ENTITIES_TYPE)); attrNameToTypeMap.put("NMTOKEN", new Integer(Attribute.NMTOKEN_TYPE)); attrNameToTypeMap.put("NMTOKENS", new Integer(Attribute.NMTOKENS_TYPE)); attrNameToTypeMap.put("NOTATION", new Integer(Attribute.NOTATION_TYPE)); attrNameToTypeMap.put("ENUMERATION", new Integer(Attribute.ENUMERATED_TYPE)); } /** * This will create a new SAXHandler that listens to SAX * events and creates a JDOM Document. The objects will be constructed * using the default factory. */ public SAXHandler() { this(null); } /** * This will create a new SAXHandler that listens to SAX * events and creates a JDOM Document. The objects will be constructed * using the provided factory. * * @param factory JDOMFactory to be used for constructing * objects */ public SAXHandler(JDOMFactory factory) { if (factory != null) { this.factory = factory; } else { this.factory = new DefaultJDOMFactory(); } atRoot = true; declaredNamespaces = new ArrayList(); externalEntities = new HashMap(); document = this.factory.document(null); } /** * Pushes an element onto the tree under construction. Allows subclasses * to put content under a dummy root element which is useful for building * content that would otherwise be a non-well formed document. * * @param element root element under which content will be built */ protected void pushElement(Element element) { if (atRoot) { document.setRootElement(element); // XXX should we use a factory call? atRoot = false; } else { factory.addContent(currentElement, element); } currentElement = element; } /** * Returns the document. Should be called after parsing is complete. * * @return Document - Document that was built */ public Document getDocument() { return document; } /** * Returns the factory used for constructing objects. * * @return JDOMFactory - the factory used for * constructing objects. * * @see #SAXHandler(org.jdom.JDOMFactory) */ public JDOMFactory getFactory() { return factory; } /** * This sets whether or not to expand entities during the build. * A true means to expand entities as normal content. A false means to * leave entities unexpanded as EntityRef objects. The * default is true. * * @param expand boolean indicating whether entity expansion * should occur. */ public void setExpandEntities(boolean expand) { this.expand = expand; } /** * Returns whether or not entities will be expanded during the * build. * * @return boolean - whether entity expansion * will occur during build. * * @see #setExpandEntities */ public boolean getExpandEntities() { return expand; } /** * Specifies whether or not the parser should elminate whitespace in * element content (sometimes known as "ignorable whitespace") when * building the document. Only whitespace which is contained within * element content that has an element only content model will be * eliminated (see XML Rec 3.2.1). For this setting to take effect * requires that validation be turned on. The default value of this * setting is false. * * @param ignoringWhite Whether to ignore ignorable whitespace */ public void setIgnoringElementContentWhitespace(boolean ignoringWhite) { this.ignoringWhite = ignoringWhite; } /** * Returns whether or not the parser will elminate whitespace in * element content (sometimes known as "ignorable whitespace") when * building the document. * * @return boolean - whether ignorable whitespace will * be ignored during build. * * @see #setIgnoringElementContentWhitespace */ public boolean getIgnoringElementContentWhitespace() { return ignoringWhite; } public void startDocument() { if (locator != null) { document.setBaseURI(locator.getSystemId()); } } /** * This is called when the parser encounters an external entity * declaration. * * @param name entity name * @param publicID public id * @param systemID system id * @throws SAXException when things go wrong */ public void externalEntityDecl(String name, String publicID, String systemID) throws SAXException { // Store the public and system ids for the name externalEntities.put(name, new String[]{publicID, systemID}); if (!inInternalSubset) return; internalSubset.append(" \n"); } /** * This handles an attribute declaration in the internal subset. * * @param eName String element name of attribute * @param aName String attribute name * @param type String attribute type * @param valueDefault String default value of attribute * @param value String value of attribute * @throws SAXException */ public void attributeDecl(String eName, String aName, String type, String valueDefault, String value) throws SAXException { if (!inInternalSubset) return; internalSubset.append(" \n"); } /** * Handle an element declaration in a DTD. * * @param name String name of element * @param model String model of the element in DTD syntax * @throws SAXException */ public void elementDecl(String name, String model) throws SAXException { // Skip elements that come from the external subset if (!inInternalSubset) return; internalSubset.append(" \n"); } /** * Handle an internal entity declaration in a DTD. * * @param name String name of entity * @param value String value of the entity * @throws SAXException */ public void internalEntityDecl(String name, String value) throws SAXException { // Skip entities that come from the external subset if (!inInternalSubset) return; internalSubset.append(" \n"); } /** * This will indicate that a processing instruction has been encountered. * (The XML declaration is not a processing instruction and will not * be reported.) * * @param target String target of PI * @param data String containing all data sent to the PI. * This typically looks like one or more attribute value * pairs. * @throws SAXException when things go wrong */ public void processingInstruction(String target, String data) throws SAXException { if (suppress) return; flushCharacters(); if (atRoot) { factory.addContent(document, factory.processingInstruction(target, data)); } else { factory.addContent(getCurrentElement(), factory.processingInstruction(target, data)); } } /** * This indicates that an unresolvable entity reference has been * encountered, normally because the external DTD subset has not been * read. * * @param name String name of entity * @throws SAXException when things go wrong */ public void skippedEntity(String name) throws SAXException { // We don't handle parameter entity references. if (name.startsWith("%")) return; flushCharacters(); factory.addContent(getCurrentElement(), factory.entityRef(name)); } /** * This will add the prefix mapping to the JDOM * Document object. * * @param prefix String namespace prefix. * @param uri String namespace URI. */ public void startPrefixMapping(String prefix, String uri) throws SAXException { if (suppress) return; Namespace ns = Namespace.getNamespace(prefix, uri); declaredNamespaces.add(ns); } /** * This reports the occurrence of an actual element. It will include * the element's attributes, with the exception of XML vocabulary * specific attributes, such as * xmlns:[namespace prefix] and * xsi:schemaLocation. * * @param namespaceURI String namespace URI this element * is associated with, or an empty * String * @param localName String name of element (with no * namespace prefix, if one is present) * @param qName String XML 1.0 version of element name: * [namespace prefix]:[localName] * @param atts Attributes list for this element * @throws SAXException when things go wrong */ public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException { if (suppress) return; Element element = null; if ((namespaceURI != null) && (!namespaceURI.equals(""))) { String prefix = ""; // Determine any prefix on the Element if (!qName.equals(localName)) { int split = qName.indexOf(":"); prefix = qName.substring(0, split); } Namespace elementNamespace = Namespace.getNamespace(prefix, namespaceURI); element = factory.element(localName, elementNamespace); } else { element = factory.element(localName); } // Take leftover declared namespaces and add them to this element's // map of namespaces if (declaredNamespaces.size() > 0) { transferNamespaces(element); } // Handle attributes for (int i=0, len=atts.getLength(); i{@link Element} and * transfer its namespaces to the global namespace storage. * * @param element Element to read namespaces from. */ private void transferNamespaces(Element element) { Iterator i = declaredNamespaces.iterator(); while (i.hasNext()) { Namespace ns = (Namespace)i.next(); if (ns != element.getNamespace()) { element.addNamespaceDeclaration(ns); } } declaredNamespaces.clear(); } /** * This will report character data (within an element). * * @param ch char[] character array with character data * @param start int index in array where data starts. * @param length int length of data. * @throws SAXException */ public void characters(char[] ch, int start, int length) throws SAXException { if (suppress || (length == 0)) return; if (previousCDATA != inCDATA) { flushCharacters(); } textBuffer.append(ch, start, length); } /** * Capture ignorable whitespace as text. If * setIgnoringElementContentWhitespace(true) has been called then this * method does nothing. * * @param ch [] - char array of ignorable whitespace * @param start int - starting position within array * @param length int - length of whitespace after start * @throws SAXException when things go wrong */ public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException { if (!ignoringWhite) { characters(ch, start, length); } } /** * This will flush any characters from SAX character calls we've * been buffering. * * @throws SAXException when things go wrong */ protected void flushCharacters() throws SAXException { flushCharacters(textBuffer.toString()); textBuffer.clear(); } /** * Flush the given string into the document. This is a protected method * so subclassers can control text handling without knowledge of the * internals of this class. * * @param data string to flush */ protected void flushCharacters(String data) throws SAXException { if (data.length() == 0) { previousCDATA = inCDATA; return; } /** * This is commented out because of some problems with * the inline DTDs that Xerces seems to have. if (!inDTD) { if (inEntity) { getCurrentElement().setContent(factory.text(data)); } else { getCurrentElement().addContent(factory.text(data)); } */ if (previousCDATA) { factory.addContent(getCurrentElement(), factory.cdata(data)); } else { factory.addContent(getCurrentElement(), factory.text(data)); } previousCDATA = inCDATA; } /** * Indicates the end of an element * (</[element name]>) is reached. Note that * the parser does not distinguish between empty * elements and non-empty elements, so this will occur uniformly. * * @param namespaceURI String URI of namespace this * element is associated with * @param localName String name of element without prefix * @param qName String name of element in XML 1.0 form * @throws SAXException when things go wrong */ public void endElement(String namespaceURI, String localName, String qName) throws SAXException { if (suppress) return; flushCharacters(); if (!atRoot) { Parent p = currentElement.getParent(); if (p instanceof Document) { atRoot = true; } else { currentElement = (Element) p; } } else { throw new SAXException( "Ill-formed XML document (missing opening tag for " + localName + ")"); } } /** * This will signify that a DTD is being parsed, and can be * used to ensure that comments and other lexical structures * in the DTD are not added to the JDOM Document * object. * * @param name String name of element listed in DTD * @param publicID String public ID of DTD * @param systemID String system ID of DTD */ public void startDTD(String name, String publicID, String systemID) throws SAXException { flushCharacters(); // Is this needed here? factory.addContent(document, factory.docType(name, publicID, systemID)); inDTD = true; inInternalSubset = true; } /** * This signifies that the reading of the DTD is complete. * * @throws SAXException */ public void endDTD() throws SAXException { document.getDocType().setInternalSubset(internalSubset.toString()); inDTD = false; inInternalSubset = false; } public void startEntity(String name) throws SAXException { entityDepth++; if (expand || entityDepth > 1) { // Short cut out if we're expanding or if we're nested return; } // A "[dtd]" entity indicates the beginning of the external subset if (name.equals("[dtd]")) { inInternalSubset = false; return; } // Ignore DTD references, and translate the standard 5 if ((!inDTD) && (!name.equals("amp")) && (!name.equals("lt")) && (!name.equals("gt")) && (!name.equals("apos")) && (!name.equals("quot"))) { if (!expand) { String pub = null; String sys = null; String[] ids = (String[]) externalEntities.get(name); if (ids != null) { pub = ids[0]; // may be null, that's OK sys = ids[1]; // may be null, that's OK } /** * if no current element, this entity belongs to an attribute * in these cases, it is an error on the part of the parser * to call startEntity but this will help in some cases. * See org/xml/sax/ext/LexicalHandler.html#startEntity(java.lang.String) * for more information */ if (!atRoot) { flushCharacters(); EntityRef entity = factory.entityRef(name, pub, sys); // no way to tell if the entity was from an attribute or element so just assume element factory.addContent(getCurrentElement(), entity); } suppress = true; } } } public void endEntity(String name) throws SAXException { entityDepth--; if (entityDepth == 0) { // No way are we suppressing if not in an entity, // regardless of the "expand" value suppress = false; } if (name.equals("[dtd]")) { inInternalSubset = true; } } /** * Report a CDATA section * * @throws SAXException */ public void startCDATA() throws SAXException { if (suppress) return; inCDATA = true; } /** * Report a CDATA section */ public void endCDATA() throws SAXException { if (suppress) return; previousCDATA = true; inCDATA = false; } /** * This reports that a comments is parsed. If not in the * DTD, this comment is added to the current JDOM * Element, or the Document itself * if at that level. * * @param ch ch[] array of comment characters. * @param start int index to start reading from. * @param length int length of data. * @throws SAXException */ public void comment(char[] ch, int start, int length) throws SAXException { if (suppress) return; flushCharacters(); String commentText = new String(ch, start, length); if (inDTD && inInternalSubset && (expand == false)) { internalSubset.append(" \n"); return; } if ((!inDTD) && (!commentText.equals(""))) { if (atRoot) { factory.addContent(document, factory.comment(commentText)); } else { factory.addContent(getCurrentElement(), factory.comment(commentText)); } } } /** * Handle the declaration of a Notation in a DTD * * @param name name of the notation * @param publicID the public ID of the notation * @param systemID the system ID of the notation */ public void notationDecl(String name, String publicID, String systemID) throws SAXException { if (!inInternalSubset) return; internalSubset.append(" \n"); } /** * Handler for unparsed entity declarations in the DTD * * @param name String of the unparsed entity decl * @param publicID String of the unparsed entity decl * @param systemID String of the unparsed entity decl * @param notationName String of the unparsed entity decl */ public void unparsedEntityDecl(String name, String publicID, String systemID, String notationName) throws SAXException { if (!inInternalSubset) return; internalSubset.append(" \n"); } /** * Appends an external ID to the internal subset buffer. Either publicID * or systemID may be null, but not both. * * @param publicID the public ID * @param systemID the system ID */ private void appendExternalId(String publicID, String systemID) { if (publicID != null) { internalSubset.append(" PUBLIC \"") .append(publicID) .append('\"'); } if (systemID != null) { if (publicID == null) { internalSubset.append(" SYSTEM "); } else { internalSubset.append(' '); } internalSubset.append('\"') .append(systemID) .append('\"'); } } /** * Returns the being-parsed element. * * @return Element - element being built. * @throws SAXException */ public Element getCurrentElement() throws SAXException { if (currentElement == null) { throw new SAXException( "Ill-formed XML document (multiple root elements detected)"); } return currentElement; } /** * Returns the the JDOM Attribute type value from the SAX 2.0 * attribute type string provided by the parser. * * @param typeName String the SAX 2.0 attribute * type string. * * @return int the JDOM attribute type. * * @see Attribute#setAttributeType * @see Attributes#getType */ private static int getAttributeType(String typeName) { Integer type = (Integer)(attrNameToTypeMap.get(typeName)); if (type == null) { if (typeName != null && typeName.length() > 0 && typeName.charAt(0) == '(') { // Xerces 1.4.X reports attributes of enumerated type with // a type string equals to the enumeration definition, i.e. // starting with a parenthesis. return Attribute.ENUMERATED_TYPE; } else { return Attribute.UNDECLARED_TYPE; } } else { return type.intValue(); } } /** * Receives an object for locating the origin of SAX document * events. This method is invoked by the SAX parser. *

* {@link org.jdom.JDOMFactory} implementations can use the * {@link #getDocumentLocator} method to get access to the * {@link Locator} during parse. *

* * @param locator Locator an object that can return * the location of any SAX document event. */ public void setDocumentLocator(Locator locator) { this.locator = locator; } /** * Provides access to the {@link Locator} object provided by the * SAX parser. * * @return Locator an object that can return * the location of any SAX document event. */ public Locator getDocumentLocator() { return locator; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/JDOMParseException.java0000644000175000017500000001470711377161311024765 0ustar /*-- $Id: JDOMParseException.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; import org.jdom.*; import org.xml.sax.*; /** * Thrown during parse errors, with information about where the parse error * occurred as well as access to the partially built document. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Laurent Bihanic */ public class JDOMParseException extends JDOMException { private static final String CVS_ID = "@(#) $RCSfile: JDOMParseException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** * The portion of the document that was successfully built before * the parse error occurred. */ private final Document partialDocument; /** * This will create a parse Exception with the given * message and wrap the Exception that cause a document * parse to fail. * * @param message String message indicating * the problem that occurred. * @param cause Throwable that caused this * to be thrown. */ public JDOMParseException(String message, Throwable cause) { this(message, cause, null); } /** * This will create a parse Exception with the given * message and the partial document and wrap the * Exception that cause a document parse to fail. * * @param message String message indicating * the problem that occurred. * @param cause Throwable that caused this * to be thrown. * @param partialDocument Document the portion of * the input XML document that was * successfully built. */ public JDOMParseException(String message, Throwable cause, Document partialDocument) { super(message, cause); this.partialDocument = partialDocument; } /** * Returns the partial document that was successfully built before * the error occurred. * * @return the partial document or null if none. */ public Document getPartialDocument() { return partialDocument; } /** * Returns the public identifier of the entity where the * parse error occurred. * * @return a string containing the public identifier, or * null if the information is not available. */ public String getPublicId() { return (getCause() instanceof SAXParseException)? ((SAXParseException)getCause()).getPublicId(): null; } /** * Returns the system identifier of the entity where the * parse error occurred. * * @return a string containing the system identifier, or * null if the information is not available. */ public String getSystemId() { return (getCause() instanceof SAXParseException)? ((SAXParseException)getCause()).getSystemId(): null; } /** * Returns the line number of the end of the text where the * parse error occurred. *

* The first line in the document is line 1.

* * @return an integer representing the line number, or -1 * if the information is not available. */ public int getLineNumber() { return (getCause() instanceof SAXParseException)? ((SAXParseException)getCause()).getLineNumber(): -1; } /** * Returns the column number of the end of the text where the * parse error occurred. *

* The first column in a line is position 1.

* * @return an integer representing the column number, or -1 * if the information is not available. */ public int getColumnNumber() { return (getCause() instanceof SAXParseException)? ((SAXParseException)getCause()).getColumnNumber(): -1; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/TextBuffer.java0000644000175000017500000001440211377161311023430 0ustar /*-- $Id: TextBuffer.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; /** * A non-public utility class similar to StringBuffer but optimized for XML * parsing where the common case is that you get only one chunk of characters * per text section. TextBuffer stores the first chunk of characters in a * String, which can just be returned directly if no second chunk is received. * Subsequent chunks are stored in a supplemental char array (like StringBuffer * uses). In this case, the returned text will be the first String chunk, * concatenated with the subsequent chunks stored in the char array. This * provides optimal performance in the common case, while still providing very * good performance in the uncommon case. Furthermore, avoiding StringBuffer * means that no extra unused char array space will be kept around after parsing * is through. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Bradley S. Huffman * @author Alex Rosen */ class TextBuffer { private static final String CVS_ID = "@(#) $RCSfile: TextBuffer.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** The first part of the text value (the "prefix"). If null, the * text value is the empty string. */ private String prefixString; /** The rest of the text value (the "suffix"). Only the first * code>arraySize characters are valid. */ private char[] array; /** The size of the rest of the text value. If zero, then only * code>prefixString contains the text value. */ private int arraySize; /** Constructor */ TextBuffer() { array = new char[4096]; // initial capacity arraySize = 0; } /** Append the specified text to the text value of this buffer. */ void append(char[] source, int start, int count) { if (prefixString == null) { // This is the first chunk, so we'll store it in the prefix string prefixString = new String(source, start, count); } else { // This is a subsequent chunk, so we'll add it to the char array ensureCapacity(arraySize + count); System.arraycopy(source, start, array, arraySize, count); arraySize += count; } } /** Returns the size of the text value. */ int size() { if (prefixString == null) { return 0; } else { return prefixString.length() + arraySize; } } /** Clears the text value and prepares the TextBuffer for reuse. */ void clear() { arraySize = 0; prefixString = null; } /** Returns the text value stored in the buffer. */ public String toString() { if (prefixString == null) { return ""; } String str = ""; if (arraySize == 0) { // Char array is empty, so the text value is just prefixString. str = prefixString; } else { // Char array is not empty, so the text value is prefixString // plus the char array. str = new StringBuffer(prefixString.length() + arraySize) .append(prefixString) .append(array, 0, arraySize) // JCLIC modification //.toString(); .substring(0); } return str; } // Ensure that the char array has room for at least "csize" characters. private void ensureCapacity(int csize) { int capacity = array.length; if (csize > capacity) { char[] old = array; int nsize = capacity; while (csize > nsize) { nsize += (capacity/2); } array = new char[nsize]; System.arraycopy(old, 0, array, 0, arraySize); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/SAXBuilder.java0000644000175000017500000010654111377161311023322 0ustar /*-- $Id: SAXBuilder.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; import java.io.*; import java.lang.reflect.*; import java.net.*; import java.util.*; import org.jdom.*; import org.xml.sax.*; import org.xml.sax.helpers.XMLReaderFactory; /** * Builds a JDOM document from files, streams, readers, URLs, or a SAX {@link * org.xml.sax.InputSource} instance using a SAX parser. The builder uses a * third-party SAX parser (chosen by JAXP by default, or you can choose * manually) to handle the parsing duties and simply listens to the SAX events * to construct a document. Details which SAX does not provide, such as * whitespace outside the root element, are not represented in the JDOM * document. Information about SAX can be found at http://www.saxproject.org. *

* Known issues: Relative paths for a {@link DocType} or {@link EntityRef} may * be converted by the SAX parser into absolute paths. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Jason Hunter * @author Brett McLaughlin * @author Dan Schaffer * @author Philip Nelson * @author Alex Rosen */ public class SAXBuilder { private static final String CVS_ID = "@(#) $RCSfile: SAXBuilder.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** * Default parser class to use. This is used when no other parser * is given and JAXP isn't available. */ private static final String DEFAULT_SAX_DRIVER = "org.apache.xerces.parsers.SAXParser"; /** Whether validation should occur */ private boolean validate; /** Whether expansion of entities should occur */ private boolean expand = true; /** Adapter class to use */ private String saxDriverClass; /** ErrorHandler class to use */ private ErrorHandler saxErrorHandler = null; /** EntityResolver class to use */ private EntityResolver saxEntityResolver = null; /** DTDHandler class to use */ private DTDHandler saxDTDHandler = null; /** XMLFilter instance to use */ private XMLFilter saxXMLFilter = null; /** The factory for creating new JDOM objects */ private JDOMFactory factory = new DefaultJDOMFactory(); /** Whether to ignore ignorable whitespace */ private boolean ignoringWhite = false; /** User-specified features to be set on the SAX parser */ private HashMap features = new HashMap(5); /** User-specified properties to be set on the SAX parser */ private HashMap properties = new HashMap(5); /** * Whether parser reuse is allowed. *

Default: true

*/ private boolean reuseParser = true; /** The current SAX parser, if parser reuse has been activated. */ private XMLReader saxParser = null; /** * Creates a new SAXBuilder which will attempt to first locate * a parser via JAXP, then will try to use a set of default * SAX Drivers. The underlying parser will not validate. */ public SAXBuilder() { this(false); } /** * Creates a new SAXBuilder which will attempt to first locate * a parser via JAXP, then will try to use a set of default * SAX Drivers. The underlying parser will validate or not * according to the given parameter. * * @param validate boolean indicating if * validation should occur. */ public SAXBuilder(boolean validate) { this.validate = validate; } /** * Creates a new SAXBuilder using the specified SAX parser. * The underlying parser will not validate. * * @param saxDriverClass String name of SAX Driver * to use for parsing. */ public SAXBuilder(String saxDriverClass) { this(saxDriverClass, false); } /** * Creates a new SAXBuilder using the specified SAX parser. * The underlying parser will validate or not * according to the given parameter. * * @param saxDriverClass String name of SAX Driver * to use for parsing. * @param validate boolean indicating if * validation should occur. */ public SAXBuilder(String saxDriverClass, boolean validate) { this.saxDriverClass = saxDriverClass; this.validate = validate; } /** * Returns the driver class assigned in the constructor, or null if none. * * @return the driver class assigned in the constructor */ public String getDriverClass() { return saxDriverClass; } /** * Returns the current {@link org.jdom.JDOMFactory} in use. * @return the factory in use */ public JDOMFactory getFactory() { return factory; } /** * This sets a custom JDOMFactory for the builder. Use this to build * the tree with your own subclasses of the JDOM classes. * * @param factory JDOMFactory to use */ public void setFactory(JDOMFactory factory) { this.factory = factory; } /** * Returns whether validation is to be performed during the build. * * @return whether validation is to be performed during the build */ public boolean getValidation() { return validate; } /** * This sets validation for the builder. * * @param validate boolean indicating whether validation * should occur. */ public void setValidation(boolean validate) { this.validate = validate; } /** * Returns the {@link ErrorHandler} assigned, or null if none. * @return the ErrorHandler assigned, or null if none */ public ErrorHandler getErrorHandler() { return saxErrorHandler; } /** * This sets custom ErrorHandler for the Builder. * * @param errorHandler ErrorHandler */ public void setErrorHandler(ErrorHandler errorHandler) { saxErrorHandler = errorHandler; } /** * Returns the {@link EntityResolver} assigned, or null if none. * * @return the EntityResolver assigned */ public EntityResolver getEntityResolver() { return saxEntityResolver; } /** * This sets custom EntityResolver for the Builder. * * @param entityResolver EntityResolver */ public void setEntityResolver(EntityResolver entityResolver) { saxEntityResolver = entityResolver; } /** * Returns the {@link DTDHandler} assigned, or null if none. * * @return the DTDHandler assigned */ public DTDHandler getDTDHandler() { return saxDTDHandler; } /** * This sets custom DTDHandler for the Builder. * * @param dtdHandler DTDHandler */ public void setDTDHandler(DTDHandler dtdHandler) { saxDTDHandler = dtdHandler; } /** * Returns the {@link XMLFilter} used during parsing, or null if none. * * @return the XMLFilter used during parsing */ public XMLFilter getXMLFilter() { return saxXMLFilter; } /** * This sets a custom {@link org.xml.sax.XMLFilter} for the builder. * * @param xmlFilter the filter to use */ public void setXMLFilter(XMLFilter xmlFilter) { saxXMLFilter = xmlFilter; } /** * Returns whether element content whitespace is to be ignored during the * build. * * @return whether element content whitespace is to be ignored during the * build */ public boolean getIgnoringElementContentWhitespace() { return ignoringWhite; } /** * Specifies whether or not the parser should elminate whitespace in * element content (sometimes known as "ignorable whitespace") when * building the document. Only whitespace which is contained within * element content that has an element only content model will be * eliminated (see XML Rec 3.2.1). For this setting to take effect * requires that validation be turned on. The default value of this * setting is false. * * @param ignoringWhite Whether to ignore ignorable whitespace */ public void setIgnoringElementContentWhitespace(boolean ignoringWhite) { this.ignoringWhite = ignoringWhite; } /** * Returns whether the contained SAX parser instance is reused across * multiple parses. The default is true. * * @return whether the contained SAX parser instance is reused across * multiple parses */ public boolean getReuseParser() { return reuseParser; } /** * Specifies whether this builder shall reuse the same SAX parser * when performing subsequent parses or allocate a new parser for * each parse. The default value of this setting is * true (parser reuse). *

* Note: As SAX parser instances are not thread safe, * the parser reuse feature should not be used with SAXBuilder instances * shared among threads.

* * @param reuseParser Whether to reuse the SAX parser. */ public void setReuseParser(boolean reuseParser) { this.reuseParser = reuseParser; this.saxParser = null; } /** * This sets a feature on the SAX parser. See the SAX documentation for *

*

* NOTE: SAXBuilder requires that some particular features of the SAX parser be * set up in certain ways for it to work properly. The list of such features * may change in the future. Therefore, the use of this method may cause * parsing to break, and even if it doesn't break anything today it might * break parsing in a future JDOM version, because what JDOM parsers require * may change over time. Use with caution. *

* * @param name The feature name, which is a fully-qualified URI. * @param value The requested state of the feature (true or false). */ public void setFeature(String name, boolean value) { // Save the specified feature for later. features.put(name, new Boolean(value)); } /** * This sets a property on the SAX parser. See the SAX documentation for * more information. *

* NOTE: SAXBuilder requires that some particular properties of the SAX parser be * set up in certain ways for it to work properly. The list of such properties * may change in the future. Therefore, the use of this method may cause * parsing to break, and even if it doesn't break anything today it might * break parsing in a future JDOM version, because what JDOM parsers require * may change over time. Use with caution. *

* * @param name The property name, which is a fully-qualified URI. * @param value The requested value for the property. */ public void setProperty(String name, Object value) { // Save the specified property for later. properties.put(name, value); } /** * This builds a document from the supplied * input source. * * @param in InputSource to read from * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed */ public Document build(InputSource in) throws JDOMException, IOException { SAXHandler contentHandler = null; try { // Create and configure the content handler. contentHandler = createContentHandler(); configureContentHandler(contentHandler); XMLReader parser = this.saxParser; if (parser == null) { // Create and configure the parser. parser = createParser(); // Install optional filter if (saxXMLFilter != null) { // Connect filter chain to parser XMLFilter root = saxXMLFilter; while (root.getParent() instanceof XMLFilter) { root = (XMLFilter)root.getParent(); } root.setParent(parser); // Read from filter parser = saxXMLFilter; } // Configure parser configureParser(parser, contentHandler); if (reuseParser == true) { this.saxParser = parser; } } else { // Reset content handler as SAXHandler instances cannot // be reused configureParser(parser, contentHandler); } // Parse the document. parser.parse(in); return contentHandler.getDocument(); } catch (SAXParseException e) { Document doc = contentHandler.getDocument(); if (doc.hasRootElement() == false) { doc = null; } String systemId = e.getSystemId(); if (systemId != null) { throw new JDOMParseException("Error on line " + e.getLineNumber() + " of document " + systemId, e, doc); } else { throw new JDOMParseException("Error on line " + e.getLineNumber(), e, doc); } } catch (SAXException e) { throw new JDOMParseException("Error in building: " + e.getMessage(), e, contentHandler.getDocument()); } finally { // Explicitly nullify the handler to encourage GC // It's a stack var so this shouldn't be necessary, but it // seems to help on some JVMs contentHandler = null; } } /** * This creates the SAXHandler that will be used to build the Document. * * @return SAXHandler - resultant SAXHandler object. */ protected SAXHandler createContentHandler() { SAXHandler contentHandler = new SAXHandler(factory); return contentHandler; } /** * This configures the SAXHandler that will be used to build the Document. *

* The default implementation simply passes through some configuration * settings that were set on the SAXBuilder: setExpandEntities() and * setIgnoringElementContentWhitespace(). *

*/ protected void configureContentHandler(SAXHandler contentHandler) { // Setup pass through behavior contentHandler.setExpandEntities(expand); contentHandler.setIgnoringElementContentWhitespace(ignoringWhite); } /** * This creates the XMLReader to be used for reading the XML document. *

* The default behavior is to (1) use the saxDriverClass, if it has been * set, (2) try to obtain a parser from JAXP, if it is available, and * (3) if all else fails, use a hard-coded default parser (currently * the Xerces parser). Subclasses may override this method to determine * the parser to use in a different way. *

* * @return XMLReader - resultant XMLReader object. */ protected XMLReader createParser() throws JDOMException { XMLReader parser = null; if (saxDriverClass != null) { // The user knows that they want to use a particular class try { parser = XMLReaderFactory.createXMLReader(saxDriverClass); // Configure parser setFeaturesAndProperties(parser, true); } catch (SAXException e) { throw new JDOMException("Could not load " + saxDriverClass, e); } } else { // Try using JAXP... // Note we need JAXP 1.1, and if JAXP 1.0 is all that's // available then the getXMLReader call fails and we skip // to the hard coded default parser try { // Get factory class and method. Class factoryClass = Class.forName("org.jdom.input.JAXPParserFactory"); Method createParser = factoryClass.getMethod("createParser", new Class[] { boolean.class, Map.class, Map.class }); // Create SAX parser. parser = (XMLReader)createParser.invoke(null, new Object[] { new Boolean(validate), features, properties }); // Configure parser setFeaturesAndProperties(parser, false); } catch (JDOMException e) { throw e; } catch (NoClassDefFoundError e) { // The class loader failed to resolve the dependencies // of org.jdom.input.JAXPParserFactory. This probably means // that no JAXP parser is present in its class path. // => Ignore and try allocating default SAX parser instance. } catch (Exception e) { // Ignore and try allocating default SAX parser instance. } } // Check to see if we got a parser yet, if not, try to use a // hard coded default if (parser == null) { try { parser = XMLReaderFactory.createXMLReader(DEFAULT_SAX_DRIVER); // System.out.println("using default " + DEFAULT_SAX_DRIVER); saxDriverClass = parser.getClass().getName(); // Configure parser setFeaturesAndProperties(parser, true); } catch (SAXException e) { throw new JDOMException("Could not load default SAX parser: " + DEFAULT_SAX_DRIVER, e); } } return parser; } /** * This configures the XMLReader to be used for reading the XML document. *

* The default implementation sets various options on the given XMLReader, * such as validation, DTD resolution, entity handlers, etc., according * to the options that were set (e.g. via setEntityResolver) * and set various SAX properties and features that are required for JDOM * internals. These features may change in future releases, so change this * behavior at your own risk. *

*/ protected void configureParser(XMLReader parser, SAXHandler contentHandler) throws JDOMException { // Setup SAX handlers. parser.setContentHandler(contentHandler); if (saxEntityResolver != null) { parser.setEntityResolver(saxEntityResolver); } if (saxDTDHandler != null) { parser.setDTDHandler(saxDTDHandler); } else { parser.setDTDHandler(contentHandler); } if (saxErrorHandler != null) { parser.setErrorHandler(saxErrorHandler); } else { parser.setErrorHandler(new BuilderErrorHandler()); } // Setup lexical reporting. boolean lexicalReporting = false; try { parser.setProperty("http://xml.org/sax/handlers/LexicalHandler", contentHandler); lexicalReporting = true; } catch (SAXNotSupportedException e) { // No lexical reporting available } catch (SAXNotRecognizedException e) { // No lexical reporting available } // Some parsers use alternate property for lexical handling (grr...) if (!lexicalReporting) { try { parser.setProperty( "http://xml.org/sax/properties/lexical-handler", contentHandler); lexicalReporting = true; } catch (SAXNotSupportedException e) { // No lexical reporting available } catch (SAXNotRecognizedException e) { // No lexical reporting available } } // Try setting the DeclHandler if entity expansion is off if (!expand) { try { parser.setProperty( "http://xml.org/sax/properties/declaration-handler", contentHandler); } catch (SAXNotSupportedException e) { // No lexical reporting available } catch (SAXNotRecognizedException e) { // No lexical reporting available } } } private void setFeaturesAndProperties(XMLReader parser, boolean coreFeatures) throws JDOMException { // Set any user-specified features on the parser. Iterator iter = features.keySet().iterator(); while (iter.hasNext()) { String name = (String)iter.next(); Boolean value = (Boolean)features.get(name); internalSetFeature(parser, name, value.booleanValue(), name); } // Set any user-specified properties on the parser. iter = properties.keySet().iterator(); while (iter.hasNext()) { String name = (String)iter.next(); internalSetProperty(parser, name, properties.get(name), name); } if (coreFeatures) { // Set validation. try { internalSetFeature(parser, "http://xml.org/sax/features/validation", validate, "Validation"); } catch (JDOMException e) { // If validation is not supported, and the user is requesting // that we don't validate, that's fine - don't throw an // exception. if (validate) throw e; } // Setup some namespace features. internalSetFeature(parser, "http://xml.org/sax/features/namespaces", true, "Namespaces"); internalSetFeature(parser, "http://xml.org/sax/features/namespace-prefixes", true, "Namespace prefixes"); } // Set entity expansion // Note SAXHandler can work regardless of how this is set, but when // entity expansion it's worth it to try to tell the parser not to // even bother with external general entities. // Apparently no parsers yet support this feature. // XXX It might make sense to setEntityResolver() with a resolver // that simply ignores external general entities try { if (parser.getFeature("http://xml.org/sax/features/external-general-entities") != expand) { parser.setFeature("http://xml.org/sax/features/external-general-entities", expand); } } catch (SAXNotRecognizedException e) { /* Ignore... */ } catch (SAXNotSupportedException e) { /* Ignore... */ } } /** * Tries to set a feature on the parser. If the feature cannot be set, * throws a JDOMException describing the problem. */ private void internalSetFeature(XMLReader parser, String feature, boolean value, String displayName) throws JDOMException { try { parser.setFeature(feature, value); } catch (SAXNotSupportedException e) { throw new JDOMException( displayName + " feature not supported for SAX driver " + parser.getClass().getName()); } catch (SAXNotRecognizedException e) { throw new JDOMException( displayName + " feature not recognized for SAX driver " + parser.getClass().getName()); } } /** *

* Tries to set a property on the parser. If the property cannot be set, * throws a JDOMException describing the problem. *

*/ private void internalSetProperty(XMLReader parser, String property, Object value, String displayName) throws JDOMException { try { parser.setProperty(property, value); } catch (SAXNotSupportedException e) { throw new JDOMException( displayName + " property not supported for SAX driver " + parser.getClass().getName()); } catch (SAXNotRecognizedException e) { throw new JDOMException( displayName + " property not recognized for SAX driver " + parser.getClass().getName()); } } /** *

* This builds a document from the supplied * input stream. *

* * @param in InputStream to read from * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed. */ public Document build(InputStream in) throws JDOMException, IOException { return build(new InputSource(in)); } /** *

* This builds a document from the supplied * filename. *

* * @param file File to read from * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed */ public Document build(File file) throws JDOMException, IOException { try { URL url = fileToURL(file); return build(url); } catch (MalformedURLException e) { throw new JDOMException("Error in building", e); } } /** *

* This builds a document from the supplied * URL. *

* * @param url URL to read from. * @return Document - resultant Document object. * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed. */ public Document build(URL url) throws JDOMException, IOException { String systemID = url.toExternalForm(); return build(new InputSource(systemID)); } /** *

* This builds a document from the supplied * input stream. *

* * @param in InputStream to read from. * @param systemId base for resolving relative URIs * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed */ public Document build(InputStream in, String systemId) throws JDOMException, IOException { InputSource src = new InputSource(in); src.setSystemId(systemId); return build(src); } /** *

* This builds a document from the supplied * Reader. It's the programmer's responsibility to make sure * the reader matches the encoding of the file. It's often easier * and safer to use an InputStream rather than a Reader, and to let the * parser auto-detect the encoding from the XML declaration. *

* * @param characterStream Reader to read from * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed */ public Document build(Reader characterStream) throws JDOMException, IOException { return build(new InputSource(characterStream)); } /** *

* This builds a document from the supplied * Reader. It's the programmer's responsibility to make sure * the reader matches the encoding of the file. It's often easier * and safer to use an InputStream rather than a Reader, and to let the * parser auto-detect the encoding from the XML declaration. *

* * @param characterStream Reader to read from. * @param systemId base for resolving relative URIs * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed */ public Document build(Reader characterStream, String systemId) throws JDOMException, IOException { InputSource src = new InputSource(characterStream); src.setSystemId(systemId); return build(src); } /** *

* This builds a document from the supplied * URI. *

* @param systemId URI for the input * @return Document resultant Document object * @throws JDOMException when errors occur in parsing * @throws IOException when an I/O error prevents a document * from being fully parsed */ public Document build(String systemId) throws JDOMException, IOException { return build(new InputSource(systemId)); } // /** // * Imitation of File.toURL(), a JDK 1.2 method, reimplemented // * here to work with JDK 1.1. // * // * @see java.io.File // * // * @param f the file to convert // * @return the file path converted to a file: URL // */ // protected URL fileToURL(File f) throws MalformedURLException { // String path = f.getAbsolutePath(); // if (File.separatorChar != '/') { // path = path.replace(File.separatorChar, '/'); // } // if (!path.startsWith("/")) { // path = "/" + path; // } // if (!path.endsWith("/") && f.isDirectory()) { // path = path + "/"; // } // return new URL("file", "", path); // } /** Custom File.toUrl() implementation to handle special chars in file names * * @param file file object whose path will be converted * @return URL form of the file, with special characters handled * @throws MalformedURLException if there's a problem constructing a URL */ private static URL fileToURL(File file) throws MalformedURLException { StringBuffer buffer = new StringBuffer(); String path = file.getAbsolutePath(); // Convert non-URL style file separators if (File.separatorChar != '/') { path = path.replace(File.separatorChar, '/'); } // Make sure it starts at root if (!path.startsWith("/")) { buffer.append('/'); } // Copy, converting URL special characters as we go int len = path.length(); for (int i = 0; i < len; i++) { char c = path.charAt(i); if (c == ' ') buffer.append("%20"); else if (c == '#') buffer.append("%23"); else if (c == '%') buffer.append("%25"); else if (c == '&') buffer.append("%26"); else if (c == ';') buffer.append("%3B"); else if (c == '<') buffer.append("%3C"); else if (c == '=') buffer.append("%3D"); else if (c == '>') buffer.append("%3E"); else if (c == '?') buffer.append("%3F"); else if (c == '~') buffer.append("%7E"); else buffer.append(c); } // Make sure directories end with slash if (!path.endsWith("/") && file.isDirectory()) { buffer.append('/'); } // Return URL return new URL("file", "", buffer // JCLIC modification //.toString() .substring(0) ); } /** * Returns whether or not entities are being expanded into normal text * content. * * @return whether entities are being expanded */ public boolean getExpandEntities() { return expand; } /** *

* This sets whether or not to expand entities for the builder. * A true means to expand entities as normal content. A false means to * leave entities unexpanded as EntityRef objects. The * default is true. *

*

* When this setting is false, the internal DTD subset is retained; when * this setting is true, the internal DTD subset is not retained. *

*

* Note that Xerces (at least up to 1.4.4) has a bug where entities * in attribute values will be misreported if this flag is turned off, * resulting in entities to appear within element content. When turning * entity expansion off either avoid entities in attribute values, or * use another parser like Crimson. * http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6111 *

* * @param expand boolean indicating whether entity expansion * should occur. */ public void setExpandEntities(boolean expand) { this.expand = expand; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/BuilderErrorHandler.java0000644000175000017500000001064411377161311025254 0ustar /*-- $Id: BuilderErrorHandler.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; import org.xml.sax.*; /** * The standard JDOM error handler implementation. * * @author Jason Hunter * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ */ public class BuilderErrorHandler implements ErrorHandler { private static final String CVS_ID = "@(#) $RCSfile: BuilderErrorHandler.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** * This method is called when a warning has occurred; this indicates * that while no XML rules were broken, something appears to be * incorrect or missing. * The implementation of this method here is a "no op". * * @param exception SAXParseException that occurred. * @throws SAXException when things go wrong */ public void warning(SAXParseException exception) throws SAXException { // nothing } /** * This method is called in response to an error that has occurred; * this indicates that a rule was broken, typically in validation, but * that parsing could reasonably continue. * The implementation of this method here is to rethrow the exception. * * @param exception SAXParseException that occurred. * @throws SAXException when things go wrong */ public void error(SAXParseException exception) throws SAXException { throw exception; } /** * This method is called in response to a fatal error; this indicates that * a rule has been broken that makes continued parsing either impossible * or an almost certain waste of time. * The implementation of this method here is to rethrow the exception. * * @param exception SAXParseException that occurred. * @throws SAXException when things go wrong */ public void fatalError(SAXParseException exception) throws SAXException { throw exception; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/input/DOMBuilder.java0000644000175000017500000003144711377161311023310 0ustar /*-- $Id: DOMBuilder.java,v 1.1.1.1 2005/12/02 14:16:50 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.input; import org.jdom.*; import org.jdom.Document; import org.jdom.Element; import org.w3c.dom.*; /** * Builds a JDOM {@link org.jdom.Document org.jdom.Document} from a pre-existing * DOM {@link org.w3c.dom.Document org.w3c.dom.Document}. Also handy for testing * builds from files to sanity check {@link SAXBuilder}. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:50 $ * @author Brett McLaughlin * @author Jason Hunter * @author Philip Nelson * @author Kevin Regan * @author Yusuf Goolamabbas * @author Dan Schaffer * @author Bradley S. Huffman */ public class DOMBuilder { private static final String CVS_ID = "@(#) $RCSfile: DOMBuilder.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:50 $ $Name: $"; /** Adapter class to use */ private String adapterClass; /** The factory for creating new JDOM objects */ private JDOMFactory factory = new DefaultJDOMFactory(); /** * This creates a new DOMBuilder which will attempt to first locate * a parser via JAXP, then will try to use a set of default parsers. * The underlying parser will not validate. */ public DOMBuilder() { } /** * This creates a new DOMBuilder using the specified DOMAdapter * implementation as a way to choose the underlying parser. * The underlying parser will not validate. * * @param adapterClass String name of class * to use for DOM building. */ public DOMBuilder(String adapterClass) { this.adapterClass = adapterClass; } /* * This sets a custom JDOMFactory for the builder. Use this to build * the tree with your own subclasses of the JDOM classes. * * @param factory JDOMFactory to use */ public void setFactory(JDOMFactory factory) { this.factory = factory; } /** * Returns the current {@link org.jdom.JDOMFactory} in use. * @return the factory in use */ public JDOMFactory getFactory() { return factory; } /** * This will build a JDOM tree from an existing DOM tree. * * @param domDocument org.w3c.dom.Document object * @return Document - JDOM document object. */ public Document build(org.w3c.dom.Document domDocument) { Document doc = factory.document(null); buildTree(domDocument, doc, null, true); return doc; } /** * This will build a JDOM Element from an existing DOM Element * * @param domElement org.w3c.dom.Element object * @return Element - JDOM Element object */ public org.jdom.Element build(org.w3c.dom.Element domElement) { Document doc = factory.document(null); buildTree(domElement, doc, null, true); return doc.getRootElement(); } /** * This takes a DOM Node and builds up * a JDOM tree, recursing until the DOM tree is exhausted * and the JDOM tree results. * * @param node Code to examine. * @param doc JDOM Document being built. * @param current Element that is current parent. * @param atRoot boolean indicating whether at root level. */ private void buildTree(Node node, Document doc, Element current, boolean atRoot) { // Recurse through the tree switch (node.getNodeType()) { case Node.DOCUMENT_NODE: NodeList nodes = node.getChildNodes(); for (int i=0, size=nodes.getLength(); i= 0) { prefix = nodeName.substring(0, colon); localName = nodeName.substring(colon + 1); } // Get element's namespace Namespace ns = null; String uri = node.getNamespaceURI(); if (uri == null) { ns = (current == null) ? Namespace.NO_NAMESPACE : current.getNamespace(prefix); } else { ns = Namespace.getNamespace(prefix, uri); } Element element = factory.element(localName, ns); if (atRoot) { // If at root, set as document root doc.setRootElement(element); // XXX should we use a factory call? } else { // else add to parent element factory.addContent(current, element); } // Add namespaces NamedNodeMap attributeList = node.getAttributes(); int attsize = attributeList.getLength(); for (int i = 0; i < attsize; i++) { Attr att = (Attr) attributeList.item(i); String attname = att.getName(); if (attname.startsWith("xmlns")) { String attPrefix = ""; colon = attname.indexOf(':'); if (colon >= 0) { attPrefix = attname.substring(colon + 1); } String attvalue = att.getValue(); Namespace declaredNS = Namespace.getNamespace(attPrefix, attvalue); // Add as additional namespaces if it's different // than this element's namespace (perhaps we should // also have logic not to mark them as additional if // it's been done already, but it probably doesn't // matter) if (prefix.equals(attPrefix)) { element.setNamespace(declaredNS); } else { factory.addNamespaceDeclaration(element, declaredNS); } } } // Add attributes for (int i = 0; i < attsize; i++) { Attr att = (Attr) attributeList.item(i); String attname = att.getName(); if ( !attname.startsWith("xmlns")) { String attPrefix = ""; String attLocalName = attname; colon = attname.indexOf(':'); if (colon >= 0) { attPrefix = attname.substring(0, colon); attLocalName = attname.substring(colon + 1); } String attvalue = att.getValue(); // Get attribute's namespace Namespace attns = null; if ("".equals(attPrefix)) { attns = Namespace.NO_NAMESPACE; } else { attns = element.getNamespace(attPrefix); } Attribute attribute = factory.attribute(attLocalName, attvalue, attns); factory.setAttribute(element, attribute); } } // Recurse on child nodes // The list should never be null nor should it ever contain // null nodes, but some DOM impls are broken NodeList children = node.getChildNodes(); if (children != null) { int size = children.getLength(); for (int i = 0; i < size; i++) { Node item = children.item(i); if (item != null) { buildTree(item, doc, element, false); } } } break; case Node.TEXT_NODE: String data = node.getNodeValue(); factory.addContent(current, factory.text(data)); break; case Node.CDATA_SECTION_NODE: String cdata = node.getNodeValue(); factory.addContent(current, factory.cdata(cdata)); break; case Node.PROCESSING_INSTRUCTION_NODE: if (atRoot) { factory.addContent(doc, factory.processingInstruction(node.getNodeName(), node.getNodeValue())); } else { factory.addContent(current, factory.processingInstruction(node.getNodeName(), node.getNodeValue())); } break; case Node.COMMENT_NODE: if (atRoot) { factory.addContent(doc, factory.comment(node.getNodeValue())); } else { factory.addContent(current, factory.comment(node.getNodeValue())); } break; case Node.ENTITY_REFERENCE_NODE: EntityRef entity = factory.entityRef(node.getNodeName()); factory.addContent(current, entity); break; case Node.ENTITY_NODE: // ?? break; case Node.DOCUMENT_TYPE_NODE: DocumentType domDocType = (DocumentType)node; String publicID = domDocType.getPublicId(); String systemID = domDocType.getSystemId(); String internalDTD = domDocType.getInternalSubset(); DocType docType = factory.docType(domDocType.getName()); docType.setPublicID(publicID); docType.setSystemID(systemID); docType.setInternalSubset(internalDTD); factory.addContent(doc, docType); break; } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Text.java0000644000175000017500000002157111377161311021144 0ustar /*-- $Id: Text.java,v 1.1.1.1 2005/12/02 14:16:48 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * Character-based XML content. Provides a modular, parentable method of * representing text. Text makes no guarantees about the underlying textual * representation of character data, but does expose that data as a Java String. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:48 $ * @author Brett McLaughlin * @author Jason Hunter * @author Bradley S. Huffman */ public class Text extends Content { private static final String CVS_ID = "@(#) $RCSfile: Text.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:48 $ $Name: $"; static final String EMPTY_STRING = ""; /** The actual character content */ // XXX See http://www.servlets.com/archive/servlet/ReadMsg?msgId=8612 // from elharo for a description of why Java characters may not suffice // long term protected String value; /** * This is the protected, no-args constructor standard in all JDOM * classes. It allows subclassers to get a raw instance with no * initialization. */ protected Text() { } /** * This constructor creates a new Text node, with the * supplied string value as it's character content. * * @param str the node's character content. * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) */ public Text(String str) { setText(str); } /** * This returns the value of this Text node as a Java * String. * * @return String - character content of this node. */ public String getText() { return value; } /** * This returns the textual content with all surrounding whitespace * removed. If only whitespace exists, the empty string is returned. * * @return trimmed text content or empty string */ public String getTextTrim() { return getText().trim(); } /** * This returns the textual content with all surrounding whitespace * removed and internal whitespace normalized to a single space. If * only whitespace exists, the empty string is returned. * * @return normalized text content or empty string */ public String getTextNormalize() { return normalizeString(getText()); } /** * This returns a new string with all surrounding whitespace * removed and internal whitespace normalized to a single space. If * only whitespace exists, the empty string is returned. *

* Per XML 1.0 Production 3 whitespace includes: #x20, #x9, #xD, #xA *

* * @param str string to be normalized. * @return normalized string or empty string */ public static String normalizeString(String str) { if (str == null) return EMPTY_STRING; char[] c = str.toCharArray(); char[] n = new char[c.length]; boolean white = true; int pos = 0; for (int i = 0; i < c.length; i++) { if (" \t\n\r".indexOf(c[i]) != -1) { if (!white) { n[pos++] = ' '; white = true; } } else { n[pos++] = c[i]; white = false; } } if (white && pos > 0) { pos--; } return new String(n, 0, pos); } /** * This will set the value of this Text node. * * @param str value for node's content. * @return the object on which the method was invoked * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) */ public Text setText(String str) { String reason; if (str == null) { value = EMPTY_STRING; return this; } if ((reason = Verifier.checkCharacterData(str)) != null) { throw new IllegalDataException(str, "character content", reason); } value = str; return this; } /** * This will append character content to whatever content already * exists within this Text node. * * @param str character content to append. * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) */ public void append(String str) { String reason; if (str == null) { return; } if ((reason = Verifier.checkCharacterData(str)) != null) { throw new IllegalDataException(str, "character content", reason); } if (str == EMPTY_STRING) value = str; else value += str; } /** * This will append the content of another Text node * to this node. * * @param text Text node to append. */ public void append(Text text) { if (text == null) { return; } value += text.getText(); } /** * Returns the XPath 1.0 string value of this element, which is the * text itself. * * @return the text */ public String getValue() { return value; } /** * This returns a String representation of the * Text node, suitable for debugging. If the XML * representation of the Text node is desired, * either {@link #getText} or * {@link org.jdom.output.XMLOutputter#outputString(Text)}
* should be used. * * @return String - information about this node. */ public String toString() { return new StringBuffer(64) .append("[Text: ") .append(getText()) .append("]") // JCLIC modification //.toString(); .substring(0); } /** * This will return a clone of this Text node, with the * same character content, but no parent. * * @return Text - cloned node. */ public Object clone() { Text text = (Text)super.clone(); text.value = value; return text; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Content.java0000644000175000017500000001452611377161311021634 0ustar /*-- $Id: Content.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.io.*; /** * Superclass for JDOM objects which can be legal child content * of {@link org.jdom.Parent} nodes. * * @see org.jdom.Comment * @see org.jdom.DocType * @see org.jdom.Element * @see org.jdom.EntityRef * @see org.jdom.Parent * @see org.jdom.ProcessingInstruction * @see org.jdom.Text * * @author Bradley S. Huffman * @author Jason Hunter * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ */ public abstract class Content implements Cloneable, Serializable { protected Parent parent = null; protected Content() {} /** * Detaches this child from its parent or does nothing if the child * has no parent. * * @return this child detached */ public Content detach() { if (parent != null) { parent.removeContent(this); } return this; } /** * Return this child's parent, or null if this child is currently * not attached. The parent can be either an {@link Element} * or a {@link Document}. * * @return this child's parent or null if none */ public Parent getParent() { return parent; } /** * A convenience method that returns any parent element for this element, * or null if the element is unattached or is a root element. This was the * original behavior of getParent() in JDOM Beta 9 which began returning * Parent in Beta 10. This method provides a convenient upgrade path for * JDOM Beta 10 and 1.0 users. * * @return the containing Element or null if unattached or a root element */ public Element getParentElement() { Parent parent = getParent(); return (Element) ((parent instanceof Element) ? parent : null); } /** * Sets the parent of this Content. The caller is responsible for removing * any pre-existing parentage. * * @param parent new parent element * @return the target element */ protected Content setParent(Parent parent) { this.parent = parent; return this; } /** * Return this child's owning document or null if the branch containing * this child is currently not attached to a document. * * @return this child's owning document or null if none */ public Document getDocument() { if (parent == null) return null; return parent.getDocument(); } /** * Returns the XPath 1.0 string value of this child. * * @return xpath string value of this child. */ public abstract String getValue(); /** * Returns a deep, unattached copy of this child and its descendants * detached from any parent or document. * * @return a detached deep copy of this child and descendants */ public Object clone() { try { Content c = (Content)super.clone(); c.parent = null; return c; } catch (CloneNotSupportedException e) { //Can not happen .... //e.printStackTrace(); return null; } } /** * This tests for equality of this Content object to the supplied object. * Content items are considered equal only if they are referentially equal * (i.e. the same object). User code may choose to compare objects * based on their properties instead. * * @param ob Object to compare to. * @return boolean - whether the Content is * equal to the supplied Object. */ public final boolean equals(Object ob) { return (ob == this); } /** * This returns the hash code for this Content item. * * @return int - hash code. */ public final int hashCode() { return super.hashCode(); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/xpath/0000755000175000017500000000000011377161311020473 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/xpath/XPath.java0000644000175000017500000004136611377161311022374 0ustar /*-- $Id: XPath.java,v 1.1.1.1 2005/12/02 14:16:53 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.xpath; import java.io.*; import java.lang.reflect.*; import java.util.*; import org.jdom.*; /** * A utility class for performing XPath calls on JDOM nodes, with a factory * interface for obtaining a first XPath instance. Users operate against this * class while XPath vendors can plug-in implementations underneath. Users * can choose an implementation using either {@link #setXPathClass} or * the system property "org.jdom.xpath.class". * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:53 $ * @author Laurent Bihanic */ public abstract class XPath implements Serializable { private static final String CVS_ID = "@(#) $RCSfile: XPath.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:53 $ $Name: $"; /** * The name of the system property from which to retrieve the * name of the implementation class to use. *

* The property name is: * "org.jdom.xpath.class".

*/ private final static String XPATH_CLASS_PROPERTY = "org.jdom.xpath.class"; /** * The default implementation class to use if none was configured. */ private final static String DEFAULT_XPATH_CLASS = "org.jdom.xpath.JaxenXPath"; /** * The constructor to instanciate a new XPath concrete * implementation. * * @see #newInstance */ private static Constructor constructor = null; /** * Creates a new XPath wrapper object, compiling the specified * XPath expression. * * @param path the XPath expression to wrap. * * @throws JDOMException if the XPath expression is invalid. */ public static XPath newInstance(String path) throws JDOMException { try { if (constructor == null) { // First call => Determine implementation. String className; try { className = System.getProperty(XPATH_CLASS_PROPERTY, DEFAULT_XPATH_CLASS); } catch (SecurityException ex1) { // Access to system property denied. => Use default impl. className = DEFAULT_XPATH_CLASS; } setXPathClass(Class.forName(className)); } // Allocate and return new implementation instance. return (XPath)constructor.newInstance(new Object[] { path }); } catch (JDOMException ex1) { throw ex1; } catch (InvocationTargetException ex2) { // Constructor threw an error on invocation. Throwable t = ex2.getTargetException(); throw (t instanceof JDOMException)? (JDOMException)t: new JDOMException(t.toString(), t); } catch (Exception ex3) { // Any reflection error (probably due to a configuration mistake). throw new JDOMException(ex3.toString(), ex3); } } /** * Sets the concrete XPath subclass to use when allocating XPath * instances. * * @param aClass the concrete subclass of XPath. * * @throws IllegalArgumentException if aClass is * null. * @throws JDOMException if aClass is * not a concrete subclass * of XPath. */ public static void setXPathClass(Class aClass) throws JDOMException { if (aClass == null) { throw new IllegalArgumentException("aClass"); } try { if ((XPath.class.isAssignableFrom(aClass)) && (Modifier.isAbstract(aClass.getModifiers()) == false)) { // Concrete subclass of XPath => Get constructor constructor = aClass.getConstructor(new Class[] { String.class }); } else { throw new JDOMException(aClass.getName() + " is not a concrete JDOM XPath implementation"); } } catch (JDOMException ex1) { throw ex1; } catch (Exception ex2) { // Any reflection error (probably due to a configuration mistake). throw new JDOMException(ex2.toString(), ex2); } } /** * Evaluates the wrapped XPath expression and returns the list * of selected items. * * @param context the node to use as context for evaluating * the XPath expression. * * @return the list of selected items, which may be of types: {@link Element}, * {@link Attribute}, {@link Text}, {@link CDATA}, * {@link Comment}, {@link ProcessingInstruction}, Boolean, * Double, or String. * * @throws JDOMException if the evaluation of the XPath * expression on the specified context * failed. */ abstract public List selectNodes(Object context) throws JDOMException; /** * Evaluates the wrapped XPath expression and returns the first * entry in the list of selected nodes (or atomics). * * @param context the node to use as context for evaluating * the XPath expression. * * @return the first selected item, which may be of types: {@link Element}, * {@link Attribute}, {@link Text}, {@link CDATA}, * {@link Comment}, {@link ProcessingInstruction}, Boolean, * Double, String, or null if no item was selected. * * @throws JDOMException if the evaluation of the XPath * expression on the specified context * failed. */ abstract public Object selectSingleNode(Object context) throws JDOMException; /** * Returns the string value of the first node selected by applying * the wrapped XPath expression to the given context. * * @param context the element to use as context for evaluating * the XPath expression. * * @return the string value of the first node selected by applying * the wrapped XPath expression to the given context. * * @throws JDOMException if the XPath expression is invalid or * its evaluation on the specified context * failed. */ abstract public String valueOf(Object context) throws JDOMException; /** * Returns the number value of the first node selected by applying * the wrapped XPath expression to the given context. * * @param context the element to use as context for evaluating * the XPath expression. * * @return the number value of the first node selected by applying * the wrapped XPath expression to the given context, * null if no node was selected or the * special value {@link java.lang.Double#NaN} * (Not-a-Number) if the selected value can not be * converted into a number value. * * @throws JDOMException if the XPath expression is invalid or * its evaluation on the specified context * failed. */ abstract public Number numberValueOf(Object context) throws JDOMException; /** * Defines an XPath variable and sets its value. * * @param name the variable name. * @param value the variable value. * * @throws IllegalArgumentException if name is not * a valid XPath variable name * or if the value type is not * supported by the underlying * implementation */ abstract public void setVariable(String name, Object value); /** * Adds a namespace definition to the list of namespaces known of * this XPath expression. *

* Note: In XPath, there is no such thing as a * 'default namespace'. The empty prefix always resolves * to the empty namespace URI.

* * @param namespace the namespace. */ abstract public void addNamespace(Namespace namespace); /** * Adds a namespace definition (prefix and URI) to the list of * namespaces known of this XPath expression. *

* Note: In XPath, there is no such thing as a * 'default namespace'. The empty prefix always resolves * to the empty namespace URI.

* * @param prefix the namespace prefix. * @param uri the namespace URI. * * @throws IllegalNameException if the prefix or uri are null or * empty strings or if they contain * illegal characters. */ public void addNamespace(String prefix, String uri) { addNamespace(Namespace.getNamespace(prefix, uri)); } /** * Returns the wrapped XPath expression as a string. * * @return the wrapped XPath expression as a string. */ abstract public String getXPath(); /** * Evaluates an XPath expression and returns the list of selected * items. *

* Note: This method should not be used when the * same XPath expression needs to be applied several times (on the * same or different contexts) as it requires the expression to be * compiled before being evaluated. In such cases, * {@link #newInstance allocating} an XPath wrapper instance and * {@link #selectNodes(java.lang.Object) evaluating} it several * times is way more efficient. *

* * @param context the node to use as context for evaluating * the XPath expression. * @param path the XPath expression to evaluate. * * @return the list of selected items, which may be of types: {@link Element}, * {@link Attribute}, {@link Text}, {@link CDATA}, * {@link Comment}, {@link ProcessingInstruction}, Boolean, * Double, or String. * * @throws JDOMException if the XPath expression is invalid or * its evaluation on the specified context * failed. */ public static List selectNodes(Object context, String path) throws JDOMException { return newInstance(path).selectNodes(context); } /** * Evaluates the wrapped XPath expression and returns the first * entry in the list of selected nodes (or atomics). *

* Note: This method should not be used when the * same XPath expression needs to be applied several times (on the * same or different contexts) as it requires the expression to be * compiled before being evaluated. In such cases, * {@link #newInstance allocating} an XPath wrapper instance and * {@link #selectSingleNode(java.lang.Object) evaluating} it * several times is way more efficient. *

* * @param context the element to use as context for evaluating * the XPath expression. * @param path the XPath expression to evaluate. * * @return the first selected item, which may be of types: {@link Element}, * {@link Attribute}, {@link Text}, {@link CDATA}, * {@link Comment}, {@link ProcessingInstruction}, Boolean, * Double, String, or null if no item was selected. * * @throws JDOMException if the XPath expression is invalid or * its evaluation on the specified context * failed. */ public static Object selectSingleNode(Object context, String path) throws JDOMException { return newInstance(path).selectSingleNode(context); } //------------------------------------------------------------------------- // Serialization support //------------------------------------------------------------------------- /** * [Serialization support] Returns the alternative object * to write to the stream when serializing this object. This * method returns an instance of a dedicated nested class to * serialize XPath expressions independently of the concrete * implementation being used. *

* Note: Subclasses are not allowed to override * this method to ensure valid serialization of all * implementations.

* * @return an XPathString instance configured with the wrapped * XPath expression. * * @throws ObjectStreamException never. */ protected final Object writeReplace() throws ObjectStreamException { return new XPathString(this.getXPath()); } /** * The XPathString is dedicated to serialize instances of * XPath subclasses in a implementation-independent manner. *

* XPathString ensures that only string data are serialized. Upon * deserialization, XPathString relies on XPath factory method to * to create instances of the concrete XPath wrapper currently * configured.

*/ private final static class XPathString implements Serializable { /** * The XPath expression as a string. */ private String xPath = null; /** * Creates a new XPathString instance from the specified * XPath expression. * * @param xpath the XPath expression. */ public XPathString(String xpath) { super(); this.xPath = xpath; } /** * [Serialization support] Resolves the read XPathString * objects into XPath implementations. * * @return an instance of a concrete implementation of * XPath. * * @throws ObjectStreamException if no XPath could be built * from the read object. */ private Object readResolve() throws ObjectStreamException { try { return XPath.newInstance(this.xPath); } catch (JDOMException ex1) { throw new InvalidObjectException( "Can't create XPath object for expression \"" + this.xPath + "\": " + ex1.toString()); } } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/xpath/JaxenXPath.java0000644000175000017500000002755511377161311023366 0ustar /*-- $Id: JaxenXPath.java,v 1.1.1.1 2005/12/02 14:16:53 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.xpath; import java.util.*; import org.jaxen.*; import org.jaxen.jdom.*; import org.jdom.*; /** * A non-public concrete XPath implementation for Jaxen. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:53 $ * @author Laurent Bihanic */ class JaxenXPath extends XPath { // package protected private static final String CVS_ID = "@(#) $RCSfile: JaxenXPath.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:53 $ $Name: $"; /** * The compiled XPath object to select nodes. This attribute can * not be made final as it needs to be set upon object * deserialization. */ private transient JDOMXPath xPath; /** * The current context for XPath expression evaluation. */ private Object currentContext; /** * Creates a new XPath wrapper object, compiling the specified * XPath expression. * * @param expr the XPath expression to wrap. * * @throws JDOMException if the XPath expression is invalid. */ public JaxenXPath(String expr) throws JDOMException { setXPath(expr); } /** * Evaluates the wrapped XPath expression and returns the list * of selected items. * * @param context the node to use as context for evaluating * the XPath expression. * * @return the list of selected items, which may be of types: {@link Element}, * {@link Attribute}, {@link Text}, {@link CDATA}, * {@link Comment}, {@link ProcessingInstruction}, Boolean, * Double, or String. * * @throws JDOMException if the evaluation of the XPath * expression on the specified context * failed. */ public List selectNodes(Object context) throws JDOMException { try { currentContext = context; return xPath.selectNodes(context); } catch (JaxenException ex1) { throw new JDOMException("XPath error while evaluating \"" + xPath.toString() + "\": " + ex1.getMessage(), ex1); } finally { currentContext = null; } } /** * Evaluates the wrapped XPath expression and returns the first * entry in the list of selected nodes (or atomics). * * @param context the node to use as context for evaluating * the XPath expression. * * @return the first selected item, which may be of types: {@link Element}, * {@link Attribute}, {@link Text}, {@link CDATA}, * {@link Comment}, {@link ProcessingInstruction}, Boolean, * Double, String, or null if no item was selected. * * @throws JDOMException if the evaluation of the XPath * expression on the specified context * failed. */ public Object selectSingleNode(Object context) throws JDOMException { try { currentContext = context; return xPath.selectSingleNode(context); } catch (JaxenException ex1) { throw new JDOMException("XPath error while evaluating \"" + xPath.toString() + "\": " + ex1.getMessage(), ex1); } finally { currentContext = null; } } /** * Returns the string value of the first node selected by applying * the wrapped XPath expression to the given context. * * @param context the element to use as context for evaluating * the XPath expression. * * @return the string value of the first node selected by applying * the wrapped XPath expression to the given context. * * @throws JDOMException if the XPath expression is invalid or * its evaluation on the specified context * failed. */ public String valueOf(Object context) throws JDOMException { try { currentContext = context; return xPath.stringValueOf(context); } catch (JaxenException ex1) { throw new JDOMException("XPath error while evaluating \"" + xPath.toString() + "\": " + ex1.getMessage(), ex1); } finally { currentContext = null; } } /** * Returns the number value of the first item selected by applying * the wrapped XPath expression to the given context. * * @param context the element to use as context for evaluating * the XPath expression. * * @return the number value of the first item selected by applying * the wrapped XPath expression to the given context, * null if no node was selected or the * special value {@link java.lang.Double#NaN} * (Not-a-Number) if the selected value can not be * converted into a number value. * * @throws JDOMException if the XPath expression is invalid or * its evaluation on the specified context * failed. */ public Number numberValueOf(Object context) throws JDOMException { try { currentContext = context; return xPath.numberValueOf(context); } catch (JaxenException ex1) { throw new JDOMException("XPath error while evaluating \"" + xPath.toString() + "\": " + ex1.getMessage(), ex1); } finally { currentContext = null; } } /** * Defines an XPath variable and sets its value. * * @param name the variable name. * @param value the variable value. * * @throws IllegalArgumentException if name is not * a valid XPath variable name * or if the value type is not * supported by the underlying * implementation */ public void setVariable(String name, Object value) throws IllegalArgumentException { Object o = xPath.getVariableContext(); if (o instanceof SimpleVariableContext) { ((SimpleVariableContext)o).setVariableValue(null, name, value); } } /** * Adds a namespace definition to the list of namespaces known of * this XPath expression. *

* Note: In XPath, there is no such thing as a * 'default namespace'. The empty prefix always resolves * to the empty namespace URI.

* * @param namespace the namespace. */ public void addNamespace(Namespace namespace) { try { xPath.addNamespace(namespace.getPrefix(), namespace.getURI()); } catch (JaxenException ex1) { /* Can't happen here. */ } } /** * Returns the wrapped XPath expression as a string. * * @return the wrapped XPath expression as a string. */ public String getXPath() { return (xPath.toString()); } /** * Compiles and sets the XPath expression wrapped by this object. * * @param expr the XPath expression to wrap. * * @throws JDOMException if the XPath expression is invalid. */ private void setXPath(String expr) throws JDOMException { try { xPath = new JDOMXPath(expr); xPath.setNamespaceContext(new NSContext()); } catch (Exception ex1) { throw new JDOMException( "Invalid XPath expression: \"" + expr + "\"", ex1); } } public String toString() { return (xPath.toString()); } public boolean equals(Object o) { if (o instanceof JaxenXPath) { JaxenXPath x = (JaxenXPath)o; return (super.equals(o) && xPath.toString().equals(x.xPath.toString())); } return false; } public int hashCode() { return xPath.hashCode(); } private class NSContext extends SimpleNamespaceContext { public NSContext() { super(); } /** * [Jaxen NamespaceContext interface support] Translates * the provided namespace prefix into the matching bound * namespace URI. * * @param prefix the namespace prefix to resolve. * * @return the namespace URI matching the prefix. */ public String translateNamespacePrefixToUri(String prefix) { if ((prefix == null) || (prefix.length() == 0)) { return null; } String uri = super.translateNamespacePrefixToUri(prefix); if (uri == null) { Object ctx = currentContext; if (ctx != null) { Element elt = null; // Get closer element node if (ctx instanceof Element) { elt = (Element)ctx; } else if (ctx instanceof Attribute) { elt = ((Attribute)ctx).getParent(); } else if (ctx instanceof Content) { elt = ((Content) ctx).getParentElement(); } else if (ctx instanceof Document) { elt = ((Document)ctx).getRootElement(); } if (elt != null) { Namespace ns = elt.getNamespace(prefix); if (ns != null) { uri = ns.getURI(); } } } } return uri; } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/0000755000175000017500000000000011377161311021152 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/XML4JDOMAdapter.java0000644000175000017500000001573711377161311024531 0ustar /*-- $Id: XML4JDOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.jdom.input.*; import org.w3c.dom.Document; import org.xml.sax.*; /** * An adapter for the IBM XML4J DOM parser. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter */ public class XML4JDOMAdapter extends AbstractDOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: XML4JDOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException { try { /* * IBM XML4J actually uses the Xerces parser, so this is * all Xerces specific code. */ // Load the parser class Class parserClass = Class.forName("org.apache.xerces.parsers.DOMParser"); Object parser = parserClass.newInstance(); // Set validation Method setFeature = parserClass.getMethod("setFeature", new Class[] {java.lang.String.class, boolean.class}); setFeature.invoke(parser, new Object[] {"http://xml.org/sax/features/validation", new Boolean(validate)}); // Set namespaces setFeature.invoke(parser, new Object[] {"http://xml.org/sax/features/namespaces", new Boolean(false)}); // Set the error handler if (validate) { Method setErrorHandler = parserClass.getMethod("setErrorHandler", new Class[] {ErrorHandler.class}); setErrorHandler.invoke(parser, new Object[] {new BuilderErrorHandler()}); } // Parse the document Method parse = parserClass.getMethod("parse", new Class[] {org.xml.sax.InputSource.class}); parse.invoke(parser, new Object[]{new InputSource(in)}); // Get the Document object Method getDocument = parserClass.getMethod("getDocument", null); Document doc = (Document)getDocument.invoke(parser, null); return doc; } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof org.xml.sax.SAXParseException) { SAXParseException parseException = (SAXParseException)targetException; throw new JDOMException("Error on line " + parseException.getLineNumber() + " of XML document: " + parseException.getMessage(), parseException); } else if (targetException instanceof IOException) { IOException ioException = (IOException) targetException; throw ioException; } else { throw new JDOMException(targetException.getMessage(), targetException); } } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage(), e); } } /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument() throws JDOMException { try { return (Document)Class.forName( "org.apache.xerces.dom.DocumentImpl") .newInstance(); } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage() + " while creating document", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/JAXPDOMAdapter.java0000644000175000017500000001754511377161311024434 0ustar /*-- $Id: JAXPDOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.jdom.input.*; import org.w3c.dom.Document; /** * An adapter for any parser supporting the Sun JAXP APIs. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Jason Hunter */ public class JAXPDOMAdapter extends AbstractDOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: JAXPDOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a JAXP * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation * should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException { try { // Try using JAXP... // Note we need DOM Level 2 and thus JAXP 1.1. Class.forName("javax.xml.transform.Transformer"); // Try JAXP 1.1 calls to build the document Class factoryClass = Class.forName("javax.xml.parsers.DocumentBuilderFactory"); // factory = DocumentBuilderFactory.newInstance(); Method newParserInstance = factoryClass.getMethod("newInstance", null); Object factory = newParserInstance.invoke(null, null); // factory.setValidating(validate); Method setValidating = factoryClass.getMethod("setValidating", new Class[]{boolean.class}); setValidating.invoke(factory, new Object[]{new Boolean(validate)}); // factory.setNamespaceAware(true); Method setNamespaceAware = factoryClass.getMethod("setNamespaceAware", new Class[]{boolean.class}); setNamespaceAware.invoke(factory, new Object[]{Boolean.TRUE}); // jaxpParser = factory.newDocumentBuilder(); Method newDocBuilder = factoryClass.getMethod("newDocumentBuilder", null); Object jaxpParser = newDocBuilder.invoke(factory, null); // jaxpParser.setErrorHandler(null); Class parserClass = jaxpParser.getClass(); Method setErrorHandler = parserClass.getMethod("setErrorHandler", new Class[]{org.xml.sax.ErrorHandler.class}); setErrorHandler.invoke(jaxpParser, new Object[]{new BuilderErrorHandler()}); // domDoc = jaxpParser.parse(in); Method parse = parserClass.getMethod( "parse", new Class[]{InputStream.class}); org.w3c.dom.Document domDoc = (org.w3c.dom.Document) parse.invoke(jaxpParser, new Object[]{in}); return domDoc; } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof IOException) { throw (IOException) targetException; } else { throw new JDOMException(targetException.getMessage(), targetException); } } catch (Exception e) { throw new JDOMException("Reflection failed while parsing a document with JAXP", e); } // Allow all exceptions to pass through } /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur in parsing. */ public Document createDocument() throws JDOMException { try { // We need DOM Level 2 and thus JAXP 1.1. // If JAXP 1.0 is all that's available then we error out. Class.forName("javax.xml.transform.Transformer"); // Try JAXP 1.1 calls to build the document Class factoryClass = Class.forName("javax.xml.parsers.DocumentBuilderFactory"); // factory = DocumentBuilderFactory.newInstance(); Method newParserInstance = factoryClass.getMethod("newInstance", null); Object factory = newParserInstance.invoke(null, null); // jaxpParser = factory.newDocumentBuilder(); Method newDocBuilder = factoryClass.getMethod("newDocumentBuilder", null); Object jaxpParser = newDocBuilder.invoke(factory, null); // domDoc = jaxpParser.newDocument(); Class parserClass = jaxpParser.getClass(); Method newDoc = parserClass.getMethod("newDocument", null); org.w3c.dom.Document domDoc = (org.w3c.dom.Document) newDoc.invoke(jaxpParser, null); return domDoc; } catch (Exception e) { throw new JDOMException("Reflection failed while creating new JAXP document", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/OracleV2DOMAdapter.java0000644000175000017500000001357711377161311025310 0ustar /*-- $Id: OracleV2DOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.w3c.dom.Document; import org.xml.sax.*; /** * An adapter for the Oracle Version 2 DOM parser. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter */ public class OracleV2DOMAdapter extends AbstractDOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: OracleV2DOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException { try { // Load the parser class Class parserClass = Class.forName("oracle.xml.parser.v2.DOMParser"); Object parser = parserClass.newInstance(); // Parse the document Method parse = parserClass.getMethod("parse", new Class[] {org.xml.sax.InputSource.class}); parse.invoke(parser, new Object[] {new InputSource(in)}); // Get the Document object Method getDocument = parserClass.getMethod("getDocument", null); Document doc = (Document)getDocument.invoke(parser, null); return doc; } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof org.xml.sax.SAXParseException) { SAXParseException parseException = (SAXParseException)targetException; throw new JDOMException("Error on line " + parseException.getLineNumber() + " of XML document: " + parseException.getMessage(), parseException); } else if (targetException instanceof IOException) { IOException ioException = (IOException) targetException; throw ioException; } else { throw new JDOMException(targetException.getMessage(), targetException); } } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage(), e); } } /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument() throws JDOMException { try { return (Document)Class.forName( "oracle.xml.parser.v2.XMLDocument") .newInstance(); } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage() + " when creating document", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/OracleV1DOMAdapter.java0000644000175000017500000001357311377161311025303 0ustar /*-- $Id: OracleV1DOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.w3c.dom.Document; import org.xml.sax.*; /** * An adapter for the Oracle Version 1 DOM parser. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter */ public class OracleV1DOMAdapter extends AbstractDOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: OracleV1DOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException { try { // Load the parser class Class parserClass = Class.forName("oracle.xml.parser.XMLParser"); Object parser = parserClass.newInstance(); // Parse the document Method parse = parserClass.getMethod("parse", new Class[] {org.xml.sax.InputSource.class}); parse.invoke(parser, new Object[] {new InputSource(in)}); // Get the Document object Method getDocument = parserClass.getMethod("getDocument", null); Document doc = (Document)getDocument.invoke(parser, null); return doc; } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof org.xml.sax.SAXParseException) { SAXParseException parseException = (SAXParseException) targetException; throw new JDOMException("Error on line " + parseException.getLineNumber() + " of XML document: " + parseException.getMessage(), parseException); } else if (targetException instanceof IOException) { IOException ioException = (IOException) targetException; throw ioException; } else { throw new JDOMException(targetException.getMessage(), targetException); } } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage(), e); } } /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument() throws JDOMException { try { return (Document)Class.forName( "oracle.xml.parser.XMLDocument") .newInstance(); } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage() + " when creating document", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/AbstractDOMAdapter.java0000644000175000017500000001556511377161311025435 0ustar /*-- $Id: AbstractDOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.w3c.dom.*; import org.w3c.dom.Document; /** * A DOMAdapter utility abstract base class. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter */ public abstract class AbstractDOMAdapter implements DOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: AbstractDOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param filename file to parse. * @param validate boolean to indicate if validation should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(File filename, boolean validate) throws IOException, JDOMException { return getDocument(new FileInputStream(filename), validate); } /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public abstract Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException; /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public abstract Document createDocument() throws JDOMException; /** * This creates an empty Document object based * on a specific parser implementation with the given DOCTYPE. * If the doctype parameter is null, the behavior is the same as * calling createDocument(). * * @param doctype Initial DocType of the document. * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument(DocType doctype) throws JDOMException { if (doctype == null) { return createDocument(); } DOMImplementation domImpl = createDocument().getImplementation(); DocumentType domDocType = domImpl.createDocumentType( doctype.getElementName(), doctype.getPublicID(), doctype.getSystemID()); // Set the internal subset if possible setInternalSubset(domDocType, doctype.getInternalSubset()); return domImpl.createDocument("http://temporary", doctype.getElementName(), domDocType); } /** * This attempts to change the DocumentType to have the given internal DTD * subset value. This is not a standard ability in DOM, so it's only * available with some parsers. Subclasses can alter the mechanism by * which the attempt is made to set the value. * * @param dt DocumentType to be altered * @param s String to use as the internal DTD subset */ protected void setInternalSubset(DocumentType dt, String s) { if (dt == null || s == null) return; // Default behavior is to attempt a setInternalSubset() call using // reflection. This method is not part of the DOM spec, but it's // available on Xerces 1.4.4+. It's not currently in Crimson. try { Class dtclass = dt.getClass(); Method setInternalSubset = dtclass.getMethod( "setInternalSubset", new Class[] {java.lang.String.class}); setInternalSubset.invoke(dt, new Object[] {s}); } catch (Exception e) { // ignore } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/DOMAdapter.java0000644000175000017500000001161611377161311023742 0ustar /*-- $Id: DOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import org.jdom.*; import org.w3c.dom.Document; /** * Defines a standard set of adapter methods for interfacing with a DOM parser * and obtaining a DOM {@link org.w3c.dom.Document org.w3c.dom.Document} object. * Implementing classes map these calls to DOM parser-specific calls, allowing * any third-party parser to be used with JDOM. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter */ public interface DOMAdapter { /** * This creates a new Document from a * given filename by letting a DOM parser handle parsing from the file. * * @param filename file to parse. * @param validate boolean to indicate if validation * should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(File filename, boolean validate) throws IOException, JDOMException; /** * This creates a new Document from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation * should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException; /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument() throws JDOMException; /** * This creates an empty Document object based * on a specific parser implementation with the given DOCTYPE. * * @param doctype Initial DocType of the document. * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument(DocType doctype) throws JDOMException; } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/XercesDOMAdapter.java0000644000175000017500000001543111377161311025113 0ustar /*-- $Id: XercesDOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.jdom.input.*; import org.w3c.dom.Document; import org.xml.sax.*; /** * An adapter for the Apache Xerces DOM parser. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter */ public class XercesDOMAdapter extends AbstractDOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: XercesDOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation * should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException { try { // Load the parser class Class parserClass = Class.forName("org.apache.xerces.parsers.DOMParser"); Object parser = parserClass.newInstance(); // Set validation Method setFeature = parserClass.getMethod( "setFeature", new Class[] {java.lang.String.class, boolean.class}); setFeature.invoke(parser, new Object[] {"http://xml.org/sax/features/validation", new Boolean(validate)}); // Set namespaces true setFeature.invoke(parser, new Object[] {"http://xml.org/sax/features/namespaces", new Boolean(true)}); // Set the error handler if (validate) { Method setErrorHandler = parserClass.getMethod( "setErrorHandler", new Class[] {ErrorHandler.class}); setErrorHandler.invoke(parser, new Object[] {new BuilderErrorHandler()}); } // Parse the document Method parse = parserClass.getMethod( "parse", new Class[] {org.xml.sax.InputSource.class}); parse.invoke(parser, new Object[]{new InputSource(in)}); // Get the Document object Method getDocument = parserClass.getMethod("getDocument", null); Document doc = (Document)getDocument.invoke(parser, null); return doc; } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof org.xml.sax.SAXParseException) { SAXParseException parseException = (SAXParseException)targetException; throw new JDOMException("Error on line " + parseException.getLineNumber() + " of XML document: " + parseException.getMessage(), e); } else if (targetException instanceof IOException) { IOException ioException = (IOException) targetException; throw ioException; } else { throw new JDOMException(targetException.getMessage(), e); } } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage(), e); } } /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument() throws JDOMException { try { return (Document)Class.forName( "org.apache.xerces.dom.DocumentImpl").newInstance(); } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage() + " when creating document", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/adapters/CrimsonDOMAdapter.java0000644000175000017500000001356011377161311025275 0ustar /*-- $Id: CrimsonDOMAdapter.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.adapters; import java.io.*; import java.lang.reflect.*; import org.jdom.*; import org.w3c.dom.Document; import org.xml.sax.*; /** * An adapter for the Apache Crimson DOM parser. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Jason Hunter */ public class CrimsonDOMAdapter extends AbstractDOMAdapter { private static final String CVS_ID = "@(#) $RCSfile: CrimsonDOMAdapter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * This creates a new {@link Document} from an * existing InputStream by letting a DOM * parser handle parsing using the supplied stream. * * @param in InputStream to parse. * @param validate boolean to indicate if validation should occur. * @return Document - instance ready for use. * @throws IOException when I/O error occurs. * @throws JDOMException when errors occur in parsing. */ public Document getDocument(InputStream in, boolean validate) throws IOException, JDOMException { try { Class[] parameterTypes = new Class[2]; parameterTypes[0] = Class.forName("java.io.InputStream"); parameterTypes[1] = boolean.class; Object[] args = new Object[2]; args[0] = in; args[1] = new Boolean(false); // Load the parser class and invoke the parse method Class parserClass = Class.forName("org.apache.crimson.tree.XmlDocument"); Method createXmlDocument = parserClass.getMethod("createXmlDocument", parameterTypes); Document doc = (Document)createXmlDocument.invoke(null, args); return doc; } catch (InvocationTargetException e) { Throwable targetException = e.getTargetException(); if (targetException instanceof org.xml.sax.SAXParseException) { SAXParseException parseException = (SAXParseException)targetException; throw new JDOMException("Error on line " + parseException.getLineNumber() + " of XML document: " + parseException.getMessage(), parseException); } else if (targetException instanceof IOException) { IOException ioException = (IOException) targetException; throw ioException; } else { throw new JDOMException(targetException.getMessage(), targetException); } } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage(), e); } } /** * This creates an empty Document object based * on a specific parser implementation. * * @return Document - created DOM Document. * @throws JDOMException when errors occur. */ public Document createDocument() throws JDOMException { try { return (Document)Class.forName( "org.apache.crimson.tree.XmlDocument") .newInstance(); } catch (Exception e) { throw new JDOMException(e.getClass().getName() + ": " + e.getMessage() + " when creating document", e); } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/IllegalTargetException.java0000644000175000017500000000772611377161311024625 0ustar /*-- $Id: IllegalTargetException.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * Thrown when a target is supplied in construction of a JDOM {@link * ProcessingInstruction}, and that name breaks XML naming conventions. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ * @author Brett McLaughlin */ public class IllegalTargetException extends IllegalArgumentException { private static final String CVS_ID = "@(#) $RCSfile: IllegalTargetException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; /** * This will create an Exception indicating * that the specified target is illegal for the * {@link ProcessingInstruction} it was supplied to. * * @param target String target that breaks rules. * @param reason String message or reason target is illegal. */ IllegalTargetException(String target, String reason) { super(new StringBuffer() .append("The target \"") .append(target) .append("\" is not legal for JDOM/XML Processing Instructions: ") .append(reason) .append(".") // JCLIC modification //.toString() .substring(0) ); } /** * Creates an exception with the specified error message. * * @param reason cause of the problem */ public IllegalTargetException(String reason) { super(reason); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/0000755000175000017500000000000011377161311020634 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/AbstractFilter.java0000644000175000017500000000617011377161311024414 0ustar /*-- $Id: AbstractFilter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; /** * Partial implementation of {@link Filter}. * * @author Bradley S. Huffman * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ */ public abstract class AbstractFilter implements Filter { private static final String CVS_ID = "@(#) $RCSfile: AbstractFilter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $"; public Filter negate() { return new NegateFilter(this); } public Filter or(Filter filter) { return new OrFilter(this, filter); } public Filter and(Filter filter) { return new AndFilter(this, filter); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/OrFilter.java0000644000175000017500000001105211377161311023224 0ustar /*-- $Id: OrFilter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; /** * Allow two filters to be chained together with a logical * or operation. * * @author Bradley S. Huffman * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ */ final class OrFilter extends AbstractFilter { private static final String CVS_ID = "@(#) $RCSfile: OrFilter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $"; /** Filter for left side of logical or */ private Filter left; /** Filter for right side of logical or */ private Filter right; /** * Match if either of the supplied filters. * * @param left left side of logical or * @param right right side of logical or * @throws IllegalArgumentException if either supplied filter is null */ public OrFilter(Filter left, Filter right) { if ((left == null) || (right == null)) { throw new IllegalArgumentException("null filter not allowed"); } this.left = left; this.right = right; } public boolean matches(Object obj) { return left.matches(obj) || right.matches(obj); } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof OrFilter) { OrFilter filter = (OrFilter) obj; if ((left.equals(filter.left) && right.equals(filter.right)) || (left.equals(filter.right) && right.equals(filter.left))) { return true; } } return false; } public int hashCode() { return (31 * left.hashCode()) + right.hashCode(); } public String toString() { return new StringBuffer(64) .append("[OrFilter: ") .append(left.toString()) .append(",\n") .append(" ") .append(right.toString()) .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/ElementFilter.java0000644000175000017500000001425211377161311024242 0ustar /*-- $Id: ElementFilter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; import java.io.*; import org.jdom.*; /** * A Filter that only matches {@link org.jdom.Element} objects. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Jools Enticknap * @author Bradley S. Huffman */ public class ElementFilter extends AbstractFilter { private static final String CVS_ID = "@(#) $RCSfile: ElementFilter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; /** The element name */ private String name; /** The element namespace */ private transient Namespace namespace; /** * Select only the Elements. */ public ElementFilter() {} /** * Select only the Elements with the supplied name in any Namespace. * * @param name The name of the Element. */ public ElementFilter(String name) { this.name = name; } /** * Select only the Elements with the supplied Namespace. * * @param namespace The namespace the Element lives in. */ public ElementFilter(Namespace namespace) { this.namespace = namespace; } /** * Select only the Elements with the supplied name and Namespace. * * @param name The name of the Element. * @param namespace The namespace the Element lives in. */ public ElementFilter(String name, Namespace namespace) { this.name = name; this.namespace = namespace; } /** * Check to see if the object matches a predefined set of rules. * * @param obj The object to verify. * @return true if the objected matched a predfined * set of rules. */ public boolean matches(Object obj) { if (obj instanceof Element) { Element el = (Element) obj; return (this.name == null || this.name.equals(el.getName())) && (this.namespace == null || this.namespace.equals(el.getNamespace())); } return false; } /** * Returns whether the two filters are equivalent (i.e. the * matching names and namespace are equivalent). * * @param obj the object to compare against * @return whether the two filters are equal */ public boolean equals(Object obj) { // Generated by IntelliJ if (this == obj) return true; if (!(obj instanceof ElementFilter)) return false; final ElementFilter filter = (ElementFilter) obj; if (name != null ? !name.equals(filter.name) : filter.name != null) return false; if (namespace != null ? !namespace.equals(filter.namespace) : filter.namespace != null) return false; return true; } public int hashCode() { // Generated by IntelliJ int result; result = (name != null ? name.hashCode() : 0); result = 29 * result + (namespace != null ? namespace.hashCode() : 0); return result; } // Support a custom Namespace serialization so no two namespace // object instances may exist for the same prefix/uri pair private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); // We use writeObject() and not writeUTF() to minimize space // This allows for writing pointers to already written strings out.writeObject(namespace.getPrefix()); out.writeObject(namespace.getURI()); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); namespace = Namespace.getNamespace( (String) in.readObject(), (String) in.readObject()); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/Filter.java0000644000175000017500000000607111377161311022730 0ustar /*-- $Id: Filter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; /** * A generalized filter to restrict visibility or mutability on a list. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Jools Enticknap * @author Bradley S. Huffman */ public interface Filter extends java.io.Serializable { /** * Check to see if the object matches a predefined set of rules. * * @param obj The object to verify. * @return true if the object matches a predfined * set of rules. */ public boolean matches(Object obj); } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/NegateFilter.java0000644000175000017500000000761311377161311024057 0ustar /*-- $Id: NegateFilter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; /** * Filter that is the logical negation operation of another filter. * * * @author Bradley S. Huffman * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ */ final class NegateFilter extends AbstractFilter { private static final String CVS_ID = "@(#) $RCSfile: NegateFilter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $"; // Underlying filter. private Filter filter; /** * Match if the supplied filter does not match. * * @param filter filter to use. */ public NegateFilter(Filter filter) { this.filter = filter; } public boolean matches(Object obj) { return !filter.matches(obj); } public Filter negate() { return filter; } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof NegateFilter) { return filter.equals(((NegateFilter) obj).filter); } return false; } public int hashCode() { return ~filter.hashCode(); } public String toString() { return new StringBuffer(64) .append("[NegateFilter: ") .append(filter.toString()) .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/ContentFilter.java0000644000175000017500000002525711377161311024272 0ustar /*-- $Id: ContentFilter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; import org.jdom.*; /** * A general purpose Filter able to represent all legal JDOM objects or a * specific subset. Filtering is accomplished by way of a filtering mask in * which each bit represents whether a JDOM object is visible or not. * For example to view all Text and CDATA nodes in the content of element x. *

 *      Filter filter = new ContentFilter(ContentFilter.TEXT |
 *                                        ContentFilter.CDATA);
 *      List content = x.getContent(filter);
 * 
*

* For those who don't like bit-masking, set methods are provided as an * alternative. For example to allow everything except Comment nodes. *


 *      Filter filter =  new ContentFilter();
 *      filter.setCommentVisible(false);
 *      List content = x.getContent(filter);
 * 
*

* The default is to allow all valid JDOM objects. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Bradley S. Huffman */ public class ContentFilter extends AbstractFilter { private static final String CVS_ID = "@(#) $RCSfile: ContentFilter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; /** Mask for JDOM {@link Element} objects */ public static final int ELEMENT = 1; /** Mask for JDOM {@link CDATA} objects */ public static final int CDATA = 2; /** Mask for JDOM {@link Text} objects */ public static final int TEXT = 4; /** Mask for JDOM {@link Comment} objects */ public static final int COMMENT = 8; /** Mask for JDOM {@link ProcessingInstruction} objects */ public static final int PI = 16; /** Mask for JDOM {@link EntityRef} objects */ public static final int ENTITYREF = 32; /** Mask for JDOM {@link Document} object */ public static final int DOCUMENT = 64; /** Mask for JDOM {@link DocType} object */ public static final int DOCTYPE = 128; /** The JDOM object mask */ private int filterMask; /** * Default constructor that allows any legal JDOM objects. */ public ContentFilter() { setDefaultMask(); } /** * Set whether all JDOM objects are visible or not. * * @param allVisible true all JDOM objects are visible, * false all JDOM objects are hidden. */ public ContentFilter(boolean allVisible) { if (allVisible) { setDefaultMask(); } else { filterMask &= ~filterMask; } } /** * Filter out JDOM objects according to a filtering mask. * * @param mask Mask of JDOM objects to allow. */ public ContentFilter(int mask) { setFilterMask(mask); } /** * Return current filtering mask. * * @return the current filtering mask */ public int getFilterMask() { return filterMask; } /** * Set filtering mask. * * @param mask the new filtering mask */ public void setFilterMask(int mask) { setDefaultMask(); filterMask &= mask; } /** * Set this filter to allow all legal JDOM objects. */ public void setDefaultMask() { filterMask = ELEMENT | CDATA | TEXT | COMMENT | PI | ENTITYREF | DOCUMENT | DOCTYPE; } /** * Set filter to match only JDOM objects that are legal * document content. */ public void setDocumentContent() { filterMask = ELEMENT | COMMENT | PI | DOCTYPE; } /** * Set filter to match only JDOM objects that are legal * element content. */ public void setElementContent() { filterMask = ELEMENT | CDATA | TEXT | COMMENT | PI | ENTITYREF; } /** * Set visiblity of Element objects. * * @param visible whether Elements are visible, true * if yes, false if not */ public void setElementVisible(boolean visible) { if (visible) { filterMask |= ELEMENT; } else { filterMask &= ~ELEMENT; } } /** * Set visiblity of CDATA objects. * * @param visible whether CDATA nodes are visible, true * if yes, false if not */ public void setCDATAVisible(boolean visible) { if (visible) { filterMask |= CDATA; } else { filterMask &= ~CDATA; } } /** * Set visiblity of Text objects. * * @param visible whether Text nodes are visible, true * if yes, false if not */ public void setTextVisible(boolean visible) { if (visible) { filterMask |= TEXT; } else { filterMask &= ~TEXT; } } /** * Set visiblity of Comment objects. * * @param visible whether Comments are visible, true * if yes, false if not */ public void setCommentVisible(boolean visible) { if (visible) { filterMask |= COMMENT; } else { filterMask &= ~COMMENT; } } /** * Set visiblity of ProcessingInstruction objects. * * @param visible whether ProcessingInstructions are visible, * true if yes, false if not */ public void setPIVisible(boolean visible) { if (visible) { filterMask |= PI; } else { filterMask &= ~PI; } } /** * Set visiblity of EntityRef objects. * * @param visible whether EntityRefs are visible, true * if yes, false if not */ public void setEntityRefVisible(boolean visible) { if (visible) { filterMask |= ENTITYREF; } else { filterMask &= ~ENTITYREF; } } /** * Set visiblity of DocType objects. * * @param visible whether the DocType is visible, true * if yes, false if not */ public void setDocTypeVisible(boolean visible) { if (visible) { filterMask |= DOCTYPE; } else { filterMask &= ~DOCTYPE; } } /** * Check to see if the object matches according to the filter mask. * * @param obj The object to verify. * @return true if the objected matched a predfined * set of rules. */ public boolean matches(Object obj) { if (obj instanceof Element) { return (filterMask & ELEMENT) != 0; } else if (obj instanceof CDATA) { // must come before Text check return (filterMask & CDATA) != 0; } else if (obj instanceof Text) { return (filterMask & TEXT) != 0; } else if (obj instanceof Comment) { return (filterMask & COMMENT) != 0; } else if (obj instanceof ProcessingInstruction) { return (filterMask & PI) != 0; } else if (obj instanceof EntityRef) { return (filterMask & ENTITYREF) != 0; } else if (obj instanceof Document) { return (filterMask & DOCUMENT) != 0; } else if (obj instanceof DocType) { return (filterMask & DOCTYPE) != 0; } return false; } /** * Returns whether the two filters are equivalent (i.e. the * matching mask values are identical). * * @param obj the object to compare against * @return whether the two filters are equal */ public boolean equals(Object obj) { // Generated by IntelliJ if (this == obj) return true; if (!(obj instanceof ContentFilter)) return false; final ContentFilter filter = (ContentFilter) obj; if (filterMask != filter.filterMask) return false; return true; } public int hashCode() { // Generated by IntelliJ return filterMask; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/filter/AndFilter.java0000644000175000017500000001106411377161311023351 0ustar /*-- $Id: AndFilter.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.filter; /** * Allow two filters to be chained together with a logical * and operation. * * @author Bradley S. Huffman * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ */ final class AndFilter extends AbstractFilter { private static final String CVS_ID = "@(#) $RCSfile: AndFilter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $"; // Filter for left side of logical and. private Filter left; // Filter for right side of logical and. private Filter right; /** * Match if only both supplied filters match. * * @param left left side of logical and * @param right right side of logical and * @throws IllegalArgumentException if either supplied filter is null */ public AndFilter(Filter left, Filter right) { if ((left == null) || (right == null)) { throw new IllegalArgumentException("null filter not allowed"); } this.left = left; this.right = right; } public boolean matches(Object obj) { return left.matches(obj) && right.matches(obj); } public boolean equals(Object obj) { if (this == obj) { return true; } if (obj instanceof AndFilter) { AndFilter filter = (AndFilter) obj; if ((left.equals(filter.left) && right.equals(filter.right)) || (left.equals(filter.right) && right.equals(filter.left))) { return true; } } return false; } public int hashCode() { return (31 * left.hashCode()) + right.hashCode(); } public String toString() { return new StringBuffer(64) .append("[AndFilter: ") .append(left.toString()) .append(",\n") .append(" ") .append(right.toString()) .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/AttributeList.java0000644000175000017500000004162611377161311023022 0ustar /*-- $Id: AttributeList.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; /** * AttributeList represents legal JDOM Attribute * content. This class is NOT PUBLIC; users should see it as a simple List * implementation. * * @author Alex Rosen * @author Philippe Riand * @author Bradley S. Huffman * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ * @see CDATA * @see Comment * @see Element * @see EntityRef * @see ProcessingInstruction * @see Text */ class AttributeList extends AbstractList implements List, java.io.Serializable { private static final String CVS_ID = "@(#) $RCSfile: AttributeList.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; private static final int INITIAL_ARRAY_SIZE = 5; /** The backing list */ private Attribute elementData[]; private int size; /** The parent Element */ private Element parent; /** Force an Element parent */ private AttributeList() {} /** * Create a new instance of the AttributeList representing * Element content * * @param parent element whose attributes are to be held */ AttributeList(Element parent) { this.parent = parent; } /** * Package internal method to support building from sources that are * 100% trusted. * * @param a attribute to add without any checks */ final void uncheckedAddAttribute(Attribute a) { a.parent = parent; ensureCapacity(size + 1); elementData[size++] = a; modCount++; } /** * Add a attribute to the end of the list or replace a existing * attribute with the same name and Namespace. * * @param obj The object to insert into the list. * @return true (as per the general contract of Collection.add). * @throws IndexOutOfBoundsException if index < 0 || index > size() */ public boolean add(Object obj) { if (obj instanceof Attribute) { Attribute attribute = (Attribute) obj; int duplicate = indexOfDuplicate(attribute); if (duplicate < 0) { add(size(), attribute); } else { set(duplicate, attribute); } } else if (obj == null) { throw new IllegalAddException("Cannot add null attribute"); } else { throw new IllegalAddException("Class " + obj.getClass().getName() + " is not an attribute"); } return true; } /** * Inserts the specified attribute at the specified position in this list. * Shifts the attribute currently at that position (if any) and any * subsequent attributes to the right (adds one to their indices). * * @param index The location to set the value to. * @param obj The object to insert into the list. * throws IndexOutOfBoundsException if index < 0 || index > size() */ public void add(int index, Object obj) { if (obj instanceof Attribute) { Attribute attribute = (Attribute) obj; int duplicate = indexOfDuplicate(attribute); if (duplicate >= 0) { throw new IllegalAddException("Cannot add duplicate attribute"); } add(index, attribute); } else if (obj == null) { throw new IllegalAddException("Cannot add null attribute"); } else { throw new IllegalAddException("Class " + obj.getClass().getName() + " is not an attribute"); } modCount++; } /** * Check and add the Attribute to this list at * the given index. Note: does not check for duplicate * attributes. * * @param index index where to add Attribute * @param attribute Attribute to add */ void add(int index, Attribute attribute) { if (attribute.getParent() != null) { throw new IllegalAddException( "The attribute already has an existing parent \"" + attribute.getParent().getQualifiedName() + "\""); } String reason = Verifier.checkNamespaceCollision(attribute, parent); if (reason != null) { throw new IllegalAddException(parent, attribute, reason); } if (index<0 || index>size) { throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); } attribute.setParent(parent); ensureCapacity(size+1); if( index==size ) { elementData[size++] = attribute; } else { System.arraycopy(elementData, index, elementData, index + 1, size - index); elementData[index] = attribute; size++; } modCount++; } /** * Add all the objects in the specified collection. * * @param collection The collection containing all the objects to add. * @return true if the list was modified as a result of * the add. */ public boolean addAll(Collection collection) { return addAll(size(), collection); } /** * Inserts the specified collecton at the specified position in this list. * Shifts the attribute currently at that position (if any) and any * subsequent attributes to the right (adds one to their indices). * * @param index The offset to start adding the data in the collection * @param collection The collection to insert into the list. * @return true if the list was modified as a result of * the add. * throws IndexOutOfBoundsException if index < 0 || index > size() */ public boolean addAll(int index, Collection collection) { if (index<0 || index>size) { throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); } if ((collection == null) || (collection.size() == 0)) { return false; } ensureCapacity(size() + collection.size()); int count = 0; try { Iterator i = collection.iterator(); while (i.hasNext()) { Object obj = i.next(); add(index + count, obj); count++; } } catch (RuntimeException exception) { for (int i = 0; i < count; i++) { remove(index); } throw exception; } return true; } /** * Clear the current list. */ public void clear() { if (elementData != null) { for (int i = 0; i < size; i++) { Attribute attribute = elementData[i]; attribute.setParent(null); } elementData = null; size = 0; } modCount++; } /** * Clear the current list and set it to the contents * of the Collection. * object. * * @param collection The collection to use. */ void clearAndSet(Collection collection) { Attribute[] old = elementData; int oldSize = size; elementData = null; size = 0; if ((collection != null) && (collection.size() != 0)) { ensureCapacity(collection.size()); try { addAll(0, collection); } catch (RuntimeException exception) { elementData = old; size = oldSize; throw exception; } } if (old != null) { for (int i = 0; i < oldSize; i++) { Attribute attribute = old[i]; attribute.setParent(null); } } modCount++; } /** * Increases the capacity of this AttributeList instance, * if necessary, to ensure that it can hold at least the number of * items specified by the minimum capacity argument. * * @param minCapacity the desired minimum capacity. */ private void ensureCapacity(int minCapacity) { if (elementData == null) { elementData = new Attribute[Math.max(minCapacity, INITIAL_ARRAY_SIZE)]; } else { int oldCapacity = elementData.length; if (minCapacity > oldCapacity) { Attribute oldData[] = elementData; int newCapacity = (oldCapacity * 3)/2 + 1; if (newCapacity < minCapacity) newCapacity = minCapacity; elementData = new Attribute[newCapacity]; System.arraycopy(oldData, 0, elementData, 0, size); } } } /** * Return the object at the specified offset. * * @param index The offset of the object. * @return The Object which was returned. */ public Object get(int index) { if (index<0 || index>=size) { throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); } return elementData[index]; } /** * Return the Attribute with the * given name and Namespace. * * @param name name of attribute to return * @param namespace Namespace to match * @return the Attribute, or null if one doesn't exist. */ Object get(String name, Namespace namespace) { int index = indexOf(name, namespace); if (index < 0) { return null; } return elementData[index]; } /** * Return index of the Attribute with the * given name and uri. */ int indexOf(String name, Namespace namespace) { String uri = namespace.getURI(); if (elementData != null) { for (int i = 0; i < size; i++) { Attribute old = elementData[i]; String oldURI = old.getNamespaceURI(); String oldName = old.getName(); if (oldURI.equals(uri) && oldName.equals(name)) { return i; } } } return -1; } /** * Remove the object at the specified offset. * * @param index The offset of the object. * @return The Object which was removed. */ public Object remove(int index) { if (index<0 || index>=size) throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); Attribute old = elementData[index]; old.setParent(null); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index,numMoved); elementData[--size] = null; // Let gc do its work modCount++; return old; } /** * Remove the Attribute with the * given name and Namespace. * * @param namespace Namespace to match * @return the true if attribute was removed, * false otherwise */ boolean remove(String name, Namespace namespace) { int index = indexOf(name, namespace); if (index < 0) { return false; } remove(index); return true; } /** * Set the object at the specified location to the supplied * object. * * @param index The location to set the value to. * @param obj The location to set the value to. * @return The object which was replaced. * throws IndexOutOfBoundsException if index < 0 || index >= size() */ public Object set(int index, Object obj) { if (obj instanceof Attribute) { Attribute attribute = (Attribute) obj; int duplicate = indexOfDuplicate(attribute); if ((duplicate >= 0) && (duplicate != index)) { throw new IllegalAddException("Cannot set duplicate attribute"); } return set(index, attribute); } else if (obj == null) { throw new IllegalAddException("Cannot add null attribute"); } else { throw new IllegalAddException("Class " + obj.getClass().getName() + " is not an attribute"); } } /** * Set the object at the specified location to the supplied * object. Note: does not check for duplicate attributes. * * @param index The location to set the value to. * @param attribute The attribute to set. * @return The object which was replaced. * throws IndexOutOfBoundsException if index < 0 || index >= size() */ Object set(int index, Attribute attribute) { if (index < 0 || index >= size) throw new IndexOutOfBoundsException("Index: " + index + " Size: " + size()); if (attribute.getParent() != null) { throw new IllegalAddException( "The attribute already has an existing parent \"" + attribute.getParent().getQualifiedName() + "\""); } String reason = Verifier.checkNamespaceCollision(attribute, parent); if (reason != null) { throw new IllegalAddException(parent, attribute, reason); } Attribute old = (Attribute) elementData[index]; old.setParent(null); elementData[index] = attribute; attribute.setParent(parent); return old; } /** * Return index of attribute with same name and Namespace, or * -1 if one doesn't exist */ private int indexOfDuplicate(Attribute attribute) { int duplicate = -1; String name = attribute.getName(); Namespace namespace = attribute.getNamespace(); duplicate = indexOf(name, namespace); return duplicate; } /** * Return the number of items in this list * * @return The number of items in this list. */ public int size() { return size; } /** * Return this list as a String */ public String toString() { return super.toString(); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/0000755000175000017500000000000011377161311020707 5ustar jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/DOMOutputter.java0000644000175000017500000004170011377161311024127 0ustar /*-- $Id: DOMOutputter.java,v 1.1.1.1 2005/12/02 14:16:52 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; import java.util.*; import org.jdom.*; import org.jdom.adapters.*; /** * Outputs a JDOM {@link org.jdom.Document org.jdom.Document} as a DOM {@link * org.w3c.dom.Document org.w3c.dom.Document}. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:52 $ * @author Brett McLaughlin * @author Jason Hunter * @author Matthew Merlo * @author Dan Schaffer * @author Yusuf Goolamabbas * @author Bradley S. Huffman */ public class DOMOutputter { private static final String CVS_ID = "@(#) $RCSfile: DOMOutputter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:52 $ $Name: $"; /** Default adapter class */ private static final String DEFAULT_ADAPTER_CLASS = "org.jdom.adapters.XercesDOMAdapter"; /** Adapter to use for interfacing with the DOM implementation */ private String adapterClass; /** * This creates a new DOMOutputter which will attempt to first locate * a DOM implementation to use via JAXP, and if JAXP does not exist or * there's a problem, will fall back to the default parser. */ public DOMOutputter() { // nothing } /** * This creates a new DOMOutputter using the specified DOMAdapter * implementation as a way to choose the underlying parser. * * @param adapterClass String name of class * to use for DOM output */ public DOMOutputter(String adapterClass) { this.adapterClass = adapterClass; } /** * This converts the JDOM Document parameter to a * DOM Document, returning the DOM version. The DOM implementation * is the one chosen in the constructor. * * @param document Document to output. * @return an org.w3c.dom.Document version */ public org.w3c.dom.Document output(Document document) throws JDOMException { NamespaceStack namespaces = new NamespaceStack(); org.w3c.dom.Document domDoc = null; try { // Assign DOCTYPE during construction DocType dt = document.getDocType(); domDoc = createDOMDocument(dt); // Add content Iterator itr = document.getContent().iterator(); while (itr.hasNext()) { Object node = itr.next(); if (node instanceof Element) { Element element = (Element) node; org.w3c.dom.Element domElement = output(element, domDoc, namespaces); // Add the root element, first check for existing root org.w3c.dom.Element root = domDoc.getDocumentElement(); if (root == null) { // Normal case domDoc.appendChild(domElement); // normal case } else { // Xerces 1.3 creates new docs with a // XXX: Need to address DOCTYPE mismatch still domDoc.replaceChild(domElement, root); } } else if (node instanceof Comment) { Comment comment = (Comment) node; org.w3c.dom.Comment domComment = domDoc.createComment(comment.getText()); domDoc.appendChild(domComment); } else if (node instanceof ProcessingInstruction) { ProcessingInstruction pi = (ProcessingInstruction) node; org.w3c.dom.ProcessingInstruction domPI = domDoc.createProcessingInstruction( pi.getTarget(), pi.getData()); domDoc.appendChild(domPI); } else if (node instanceof DocType) { // We already dealt with the DocType above } else { throw new JDOMException( "Document contained top-level content with type:" + node.getClass().getName()); } } } catch (Throwable e) { throw new JDOMException("Exception outputting Document", e); } return domDoc; } private org.w3c.dom.Document createDOMDocument(DocType dt) throws JDOMException { if (adapterClass != null) { // The user knows that they want to use a particular impl try { DOMAdapter adapter = (DOMAdapter)Class.forName(adapterClass).newInstance(); // System.out.println("using specific " + adapterClass); return adapter.createDocument(dt); } catch (ClassNotFoundException e) { // e.printStackTrace(); } catch (IllegalAccessException e) { // e.printStackTrace(); } catch (InstantiationException e) { // e.printStackTrace(); } } else { // Try using JAXP... try { DOMAdapter adapter = (DOMAdapter)Class.forName( "org.jdom.adapters.JAXPDOMAdapter").newInstance(); // System.out.println("using JAXP"); return adapter.createDocument(dt); } catch (ClassNotFoundException e) { // e.printStackTrace(); } catch (IllegalAccessException e) { // e.printStackTrace(); } catch (InstantiationException e) { // e.printStackTrace(); } } // If no DOM doc yet, try to use a hard coded default try { DOMAdapter adapter = (DOMAdapter) Class.forName(DEFAULT_ADAPTER_CLASS).newInstance(); return adapter.createDocument(dt); // System.out.println("Using default " + // DEFAULT_ADAPTER_CLASS); } catch (ClassNotFoundException e) { // e.printStackTrace(); } catch (IllegalAccessException e) { // e.printStackTrace(); } catch (InstantiationException e) { // e.printStackTrace(); } throw new JDOMException("No JAXP or default parser available"); } private org.w3c.dom.Element output(Element element, org.w3c.dom.Document domDoc, NamespaceStack namespaces) throws JDOMException { try { int previouslyDeclaredNamespaces = namespaces.size(); org.w3c.dom.Element domElement = null; if (element.getNamespace() == Namespace.NO_NAMESPACE) { // No namespace, use createElement domElement = domDoc.createElement(element.getQualifiedName()); } else { domElement = domDoc.createElementNS( element.getNamespaceURI(), element.getQualifiedName()); } // Add namespace attributes, beginning with the element's own // Do this only if it's not the XML namespace and it's // not the NO_NAMESPACE with the prefix "" not yet mapped // (we do output xmlns="" if the "" prefix was already used // and we need to reclaim it for the NO_NAMESPACE) Namespace ns = element.getNamespace(); if (ns != Namespace.XML_NAMESPACE && !(ns == Namespace.NO_NAMESPACE && namespaces.getURI("") == null)) { String prefix = ns.getPrefix(); String uri = namespaces.getURI(prefix); if (!ns.getURI().equals(uri)) { // output a new namespace decl namespaces.push(ns); String attrName = getXmlnsTagFor(ns); domElement.setAttribute(attrName, ns.getURI()); } } // Add additional namespaces also Iterator itr = element.getAdditionalNamespaces().iterator(); while (itr.hasNext()) { Namespace additional = (Namespace)itr.next(); String prefix = additional.getPrefix(); String uri = namespaces.getURI(prefix); if (!additional.getURI().equals(uri)) { String attrName = getXmlnsTagFor(additional); domElement.setAttribute(attrName, additional.getURI()); namespaces.push(additional); } } // Add attributes to the DOM element itr = element.getAttributes().iterator(); while (itr.hasNext()) { Attribute attribute = (Attribute) itr.next(); domElement.setAttributeNode(output(attribute, domDoc)); Namespace ns1 = attribute.getNamespace(); if ((ns1 != Namespace.NO_NAMESPACE) && (ns1 != Namespace.XML_NAMESPACE)) { String prefix = ns1.getPrefix(); String uri = namespaces.getURI(prefix); if (!ns1.getURI().equals(uri)) { // output a new decl String attrName = getXmlnsTagFor(ns1); domElement.setAttribute(attrName, ns1.getURI()); namespaces.push(ns1); } } // Crimson doesn't like setAttributeNS() for non-NS attribs if (attribute.getNamespace() == Namespace.NO_NAMESPACE) { // No namespace, use setAttribute domElement.setAttribute(attribute.getQualifiedName(), attribute.getValue()); } else { domElement.setAttributeNS(attribute.getNamespaceURI(), attribute.getQualifiedName(), attribute.getValue()); } } // Add content to the DOM element itr = element.getContent().iterator(); while (itr.hasNext()) { Object node = itr.next(); if (node instanceof Element) { Element e = (Element) node; org.w3c.dom.Element domElt = output(e, domDoc, namespaces); domElement.appendChild(domElt); } else if (node instanceof String) { String str = (String) node; org.w3c.dom.Text domText = domDoc.createTextNode(str); domElement.appendChild(domText); } else if (node instanceof CDATA) { CDATA cdata = (CDATA) node; org.w3c.dom.CDATASection domCdata = domDoc.createCDATASection(cdata.getText()); domElement.appendChild(domCdata); } else if (node instanceof Text) { Text text = (Text) node; org.w3c.dom.Text domText = domDoc.createTextNode(text.getText()); domElement.appendChild(domText); } else if (node instanceof Comment) { Comment comment = (Comment) node; org.w3c.dom.Comment domComment = domDoc.createComment(comment.getText()); domElement.appendChild(domComment); } else if (node instanceof ProcessingInstruction) { ProcessingInstruction pi = (ProcessingInstruction) node; org.w3c.dom.ProcessingInstruction domPI = domDoc.createProcessingInstruction( pi.getTarget(), pi.getData()); domElement.appendChild(domPI); } else if (node instanceof EntityRef) { EntityRef entity = (EntityRef) node; org.w3c.dom.EntityReference domEntity = domDoc.createEntityReference(entity.getName()); domElement.appendChild(domEntity); } else { throw new JDOMException( "Element contained content with type:" + node.getClass().getName()); } } // Remove declared namespaces from stack while (namespaces.size() > previouslyDeclaredNamespaces) { namespaces.pop(); } return domElement; } catch (Exception e) { throw new JDOMException("Exception outputting Element " + element.getQualifiedName(), e); } } private org.w3c.dom.Attr output(Attribute attribute, org.w3c.dom.Document domDoc) throws JDOMException { org.w3c.dom.Attr domAttr = null; try { if (attribute.getNamespace() == Namespace.NO_NAMESPACE) { // No namespace, use createAttribute domAttr = domDoc.createAttribute(attribute.getQualifiedName()); } else { domAttr = domDoc.createAttributeNS(attribute.getNamespaceURI(), attribute.getQualifiedName()); } domAttr.setValue(attribute.getValue()); } catch (Exception e) { throw new JDOMException("Exception outputting Attribute " + attribute.getQualifiedName(), e); } return domAttr; } /** * This will handle adding any {@link Namespace} * attributes to the DOM tree. * * @param ns Namespace to add definition of */ private static String getXmlnsTagFor(Namespace ns) { String attrName = "xmlns"; if (!ns.getPrefix().equals("")) { attrName += ":"; attrName += ns.getPrefix(); } return attrName; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/NamespaceStack.java0000644000175000017500000001251611377161311024441 0ustar /*-- $Id: NamespaceStack.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; import java.util.*; import org.jdom.Namespace; /** * A non-public utility class used by both {@link XMLOutputter} and * {@link SAXOutputter} to manage namespaces in a JDOM Document * during output. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Elliotte Rusty Harolde * @author Fred Trimble * @author Brett McLaughlin */ class NamespaceStack { private static final String CVS_ID = "@(#) $RCSfile: NamespaceStack.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; /** The prefixes available */ private Stack prefixes; /** The URIs available */ private Stack uris; /** * This creates the needed storage. */ NamespaceStack() { prefixes = new Stack(); uris = new Stack(); } /** * This will add a new {@link Namespace} * to those currently available. * * @param ns Namespace to add. */ public void push(Namespace ns) { prefixes.push(ns.getPrefix()); uris.push(ns.getURI()); } /** * This will remove the topmost (most recently added) * {@link Namespace}, and return its prefix. * * @return String - the popped namespace prefix. */ public String pop() { String prefix = (String)prefixes.pop(); uris.pop(); return prefix; } /** * This returns the number of available namespaces. * * @return int - size of the namespace stack. */ public int size() { return prefixes.size(); } /** * Given a prefix, this will return the namespace URI most * rencently (topmost) associated with that prefix. * * @param prefix String namespace prefix. * @return String - the namespace URI for that prefix. */ public String getURI(String prefix) { int index = prefixes.lastIndexOf(prefix); if (index == -1) { return null; } String uri = (String)uris.elementAt(index); return uri; } /** * This will print out the size and current stack, from the * most recently added {@link Namespace} to * the "oldest," all to System.out. */ public String toString() { StringBuffer buf = new StringBuffer(); String sep = System.getProperty("line.separator"); buf.append("Stack: " + prefixes.size() + sep); for (int i = 0; i < prefixes.size(); i++) { buf.append(prefixes.elementAt(i) + "&" + uris.elementAt(i) + sep); } return buf // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/XMLOutputter.java0000644000175000017500000015742611377161311024165 0ustar /*-- $Id: XMLOutputter.java,v 1.1.1.1 2005/12/02 14:16:53 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; import java.io.*; import java.util.*; import javax.xml.transform.Result; import org.jdom.*; /** * Outputs a JDOM document as a stream of bytes. The outputter can manage many * styles of document formatting, from untouched to pretty printed. The default * is to output the document content exactly as created, but this can be changed * by setting a new Format object. For pretty-print output, use * {@link Format#getPrettyFormat()}. For whitespace-normalized * output, use {@link Format#getCompactFormat()}. *

* There are {@link #output output(...)} methods to print any of * the standard JDOM classes, including Document and Element, to either a Writer * or an OutputStream. Warning: When outputting to a Writer, make sure * the writer's encoding matches the encoding setting in the Format object. This * ensures the encoding in which the content is written (controlled by the * Writer configuration) matches the encoding placed in the document's XML * declaration (controlled by the XMLOutputter). Because a Writer cannot be * queried for its encoding, the information must be passed to the Format * manually in its constructor or via the * {@link Format#setEncoding} method. The default encoding is * UTF-8. *

* The methods {@link #outputString outputString(...)} are for * convenience only; for top performance you should call one of the {@link * #output output(...)} methods and pass in your own Writer or * OutputStream if possible. *

* XML declarations are always printed on their own line followed by a line * seperator (this doesn't change the semantics of the document). To omit * printing of the declaration use * {@link Format#setOmitDeclaration}. To omit printing of the * encoding in the declaration use {@link Format#setOmitEncoding}. * Unfortunatly there is currently no way to know the original encoding of the * document. *

* Empty elements are by default printed as <empty/>, but this can be * configured with {@link Format#setExpandEmptyElements} to cause * them to be expanded to <empty></empty>. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:53 $ * @author Brett McLaughlin * @author Jason Hunter * @author Jason Reid * @author Wolfgang Werner * @author Elliotte Rusty Harold * @author David & Will (from Post Tool Design) * @author Dan Schaffer * @author Alex Chaffee * @author Bradley S. Huffman */ public class XMLOutputter implements Cloneable { private static final String CVS_ID = "@(#) $RCSfile: XMLOutputter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:53 $ $Name: $"; // For normal output private Format userFormat = Format.getRawFormat(); // For xml:space="preserve" protected static final Format preserveFormat = Format.getRawFormat(); // What's currently in use protected Format currentFormat = userFormat; /** Whether output escaping is enabled for the being processed * Element - default is true */ private boolean escapeOutput = true; // * * * * * * * * * * Constructors * * * * * * * * * * // * * * * * * * * * * Constructors * * * * * * * * * * /** * This will create an XMLOutputter with the default * {@link Format} matching {@link Format#getRawFormat}. */ public XMLOutputter() { } /** * This will create an XMLOutputter with the specified * format characteristics. Note the format object is cloned internally * before use. */ public XMLOutputter(Format format) { userFormat = (Format) format.clone(); currentFormat = userFormat; } /** * This will create an XMLOutputter with all the * options as set in the given XMLOutputter. Note * that XMLOutputter two = (XMLOutputter)one.clone(); * would work equally well. * * @param that the XMLOutputter to clone */ public XMLOutputter(XMLOutputter that) { this.userFormat = (Format) that.userFormat.clone(); currentFormat = userFormat; } // * * * * * * * * * * Set parameters methods * * * * * * * * * * // * * * * * * * * * * Set parameters methods * * * * * * * * * * /** * Sets the new format logic for the outputter. Note the Format * object is cloned internally before use. * * @param newFormat the format to use for output */ public void setFormat(Format newFormat) { this.userFormat = (Format) newFormat.clone(); this.currentFormat = userFormat; } /** * Returns the current format in use by the outputter. Note the * Format object returned is a clone of the one used internally. */ public Format getFormat() { return (Format) userFormat.clone(); } // * * * * * * * * * * Output to a OutputStream * * * * * * * * * * // * * * * * * * * * * Output to a OutputStream * * * * * * * * * * /** * This will print the Document to the given output stream. * The characters are printed using the encoding specified in the * constructor, or a default of UTF-8. * * @param doc Document to format. * @param out OutputStream to use. * @throws IOException - if there's any problem writing. */ public void output(Document doc, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(doc, writer); // output() flushes } /** * Print out the {@link DocType}. * * @param doctype DocType to output. * @param out OutputStream to use. */ public void output(DocType doctype, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(doctype, writer); // output() flushes } /** * Print out an {@link Element}, including * its {@link Attribute}s, and all * contained (child) elements, etc. * * @param element Element to output. * @param out Writer to use. */ public void output(Element element, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(element, writer); // output() flushes } /** * This will handle printing out an {@link * Element}'s content only, not including its tag, and * attributes. This can be useful for printing the content of an * element that contains HTML, like "<description>JDOM is * <b>fun>!</description>". * * @param element Element to output. * @param out OutputStream to use. */ public void outputElementContent(Element element, OutputStream out) throws IOException { Writer writer = makeWriter(out); outputElementContent(element, writer); // output() flushes } /** * This will handle printing out a list of nodes. * This can be useful for printing the content of an element that * contains HTML, like "<description>JDOM is * <b>fun>!</description>". * * @param list List of nodes. * @param out OutputStream to use. */ public void output(List list, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(list, writer); // output() flushes } /** * Print out a {@link CDATA} node. * * @param cdata CDATA to output. * @param out OutputStream to use. */ public void output(CDATA cdata, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(cdata, writer); // output() flushes } /** * Print out a {@link Text} node. Perfoms * the necessary entity escaping and whitespace stripping. * * @param text Text to output. * @param out OutputStream to use. */ public void output(Text text, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(text, writer); // output() flushes } /** * Print out a {@link Comment}. * * @param comment Comment to output. * @param out OutputStream to use. */ public void output(Comment comment, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(comment, writer); // output() flushes } /** * Print out a {@link ProcessingInstruction}. * * @param pi ProcessingInstruction to output. * @param out OutputStream to use. */ public void output(ProcessingInstruction pi, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(pi, writer); // output() flushes } /** * Print out a {@link EntityRef}. * * @param entity EntityRef to output. * @param out OutputStream to use. */ public void output(EntityRef entity, OutputStream out) throws IOException { Writer writer = makeWriter(out); output(entity, writer); // output() flushes } /** * Get an OutputStreamWriter, using prefered encoding * (see {@link Format#setEncoding}). */ private Writer makeWriter(OutputStream out) throws java.io.UnsupportedEncodingException { return makeWriter(out, userFormat.encoding); } /** * Get an OutputStreamWriter, use specified encoding. */ private static Writer makeWriter(OutputStream out, String enc) throws java.io.UnsupportedEncodingException { // "UTF-8" is not recognized before JDK 1.1.6, so we'll translate // into "UTF8" which works with all JDKs. if ("UTF-8".equals(enc)) { enc = "UTF8"; } Writer writer = new BufferedWriter( (new OutputStreamWriter( new BufferedOutputStream(out), enc) )); return writer; } // * * * * * * * * * * Output to a Writer * * * * * * * * * * // * * * * * * * * * * Output to a Writer * * * * * * * * * * /** * This will print the Document to the given Writer. * *

* Warning: using your own Writer may cause the outputter's * preferred character encoding to be ignored. If you use * encodings other than UTF-8, we recommend using the method that * takes an OutputStream instead. *

* * @param doc Document to format. * @param out Writer to use. * @throws IOException - if there's any problem writing. */ public void output(Document doc, Writer out) throws IOException { printDeclaration(out, doc, userFormat.encoding); // Print out root element, as well as any root level // comments and processing instructions, // starting with no indentation List content = doc.getContent(); int size = content.size(); for (int i = 0; i < size; i++) { Object obj = content.get(i); if (obj instanceof Element) { printElement(out, doc.getRootElement(), 0, createNamespaceStack()); } else if (obj instanceof Comment) { printComment(out, (Comment) obj); } else if (obj instanceof ProcessingInstruction) { printProcessingInstruction(out, (ProcessingInstruction) obj); } else if (obj instanceof DocType) { printDocType(out, doc.getDocType()); // Always print line separator after declaration, helps the // output look better and is semantically inconsequential out.write(currentFormat.lineSeparator); } else { // XXX if we get here then we have a illegal content, for // now we'll just ignore it } newline(out); indent(out, 0); } // Output final line separator // We output this no matter what the newline flags say out.write(currentFormat.lineSeparator); out.flush(); } /** * Print out the {@link DocType}. * * @param doctype DocType to output. * @param out Writer to use. */ public void output(DocType doctype, Writer out) throws IOException { printDocType(out, doctype); out.flush(); } /** * Print out an {@link Element}, including * its {@link Attribute}s, and all * contained (child) elements, etc. * * @param element Element to output. * @param out Writer to use. */ public void output(Element element, Writer out) throws IOException { // If this is the root element we could pre-initialize the // namespace stack with the namespaces printElement(out, element, 0, createNamespaceStack()); out.flush(); } /** * This will handle printing out an {@link * Element}'s content only, not including its tag, and * attributes. This can be useful for printing the content of an * element that contains HTML, like "<description>JDOM is * <b>fun>!</description>". * * @param element Element to output. * @param out Writer to use. */ public void outputElementContent(Element element, Writer out) throws IOException { List content = element.getContent(); printContentRange(out, content, 0, content.size(), 0, createNamespaceStack()); out.flush(); } /** * This will handle printing out a list of nodes. * This can be useful for printing the content of an element that * contains HTML, like "<description>JDOM is * <b>fun>!</description>". * * @param list List of nodes. * @param out Writer to use. */ public void output(List list, Writer out) throws IOException { printContentRange(out, list, 0, list.size(), 0, createNamespaceStack()); out.flush(); } /** * Print out a {@link CDATA} node. * * @param cdata CDATA to output. * @param out Writer to use. */ public void output(CDATA cdata, Writer out) throws IOException { printCDATA(out, cdata); out.flush(); } /** * Print out a {@link Text} node. Perfoms * the necessary entity escaping and whitespace stripping. * * @param text Text to output. * @param out Writer to use. */ public void output(Text text, Writer out) throws IOException { printText(out, text); out.flush(); } /** * Print out a {@link Comment}. * * @param comment Comment to output. * @param out Writer to use. */ public void output(Comment comment, Writer out) throws IOException { printComment(out, comment); out.flush(); } /** * Print out a {@link ProcessingInstruction}. * * @param pi ProcessingInstruction to output. * @param out Writer to use. */ public void output(ProcessingInstruction pi, Writer out) throws IOException { boolean currentEscapingPolicy = currentFormat.ignoreTrAXEscapingPIs; // Output PI verbatim, disregarding TrAX escaping PIs. currentFormat.setIgnoreTrAXEscapingPIs(true); printProcessingInstruction(out, pi); currentFormat.setIgnoreTrAXEscapingPIs(currentEscapingPolicy); out.flush(); } /** * Print out a {@link EntityRef}. * * @param entity EntityRef to output. * @param out Writer to use. */ public void output(EntityRef entity, Writer out) throws IOException { printEntityRef(out, entity); out.flush(); } // * * * * * * * * * * Output to a String * * * * * * * * * * // * * * * * * * * * * Output to a String * * * * * * * * * * /** * Return a string representing a document. Uses an internal * StringWriter. Warning: a String is Unicode, which may not match * the outputter's specified encoding. * * @param doc Document to format. */ public String outputString(Document doc) { StringWriter out = new StringWriter(); try { output(doc, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing a DocType. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param doctype DocType to format. */ public String outputString(DocType doctype) { StringWriter out = new StringWriter(); try { output(doctype, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing an element. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param element Element to format. */ public String outputString(Element element) { StringWriter out = new StringWriter(); try { output(element, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing a list of nodes. The list is * assumed to contain legal JDOM nodes. * * @param list List to format. */ public String outputString(List list) { StringWriter out = new StringWriter(); try { output(list, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing a CDATA node. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param cdata CDATA to format. */ public String outputString(CDATA cdata) { StringWriter out = new StringWriter(); try { output(cdata, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing a Text node. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param text Text to format. */ public String outputString(Text text) { StringWriter out = new StringWriter(); try { output(text, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing a comment. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param comment Comment to format. */ public String outputString(Comment comment) { StringWriter out = new StringWriter(); try { output(comment, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing a PI. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param pi ProcessingInstruction to format. */ public String outputString(ProcessingInstruction pi) { StringWriter out = new StringWriter(); try { output(pi, out); // output() flushes } catch (IOException e) { } return out.toString(); } /** * Return a string representing an entity. Warning: a String is * Unicode, which may not match the outputter's specified * encoding. * * @param entity EntityRef to format. */ public String outputString(EntityRef entity) { StringWriter out = new StringWriter(); try { output(entity, out); // output() flushes } catch (IOException e) { } return out.toString(); } // * * * * * * * * * * Internal printing methods * * * * * * * * * * // * * * * * * * * * * Internal printing methods * * * * * * * * * * /** * This will handle printing of the declaration. * Assumes XML version 1.0 since we don't directly know. * * @param doc Document whose declaration to write. * @param out Writer to use. * @param encoding The encoding to add to the declaration */ protected void printDeclaration(Writer out, Document doc, String encoding) throws IOException { // Only print the declaration if it's not being omitted if (!userFormat.omitDeclaration) { // Assume 1.0 version out.write(""); // Print new line after decl always, even if no other new lines // Helps the output look better and is semantically // inconsequential out.write(currentFormat.lineSeparator); } } /** * This handle printing the DOCTYPE declaration if one exists. * * @param docType Document whose declaration to write. * @param out Writer to use. */ protected void printDocType(Writer out, DocType docType) throws IOException { String publicID = docType.getPublicID(); String systemID = docType.getSystemID(); String internalSubset = docType.getInternalSubset(); boolean hasPublic = false; out.write(""); } /** * This will handle printing of comments. * * @param comment Comment to write. * @param out Writer to use. */ protected void printComment(Writer out, Comment comment) throws IOException { out.write(""); } /** * This will handle printing of processing instructions. * * @param pi ProcessingInstruction to write. * @param out Writer to use. */ protected void printProcessingInstruction(Writer out, ProcessingInstruction pi ) throws IOException { String target = pi.getTarget(); boolean piProcessed = false; if (currentFormat.ignoreTrAXEscapingPIs == false) { if (target.equals(Result.PI_DISABLE_OUTPUT_ESCAPING)) { escapeOutput = false; piProcessed = true; } else if (target.equals(Result.PI_ENABLE_OUTPUT_ESCAPING)) { escapeOutput = true; piProcessed = true; } } if (piProcessed == false) { String rawData = pi.getData(); // Write or if no data then just if (!"".equals(rawData)) { out.write(""); } else { out.write(""); } } } /** * This will handle printing a {@link EntityRef}. * Only the entity reference such as &entity; * will be printed. However, subclasses are free to override * this method to print the contents of the entity instead. * * @param entity EntityRef to output. * @param out Writer to use. */ protected void printEntityRef(Writer out, EntityRef entity) throws IOException { out.write("&"); out.write(entity.getName()); out.write(";"); } /** * This will handle printing of {@link CDATA} text. * * @param cdata CDATA to output. * @param out Writer to use. */ protected void printCDATA(Writer out, CDATA cdata) throws IOException { String str = (currentFormat.mode == Format.TextMode.NORMALIZE) ? cdata.getTextNormalize() : ((currentFormat.mode == Format.TextMode.TRIM) ? cdata.getText().trim() : cdata.getText()); out.write(""); } /** * This will handle printing of {@link Text} strings. * * @param text Text to write. * @param out Writer to use. */ protected void printText(Writer out, Text text) throws IOException { String str = (currentFormat.mode == Format.TextMode.NORMALIZE) ? text.getTextNormalize() : ((currentFormat.mode == Format.TextMode.TRIM) ? text.getText().trim() : text.getText()); out.write(escapeElementEntities(str)); } /** * This will handle printing a string. Escapes the element entities, * trims interior whitespace, etc. if necessary. */ private void printString(Writer out, String str) throws IOException { if (currentFormat.mode == Format.TextMode.NORMALIZE) { str = Text.normalizeString(str); } else if (currentFormat.mode == Format.TextMode.TRIM) { str = str.trim(); } out.write(escapeElementEntities(str)); } /** * This will handle printing of a {@link Element}, * its {@link Attribute}s, and all contained (child) * elements, etc. * * @param element Element to output. * @param out Writer to use. * @param level int level of indention. * @param namespaces List stack of Namespaces in scope. */ protected void printElement(Writer out, Element element, int level, NamespaceStack namespaces) throws IOException { List attributes = element.getAttributes(); List content = element.getContent(); // Check for xml:space and adjust format settings String space = null; if (attributes != null) { space = element.getAttributeValue("space", Namespace.XML_NAMESPACE); } Format previousFormat = currentFormat; if ("default".equals(space)) { currentFormat = userFormat; } else if ("preserve".equals(space)) { currentFormat = preserveFormat; } // Print the beginning of the tag plus attributes and any // necessary namespace declarations out.write("<"); printQualifiedName(out, element); // Mark our namespace starting point int previouslyDeclaredNamespaces = namespaces.size(); // Print the element's namespace, if appropriate printElementNamespace(out, element, namespaces); // Print out additional namespace declarations printAdditionalNamespaces(out, element, namespaces); // Print out attributes if (attributes != null) printAttributes(out, attributes, element, namespaces); // Depending on the settings (newlines, textNormalize, etc), we may // or may not want to print all of the content, so determine the // index of the start of the content we're interested // in based on the current settings. int start = skipLeadingWhite(content, 0); int size = content.size(); if (start >= size) { // Case content is empty or all insignificant whitespace if (currentFormat.expandEmptyElements) { out.write(">"); } else { out.write(" />"); } } else { out.write(">"); // For a special case where the content is only CDATA // or Text we don't want to indent after the start or // before the end tag. if (nextNonText(content, start) < size) { // Case Mixed Content - normal indentation newline(out); printContentRange(out, content, start, size, level + 1, namespaces); newline(out); indent(out, level); } else { // Case all CDATA or Text - no indentation printTextRange(out, content, start, size); } out.write(""); } // remove declared namespaces from stack while (namespaces.size() > previouslyDeclaredNamespaces) { namespaces.pop(); } // Restore our format settings currentFormat = previousFormat; } /** * This will handle printing of content within a given range. * The range to print is specified in typical Java fashion; the * starting index is inclusive, while the ending index is * exclusive. * * @param content List of content to output * @param start index of first content node (inclusive. * @param end index of last content node (exclusive). * @param out Writer to use. * @param level int level of indentation. * @param namespaces List stack of Namespaces in scope. */ private void printContentRange(Writer out, List content, int start, int end, int level, NamespaceStack namespaces) throws IOException { boolean firstNode; // Flag for 1st node in content Object next; // Node we're about to print int first, index; // Indexes into the list of content index = start; while (index < end) { firstNode = (index == start) ? true : false; next = content.get(index); // // Handle consecutive CDATA, Text, and EntityRef nodes all at once // if ((next instanceof Text) || (next instanceof EntityRef)) { first = skipLeadingWhite(content, index); // Set index to next node for loop index = nextNonText(content, first); // If it's not all whitespace - print it! if (first < index) { if (!firstNode) newline(out); indent(out, level); printTextRange(out, content, first, index); } continue; } // // Handle other nodes // if (!firstNode) { newline(out); } indent(out, level); if (next instanceof Comment) { printComment(out, (Comment)next); } else if (next instanceof Element) { printElement(out, (Element)next, level, namespaces); } else if (next instanceof ProcessingInstruction) { printProcessingInstruction(out, (ProcessingInstruction)next); } else { // XXX if we get here then we have a illegal content, for // now we'll just ignore it (probably should throw // a exception) } index++; } /* while */ } /** * This will handle printing of a sequence of {@link CDATA} * or {@link Text} nodes. It is an error to have any other * pass this method any other type of node. * * @param content List of content to output * @param start index of first content node (inclusive). * @param end index of last content node (exclusive). * @param out Writer to use. */ private void printTextRange(Writer out, List content, int start, int end ) throws IOException { String previous; // Previous text printed Object node; // Next node to print String next; // Next text to print previous = null; // Remove leading whitespace-only nodes start = skipLeadingWhite(content, start); int size = content.size(); if (start < size) { // And remove trialing whitespace-only nodes end = skipTrailingWhite(content, end); for (int i = start; i < end; i++) { node = content.get(i); // Get the unmangled version of the text // we are about to print if (node instanceof Text) { next = ((Text) node).getText(); } else if (node instanceof EntityRef) { next = "&" + ((EntityRef) node).getValue() + ";"; } else { throw new IllegalStateException("Should see only " + "CDATA, Text, or EntityRef"); } // This may save a little time if (next == null || "".equals(next)) { continue; } // Determine if we need to pad the output (padding is // only need in trim or normalizing mode) if (previous != null) { // Not 1st node if (currentFormat.mode == Format.TextMode.NORMALIZE || currentFormat.mode == Format.TextMode.TRIM) { if ((endsWithWhite(previous)) || (startsWithWhite(next))) { out.write(" "); } } } // Print the node if (node instanceof CDATA) { printCDATA(out, (CDATA) node); } else if (node instanceof EntityRef) { printEntityRef(out, (EntityRef) node); } else { printString(out, next); } previous = next; } } } /** * This will handle printing of any needed {@link Namespace} * declarations. * * @param ns Namespace to print definition of * @param out Writer to use. */ private void printNamespace(Writer out, Namespace ns, NamespaceStack namespaces) throws IOException { String prefix = ns.getPrefix(); String uri = ns.getURI(); // Already printed namespace decl? if (uri.equals(namespaces.getURI(prefix))) { return; } out.write(" xmlns"); if (!prefix.equals("")) { out.write(":"); out.write(prefix); } out.write("=\""); out.write(uri); out.write("\""); namespaces.push(ns); } /** * This will handle printing of a {@link Attribute} list. * * @param attributes List of Attribute objcts * @param out Writer to use */ protected void printAttributes(Writer out, List attributes, Element parent, NamespaceStack namespaces) throws IOException { // I do not yet handle the case where the same prefix maps to // two different URIs. For attributes on the same element // this is illegal; but as yet we don't throw an exception // if someone tries to do this // Set prefixes = new HashSet(); for (int i = 0; i < attributes.size(); i++) { Attribute attribute = (Attribute) attributes.get(i); Namespace ns = attribute.getNamespace(); if ((ns != Namespace.NO_NAMESPACE) && (ns != Namespace.XML_NAMESPACE)) { printNamespace(out, ns, namespaces); } out.write(" "); printQualifiedName(out, attribute); out.write("="); out.write("\""); out.write(escapeAttributeEntities(attribute.getValue())); out.write("\""); } } private void printElementNamespace(Writer out, Element element, NamespaceStack namespaces) throws IOException { // Add namespace decl only if it's not the XML namespace and it's // not the NO_NAMESPACE with the prefix "" not yet mapped // (we do output xmlns="" if the "" prefix was already used and we // need to reclaim it for the NO_NAMESPACE) Namespace ns = element.getNamespace(); if (ns == Namespace.XML_NAMESPACE) { return; } if ( !((ns == Namespace.NO_NAMESPACE) && (namespaces.getURI("") == null))) { printNamespace(out, ns, namespaces); } } private void printAdditionalNamespaces(Writer out, Element element, NamespaceStack namespaces) throws IOException { List list = element.getAdditionalNamespaces(); if (list != null) { for (int i = 0; i < list.size(); i++) { Namespace additional = (Namespace)list.get(i); printNamespace(out, additional, namespaces); } } } // * * * * * * * * * * Support methods * * * * * * * * * * // * * * * * * * * * * Support methods * * * * * * * * * * /** * This will print a new line only if the newlines flag was set to * true. * * @param out Writer to use */ private void newline(Writer out) throws IOException { if (currentFormat.indent != null) { out.write(currentFormat.lineSeparator); } } /** * This will print indents (only if the newlines flag was * set to true, and indent is non-null). * * @param out Writer to use * @param level current indent level (number of tabs) */ private void indent(Writer out, int level) throws IOException { if (currentFormat.indent == null || currentFormat.indent.equals("")) { return; } for (int i = 0; i < level; i++) { out.write(currentFormat.indent); } } // Returns the index of the first non-all-whitespace CDATA or Text, // index = content.size() is returned if content contains // all whitespace. // @param start index to begin search (inclusive) private int skipLeadingWhite(List content, int start) { if (start < 0) { start = 0; } int index = start; int size = content.size(); if (currentFormat.mode == Format.TextMode.TRIM_FULL_WHITE || currentFormat.mode == Format.TextMode.NORMALIZE || currentFormat.mode == Format.TextMode.TRIM) { while (index < size) { if (!isAllWhitespace(content.get(index))) { return index; } index++; } } return index; } // Return the index + 1 of the last non-all-whitespace CDATA or // Text node, index < 0 is returned // if content contains all whitespace. // @param start index to begin search (exclusive) private int skipTrailingWhite(List content, int start) { int size = content.size(); if (start > size) { start = size; } int index = start; if (currentFormat.mode == Format.TextMode.TRIM_FULL_WHITE || currentFormat.mode == Format.TextMode.NORMALIZE || currentFormat.mode == Format.TextMode.TRIM) { while (index >= 0) { if (!isAllWhitespace(content.get(index - 1))) break; --index; } } return index; } // Return the next non-CDATA, non-Text, or non-EntityRef node, // index = content.size() is returned if there is no more non-CDATA, // non-Text, or non-EntiryRef nodes // @param start index to begin search (inclusive) private static int nextNonText(List content, int start) { if (start < 0) { start = 0; } int index = start; int size = content.size(); while (index < size) { Object node = content.get(index); if (!((node instanceof Text) || (node instanceof EntityRef))) { return index; } index++; } return size; } // Determine if a Object is all whitespace private boolean isAllWhitespace(Object obj) { String str = null; if (obj instanceof String) { str = (String) obj; } else if (obj instanceof Text) { str = ((Text) obj).getText(); } else if (obj instanceof EntityRef) { return false; } else { return false; } for (int i = 0; i < str.length(); i++) { if (!isWhitespace(str.charAt(i))) return false; } return true; } // Determine if a string starts with a XML whitespace. private boolean startsWithWhite(String str) { if ((str != null) && (str.length() > 0) && isWhitespace(str.charAt(0))) { return true; } return false; } // Determine if a string ends with a XML whitespace. private boolean endsWithWhite(String str) { if ((str != null) && (str.length() > 0) && isWhitespace(str.charAt(str.length() - 1))) { return true; } return false; } // Determine if a character is a XML whitespace. // XXX should this method be in Verifier private static boolean isWhitespace(char c) { if (c==' ' || c=='\n' || c=='\t' || c=='\r' ){ return true; } return false; } /** * This will take the pre-defined entities in XML 1.0 and * convert their character representation to the appropriate * entity reference, suitable for XML attributes. It does not convert * the single quote (') because it's not necessary as the outputter * writes attributes surrounded by double-quotes. * * @param str String input to escape. * @return String with escaped content. */ public String escapeAttributeEntities(String str) { StringBuffer buffer; char ch; String entity; EscapeStrategy strategy = currentFormat.escapeStrategy; buffer = null; for (int i = 0; i < str.length(); i++) { ch = str.charAt(i); switch(ch) { case '<' : entity = "<"; break; case '>' : entity = ">"; break; /* case '\'' : entity = "'"; break; */ case '\"' : entity = """; break; case '&' : entity = "&"; break; case '\r' : entity = " "; break; case '\t' : entity = " "; break; case '\n' : entity = " "; break; default : if (strategy.shouldEscape(ch)) { entity = "&#x" + Integer.toHexString(ch) + ";"; } else { entity = null; } break; } if (buffer == null) { if (entity != null) { // An entity occurred, so we'll have to use StringBuffer // (allocate room for it plus a few more entities). buffer = new StringBuffer(str.length() + 20); // Copy previous skipped characters and fall through // to pickup current character buffer.append(str.substring(0, i)); buffer.append(entity); } } else { if (entity == null) { buffer.append(ch); } else { buffer.append(entity); } } } // If there were any entities, return the escaped characters // that we put in the StringBuffer. Otherwise, just return // the unmodified input string. return (buffer == null) ? str : buffer // JCLIC modification //.toString(); .substring(0); } /** * This will take the three pre-defined entities in XML 1.0 * (used specifically in XML elements) and convert their character * representation to the appropriate entity reference, suitable for * XML element content. * * @param str String input to escape. * @return String with escaped content. */ public String escapeElementEntities(String str) { if (escapeOutput == false) return str; StringBuffer buffer; char ch; String entity; EscapeStrategy strategy = currentFormat.escapeStrategy; buffer = null; for (int i = 0; i < str.length(); i++) { ch = str.charAt(i); switch(ch) { case '<' : entity = "<"; break; case '>' : entity = ">"; break; case '&' : entity = "&"; break; case '\r' : entity = " "; break; case '\n' : entity = currentFormat.lineSeparator; break; default : if (strategy.shouldEscape(ch)) { entity = "&#x" + Integer.toHexString(ch) + ";"; } else { entity = null; } break; } if (buffer == null) { if (entity != null) { // An entity occurred, so we'll have to use StringBuffer // (allocate room for it plus a few more entities). buffer = new StringBuffer(str.length() + 20); // Copy previous skipped characters and fall through // to pickup current character buffer.append(str.substring(0, i)); buffer.append(entity); } } else { if (entity == null) { buffer.append(ch); } else { buffer.append(entity); } } } // If there were any entities, return the escaped characters // that we put in the StringBuffer. Otherwise, just return // the unmodified input string. return (buffer == null) ? str : buffer // JCLIC modification //.toString(); .substring(0); } /** * Returns a copy of this XMLOutputter. */ public Object clone() { // Implementation notes: Since all state of an XMLOutputter is // embodied in simple private instance variables, Object.clone // can be used. Note that since Object.clone is totally // broken, we must catch an exception that will never be // thrown. try { return super.clone(); } catch (java.lang.CloneNotSupportedException e) { // even though this should never ever happen, it's still // possible to fool Java into throwing a // CloneNotSupportedException. If that happens, we // shouldn't swallow it. throw new RuntimeException(e.toString()); } } /** * Return a string listing of the settings for this * XMLOutputter instance. * * @return a string listing the settings for this XMLOutputter instance */ public String toString() { StringBuffer buffer = new StringBuffer(); for (int i = 0; i < userFormat.lineSeparator.length(); i++) { char ch = userFormat.lineSeparator.charAt(i); switch (ch) { case '\r': buffer.append("\\r"); break; case '\n': buffer.append("\\n"); break; case '\t': buffer.append("\\t"); break; default: buffer.append("[" + ((int)ch) + "]"); break; } } return ( "XMLOutputter[omitDeclaration = " + userFormat.omitDeclaration + ", " + "encoding = " + userFormat.encoding + ", " + "omitEncoding = " + userFormat.omitEncoding + ", " + "indent = '" + userFormat.indent + "'" + ", " + "expandEmptyElements = " + userFormat.expandEmptyElements + ", " + "lineSeparator = '" + buffer // JCLIC modification //.toString() .substring(0) + "', " + "textMode = " + userFormat.mode + "]" ); } /** * Factory for making new NamespaceStack objects. The NamespaceStack * created is actually an inner class extending the package protected * NamespaceStack, as a way to make NamespaceStack "friendly" toward * subclassers. */ private NamespaceStack createNamespaceStack() { // actually returns a XMLOutputter.NamespaceStack (see below) return new NamespaceStack(); } /** * Our own null subclass of NamespaceStack. This plays a little * trick with Java access protection. We want subclasses of * XMLOutputter to be able to override protected methods that * declare a NamespaceStack parameter, but we don't want to * declare the parent NamespaceStack class as public. */ protected class NamespaceStack extends org.jdom.output.NamespaceStack { } // Support method to print a name without using elt.getQualifiedName() // and thus avoiding a StringBuffer creation and memory churn private void printQualifiedName(Writer out, Element e) throws IOException { if (e.getNamespace().getPrefix().length() == 0) { out.write(e.getName()); } else { out.write(e.getNamespace().getPrefix()); out.write(':'); out.write(e.getName()); } } // Support method to print a name without using att.getQualifiedName() // and thus avoiding a StringBuffer creation and memory churn private void printQualifiedName(Writer out, Attribute a) throws IOException { String prefix = a.getNamespace().getPrefix(); if ((prefix != null) && (!prefix.equals(""))) { out.write(prefix); out.write(':'); out.write(a.getName()); } else { out.write(a.getName()); } } // * * * * * * * * * * Deprecated methods * * * * * * * * * * /* The methods below here are deprecations of protected methods. We * don't usually deprecate protected methods, so they're commented out. * They're left here in case this mass deprecation causes people trouble. * Since we're getting close to 1.0 it's actually better for people to * raise issues early though. */ } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/EscapeStrategy.java0000644000175000017500000000572211377161311024503 0ustar /*-- $Id: EscapeStrategy.java,v 1.1.1.1 2005/12/02 14:16:53 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; /** * Logic to determine which characters should be formatted as character * entities. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:53 $ * @author Alex Rosen * @author Bradley S. Huffman * @author Jason Hunter */ public interface EscapeStrategy { /** * Test whether the supplied character should be formatted literally * or as a character entity. */ public boolean shouldEscape(char ch); } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/JDOMLocator.java0000644000175000017500000001006011377161311023624 0ustar /*-- $Id: JDOMLocator.java,v 1.1.1.1 2005/12/02 14:16:52 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; import org.xml.sax.*; import org.xml.sax.helpers.*; /** * An implementation of the SAX {@link Locator} interface that * exposes the JDOM node being processed by SAXOutputter. * * @author Laurent Bihanic * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:52 $ */ public class JDOMLocator extends LocatorImpl { private static final String CVS_ID = "@(#) $RCSfile: JDOMLocator.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:52 $ $Name: $"; /** The JDOM node being processed by SAXOutputter. */ private Object node; /** * Default no-arg constructor. */ JDOMLocator() { // package protected super(); } /** * Copy contructor. * * @param locator Locator to copy location * information from. */ JDOMLocator(Locator locator) { // package protected super(locator); if (locator instanceof JDOMLocator) { this.setNode(((JDOMLocator)locator).getNode()); } } /** * Returns the JDOM node being processed by SAXOutputter. * * @return the JDOM node being processed by SAXOutputter. */ public Object getNode() { return this.node; } /** * Sets the being-processed node. * * @param node Object node currently processed * by SAXOutputter. */ void setNode(Object node) { // package protected this.node = node; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/SAXOutputter.java0000644000175000017500000014276211377161311024155 0ustar /*-- $Id: SAXOutputter.java,v 1.1.1.1 2005/12/02 14:16:52 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; import java.io.*; import java.lang.reflect.*; import java.util.*; import org.jdom.*; import org.xml.sax.*; import org.xml.sax.ext.*; import org.xml.sax.helpers.*; /** * Outputs a JDOM document as a stream of SAX2 events. *

* Most ContentHandler callbacks are supported. Both * ignorableWhitespace() and skippedEntity() have not * been implemented. The {@link JDOMLocator} class returned by * {@link #getLocator} exposes the current node being operated * upon. *

* At this time, it is not possible to access notations and unparsed entity * references in a DTD from JDOM. Therefore, DTDHandler callbacks * have not been implemented yet. *

* The ErrorHandler callbacks have not been implemented, since * these are supposed to be invoked when the document is parsed and at this * point the document exists in memory and is known to have no errors.

* * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:52 $ * @author Brett McLaughlin * @author Jason Hunter * @author Fred Trimble * @author Bradley S. Huffman */ public class SAXOutputter { private static final String CVS_ID = "@(#) $RCSfile: SAXOutputter.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:52 $ $Name: $"; /** Shortcut for SAX namespaces core feature */ private static final String NAMESPACES_SAX_FEATURE = "http://xml.org/sax/features/namespaces"; /** Shortcut for SAX namespace-prefixes core feature */ private static final String NS_PREFIXES_SAX_FEATURE = "http://xml.org/sax/features/namespace-prefixes"; /** Shortcut for SAX validation core feature */ private static final String VALIDATION_SAX_FEATURE = "http://xml.org/sax/features/validation"; /** Shortcut for SAX-ext. lexical handler property */ private static final String LEXICAL_HANDLER_SAX_PROPERTY = "http://xml.org/sax/properties/lexical-handler"; /** Shortcut for SAX-ext. declaration handler property */ private static final String DECL_HANDLER_SAX_PROPERTY = "http://xml.org/sax/properties/declaration-handler"; /** * Shortcut for SAX-ext. lexical handler alternate property. * Although this property URI is not the one defined by the SAX * "standard", some parsers use it instead of the official one. */ private static final String LEXICAL_HANDLER_ALT_PROPERTY = "http://xml.org/sax/handlers/LexicalHandler"; /** Shortcut for SAX-ext. declaration handler alternate property */ private static final String DECL_HANDLER_ALT_PROPERTY = "http://xml.org/sax/handlers/DeclHandler"; /** * Array to map JDOM attribute type (as entry index) to SAX * attribute type names. */ private static final String[] attrTypeToNameMap = new String[] { "CDATA", // Attribute.UNDEFINED_ATTRIBUTE, as per SAX 2.0 spec. "CDATA", // Attribute.CDATA_TYPE "ID", // Attribute.ID_TYPE "IDREF", // Attribute.IDREF_TYPE "IDREFS", // Attribute.IDREFS_TYPE "ENTITY", // Attribute.ENTITY_TYPE "ENTITIES", // Attribute.ENTITIES_TYPE "NMTOKEN", // Attribute.NMTOKEN_TYPE "NMTOKENS", // Attribute.NMTOKENS_TYPE "NOTATION", // Attribute.NOTATION_TYPE "NMTOKEN", // Attribute.ENUMERATED_TYPE, as per SAX 2.0 spec. }; /** registered ContentHandler */ private ContentHandler contentHandler; /** registered ErrorHandler */ private ErrorHandler errorHandler; /** registered DTDHandler */ private DTDHandler dtdHandler; /** registered EntityResolver */ private EntityResolver entityResolver; /** registered LexicalHandler */ private LexicalHandler lexicalHandler; /** registered DeclHandler */ private DeclHandler declHandler; /** * Whether to report attribute namespace declarations as xmlns attributes. * Defaults to false as per SAX specifications. * * @see * SAX namespace specifications */ private boolean declareNamespaces = false; /** * Whether to report DTD events to DeclHandlers and LexicalHandlers. * Defaults to true. */ private boolean reportDtdEvents = true; /** * A SAX Locator that points at the JDOM node currently being * outputted. */ private JDOMLocator locator = null; /** * This will create a SAXOutputter without any * registered handler. The application is then responsible for * registering them using the setXxxHandler() methods. */ public SAXOutputter() { } /** * This will create a SAXOutputter with the * specified ContentHandler. * * @param contentHandler contains ContentHandler * callback methods */ public SAXOutputter(ContentHandler contentHandler) { this(contentHandler, null, null, null, null); } /** * This will create a SAXOutputter with the * specified SAX2 handlers. At this time, only ContentHandler * and EntityResolver are supported. * * @param contentHandler contains ContentHandler * callback methods * @param errorHandler contains ErrorHandler callback methods * @param dtdHandler contains DTDHandler callback methods * @param entityResolver contains EntityResolver * callback methods */ public SAXOutputter(ContentHandler contentHandler, ErrorHandler errorHandler, DTDHandler dtdHandler, EntityResolver entityResolver) { this(contentHandler, errorHandler, dtdHandler, entityResolver, null); } /** * This will create a SAXOutputter with the * specified SAX2 handlers. At this time, only ContentHandler * and EntityResolver are supported. * * @param contentHandler contains ContentHandler * callback methods * @param errorHandler contains ErrorHandler callback methods * @param dtdHandler contains DTDHandler callback methods * @param entityResolver contains EntityResolver * callback methods * @param lexicalHandler contains LexicalHandler callbacks. */ public SAXOutputter(ContentHandler contentHandler, ErrorHandler errorHandler, DTDHandler dtdHandler, EntityResolver entityResolver, LexicalHandler lexicalHandler) { this.contentHandler = contentHandler; this.errorHandler = errorHandler; this.dtdHandler = dtdHandler; this.entityResolver = entityResolver; this.lexicalHandler = lexicalHandler; } /** * This will set the ContentHandler. * * @param contentHandler contains ContentHandler * callback methods. */ public void setContentHandler(ContentHandler contentHandler) { this.contentHandler = contentHandler; } /** * Returns the registered ContentHandler. * * @return the current ContentHandler or * null if none was registered. */ public ContentHandler getContentHandler() { return this.contentHandler; } /** * This will set the ErrorHandler. * * @param errorHandler contains ErrorHandler callback methods. */ public void setErrorHandler(ErrorHandler errorHandler) { this.errorHandler = errorHandler; } /** * Return the registered ErrorHandler. * * @return the current ErrorHandler or * null if none was registered. */ public ErrorHandler getErrorHandler() { return this.errorHandler; } /** * This will set the DTDHandler. * * @param dtdHandler contains DTDHandler callback methods. */ public void setDTDHandler(DTDHandler dtdHandler) { this.dtdHandler = dtdHandler; } /** * Return the registered DTDHandler. * * @return the current DTDHandler or * null if none was registered. */ public DTDHandler getDTDHandler() { return this.dtdHandler; } /** * This will set the EntityResolver. * * @param entityResolver contains EntityResolver callback methods. */ public void setEntityResolver(EntityResolver entityResolver) { this.entityResolver = entityResolver; } /** * Return the registered EntityResolver. * * @return the current EntityResolver or * null if none was registered. */ public EntityResolver getEntityResolver() { return this.entityResolver; } /** * This will set the LexicalHandler. * * @param lexicalHandler contains lexical callback methods. */ public void setLexicalHandler(LexicalHandler lexicalHandler) { this.lexicalHandler = lexicalHandler; } /** * Return the registered LexicalHandler. * * @return the current LexicalHandler or * null if none was registered. */ public LexicalHandler getLexicalHandler() { return this.lexicalHandler; } /** * This will set the DeclHandler. * * @param declHandler contains declaration callback methods. */ public void setDeclHandler(DeclHandler declHandler) { this.declHandler = declHandler; } /** * Return the registered DeclHandler. * * @return the current DeclHandler or * null if none was registered. */ public DeclHandler getDeclHandler() { return this.declHandler; } /** * Returns whether attribute namespace declarations shall be reported as * "xmlns" attributes. * * @return whether attribute namespace declarations shall be reported as * "xmlns" attributes. */ public boolean getReportNamespaceDeclarations() { return declareNamespaces; } /** * This will define whether attribute namespace declarations shall be * reported as "xmlns" attributes. This flag defaults to false * and behaves as the "namespace-prefixes" SAX core feature. * * @param declareNamespaces whether attribute namespace declarations * shall be reported as "xmlns" attributes. */ public void setReportNamespaceDeclarations(boolean declareNamespaces) { this.declareNamespaces = declareNamespaces; } /** * Returns whether DTD events will be reported. * * @return whether DTD events will be reported */ public boolean getReportDTDEvents() { return reportDtdEvents; } /** * This will define whether to report DTD events to SAX DeclHandlers * and LexicalHandlers if these handlers are registered and the * document to output includes a DocType declaration. * * @param reportDtdEvents whether to notify DTD events. */ public void setReportDTDEvents(boolean reportDtdEvents) { this.reportDtdEvents = reportDtdEvents; } /** * This will set the state of a SAX feature. *

* All XMLReaders are required to support setting to true and to false. *

*

* SAXOutputter currently supports the following SAX core features: *

*
http://xml.org/sax/features/namespaces
*
description: true indicates * namespace URIs and unprefixed local names for element and * attribute names will be available
*
access: read/write, but always * true!
*
http://xml.org/sax/features/namespace-prefixes
*
description: true indicates * XML 1.0 names (with prefixes) and attributes (including xmlns* * attributes) will be available
*
access: read/write
*
http://xml.org/sax/features/validation
*
description: controls whether SAXOutputter * is reporting DTD-related events; if true, the * DocType internal subset will be parsed to fire DTD events
*
access: read/write, defaults to * true
*
*

* * @param name String the feature name, which is a * fully-qualified URI. * @param value boolean the requested state of the * feature (true or false). * * @throws SAXNotRecognizedException when SAXOutputter does not * recognize the feature name. * @throws SAXNotSupportedException when SAXOutputter recognizes * the feature name but cannot set the requested value. */ public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException { if (NS_PREFIXES_SAX_FEATURE.equals(name)) { // Namespace prefix declarations. this.setReportNamespaceDeclarations(value); } else { if (NAMESPACES_SAX_FEATURE.equals(name)) { if (value != true) { // Namespaces feature always supported by SAXOutputter. throw new SAXNotSupportedException(name); } // Else: true is OK! } else { if (VALIDATION_SAX_FEATURE.equals(name)) { // Report DTD events. this.setReportDTDEvents(value); } else { // Not a supported feature. throw new SAXNotRecognizedException(name); } } } } /** * This will look up the value of a SAX feature. * * @param name String the feature name, which is a * fully-qualified URI. * @return boolean the current state of the feature * (true or false). * * @throws SAXNotRecognizedException when SAXOutputter does not * recognize the feature name. * @throws SAXNotSupportedException when SAXOutputter recognizes * the feature name but determine its value at this time. */ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if (NS_PREFIXES_SAX_FEATURE.equals(name)) { // Namespace prefix declarations. return (this.declareNamespaces); } else { if (NAMESPACES_SAX_FEATURE.equals(name)) { // Namespaces feature always supported by SAXOutputter. return (true); } else { if (VALIDATION_SAX_FEATURE.equals(name)) { // Report DTD events. return (this.reportDtdEvents); } else { // Not a supported feature. throw new SAXNotRecognizedException(name); } } } } /** * This will set the value of a SAX property. * This method is also the standard mechanism for setting extended * handlers. *

* SAXOutputter currently supports the following SAX properties: *

*
http://xml.org/sax/properties/lexical-handler
*
data type: * org.xml.sax.ext.LexicalHandler
*
description: An optional extension handler for * lexical events like comments.
*
access: read/write
*
http://xml.org/sax/properties/declaration-handler
*
data type: * org.xml.sax.ext.DeclHandler
*
description: An optional extension handler for * DTD-related events other than notations and unparsed entities.
*
access: read/write
*
*

* * @param name String the property name, which is a * fully-qualified URI. * @param value Object the requested value for the property. * * @throws SAXNotRecognizedException when SAXOutputter does not recognize * the property name. * @throws SAXNotSupportedException when SAXOutputter recognizes the * property name but cannot set the requested value. */ public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException { if ((LEXICAL_HANDLER_SAX_PROPERTY.equals(name)) || (LEXICAL_HANDLER_ALT_PROPERTY.equals(name))) { this.setLexicalHandler((LexicalHandler)value); } else { if ((DECL_HANDLER_SAX_PROPERTY.equals(name)) || (DECL_HANDLER_ALT_PROPERTY.equals(name))) { this.setDeclHandler((DeclHandler)value); } else { throw new SAXNotRecognizedException(name); } } } /** * This will look up the value of a SAX property. * * @param name String the property name, which is a * fully-qualified URI. * @return Object the current value of the property. * * @throws SAXNotRecognizedException when SAXOutputter does not recognize * the property name. * @throws SAXNotSupportedException when SAXOutputter recognizes the * property name but cannot determine its value at this time. */ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException { if ((LEXICAL_HANDLER_SAX_PROPERTY.equals(name)) || (LEXICAL_HANDLER_ALT_PROPERTY.equals(name))) { return this.getLexicalHandler(); } else { if ((DECL_HANDLER_SAX_PROPERTY.equals(name)) || (DECL_HANDLER_ALT_PROPERTY.equals(name))) { return this.getDeclHandler(); } else { throw new SAXNotRecognizedException(name); } } } /** * This will output the JDOM Document, firing off the * SAX events that have been registered. * * @param document JDOM Document to output. * * @throws JDOMException if any error occurred. */ public void output(Document document) throws JDOMException { if (document == null) { return; } // contentHandler.setDocumentLocator() documentLocator(document); // contentHandler.startDocument() startDocument(); // Fire DTD events if (this.reportDtdEvents) { dtdEvents(document); } // Handle root element, as well as any root level // processing instructions and comments Iterator i = document.getContent().iterator(); while (i.hasNext()) { Object obj = i.next(); // update locator locator.setNode(obj); if (obj instanceof Element) { // process root element and its content element(document.getRootElement(), new NamespaceStack()); } else if (obj instanceof ProcessingInstruction) { // contentHandler.processingInstruction() processingInstruction((ProcessingInstruction) obj); } else if (obj instanceof Comment) { // lexicalHandler.comment() comment(((Comment) obj).getText()); } } // contentHandler.endDocument() endDocument(); } /** * This will output a list of JDOM nodes as a document, firing * off the SAX events that have been registered. *

* Warning: This method may output ill-formed XML * documents if the list contains top-level objects that are not * legal at the document level (e.g. Text or CDATA nodes, multiple * Element nodes, etc.). Thus, it should only be used to output * document portions towards ContentHandlers capable of accepting * such ill-formed documents (such as XSLT processors).

* * @param nodes List of JDOM nodes to output. * * @throws JDOMException if any error occurred. * * @see #output(org.jdom.Document) */ public void output(List nodes) throws JDOMException { if ((nodes == null) || (nodes.size() == 0)) { return; } // contentHandler.setDocumentLocator() documentLocator(null); // contentHandler.startDocument() startDocument(); // Process node list. elementContent(nodes, new NamespaceStack()); // contentHandler.endDocument() endDocument(); } /** * This will output a single JDOM element as a document, firing * off the SAX events that have been registered. * * @param node the Element node to output. * * @throws JDOMException if any error occurred. */ public void output(Element node) throws JDOMException { if (node == null) { return; } // contentHandler.setDocumentLocator() documentLocator(null); // contentHandler.startDocument() startDocument(); // Output node. elementContent(node, new NamespaceStack()); // contentHandler.endDocument() endDocument(); } /** * This will output a list of JDOM nodes as a fragment of an XML * document, firing off the SAX events that have been registered. *

* Warning: This method does not call the * {@link ContentHandler#setDocumentLocator}, * {@link ContentHandler#startDocument} and * {@link ContentHandler#endDocument} callbacks on the * {@link #setContentHandler ContentHandler}. The user shall * invoke these methods directly prior/after outputting the * document fragments.

* * @param nodes List of JDOM nodes to output. * * @throws JDOMException if any error occurred. * * @see #outputFragment(org.jdom.Content) */ public void outputFragment(List nodes) throws JDOMException { if ((nodes == null) || (nodes.size() == 0)) { return; } // Output node list as a document fragment. elementContent(nodes, new NamespaceStack()); } /** * This will output a single JDOM nodes as a fragment of an XML * document, firing off the SAX events that have been registered. *

* Warning: This method does not call the * {@link ContentHandler#setDocumentLocator}, * {@link ContentHandler#startDocument} and * {@link ContentHandler#endDocument} callbacks on the * {@link #setContentHandler ContentHandler}. The user shall * invoke these methods directly prior/after outputting the * document fragments.

* * @param node the Content node to output. * * @throws JDOMException if any error occurred. * * @see #outputFragment(java.util.List) */ public void outputFragment(Content node) throws JDOMException { if (node == null) { return; } // Output single node as a document fragment. elementContent(node, new NamespaceStack()); } /** * This parses a DTD declaration to fire the related events towards * the registered handlers. * * @param document JDOM Document the DocType is to * process. */ private void dtdEvents(Document document) throws JDOMException { DocType docType = document.getDocType(); // Fire DTD-related events only if handlers have been registered. if ((docType != null) && ((dtdHandler != null) || (declHandler != null))) { // Build a dummy XML document that only references the DTD... String dtdDoc = new XMLOutputter().outputString(docType); try { // And parse it to fire DTD events. createDTDParser().parse(new InputSource( new StringReader(dtdDoc))); // We should never reach this point as the document is // ill-formed; it does not have any root element. } catch (SAXParseException e) { // Expected exception: There's no root element in document. } catch (SAXException e) { throw new JDOMException("DTD parsing error", e); } catch (IOException e) { throw new JDOMException("DTD parsing error", e); } } } /** *

* This method tells you the line of the XML file being parsed. * For an in-memory document, it's meaningless. The location * is only valid for the current parsing lifecycle, but * the document has already been parsed. Therefore, it returns * -1 for both line and column numbers. *

* * @param document JDOM Document. */ private void documentLocator(Document document) { locator = new JDOMLocator(); String publicID = null; String systemID = null; if (document != null) { DocType docType = document.getDocType(); if (docType != null) { publicID = docType.getPublicID(); systemID = docType.getSystemID(); } } locator.setPublicId(publicID); locator.setSystemId(systemID); locator.setLineNumber(-1); locator.setColumnNumber(-1); contentHandler.setDocumentLocator(locator); } /** *

* This method is always the second method of all callbacks in * all handlers to be invoked (setDocumentLocator is always first). *

*/ private void startDocument() throws JDOMException { try { contentHandler.startDocument(); } catch (SAXException se) { throw new JDOMException("Exception in startDocument", se); } } /** *

* Always the last method of all callbacks in all handlers * to be invoked. *

*/ private void endDocument() throws JDOMException { try { contentHandler.endDocument(); // reset locator locator = null; } catch (SAXException se) { throw new JDOMException("Exception in endDocument", se); } } /** *

* This will invoke the ContentHandler.processingInstruction * callback when a processing instruction is encountered. *

* * @param pi ProcessingInstruction containing target and data. */ private void processingInstruction(ProcessingInstruction pi) throws JDOMException { if (pi != null) { String target = pi.getTarget(); String data = pi.getData(); try { contentHandler.processingInstruction(target, data); } catch (SAXException se) { throw new JDOMException( "Exception in processingInstruction", se); } } } /** *

* This will recursively invoke all of the callbacks for a particular * element. *

* * @param element Element used in callbacks. * @param namespaces List stack of Namespaces in scope. */ private void element(Element element, NamespaceStack namespaces) throws JDOMException { // used to check endPrefixMapping int previouslyDeclaredNamespaces = namespaces.size(); // contentHandler.startPrefixMapping() Attributes nsAtts = startPrefixMapping(element, namespaces); // contentHandler.startElement() startElement(element, nsAtts); // handle content in the element elementContent(element.getContent(), namespaces); // update locator locator.setNode(element); // contentHandler.endElement() endElement(element); // contentHandler.endPrefixMapping() endPrefixMapping(namespaces, previouslyDeclaredNamespaces); } /** *

* This will invoke the ContentHandler.startPrefixMapping * callback * when a new namespace is encountered in the Document. *

* * @param element Element used in callbacks. * @param namespaces List stack of Namespaces in scope. * * @return Attributes declaring the namespaces local to * element or null. */ private Attributes startPrefixMapping(Element element, NamespaceStack namespaces) throws JDOMException { AttributesImpl nsAtts = null; // The namespaces as xmlns attributes Namespace ns = element.getNamespace(); if (ns != Namespace.XML_NAMESPACE) { String prefix = ns.getPrefix(); String uri = namespaces.getURI(prefix); if (!ns.getURI().equals(uri)) { namespaces.push(ns); nsAtts = this.addNsAttribute(nsAtts, ns); try { contentHandler.startPrefixMapping(prefix, ns.getURI()); } catch (SAXException se) { throw new JDOMException( "Exception in startPrefixMapping", se); } } } // Fire additional namespace declarations List additionalNamespaces = element.getAdditionalNamespaces(); if (additionalNamespaces != null) { Iterator itr = additionalNamespaces.iterator(); while (itr.hasNext()) { ns = (Namespace)itr.next(); String prefix = ns.getPrefix(); String uri = namespaces.getURI(prefix); if (!ns.getURI().equals(uri)) { namespaces.push(ns); nsAtts = this.addNsAttribute(nsAtts, ns); try { contentHandler.startPrefixMapping(prefix, ns.getURI()); } catch (SAXException se) { throw new JDOMException( "Exception in startPrefixMapping", se); } } } } return nsAtts; } /** *

* This will invoke the endPrefixMapping callback in the * ContentHandler when a namespace is goes out of scope * in the Document. *

* * @param namespaces List stack of Namespaces in scope. * @param previouslyDeclaredNamespaces number of previously declared * namespaces */ private void endPrefixMapping(NamespaceStack namespaces, int previouslyDeclaredNamespaces) throws JDOMException { while (namespaces.size() > previouslyDeclaredNamespaces) { String prefix = namespaces.pop(); try { contentHandler.endPrefixMapping(prefix); } catch (SAXException se) { throw new JDOMException("Exception in endPrefixMapping", se); } } } /** *

* This will invoke the startElement callback * in the ContentHandler. *

* * @param element Element used in callbacks. * @param nsAtts List of namespaces to declare with * the element or null. */ private void startElement(Element element, Attributes nsAtts) throws JDOMException { String namespaceURI = element.getNamespaceURI(); String localName = element.getName(); String rawName = element.getQualifiedName(); // Allocate attribute list. AttributesImpl atts = (nsAtts != null)? new AttributesImpl(nsAtts): new AttributesImpl(); List attributes = element.getAttributes(); Iterator i = attributes.iterator(); while (i.hasNext()) { Attribute a = (Attribute) i.next(); atts.addAttribute(a.getNamespaceURI(), a.getName(), a.getQualifiedName(), getAttributeTypeName(a.getAttributeType()), a.getValue()); } try { contentHandler.startElement(namespaceURI, localName, rawName, atts); } catch (SAXException se) { throw new JDOMException("Exception in startElement", se); } } /** *

* This will invoke the endElement callback * in the ContentHandler. *

* * @param element Element used in callbacks. */ private void endElement(Element element) throws JDOMException { String namespaceURI = element.getNamespaceURI(); String localName = element.getName(); String rawName = element.getQualifiedName(); try { contentHandler.endElement(namespaceURI, localName, rawName); } catch (SAXException se) { throw new JDOMException("Exception in endElement", se); } } /** *

* This will invoke the callbacks for the content of an element. *

* * @param content element content as a List of nodes. * @param namespaces List stack of Namespaces in scope. */ private void elementContent(List content, NamespaceStack namespaces) throws JDOMException { for (Iterator i=content.iterator(); i.hasNext(); ) { Object obj = i.next(); if (obj instanceof Content) { this.elementContent((Content)obj, namespaces); } else { // Not a valid element child. This could happen with // application-provided lists which may contain non // JDOM objects. handleError(new JDOMException( "Invalid element content: " + obj)); } } } /** *

* This will invoke the callbacks for the content of an element. *

* * @param node a Content node. * @param namespaces List stack of Namespaces in scope. */ private void elementContent(Content node, NamespaceStack namespaces) throws JDOMException { // update locator locator.setNode(node); if (node instanceof Element) { element((Element) node, namespaces); } else if (node instanceof CDATA) { cdata(((CDATA) node).getText()); } else if (node instanceof Text) { // contentHandler.characters() characters(((Text) node).getText()); } else if (node instanceof ProcessingInstruction) { // contentHandler.processingInstruction() processingInstruction((ProcessingInstruction) node); } else if (node instanceof Comment) { // lexicalHandler.comment() comment(((Comment) node).getText()); } else if (node instanceof EntityRef) { // contentHandler.skippedEntity() entityRef((EntityRef) node); } else { // Not a valid element child. This could happen with // application-provided lists which may contain non // JDOM objects. handleError(new JDOMException("Invalid element content: " + node)); } } /** *

* This will be called for each chunk of CDATA section encountered. *

* * @param cdataText all text in the CDATA section, including whitespace. */ private void cdata(String cdataText) throws JDOMException { try { if (lexicalHandler != null) { lexicalHandler.startCDATA(); characters(cdataText); lexicalHandler.endCDATA(); } else { characters(cdataText); } } catch (SAXException se) { throw new JDOMException("Exception in CDATA", se); } } /** *

* This will be called for each chunk of character data encountered. *

* * @param elementText all text in an element, including whitespace. */ private void characters(String elementText) throws JDOMException { char[] c = elementText.toCharArray(); try { contentHandler.characters(c, 0, c.length); } catch (SAXException se) { throw new JDOMException("Exception in characters", se); } } /** *

* This will be called for each chunk of comment data encontered. *

* * @param commentText all text in a comment, including whitespace. */ private void comment(String commentText) throws JDOMException { if (lexicalHandler != null) { char[] c = commentText.toCharArray(); try { lexicalHandler.comment(c, 0, c.length); } catch (SAXException se) { throw new JDOMException("Exception in comment", se); } } } /** *

* This will invoke the ContentHandler.skippedEntity * callback when an entity reference is encountered. *

* * @param entity EntityRef. */ private void entityRef(EntityRef entity) throws JDOMException { if (entity != null) { try { // No need to worry about appending a '%' character as // we do not support parameter entities contentHandler.skippedEntity(entity.getName()); } catch (SAXException se) { throw new JDOMException("Exception in entityRef", se); } } } /** *

* Appends a namespace declaration in the form of a xmlns attribute to * an attribute list, crerating this latter if needed. *

* * @param atts AttributeImpl where to add the attribute. * @param ns Namespace the namespace to declare. * * @return AttributeImpl the updated attribute list. */ private AttributesImpl addNsAttribute(AttributesImpl atts, Namespace ns) { if (this.declareNamespaces) { if (atts == null) { atts = new AttributesImpl(); } atts.addAttribute("", // namespace "", // local name "xmlns:" + ns.getPrefix(), // qualified name "CDATA", // type ns.getURI()); // value } return atts; } /** *

* Returns the SAX 2.0 attribute type string from the type of * a JDOM Attribute. *

* * @param type int the type of the JDOM attribute. * * @return String the SAX 2.0 attribute type string. * * @see org.jdom.Attribute#getAttributeType * @see org.xml.sax.Attributes#getType */ private static String getAttributeTypeName(int type) { if ((type < 0) || (type >= attrTypeToNameMap.length)) { type = Attribute.UNDECLARED_TYPE; } return attrTypeToNameMap[type]; } /** *

* Notifies the registered {@link ErrorHandler SAX error handler} * (if any) of an input processing error. The error handler can * choose to absorb the error and let the processing continue. *

* * @param exception JDOMException containing the * error information; will be wrapped in a * {@link SAXParseException} when reported to * the SAX error handler. * * @throws JDOMException if no error handler has been registered * or if the error handler fired a * {@link SAXException}. */ private void handleError(JDOMException exception) throws JDOMException { if (errorHandler != null) { try { errorHandler.error(new SAXParseException( exception.getMessage(), null, exception)); } catch (SAXException se) { if (se.getException() instanceof JDOMException) { throw (JDOMException)(se.getException()); } else { throw new JDOMException(se.getMessage(), se); } } } else { throw exception; } } /** *

* Creates a SAX XMLReader. *

* * @return XMLReader a SAX2 parser. * * @throws Exception if no parser can be created. */ protected XMLReader createParser() throws Exception { XMLReader parser = null; // Try using JAXP... // Note we need JAXP 1.1, and if JAXP 1.0 is all that's // available then the getXMLReader call fails and we skip // to the hard coded default parser try { Class factoryClass = Class.forName("javax.xml.parsers.SAXParserFactory"); // factory = SAXParserFactory.newInstance(); Method newParserInstance = factoryClass.getMethod("newInstance", null); Object factory = newParserInstance.invoke(null, null); // jaxpParser = factory.newSAXParser(); Method newSAXParser = factoryClass.getMethod("newSAXParser", null); Object jaxpParser = newSAXParser.invoke(factory, null); // parser = jaxpParser.getXMLReader(); Class parserClass = jaxpParser.getClass(); Method getXMLReader = parserClass.getMethod("getXMLReader", null); parser = (XMLReader)getXMLReader.invoke(jaxpParser, null); } catch (ClassNotFoundException e) { //e.printStackTrace(); } catch (InvocationTargetException e) { //e.printStackTrace(); } catch (NoSuchMethodException e) { //e.printStackTrace(); } catch (IllegalAccessException e) { //e.printStackTrace(); } // Check to see if we got a parser yet, if not, try to use a // hard coded default if (parser == null) { parser = XMLReaderFactory.createXMLReader( "org.apache.xerces.parsers.SAXParser"); } return parser; } /** *

* This will create a SAX XMLReader capable of parsing a DTD and * configure it so that the DTD parsing events are routed to the * handlers registered onto this SAXOutputter. *

* * @return XMLReader a SAX2 parser. * * @throws JDOMException if no parser can be created. */ private XMLReader createDTDParser() throws JDOMException { XMLReader parser = null; // Get a parser instance try { parser = createParser(); } catch (Exception ex1) { throw new JDOMException("Error in SAX parser allocation", ex1); } // Register handlers if (this.getDTDHandler() != null) { parser.setDTDHandler(this.getDTDHandler()); } if (this.getEntityResolver() != null) { parser.setEntityResolver(this.getEntityResolver()); } if (this.getLexicalHandler() != null) { try { parser.setProperty(LEXICAL_HANDLER_SAX_PROPERTY, this.getLexicalHandler()); } catch (SAXException ex1) { try { parser.setProperty(LEXICAL_HANDLER_ALT_PROPERTY, this.getLexicalHandler()); } catch (SAXException ex2) { // Forget it! } } } if (this.getDeclHandler() != null) { try { parser.setProperty(DECL_HANDLER_SAX_PROPERTY, this.getDeclHandler()); } catch (SAXException ex1) { try { parser.setProperty(DECL_HANDLER_ALT_PROPERTY, this.getDeclHandler()); } catch (SAXException ex2) { // Forget it! } } } // Absorb errors as much as possible, per Laurent parser.setErrorHandler(new DefaultHandler()); return parser; } /** * Returns a JDOMLocator object referencing the node currently * being processed by this outputter. The returned object is a * snapshot of the location information and can thus safely be * memorized for later use. *

* This method allows direct access to the location information * maintained by SAXOutputter without requiring to implement * XMLFilter. (In SAX, locators are only available * though the ContentHandler interface).

*

* Note that location information is only available while * SAXOutputter is outputting nodes. Hence this method should * only be used by objects taking part in the output processing * such as ErrorHandlers. * * @return a JDOMLocator object referencing the node currently * being processed or null if no output * operation is being performed. */ public JDOMLocator getLocator() { return (locator != null)? new JDOMLocator(locator): null; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/output/Format.java0000644000175000017500000005107311377161311023010 0ustar /*-- $Id: Format.java,v 1.1.1.1 2005/12/02 14:16:51 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom.output; import java.lang.reflect.Method; /** * Class to encapsulate XMLOutputter format options. * Typical users can use the standard format configurations obtained by * {@link #getRawFormat} (no whitespace changes), * {@link #getPrettyFormat} (whitespace beautification), and * {@link #getCompactFormat} (whitespace normalization). *

* Several modes are available to effect the way textual content is printed. * See the documentation for {@link TextMode} for details. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:51 $ * @author Jason Hunter */ public class Format implements Cloneable { private static final String CVS_ID = "@(#) $RCSfile: Format.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:51 $ $Name: $"; /** * Returns a new Format object that performs no whitespace changes, uses * the UTF-8 encoding, doesn't expand empty elements, includes the * declaration and encoding, and uses the default entity escape strategy. * Tweaks can be made to the returned Format instance without affecting * other instances. * @return a Format with no whitespace changes */ public static Format getRawFormat() { return new Format(); } /** * Returns a new Format object that performs whitespace beautification with * 2-space indents, uses the UTF-8 encoding, doesn't expand empty elements, * includes the declaration and encoding, and uses the default entity * escape strategy. * Tweaks can be made to the returned Format instance without affecting * other instances. * * @return a Format with whitespace beautification */ public static Format getPrettyFormat() { Format f = new Format(); f.setIndent(STANDARD_INDENT); f.setTextMode(TextMode.TRIM); return f; } /** * Returns a new Format object that performs whitespace normalization, uses * the UTF-8 encoding, doesn't expand empty elements, includes the * declaration and encoding, and uses the default entity escape strategy. * Tweaks can be made to the returned Format instance without affecting * other instances. * * @return a Format with whitespace normalization */ public static Format getCompactFormat() { Format f = new Format(); f.setTextMode(TextMode.NORMALIZE); return f; } /** standard value to indent by, if we are indenting */ private static final String STANDARD_INDENT = " "; /** standard string with which to end a line */ private static final String STANDARD_LINE_SEPARATOR = "\r\n"; /** standard encoding */ private static final String STANDARD_ENCODING = "UTF-8"; /** The default indent is no spaces (as original document) */ String indent = null; /** New line separator */ String lineSeparator = STANDARD_LINE_SEPARATOR; /** The encoding format */ String encoding = STANDARD_ENCODING; /** Whether or not to output the XML declaration * - default is false */ boolean omitDeclaration = false; /** Whether or not to output the encoding in the XML declaration * - default is false */ boolean omitEncoding = false; /** Whether or not to expand empty elements to * <tagName></tagName> - default is false */ boolean expandEmptyElements = false; /** Whether TrAX output escaping disabling/enabling PIs are ignored * or processed - default is false */ boolean ignoreTrAXEscapingPIs = false; /** text handling mode */ TextMode mode = TextMode.PRESERVE; /** entity escape logic */ EscapeStrategy escapeStrategy = new DefaultEscapeStrategy(encoding); /** * Creates a new Format instance with default (raw) behavior. */ private Format() { } /** * Sets the {@link EscapeStrategy} to use for character escaping. * * @param strategy the EscapeStrategy to use * @return a pointer to this Format for chaining */ public Format setEscapeStrategy(EscapeStrategy strategy) { escapeStrategy = strategy; return this; } /** * Returns the current escape strategy * * @return the current escape strategy */ public EscapeStrategy getEscapeStrategy() { return escapeStrategy; } /** * This will set the newline separator (lineSeparator). * The default is \r\n. Note that if the "newlines" * property is false, this value is irrelevant. To make it output * the system default line ending string, call * setLineSeparator(System.getProperty("line.separator")) * *

* To output "UNIX-style" documents, call * setLineSeparator("\n"). To output "Mac-style" * documents, call setLineSeparator("\r"). DOS-style * documents use CR-LF ("\r\n"), which is the default. *

* *

* Note that this only applies to newlines generated by the * outputter. If you parse an XML document that contains newlines * embedded inside a text node, and you do not set TextMode.NORMALIZE, * then the newlines will be output * verbatim, as "\n" which is how parsers normalize them. *

* * @see #setTextMode * * @param separator String line separator to use. * @return a pointer to this Format for chaining */ public Format setLineSeparator(String separator) { this.lineSeparator = separator; return this; } /** * Returns the current line separator. * * @return the current line separator */ public String getLineSeparator() { return lineSeparator; } /** * This will set whether the XML declaration * (<?xml version="1.0" * encoding="UTF-8"?>) * includes the encoding of the document. It is common to omit * this in uses such as WML and other wireless device protocols. * * @param omitEncoding boolean indicating whether or not * the XML declaration should indicate the document encoding. * @return a pointer to this Format for chaining */ public Format setOmitEncoding(boolean omitEncoding) { this.omitEncoding = omitEncoding; return this; } /** * Returns whether the XML declaration encoding will be omitted. * * @return whether the XML declaration encoding will be omitted */ public boolean getOmitEncoding() { return omitEncoding; } /** * This will set whether the XML declaration * (<?xml version="1.0"?gt;) * will be omitted or not. It is common to omit this in uses such * as SOAP and XML-RPC calls. * * @param omitDeclaration boolean indicating whether or not * the XML declaration should be omitted. * @return a pointer to this Format for chaining */ public Format setOmitDeclaration(boolean omitDeclaration) { this.omitDeclaration = omitDeclaration; return this; } /** * Returns whether the XML declaration will be omitted. * * @return whether the XML declaration will be omitted */ public boolean getOmitDeclaration() { return omitDeclaration; } /** * This will set whether empty elements are expanded from * <tagName/> to * <tagName></tagName>. * * @param expandEmptyElements boolean indicating whether or not * empty elements should be expanded. * @return a pointer to this Format for chaining */ public Format setExpandEmptyElements(boolean expandEmptyElements) { this.expandEmptyElements = expandEmptyElements; return this; } /** * Returns whether empty elements are expanded. * * @return whether empty elements are expanded */ public boolean getExpandEmptyElements() { return expandEmptyElements; } /** * This will set whether JAXP TrAX processing instructions for * disabling/enabling output escaping are ignored. Disabling * output escaping allows using XML text as element content and * outputing it verbatim, i.e. as element children would be. *

* When processed, these processing instructions are removed from * the generated XML text and control whether the element text * content is output verbatim or with escaping of the pre-defined * entities in XML 1.0. The text to be output verbatim shall be * surrounded by the * <?javax.xml.transform.disable-output-escaping ?> * and <?javax.xml.transform.enable-output-escaping ?> * PIs.

*

* When ignored, the processing instructions are present in the * generated XML text and the pre-defined entities in XML 1.0 are * escaped. *

* Default: false.

* * @param ignoreTrAXEscapingPIs boolean indicating * whether or not TrAX ouput escaping PIs are ignored. * * @see javax.xml.transform.Result#PI_ENABLE_OUTPUT_ESCAPING * @see javax.xml.transform.Result#PI_DISABLE_OUTPUT_ESCAPING */ public void setIgnoreTrAXEscapingPIs(boolean ignoreTrAXEscapingPIs) { this.ignoreTrAXEscapingPIs = ignoreTrAXEscapingPIs; } /** * Returns whether JAXP TrAX processing instructions for * disabling/enabling output escaping are ignored. * * @return whether or not TrAX ouput escaping PIs are ignored. */ public boolean getIgnoreTrAXEscapingPIs() { return ignoreTrAXEscapingPIs; } /** * This sets the text output style. Options are available as static * {@link TextMode} instances. The default is {@link TextMode#PRESERVE}. * * @return a pointer to this Format for chaining */ public Format setTextMode(Format.TextMode mode) { this.mode = mode; return this; } /** * Returns the current text output style. * * @return the current text output style */ public Format.TextMode getTextMode() { return mode; } /** * This will set the indent String to use; this * is usually a String of empty spaces. If you pass * null, or the empty string (""), then no indentation will * happen. Default: none (null) * * @param indent String to use for indentation. * @return a pointer to this Format for chaining */ public Format setIndent(String indent) { // if passed the empty string, change it to null, for marginal // performance gains later (can compare to null first instead // of calling equals()) if ("".equals(indent)) { indent = null; } this.indent = indent; return this; } /** * Returns the indent string in use. * * @return the indent string in use */ public String getIndent() { return indent; } /** * Sets the output encoding. The name should be an accepted XML * encoding. * * @param encoding the encoding format. Use XML-style names like * "UTF-8" or "ISO-8859-1" or "US-ASCII" * @return a pointer to this Format for chaining */ public Format setEncoding(String encoding) { this.encoding = encoding; escapeStrategy = new DefaultEscapeStrategy(encoding); return this; } /** * Returns the configured output encoding. * * @return the output encoding */ public String getEncoding() { return encoding; } protected Object clone() { Format format = null; try { format = (Format) super.clone(); } catch (CloneNotSupportedException ce) { } return format; } /** * Handle common charsets quickly and easily. Use reflection * to query the JDK 1.4 CharsetEncoder class for unknown charsets. * If JDK 1.4 isn't around, default to no special encoding. */ class DefaultEscapeStrategy implements EscapeStrategy { private int bits; Object encoder; Method canEncode; public DefaultEscapeStrategy(String encoding) { if ("UTF-8".equalsIgnoreCase(encoding) || "UTF-16".equalsIgnoreCase(encoding)) { bits = 16; } else if ("ISO-8859-1".equalsIgnoreCase(encoding) || "Latin1".equalsIgnoreCase(encoding)) { bits = 8; } else if ("US-ASCII".equalsIgnoreCase(encoding) || "ASCII".equalsIgnoreCase(encoding)) { bits = 7; } else { bits = 0; //encoder = Charset.forName(encoding).newEncoder(); try { Class charsetClass = Class.forName("java.nio.charset.Charset"); Class encoderClass = Class.forName("java.nio.charset.CharsetEncoder"); Method forName = charsetClass.getMethod("forName", new Class[]{String.class}); Object charsetObj = forName.invoke(null, new Object[]{encoding}); Method newEncoder = charsetClass.getMethod("newEncoder", null); encoder = newEncoder.invoke(charsetObj, null); canEncode = encoderClass.getMethod("canEncode", new Class[]{char.class}); } catch (Exception ignored) { } } } public boolean shouldEscape(char ch) { if (bits == 16) { return false; } if (bits == 8) { if ((int) ch > 255) return true; else return false; } if (bits == 7) { if ((int) ch > 127) return true; else return false; } else { if (canEncode != null && encoder != null) { try { Boolean val = (Boolean) canEncode.invoke(encoder, new Object[]{new Character(ch)}); return !val.booleanValue(); } catch (Exception ignored) { } } // Return false if we don't know. This risks not escaping // things which should be escaped, but also means people won't // start getting loads of unnecessary escapes. return false; } } } /** * Class to signify how text should be handled on output. The following * table provides details. * *
* * * * * * * * * * * * * * * * * * * * * * * * *
* Text Mode * * Resulting behavior. *
* PRESERVE (Default) * * All content is printed in the format it was created, no whitespace * or line separators are are added or removed. *
* TRIM_FULL_WHITE * * Content between tags consisting of all whitespace is not printed. * If the content contains even one non-whitespace character, it is * printed verbatim, whitespace and all. *
* TRIM * * Same as TrimAllWhite, plus leading/trailing whitespace are * trimmed. *
* NORMALIZE * * Same as TextTrim, plus addition interior whitespace is compressed * to a single space. *
* * In most cases textual content is aligned with the surrounding tags * (after the appropriate text mode is applied). In the case where the only * content between the start and end tags is textual, the start tag, text, * and end tag are all printed on the same line. If the document being * output already has whitespace, it's wise to turn on TRIM mode so the * pre-existing whitespace can be trimmed before adding new whitespace. *

* When a element has a xml:space attribute with the value of "preserve", * all formating is turned off and reverts back to the default until the * element and its contents have been printed. If a nested element contains * another xml:space with the value "default" formatting is turned back on * for the child element and then off for the remainder of the parent * element. */ public static class TextMode { /** * Mode for literal text preservation. */ public static final TextMode PRESERVE = new TextMode("PRESERVE"); /** * Mode for text trimming (left and right trim). */ public static final TextMode TRIM = new TextMode("TRIM"); /** * Mode for text normalization (left and right trim plus internal * whitespace is normalized to a single space. * @see org.jdom.Element#getTextNormalize */ public static final TextMode NORMALIZE = new TextMode("NORMALIZE"); /** * Mode for text trimming of content consisting of nothing but * whitespace but otherwise not changing output. */ public static final TextMode TRIM_FULL_WHITE = new TextMode("TRIM_FULL_WHITE"); private final String name; private TextMode(String name) { this.name = name; } public String toString() { return name; } } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/JDOMException.java0000644000175000017500000003030511377161311022623 0ustar /*-- $Id: JDOMException.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.io.*; import java.lang.reflect.*; import java.rmi.*; import java.sql.*; import org.xml.sax.*; /** * The top level exception that JDOM classes can throw. Its subclasses add * specificity to the problems that can occur using JDOM. This single exception * can be caught to handle all JDOM specific problems (some methods may throw * {@link java.io.IOException} and such). * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ * @author Brett McLaughlin * @author Jason Hunter */ public class JDOMException extends Exception { private static final String CVS_ID = "@(#) $RCSfile: JDOMException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; /** A wrapped Throwable */ private Throwable cause; /** * This will create an Exception. */ public JDOMException() { super("Error occurred in JDOM application."); } /** * This will create an Exception with the given message. * * @param message String message indicating * the problem that occurred. */ public JDOMException(String message) { super(message); } /** * This will create an Exception with the given message * and wrap another Exception. This is useful when * the originating Exception should be held on to. * * @param message String message indicating * the problem that occurred. * @param cause Throwable that caused this * to be thrown. */ public JDOMException(String message, Throwable cause) { super(message); this.cause = cause; } /** * Intializes the cause of this exception to be the specified value. * * @param cause Throwable that caused this * to be thrown. * @return a pointer to this throwable */ // Created to match the JDK 1.4 Throwable method. public Throwable initCause(Throwable cause) { this.cause = cause; return this; } /** * This returns the message for the Exception. If * there are one or more nested exceptions, their messages * are appended. * * @return String - message for Exception. */ public String getMessage() { // Get this exception's message. String msg = super.getMessage(); Throwable parent = this; Throwable child; // Look for nested exceptions. while((child = getNestedException(parent)) != null) { // Get the child's message. String msg2 = child.getMessage(); // Special case: If a SAXException has no message of its own, but has a // nested exception, then it returns the nested exception's message as its // message. We don't want to add that message twice. if (child instanceof SAXException) { Throwable grandchild = ((SAXException)child).getException(); // If the SAXException tells us that it's message is identical to // its nested exception's message, then we skip it, so we don't // add it twice. if (grandchild != null && msg2 != null && msg2.equals(grandchild.getMessage())) { msg2 = null; } } // If we found a message for the child exception, we append it. if (msg2 != null) { if (msg != null) { msg += ": " + msg2; } else { msg = msg2; } } // Any nested JDOMException will append its own children, // so we need to break out of here. if (child instanceof JDOMException) { break; } parent = child; } // Return the completed message. return msg; } /** * This prints the stack trace of the Exception. If * there is a root cause, the stack trace of the root * Exception is printed right after. */ public void printStackTrace() { // Print the stack trace for this exception. super.printStackTrace(); Throwable parent = this; Throwable child; // Print the stack trace for each nested exception. while((child = getNestedException(parent)) != null) { System.err.print("Caused by: "); child.printStackTrace(); // Any nested JDOMException will print its own children, // so we need to break out of here. if (child instanceof JDOMException) { break; } parent = child; } } /** * Prints the stack trace of the Exception to the given * PrintStream. If there is a root cause, the stack trace of the root * Exception is printed right after. * * @param s PrintStream to print to */ public void printStackTrace(PrintStream s) { // Print the stack trace for this exception. super.printStackTrace(s); Throwable parent = this; Throwable child; // Print the stack trace for each nested exception. while((child = getNestedException(parent)) != null) { s.print("Caused by: "); child.printStackTrace(s); // Any nested JDOMException will print its own children, // so we need to break out of here. if (child instanceof JDOMException) { break; } parent = child; } } /** * Prints the stack trace of the Exception to the given * PrintWriter. If there is a root cause, the stack trace of the root * Exception is printed right after. * * @param w PrintWriter to print to */ public void printStackTrace(PrintWriter w) { // Print the stack trace for this exception. super.printStackTrace(w); Throwable parent = this; Throwable child; // Print the stack trace for each nested exception. while((child = getNestedException(parent)) != null) { w.print("Caused by: "); child.printStackTrace(w); // Any nested JDOMException will print its own children, // so we need to break out of here. if (child instanceof JDOMException) { break; } parent = child; } } /** * This will return the root cause Throwable, or null * if one does not exist. * * @return Throwable - the wrapped Throwable. */ public Throwable getCause() { return cause; } // If this Throwable has a nested (child) exception, then we return it. // Otherwise we return null. private static Throwable getNestedException(Throwable parent) { if (parent instanceof JDOMException) { return ((JDOMException)parent).getCause(); } if (parent instanceof SAXException) { return ((SAXException)parent).getException(); } if (parent instanceof SQLException) { return ((SQLException)parent).getNextException(); } if (parent instanceof InvocationTargetException) { return ((InvocationTargetException)parent).getTargetException(); } if (parent instanceof ExceptionInInitializerError) { return ((ExceptionInInitializerError)parent).getException(); } if (parent instanceof RemoteException) { return ((RemoteException)parent).detail; } // These classes are not part of standard JDK 1.1 or 1.2, so we // use reflection to access them. Throwable nestedException = getNestedException(parent, "javax.naming.NamingException", "getRootCause"); if (nestedException != null) { return nestedException; } nestedException = getNestedException(parent, "javax.servlet.ServletException", "getRootCause"); if (nestedException != null) { return nestedException; } return null; } // This method uses reflection to obtain the nest exception of a Throwable. We use reflection // because the desired class may not exist in the currently-running VM. private static Throwable getNestedException( Throwable parent, String className, String methodName) { try { // See if this Throwable is of the desired type, by using isAssignableFrom(). Class testClass = Class.forName(className); Class objectClass = parent.getClass(); if (testClass.isAssignableFrom(objectClass)) { // Use reflection to call the specified method. Class[] argClasses = new Class[0]; Method method = testClass.getMethod(methodName, argClasses); Object[] args = new Object[0]; return (Throwable)method.invoke(parent, args); } } catch(Exception ex) { // Most likely, the desired class is not available in this VM. That's fine. // Even if it's caused by something else, we don't want to display an error // here, since we're already in the process of trying to display the original // error - another error here will just confuse things. } return null; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Verifier.java0000644000175000017500000014501411377161311021772 0ustar /*-- $Id: Verifier.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; /** * A utility class to handle well-formedness checks on names, data, and other * verification tasks for JDOM. The class is final and may not be subclassed. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Elliotte Rusty Harold * @author Jason Hunter * @author Bradley S. Huffman */ final public class Verifier { private static final String CVS_ID = "@(#) $RCSfile: Verifier.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * Ensure instantation cannot occur. */ private Verifier() { } /** * This will check the supplied name to see if it is legal for use as * a JDOM {@link Element} name. * * @param name String name to check. * @return String reason name is illegal, or * null if name is OK. */ public static String checkElementName(String name) { // Check basic XML name rules first String reason; if ((reason = checkXMLName(name)) != null) { return reason; } // No colons allowed, since elements handle this internally if (name.indexOf(":") != -1) { return "Element names cannot contain colons"; } // If we got here, everything is OK return null; } /** * This will check the supplied name to see if it is legal for use as * a JDOM {@link Attribute} name. * * @param name String name to check. * @return String reason name is illegal, or * null if name is OK. */ public static String checkAttributeName(String name) { // Check basic XML name rules first String reason; if ((reason = checkXMLName(name)) != null) { return reason; } // No colons are allowed, since attributes handle this internally if (name.indexOf(":") != -1) { return "Attribute names cannot contain colons"; } // Attribute names may not be xmlns since we do this internally too if (name.equals("xmlns")) { return "An Attribute name may not be \"xmlns\"; " + "use the Namespace class to manage namespaces"; } // If we got here, everything is OK return null; } /** * This will check the supplied string to see if it only contains * characters allowed by the XML 1.0 specification. The C0 controls * (e.g. null, vertical tab, formfeed, etc.) are specifically excluded * except for carriage return, linefeed, and the horizontal tab. * Surrogates are also excluded. *

* This method is useful for checking element content and attribute * values. Note that characters * like " and < are allowed in attribute values and element content. * They will simply be escaped as " or < * when the value is serialized. *

* * @param text String value to check. * @return String reason name is illegal, or * null if name is OK. */ public static String checkCharacterData(String text) { if (text == null) { return "A null is not a legal XML value"; } // Do check for (int i = 0, len = text.length(); i= 0xD800 && ch <= 0xDBFF) { // Check if next char is the low-surrogate i++; if (i < len) { char low = text.charAt(i); if (low < 0xDC00 || low > 0xDFFF) { return "Illegal Surrogate Pair"; } // It's a good pair, calculate the true value of // the character to then fall thru to isXMLCharacter ch = 0x10000 + (ch - 0xD800) * 0x400 + (low - 0xDC00); } else { return "Surrogate Pair Truncated"; } } if (!isXMLCharacter(ch)) { // Likely this character can't be easily displayed // because it's a control so we use it'd hexadecimal // representation in the reason. return ("0x" + Integer.toHexString(ch) + " is not a legal XML character"); } } // If we got here, everything is OK return null; } /** * This will check the supplied data to see if it is legal for use as * JDOM {@link CDATA}. * * @param data String data to check. * @return String reason data is illegal, or * null is name is OK. */ public static String checkCDATASection(String data) { String reason = null; if ((reason = checkCharacterData(data)) != null) { return reason; } if (data.indexOf("]]>") != -1) { return "CDATA cannot internally contain a CDATA ending " + "delimiter (]]>)"; } // If we got here, everything is OK return null; } /** * This will check the supplied name to see if it is legal for use as * a JDOM {@link Namespace} prefix. * * @param prefix String prefix to check. * @return String reason name is illegal, or * null if name is OK. */ public static String checkNamespacePrefix(String prefix) { // Manually do rules, since URIs can be null or empty if ((prefix == null) || (prefix.equals(""))) { return null; } // Cannot start with a number char first = prefix.charAt(0); if (isXMLDigit(first)) { return "Namespace prefixes cannot begin with a number"; } // Cannot start with a $ if (first == '$') { return "Namespace prefixes cannot begin with a dollar sign ($)"; } // Cannot start with a - if (first == '-') { return "Namespace prefixes cannot begin with a hyphen (-)"; } // Cannot start with a . if (first == '.') { return "Namespace prefixes cannot begin with a period (.)"; } // Cannot start with "xml" in any character case if (prefix.toLowerCase().startsWith("xml")) { return "Namespace prefixes cannot begin with " + "\"xml\" in any combination of case"; } // Ensure legal content for (int i=0, len = prefix.length(); i{@link Namespace} URI. * * @param uri String URI to check. * @return String reason name is illegal, or * null if name is OK. */ public static String checkNamespaceURI(String uri) { // Manually do rules, since URIs can be null or empty if ((uri == null) || (uri.equals(""))) { return null; } // Cannot start with a number char first = uri.charAt(0); if (Character.isDigit(first)) { return "Namespace URIs cannot begin with a number"; } // Cannot start with a $ if (first == '$') { return "Namespace URIs cannot begin with a dollar sign ($)"; } // Cannot start with a - if (first == '-') { return "Namespace URIs cannot begin with a hyphen (-)"; } // If we got here, everything is OK return null; } /** * Check if two namespaces collide. * * @param namespace Namespace to check. * @param other Namespace to check against. * @return String reason for collision, or * null if no collision. */ public static String checkNamespaceCollision(Namespace namespace, Namespace other) { String p1,p2,u1,u2,reason; reason = null; p1 = namespace.getPrefix(); u1 = namespace.getURI(); p2 = other.getPrefix(); u2 = other.getURI(); if (p1.equals(p2) && !u1.equals(u2)) { reason = "The namespace prefix \"" + p1 + "\" collides"; } return reason; } /** * Check if {@link Attribute}'s namespace collides with a * {@link Element}'s namespace. * * @param attribute Attribute to check. * @param element Element to check against. * @return String reason for collision, or * null if no collision. */ public static String checkNamespaceCollision(Attribute attribute, Element element) { Namespace namespace = attribute.getNamespace(); String prefix = namespace.getPrefix(); if ("".equals(prefix)) { return null; } return checkNamespaceCollision(namespace, element); } /** * Check if a {@link Namespace} collides with a * {@link Element}'s namespace. * * @param namespace Namespace to check. * @param element Element to check against. * @return String reason for collision, or * null if no collision. */ public static String checkNamespaceCollision(Namespace namespace, Element element) { String reason = checkNamespaceCollision(namespace, element.getNamespace()); if (reason != null) { return reason + " with the element namespace prefix"; } reason = checkNamespaceCollision(namespace, element.getAdditionalNamespaces()); if (reason != null) { return reason; } reason = checkNamespaceCollision(namespace, element.getAttributes()); if (reason != null) { return reason; } return null; } /** * Check if a {@link Namespace} collides with a * {@link Attribute}'s namespace. * * @param namespace Namespace to check. * @param attribute Attribute to check against. * @return String reason for collision, or * null if no collision. */ public static String checkNamespaceCollision(Namespace namespace, Attribute attribute) { String reason = checkNamespaceCollision(namespace, attribute.getNamespace()); if (reason != null) { reason += " with an attribute namespace prefix on the element"; } return reason; } /** * Check if a {@link Namespace} collides with any namespace * from a list of objects. * * @param namespace Namespace to check. * @param list List to check against. * @return String reason for collision, or * null if no collision. */ public static String checkNamespaceCollision(Namespace namespace, List list) { if (list == null) { return null; } String reason = null; Iterator i = list.iterator(); while ((reason == null) && i.hasNext()) { Object obj = i.next(); if (obj instanceof Attribute) { reason = checkNamespaceCollision(namespace, (Attribute) obj); } else if (obj instanceof Element) { reason = checkNamespaceCollision(namespace, (Element) obj); } else if (obj instanceof Namespace) { reason = checkNamespaceCollision(namespace, (Namespace) obj); if (reason != null) { reason += " with an additional namespace declared" + " by the element"; } } } return reason; } /** * This will check the supplied data to see if it is legal for use as * a JDOM {@link ProcessingInstruction} target. * * @param target String target to check. * @return String reason target is illegal, or * null if target is OK. */ public static String checkProcessingInstructionTarget(String target) { // Check basic XML name rules first String reason; if ((reason = checkXMLName(target)) != null) { return reason; } // No colons allowed, per Namespace Specification Section 6 if (target.indexOf(":") != -1) { return "Processing instruction targets cannot contain colons"; } // Cannot begin with 'xml' in any case if (target.equalsIgnoreCase("xml")) { return "Processing instructions cannot have a target of " + "\"xml\" in any combination of case. (Note that the " + "\"\" declaration at the beginning of a " + "document is not a processing instruction and should not " + "be added as one; it is written automatically during " + "output, e.g. by XMLOutputter.)"; } // If we got here, everything is OK return null; } /** * This will check the supplied data to see if it is legal for use as * {@link ProcessingInstruction} data. Besides checking that * all the characters are allowed in XML, this also checks * that the data does not contain the PI end-string "?>". * * @param data String data to check. * @return String reason data is illegal, or * null if data is OK. */ public static String checkProcessingInstructionData(String data) { // Check basic XML name rules first String reason = checkCharacterData(data); if (reason == null) { if (data.indexOf("?>") >= 0) { return "Processing instructions cannot contain " + "the string \"?>\""; } } return reason; } /** * This will check the supplied data to see if it is legal for use as * JDOM {@link Comment} data. * * @param data String data to check. * @return String reason data is illegal, or * null if data is OK. */ public static String checkCommentData(String data) { String reason = null; if ((reason = checkCharacterData(data)) != null) { return reason; } if (data.indexOf("--") != -1) { return "Comments cannot contain double hyphens (--)"; } if (data.startsWith("-")) { return "Comment data cannot start with a hyphen."; } if (data.endsWith("-")) { return "Comment data cannot end with a hyphen."; } // If we got here, everything is OK return null; } // [13] PubidChar ::= #x20 | #xD | #xA | [a-zA-Z0-9] | // [-'()+,./:=?;*#@$_%] public static boolean isXMLPublicIDCharacter(char c) { if (c >= 'a' && c <= 'z') return true; if (c >= '?' && c <= 'Z') return true; if (c >= '\'' && c <= ';') return true; if (c == ' ') return true; if (c == '!') return true; if (c == '=') return true; if (c == '#') return true; if (c == '$') return true; if (c == '_') return true; if (c == '%') return true; if (c == '\n') return true; if (c == '\r') return true; if (c == '\t') return true; return false; } /** * This will ensure that the data for a public identifier * is legal. * * @param publicID String public ID to check. * @return String reason public ID is illegal, or * null if public ID is OK. */ public static String checkPublicID(String publicID) { String reason = null; if (publicID == null) return null; // This indicates there is no public ID for (int i = 0; i < publicID.length(); i++) { char c = publicID.charAt(i); if (!isXMLPublicIDCharacter(c)) { reason = c + " is not a legal character in public IDs"; break; } } return reason; } /** * This will ensure that the data for a system literal * is legal. * * @param systemLiteral String system literal to check. * @return String reason system literal is illegal, or * null if system literal is OK. */ public static String checkSystemLiteral(String systemLiteral) { String reason = null; if (systemLiteral == null) return null; // This indicates there is no system ID if (systemLiteral.indexOf('\'') != -1 && systemLiteral.indexOf('"') != -1) { reason = "System literals cannot simultaneously contain both single and double quotes."; } else { reason = checkCharacterData(systemLiteral); } return reason; } /** * This is a utility function for sharing the base process of checking * any XML name. * * @param name String to check for XML name compliance. * @return String reason the name is illegal, or * null if OK. */ public static String checkXMLName(String name) { // Cannot be empty or null if ((name == null) || (name.length() == 0) || (name.trim().equals(""))) { return "XML names cannot be null or empty"; } // Cannot start with a number char first = name.charAt(0); if (!isXMLNameStartCharacter(first)) { return "XML names cannot begin with the character \"" + first + "\""; } // Ensure legal content for non-first chars for (int i=1, len = name.length(); i * Checks a string to see if it is a legal RFC 2396 URI. * Both absolute and relative URIs are supported. *

* * @param uri String to check. * @return String reason the URI is illegal, or * null if OK. */ public static String checkURI(String uri) { // URIs can be null or empty if ((uri == null) || (uri.equals(""))) { return null; } for (int i = 0; i < uri.length(); i++) { char test = uri.charAt(i); if (!isURICharacter(test)) { String msgNumber = "0x" + Integer.toHexString(test); if (test <= 0x09) msgNumber = "0x0" + Integer.toHexString(test); return "URIs cannot contain " + msgNumber; } // end if if (test == '%') { // must be followed by two hexadecimal digits try { char firstDigit = uri.charAt(i+1); char secondDigit = uri.charAt(i+2); if (!isHexDigit(firstDigit) || !isHexDigit(secondDigit)) { return "Percent signs in URIs must be followed by " + "exactly two hexadecimal digits."; } } catch (StringIndexOutOfBoundsException e) { return "Percent signs in URIs must be followed by " + "exactly two hexadecimal digits."; } } } // end for // If we got here, everything is OK return null; } /** *

*

* This is a utility function for determining whether a specified * Unicode character is a hexadecimal digit as defined in RFC 2396; * that is, one of the ASCII characters 0-9, a-f, or A-F *

* * @param c to check for hex digit. * @return true if it's allowed, false otherwise. */ public static boolean isHexDigit(char c) { // I suspect most characters passed to this method will be // correct hexadecimal digits, so I test for the true cases // first. If this proves to be a performance bottleneck // a switch statement or lookup table // might optimize this. if (c >= '0' && c <= '9') return true; if (c >= 'A' && c <= 'F') return true; if (c >= 'a' && c <= 'f') return true; return false; } /** *

* This is a utility function for determining whether * a specified Unicode character is legal in URI references * as determined by RFC 2396. *

* * @param c char to check for URI reference compliance. * @return true if it's allowed, false otherwise. */ public static boolean isURICharacter(char c) { if (c >= 'a' && c <= 'z') return true; if (c >= 'A' && c <= 'Z') return true; if (c >= '0' && c <= '9') return true; if (c == '/') return true; if (c == '-') return true; if (c == '.') return true; if (c == '?') return true; if (c == ':') return true; if (c == '@') return true; if (c == '&') return true; if (c == '=') return true; if (c == '+') return true; if (c == '$') return true; if (c == ',') return true; if (c == '%') return true; if (c == '_') return true; if (c == '!') return true; if (c == '~') return true; if (c == '*') return true; if (c == '\'') return true; if (c == '(') return true; if (c == ')') return true; return false; } /** * This is a utility function for determining whether a specified * character is a character according to production 2 of the * XML 1.0 specification. * * @param c char to check for XML compliance * @return boolean true if it's a character, * false otherwise */ public static boolean isXMLCharacter(int c) { if (c == '\n') return true; if (c == '\r') return true; if (c == '\t') return true; if (c < 0x20) return false; if (c <= 0xD7FF) return true; if (c < 0xE000) return false; if (c <= 0xFFFD) return true; if (c < 0x10000) return false; if (c <= 0x10FFFF) return true; return false; } /** * This is a utility function for determining whether a specified * character is a name character according to production 4 of the * XML 1.0 specification. * * @param c char to check for XML name compliance. * @return boolean true if it's a name character, * false otherwise. */ public static boolean isXMLNameCharacter(char c) { return (isXMLLetter(c) || isXMLDigit(c) || c == '.' || c == '-' || c == '_' || c == ':' || isXMLCombiningChar(c) || isXMLExtender(c)); } /** * This is a utility function for determining whether a specified * character is a legal name start character according to production 5 * of the XML 1.0 specification. This production does allow names * to begin with colons which the Namespaces in XML Recommendation * disallows. * * @param c char to check for XML name start compliance. * @return boolean true if it's a name start character, * false otherwise. */ public static boolean isXMLNameStartCharacter(char c) { return (isXMLLetter(c) || c == '_' || c ==':'); } /** * This is a utility function for determining whether a specified * character is a letter or digit according to productions 84 and 88 * of the XML 1.0 specification. * * @param c char to check. * @return boolean true if it's letter or digit, * false otherwise. */ public static boolean isXMLLetterOrDigit(char c) { return (isXMLLetter(c) || isXMLDigit(c)); } /** * This is a utility function for determining whether a specified character * is a letter according to production 84 of the XML 1.0 specification. * * @param c char to check for XML name compliance. * @return String true if it's a letter, false otherwise. */ public static boolean isXMLLetter(char c) { // Note that order is very important here. The search proceeds // from lowest to highest values, so that no searching occurs // above the character's value. BTW, the first line is equivalent to: // if (c >= 0x0041 && c <= 0x005A) return true; if (c < 0x0041) return false; if (c <= 0x005a) return true; if (c < 0x0061) return false; if (c <= 0x007A) return true; if (c < 0x00C0) return false; if (c <= 0x00D6) return true; if (c < 0x00D8) return false; if (c <= 0x00F6) return true; if (c < 0x00F8) return false; if (c <= 0x00FF) return true; if (c < 0x0100) return false; if (c <= 0x0131) return true; if (c < 0x0134) return false; if (c <= 0x013E) return true; if (c < 0x0141) return false; if (c <= 0x0148) return true; if (c < 0x014A) return false; if (c <= 0x017E) return true; if (c < 0x0180) return false; if (c <= 0x01C3) return true; if (c < 0x01CD) return false; if (c <= 0x01F0) return true; if (c < 0x01F4) return false; if (c <= 0x01F5) return true; if (c < 0x01FA) return false; if (c <= 0x0217) return true; if (c < 0x0250) return false; if (c <= 0x02A8) return true; if (c < 0x02BB) return false; if (c <= 0x02C1) return true; if (c == 0x0386) return true; if (c < 0x0388) return false; if (c <= 0x038A) return true; if (c == 0x038C) return true; if (c < 0x038E) return false; if (c <= 0x03A1) return true; if (c < 0x03A3) return false; if (c <= 0x03CE) return true; if (c < 0x03D0) return false; if (c <= 0x03D6) return true; if (c == 0x03DA) return true; if (c == 0x03DC) return true; if (c == 0x03DE) return true; if (c == 0x03E0) return true; if (c < 0x03E2) return false; if (c <= 0x03F3) return true; if (c < 0x0401) return false; if (c <= 0x040C) return true; if (c < 0x040E) return false; if (c <= 0x044F) return true; if (c < 0x0451) return false; if (c <= 0x045C) return true; if (c < 0x045E) return false; if (c <= 0x0481) return true; if (c < 0x0490) return false; if (c <= 0x04C4) return true; if (c < 0x04C7) return false; if (c <= 0x04C8) return true; if (c < 0x04CB) return false; if (c <= 0x04CC) return true; if (c < 0x04D0) return false; if (c <= 0x04EB) return true; if (c < 0x04EE) return false; if (c <= 0x04F5) return true; if (c < 0x04F8) return false; if (c <= 0x04F9) return true; if (c < 0x0531) return false; if (c <= 0x0556) return true; if (c == 0x0559) return true; if (c < 0x0561) return false; if (c <= 0x0586) return true; if (c < 0x05D0) return false; if (c <= 0x05EA) return true; if (c < 0x05F0) return false; if (c <= 0x05F2) return true; if (c < 0x0621) return false; if (c <= 0x063A) return true; if (c < 0x0641) return false; if (c <= 0x064A) return true; if (c < 0x0671) return false; if (c <= 0x06B7) return true; if (c < 0x06BA) return false; if (c <= 0x06BE) return true; if (c < 0x06C0) return false; if (c <= 0x06CE) return true; if (c < 0x06D0) return false; if (c <= 0x06D3) return true; if (c == 0x06D5) return true; if (c < 0x06E5) return false; if (c <= 0x06E6) return true; if (c < 0x0905) return false; if (c <= 0x0939) return true; if (c == 0x093D) return true; if (c < 0x0958) return false; if (c <= 0x0961) return true; if (c < 0x0985) return false; if (c <= 0x098C) return true; if (c < 0x098F) return false; if (c <= 0x0990) return true; if (c < 0x0993) return false; if (c <= 0x09A8) return true; if (c < 0x09AA) return false; if (c <= 0x09B0) return true; if (c == 0x09B2) return true; if (c < 0x09B6) return false; if (c <= 0x09B9) return true; if (c < 0x09DC) return false; if (c <= 0x09DD) return true; if (c < 0x09DF) return false; if (c <= 0x09E1) return true; if (c < 0x09F0) return false; if (c <= 0x09F1) return true; if (c < 0x0A05) return false; if (c <= 0x0A0A) return true; if (c < 0x0A0F) return false; if (c <= 0x0A10) return true; if (c < 0x0A13) return false; if (c <= 0x0A28) return true; if (c < 0x0A2A) return false; if (c <= 0x0A30) return true; if (c < 0x0A32) return false; if (c <= 0x0A33) return true; if (c < 0x0A35) return false; if (c <= 0x0A36) return true; if (c < 0x0A38) return false; if (c <= 0x0A39) return true; if (c < 0x0A59) return false; if (c <= 0x0A5C) return true; if (c == 0x0A5E) return true; if (c < 0x0A72) return false; if (c <= 0x0A74) return true; if (c < 0x0A85) return false; if (c <= 0x0A8B) return true; if (c == 0x0A8D) return true; if (c < 0x0A8F) return false; if (c <= 0x0A91) return true; if (c < 0x0A93) return false; if (c <= 0x0AA8) return true; if (c < 0x0AAA) return false; if (c <= 0x0AB0) return true; if (c < 0x0AB2) return false; if (c <= 0x0AB3) return true; if (c < 0x0AB5) return false; if (c <= 0x0AB9) return true; if (c == 0x0ABD) return true; if (c == 0x0AE0) return true; if (c < 0x0B05) return false; if (c <= 0x0B0C) return true; if (c < 0x0B0F) return false; if (c <= 0x0B10) return true; if (c < 0x0B13) return false; if (c <= 0x0B28) return true; if (c < 0x0B2A) return false; if (c <= 0x0B30) return true; if (c < 0x0B32) return false; if (c <= 0x0B33) return true; if (c < 0x0B36) return false; if (c <= 0x0B39) return true; if (c == 0x0B3D) return true; if (c < 0x0B5C) return false; if (c <= 0x0B5D) return true; if (c < 0x0B5F) return false; if (c <= 0x0B61) return true; if (c < 0x0B85) return false; if (c <= 0x0B8A) return true; if (c < 0x0B8E) return false; if (c <= 0x0B90) return true; if (c < 0x0B92) return false; if (c <= 0x0B95) return true; if (c < 0x0B99) return false; if (c <= 0x0B9A) return true; if (c == 0x0B9C) return true; if (c < 0x0B9E) return false; if (c <= 0x0B9F) return true; if (c < 0x0BA3) return false; if (c <= 0x0BA4) return true; if (c < 0x0BA8) return false; if (c <= 0x0BAA) return true; if (c < 0x0BAE) return false; if (c <= 0x0BB5) return true; if (c < 0x0BB7) return false; if (c <= 0x0BB9) return true; if (c < 0x0C05) return false; if (c <= 0x0C0C) return true; if (c < 0x0C0E) return false; if (c <= 0x0C10) return true; if (c < 0x0C12) return false; if (c <= 0x0C28) return true; if (c < 0x0C2A) return false; if (c <= 0x0C33) return true; if (c < 0x0C35) return false; if (c <= 0x0C39) return true; if (c < 0x0C60) return false; if (c <= 0x0C61) return true; if (c < 0x0C85) return false; if (c <= 0x0C8C) return true; if (c < 0x0C8E) return false; if (c <= 0x0C90) return true; if (c < 0x0C92) return false; if (c <= 0x0CA8) return true; if (c < 0x0CAA) return false; if (c <= 0x0CB3) return true; if (c < 0x0CB5) return false; if (c <= 0x0CB9) return true; if (c == 0x0CDE) return true; if (c < 0x0CE0) return false; if (c <= 0x0CE1) return true; if (c < 0x0D05) return false; if (c <= 0x0D0C) return true; if (c < 0x0D0E) return false; if (c <= 0x0D10) return true; if (c < 0x0D12) return false; if (c <= 0x0D28) return true; if (c < 0x0D2A) return false; if (c <= 0x0D39) return true; if (c < 0x0D60) return false; if (c <= 0x0D61) return true; if (c < 0x0E01) return false; if (c <= 0x0E2E) return true; if (c == 0x0E30) return true; if (c < 0x0E32) return false; if (c <= 0x0E33) return true; if (c < 0x0E40) return false; if (c <= 0x0E45) return true; if (c < 0x0E81) return false; if (c <= 0x0E82) return true; if (c == 0x0E84) return true; if (c < 0x0E87) return false; if (c <= 0x0E88) return true; if (c == 0x0E8A) return true; if (c == 0x0E8D) return true; if (c < 0x0E94) return false; if (c <= 0x0E97) return true; if (c < 0x0E99) return false; if (c <= 0x0E9F) return true; if (c < 0x0EA1) return false; if (c <= 0x0EA3) return true; if (c == 0x0EA5) return true; if (c == 0x0EA7) return true; if (c < 0x0EAA) return false; if (c <= 0x0EAB) return true; if (c < 0x0EAD) return false; if (c <= 0x0EAE) return true; if (c == 0x0EB0) return true; if (c < 0x0EB2) return false; if (c <= 0x0EB3) return true; if (c == 0x0EBD) return true; if (c < 0x0EC0) return false; if (c <= 0x0EC4) return true; if (c < 0x0F40) return false; if (c <= 0x0F47) return true; if (c < 0x0F49) return false; if (c <= 0x0F69) return true; if (c < 0x10A0) return false; if (c <= 0x10C5) return true; if (c < 0x10D0) return false; if (c <= 0x10F6) return true; if (c == 0x1100) return true; if (c < 0x1102) return false; if (c <= 0x1103) return true; if (c < 0x1105) return false; if (c <= 0x1107) return true; if (c == 0x1109) return true; if (c < 0x110B) return false; if (c <= 0x110C) return true; if (c < 0x110E) return false; if (c <= 0x1112) return true; if (c == 0x113C) return true; if (c == 0x113E) return true; if (c == 0x1140) return true; if (c == 0x114C) return true; if (c == 0x114E) return true; if (c == 0x1150) return true; if (c < 0x1154) return false; if (c <= 0x1155) return true; if (c == 0x1159) return true; if (c < 0x115F) return false; if (c <= 0x1161) return true; if (c == 0x1163) return true; if (c == 0x1165) return true; if (c == 0x1167) return true; if (c == 0x1169) return true; if (c < 0x116D) return false; if (c <= 0x116E) return true; if (c < 0x1172) return false; if (c <= 0x1173) return true; if (c == 0x1175) return true; if (c == 0x119E) return true; if (c == 0x11A8) return true; if (c == 0x11AB) return true; if (c < 0x11AE) return false; if (c <= 0x11AF) return true; if (c < 0x11B7) return false; if (c <= 0x11B8) return true; if (c == 0x11BA) return true; if (c < 0x11BC) return false; if (c <= 0x11C2) return true; if (c == 0x11EB) return true; if (c == 0x11F0) return true; if (c == 0x11F9) return true; if (c < 0x1E00) return false; if (c <= 0x1E9B) return true; if (c < 0x1EA0) return false; if (c <= 0x1EF9) return true; if (c < 0x1F00) return false; if (c <= 0x1F15) return true; if (c < 0x1F18) return false; if (c <= 0x1F1D) return true; if (c < 0x1F20) return false; if (c <= 0x1F45) return true; if (c < 0x1F48) return false; if (c <= 0x1F4D) return true; if (c < 0x1F50) return false; if (c <= 0x1F57) return true; if (c == 0x1F59) return true; if (c == 0x1F5B) return true; if (c == 0x1F5D) return true; if (c < 0x1F5F) return false; if (c <= 0x1F7D) return true; if (c < 0x1F80) return false; if (c <= 0x1FB4) return true; if (c < 0x1FB6) return false; if (c <= 0x1FBC) return true; if (c == 0x1FBE) return true; if (c < 0x1FC2) return false; if (c <= 0x1FC4) return true; if (c < 0x1FC6) return false; if (c <= 0x1FCC) return true; if (c < 0x1FD0) return false; if (c <= 0x1FD3) return true; if (c < 0x1FD6) return false; if (c <= 0x1FDB) return true; if (c < 0x1FE0) return false; if (c <= 0x1FEC) return true; if (c < 0x1FF2) return false; if (c <= 0x1FF4) return true; if (c < 0x1FF6) return false; if (c <= 0x1FFC) return true; if (c == 0x2126) return true; if (c < 0x212A) return false; if (c <= 0x212B) return true; if (c == 0x212E) return true; if (c < 0x2180) return false; if (c <= 0x2182) return true; if (c == 0x3007) return true; // ideographic if (c < 0x3021) return false; if (c <= 0x3029) return true; // ideo if (c < 0x3041) return false; if (c <= 0x3094) return true; if (c < 0x30A1) return false; if (c <= 0x30FA) return true; if (c < 0x3105) return false; if (c <= 0x312C) return true; if (c < 0x4E00) return false; if (c <= 0x9FA5) return true; // ideo if (c < 0xAC00) return false; if (c <= 0xD7A3) return true; return false; } /** * This is a utility function for determining whether a specified character * is a combining character according to production 87 * of the XML 1.0 specification. * * @param c char to check. * @return boolean true if it's a combining character, * false otherwise. */ public static boolean isXMLCombiningChar(char c) { // CombiningChar if (c < 0x0300) return false; if (c <= 0x0345) return true; if (c < 0x0360) return false; if (c <= 0x0361) return true; if (c < 0x0483) return false; if (c <= 0x0486) return true; if (c < 0x0591) return false; if (c <= 0x05A1) return true; if (c < 0x05A3) return false; if (c <= 0x05B9) return true; if (c < 0x05BB) return false; if (c <= 0x05BD) return true; if (c == 0x05BF) return true; if (c < 0x05C1) return false; if (c <= 0x05C2) return true; if (c == 0x05C4) return true; if (c < 0x064B) return false; if (c <= 0x0652) return true; if (c == 0x0670) return true; if (c < 0x06D6) return false; if (c <= 0x06DC) return true; if (c < 0x06DD) return false; if (c <= 0x06DF) return true; if (c < 0x06E0) return false; if (c <= 0x06E4) return true; if (c < 0x06E7) return false; if (c <= 0x06E8) return true; if (c < 0x06EA) return false; if (c <= 0x06ED) return true; if (c < 0x0901) return false; if (c <= 0x0903) return true; if (c == 0x093C) return true; if (c < 0x093E) return false; if (c <= 0x094C) return true; if (c == 0x094D) return true; if (c < 0x0951) return false; if (c <= 0x0954) return true; if (c < 0x0962) return false; if (c <= 0x0963) return true; if (c < 0x0981) return false; if (c <= 0x0983) return true; if (c == 0x09BC) return true; if (c == 0x09BE) return true; if (c == 0x09BF) return true; if (c < 0x09C0) return false; if (c <= 0x09C4) return true; if (c < 0x09C7) return false; if (c <= 0x09C8) return true; if (c < 0x09CB) return false; if (c <= 0x09CD) return true; if (c == 0x09D7) return true; if (c < 0x09E2) return false; if (c <= 0x09E3) return true; if (c == 0x0A02) return true; if (c == 0x0A3C) return true; if (c == 0x0A3E) return true; if (c == 0x0A3F) return true; if (c < 0x0A40) return false; if (c <= 0x0A42) return true; if (c < 0x0A47) return false; if (c <= 0x0A48) return true; if (c < 0x0A4B) return false; if (c <= 0x0A4D) return true; if (c < 0x0A70) return false; if (c <= 0x0A71) return true; if (c < 0x0A81) return false; if (c <= 0x0A83) return true; if (c == 0x0ABC) return true; if (c < 0x0ABE) return false; if (c <= 0x0AC5) return true; if (c < 0x0AC7) return false; if (c <= 0x0AC9) return true; if (c < 0x0ACB) return false; if (c <= 0x0ACD) return true; if (c < 0x0B01) return false; if (c <= 0x0B03) return true; if (c == 0x0B3C) return true; if (c < 0x0B3E) return false; if (c <= 0x0B43) return true; if (c < 0x0B47) return false; if (c <= 0x0B48) return true; if (c < 0x0B4B) return false; if (c <= 0x0B4D) return true; if (c < 0x0B56) return false; if (c <= 0x0B57) return true; if (c < 0x0B82) return false; if (c <= 0x0B83) return true; if (c < 0x0BBE) return false; if (c <= 0x0BC2) return true; if (c < 0x0BC6) return false; if (c <= 0x0BC8) return true; if (c < 0x0BCA) return false; if (c <= 0x0BCD) return true; if (c == 0x0BD7) return true; if (c < 0x0C01) return false; if (c <= 0x0C03) return true; if (c < 0x0C3E) return false; if (c <= 0x0C44) return true; if (c < 0x0C46) return false; if (c <= 0x0C48) return true; if (c < 0x0C4A) return false; if (c <= 0x0C4D) return true; if (c < 0x0C55) return false; if (c <= 0x0C56) return true; if (c < 0x0C82) return false; if (c <= 0x0C83) return true; if (c < 0x0CBE) return false; if (c <= 0x0CC4) return true; if (c < 0x0CC6) return false; if (c <= 0x0CC8) return true; if (c < 0x0CCA) return false; if (c <= 0x0CCD) return true; if (c < 0x0CD5) return false; if (c <= 0x0CD6) return true; if (c < 0x0D02) return false; if (c <= 0x0D03) return true; if (c < 0x0D3E) return false; if (c <= 0x0D43) return true; if (c < 0x0D46) return false; if (c <= 0x0D48) return true; if (c < 0x0D4A) return false; if (c <= 0x0D4D) return true; if (c == 0x0D57) return true; if (c == 0x0E31) return true; if (c < 0x0E34) return false; if (c <= 0x0E3A) return true; if (c < 0x0E47) return false; if (c <= 0x0E4E) return true; if (c == 0x0EB1) return true; if (c < 0x0EB4) return false; if (c <= 0x0EB9) return true; if (c < 0x0EBB) return false; if (c <= 0x0EBC) return true; if (c < 0x0EC8) return false; if (c <= 0x0ECD) return true; if (c < 0x0F18) return false; if (c <= 0x0F19) return true; if (c == 0x0F35) return true; if (c == 0x0F37) return true; if (c == 0x0F39) return true; if (c == 0x0F3E) return true; if (c == 0x0F3F) return true; if (c < 0x0F71) return false; if (c <= 0x0F84) return true; if (c < 0x0F86) return false; if (c <= 0x0F8B) return true; if (c < 0x0F90) return false; if (c <= 0x0F95) return true; if (c == 0x0F97) return true; if (c < 0x0F99) return false; if (c <= 0x0FAD) return true; if (c < 0x0FB1) return false; if (c <= 0x0FB7) return true; if (c == 0x0FB9) return true; if (c < 0x20D0) return false; if (c <= 0x20DC) return true; if (c == 0x20E1) return true; if (c < 0x302A) return false; if (c <= 0x302F) return true; if (c == 0x3099) return true; if (c == 0x309A) return true; return false; } /** * This is a utility function for determining whether a specified * character is an extender according to production 88 of the XML 1.0 * specification. * * @param c char to check. * @return String true if it's an extender, false otherwise. */ public static boolean isXMLExtender(char c) { if (c < 0x00B6) return false; // quick short circuit // Extenders if (c == 0x00B7) return true; if (c == 0x02D0) return true; if (c == 0x02D1) return true; if (c == 0x0387) return true; if (c == 0x0640) return true; if (c == 0x0E46) return true; if (c == 0x0EC6) return true; if (c == 0x3005) return true; if (c < 0x3031) return false; if (c <= 0x3035) return true; if (c < 0x309D) return false; if (c <= 0x309E) return true; if (c < 0x30FC) return false; if (c <= 0x30FE) return true; return false; } /** * This is a utility function for determining whether a specified * Unicode character * is a digit according to production 88 of the XML 1.0 specification. * * @param c char to check for XML digit compliance * @return boolean true if it's a digit, false otherwise */ public static boolean isXMLDigit(char c) { if (c < 0x0030) return false; if (c <= 0x0039) return true; if (c < 0x0660) return false; if (c <= 0x0669) return true; if (c < 0x06F0) return false; if (c <= 0x06F9) return true; if (c < 0x0966) return false; if (c <= 0x096F) return true; if (c < 0x09E6) return false; if (c <= 0x09EF) return true; if (c < 0x0A66) return false; if (c <= 0x0A6F) return true; if (c < 0x0AE6) return false; if (c <= 0x0AEF) return true; if (c < 0x0B66) return false; if (c <= 0x0B6F) return true; if (c < 0x0BE7) return false; if (c <= 0x0BEF) return true; if (c < 0x0C66) return false; if (c <= 0x0C6F) return true; if (c < 0x0CE6) return false; if (c <= 0x0CEF) return true; if (c < 0x0D66) return false; if (c <= 0x0D6F) return true; if (c < 0x0E50) return false; if (c <= 0x0E59) return true; if (c < 0x0ED0) return false; if (c <= 0x0ED9) return true; if (c < 0x0F20) return false; if (c <= 0x0F29) return true; return false; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/DescendantIterator.java0000644000175000017500000001353011377161311023776 0ustar /*-- $Id: DescendantIterator.java,v 1.1.1.1 2005/12/02 14:16:45 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; import org.jdom.Content; import org.jdom.Element; import org.jdom.Parent; /** * Traverse all a parent's descendants (all children at any level below * the parent). * * @author Bradley S. Huffman * @author Jason Hunter * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:45 $ */ class DescendantIterator implements Iterator { private Iterator iterator; private Iterator nextIterator; private List stack = new ArrayList(); private static final String CVS_ID = "@(#) $RCSfile: DescendantIterator.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:45 $ $Name: $"; /** * Iterator for the descendants of the supplied object. * * @param parent document or element whose descendants will be iterated */ DescendantIterator(Parent parent) { if (parent == null) { throw new IllegalArgumentException("parent parameter was null"); } this.iterator = parent.getContent().iterator(); } /** * Returns true> if the iteration has more {@link Content} descendants. * * @return true is the iterator has more descendants */ public boolean hasNext() { if (iterator != null && iterator.hasNext()) return true; if (nextIterator != null && nextIterator.hasNext()) return true; if (stackHasAnyNext()) return true; return false; } /** * Returns the next {@link Content} descendant. * * @return the next descendant */ public Object next() { if (!hasNext()) { throw new NoSuchElementException(); } // If we need to descend, go for it and record where we are. // We do the shuffle here on the next next() call so remove() is easy // to code up. if (nextIterator != null) { push(iterator); iterator = nextIterator; nextIterator = null; } // If this iterator is finished, try moving up the stack while (!iterator.hasNext()) { if (stack.size() > 0) { iterator = pop(); } else { throw new NoSuchElementException("Somehow we lost our iterator"); } } Content child = (Content) iterator.next(); if (child instanceof Element) { nextIterator = ((Element)child).getContent().iterator(); } return child; } /** * Detaches the last {@link org.jdom.Content} returned by the last call to * next from it's parent. Note: this does not affect * iteration and all children, siblings, and any node following the * removed node (in document order) will be visited. */ public void remove() { iterator.remove(); } private Iterator pop() { int stackSize = stack.size(); if (stackSize == 0) { throw new NoSuchElementException("empty stack"); } return (Iterator) stack.remove(stackSize - 1); } private void push(Iterator itr) { stack.add(itr); } private boolean stackHasAnyNext() { int size = stack.size(); for (int i = 0; i < size; i++) { Iterator itr = (Iterator) stack.get(i); if (itr.hasNext()) { return true; } } return false; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/DataConversionException.java0000644000175000017500000000724611377161311025021 0ustar /*-- $Id: DataConversionException.java,v 1.1.1.1 2005/12/02 14:16:45 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * Thrown when a data conversion from a string to value type fails, such as * can happen with the {@link Attribute} convenience getter functions. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:45 $ * @author Brett McLaughlin * @author Jason Hunter */ public class DataConversionException extends JDOMException { private static final String CVS_ID = "@(#) $RCSfile: DataConversionException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:45 $ $Name: $"; /** * Constructs an exception where the named construct couldn't be converted * to the named data type. * * @param name name of the construct whose value failed conversion * @param dataType type the conversion was attempting to create */ public DataConversionException(String name, String dataType) { super(new StringBuffer() .append("The XML construct ") .append(name) .append(" could not be converted to a ") .append(dataType) // JCLIC modification //.toString() .substring(0) ); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/CDATA.java0000644000175000017500000001522311377161311021031 0ustar /*-- $Id: CDATA.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * An XML CDATA section. Represents character-based content within an XML * document that should be output within special CDATA tags. Semantically it's * identical to a simple {@link Text} object, but output behavior is different. * CDATA makes no guarantees about the underlying textual representation of * character data, but does expose that data as a Java String. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ * @author Dan Schaffer * @author Brett McLaughlin * @author Jason Hunter * @author Bradley S. Huffman */ public class CDATA extends Text { private static final String CVS_ID = "@(#) $RCSfile: CDATA.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:47 $ $Name: $"; /** * This is the protected, no-args constructor standard in all JDOM * classes. It allows subclassers to get a raw instance with no * initialization. */ protected CDATA() { } /** * This constructor creates a new CDATA node, with the * supplied string value as it's character content. * * @param str the node's character content. * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) * or the CDATA end delimiter ]]>. */ public CDATA(String str) { setText(str); } /** * This will set the value of this CDATA node. * * @param str value for node's content. * @return the object on which the method was invoked * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) * or the CDATA end delimiter ]]>. */ public Text setText(String str) { // Overrides Text.setText() because this needs to check CDATA // rules are enforced. We could have a separate Verifier check // for CDATA beyond Text and call that alone before super.setText(). String reason; if (str == null) { value = EMPTY_STRING; return this; } if ((reason = Verifier.checkCDATASection(str)) != null) { throw new IllegalDataException(str, "CDATA section", reason); } value = str; return this; } /** * This will append character content to whatever content already * exists within this CDATA node. * * @param str character content to append. * @throws IllegalDataException if str contains an * illegal character such as a vertical tab (as determined * by {@link org.jdom.Verifier#checkCharacterData}) * or the CDATA end delimiter ]]>. */ public void append(String str) { // Overrides Text.setText() because this needs to check CDATA // rules are enforced. We could have a separate Verifier check // for CDATA beyond Text and call that alone before super.setText(). String reason; if (str == null) { return; } if ((reason = Verifier.checkCDATASection(str)) != null) { throw new IllegalDataException(str, "CDATA section", reason); } if (value == EMPTY_STRING) value = str; else value += str; } /** * This returns a String representation of the * CDATA node, suitable for debugging. If the XML * representation of the CDATA node is desired, * either {@link #getText} or * {@link org.jdom.output.XMLOutputter#output(CDATA, java.io.Writer)} * should be used. * * @return String - information about this node. */ public String toString() { return new StringBuffer(64) .append("[CDATA: ") .append(getText()) .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/IllegalAddException.java0000644000175000017500000003221011377161311024051 0ustar /*-- $Id: IllegalAddException.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * Thrown when trying to add a illegal object to a JDOM construct. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ * @author Brett McLaughlin * @author Jason Hunter */ public class IllegalAddException extends IllegalArgumentException { private static final String CVS_ID = "@(#) $RCSfile: IllegalAddException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; /** * This will create an Exception indicating * that the addition of the {@link Attribute} * to the {@link Element} is illegal. * * @param base Element that Attribute * couldn't be added to * @param added Attribute that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, Attribute added, String reason) { super(new StringBuffer() .append("The attribute \"") .append(added.getQualifiedName()) .append("\" could not be added to the element \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link Element} * to parent is illegal. * * @param base Element that the child * couldn't be added to * @param added Element that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, Element added, String reason) { super(new StringBuffer() .append("The element \"") .append(added.getQualifiedName()) .append("\" could not be added as a child of \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link Element} * to the {@link Document} is illegal. * * @param added Element that could not be added * @param reason cause of the problem */ IllegalAddException(Element added, String reason) { super(new StringBuffer() .append("The element \"") .append(added.getQualifiedName()) .append("\" could not be added as the root of the document: ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link ProcessingInstruction} * to the {@link Element} is illegal. * * @param base Element that the * ProcessingInstruction couldn't be added to * @param added ProcessingInstruction that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, ProcessingInstruction added, String reason) { super(new StringBuffer() .append("The PI \"") .append(added.getTarget()) .append("\" could not be added as content to \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link ProcessingInstruction} * to the {@link Document} is illegal. * * @param added ProcessingInstruction that could not be added * @param reason cause of the problem */ IllegalAddException(ProcessingInstruction added, String reason) { super(new StringBuffer() .append("The PI \"") .append(added.getTarget()) .append("\" could not be added to the top level of the document: ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link Comment} * to the {@link Element} is illegal. * * @param base Element that the Comment * couldn't be added to * @param added Comment that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, Comment added, String reason) { super(new StringBuffer() .append("The comment \"") .append(added.getText()) .append("\" could not be added as content to \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link CDATA} * * @param base Element that the CDATA * couldn't be added to * @param added CDATA that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, CDATA added, String reason) { super(new StringBuffer() .append("The CDATA \"") .append(added.getText()) .append("\" could not be added as content to \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link Text} * to the {@link Element} is illegal. * * @param base Element that the Comment * couldn't be added to * @param added Text that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, Text added, String reason) { super(new StringBuffer() .append("The Text \"") .append(added.getText()) .append("\" could not be added as content to \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link Comment} * to the {@link Document} is illegal. * * @param added Comment that could not be added * @param reason cause of the problem */ IllegalAddException(Comment added, String reason) { super(new StringBuffer() .append("The comment \"") .append(added.getText()) .append("\" could not be added to the top level of the document: ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link EntityRef} * to the {@link Element} is illegal. * * @param base Element that the EntityRef * couldn't be added to * @param added EntityRef reference that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, EntityRef added, String reason) { super(new StringBuffer() .append("The entity reference\"") .append(added.getName()) .append("\" could not be added as content to \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link Namespace} * to the {@link Element} is illegal. * * @param base Element that the Namespace * couldn't be added to * @param added Namespace that could not be added * @param reason cause of the problem */ IllegalAddException(Element base, Namespace added, String reason) { super(new StringBuffer() .append("The namespace xmlns") .append((added.getPrefix() == null || added.getPrefix().equals("")) ? "=" : ":" + added.getPrefix() + "=") .append("\"") .append(added.getURI()) .append("\" could not be added as a namespace to \"") .append(base.getQualifiedName()) .append("\": ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the addition of the {@link DocType} * to the {@link Document} is illegal. * * @param added DocType that could not be added * @param reason cause of the problem */ IllegalAddException(DocType added, String reason) { super(new StringBuffer() .append("The DOCTYPE ") .append(added.toString()) .append(" could not be added to the document: ") .append(reason) // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception with the specified * error message. * * @param reason cause of the problem */ public IllegalAddException(String reason) { super(reason); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/IllegalDataException.java0000644000175000017500000001126611377161311024242 0ustar /*-- $Id: IllegalDataException.java,v 1.1.1.1 2005/12/02 14:16:45 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * Thrown when illegal text is supplied to a JDOM construct. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:45 $ * @author Brett McLaughlin * @author Elliotte Rusty Harold */ public class IllegalDataException extends IllegalArgumentException { private static final String CVS_ID = "@(#) $RCSfile: IllegalDataException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:45 $ $Name: $"; /** * This will create an Exception indicating * that the specified data is illegal for the construct * it was supplied to. * * @param data String data that breaks rules. * @param construct String construct that data is illegal for. * @param reason String message or reason data is illegal. */ IllegalDataException(String data, String construct, String reason) { super(new StringBuffer() .append("The data \"") .append(data) .append("\" is not legal for a JDOM ") .append(construct) .append(": ") .append(reason) .append(".") // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the specified data is illegal for the construct * it was supplied to. * * @param data String data that breaks rules. * @param construct String construct that data is illegal for. */ IllegalDataException(String data, String construct) { super(new StringBuffer() .append("The data \"") .append(data) .append("\" is not legal for a JDOM ") .append(construct) .append(".") // JCLIC modification //.toString() .substring(0) ); } /** * This will create an exceptoin with the specified error message. * * @param reason cause of the problem */ public IllegalDataException(String reason) { super(reason); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Document.java0000644000175000017500000006411211377161311021774 0ustar /*-- $Id: Document.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; import org.jdom.filter.*; /** * An XML document. Methods allow access to the root element as well as the * {@link DocType} and other document-level information. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ * @author Brett McLaughlin * @author Jason Hunter * @author Jools Enticknap * @author Bradley S. Huffman */ public class Document implements Parent { private static final String CVS_ID = "@(#) $RCSfile: Document.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; /** * This document's content including comments, PIs, a possible * DocType, and a root element. * Subclassers have to track content using their own * mechanism. */ ContentList content = new ContentList(this); /** * See http://www.w3.org/TR/2003/WD-DOM-Level-3-Core-20030226/core.html#baseURIs-Considerations */ protected String baseURI = null; // Supports the setProperty/getProperty calls private HashMap propertyMap = null; /** * Creates a new empty document. A document must have a root element, * so this document will not be well-formed and accessor methods will * throw an IllegalStateException if this document is accessed before a * root element is added. This method is most useful for build tools. */ public Document() {} /** * This will create a new Document, * with the supplied {@link Element} * as the root element, the supplied * {@link DocType} declaration, and the specified * base URI. * * @param rootElement Element for document root. * @param docType DocType declaration. * @param baseURI the URI from which this doucment was loaded. * @throws IllegalAddException if the given docType object * is already attached to a document or the given * rootElement already has a parent */ public Document(Element rootElement, DocType docType, String baseURI) { if (rootElement != null) { setRootElement(rootElement); } if (docType != null) { setDocType(docType); } if (baseURI != null) { setBaseURI(baseURI); } } /** * This will create a new Document, * with the supplied {@link Element} * as the root element and the supplied * {@link DocType} declaration. * * @param rootElement Element for document root. * @param docType DocType declaration. * @throws IllegalAddException if the given DocType object * is already attached to a document or the given * rootElement already has a parent */ public Document(Element rootElement, DocType docType) { this(rootElement, docType, null); } /** * This will create a new Document, * with the supplied {@link Element} * as the root element, and no {@link DocType} * declaration. * * @param rootElement Element for document root * @throws IllegalAddException if the given rootElement already has * a parent. */ public Document(Element rootElement) { this(rootElement, null, null); } /** * This will create a new Document, * with the supplied list of content, and a * {@link DocType} declaration only if the content * contains a DocType instance. A null list is treated the * same as the no-arg constructor. * * @param content List of starter content * @throws IllegalAddException if the List contains more than * one Element or objects of illegal types. */ public Document(List content) { setContent(content); } public int getContentSize() { return content.size(); } public int indexOf(Content child) { return content.indexOf(child); } // /** // * Starting at the given index (inclusive), return the index of // * the first child matching the supplied filter, or -1 // * if none is found. // * // * @return index of child, or -1 if none found. // */ // private int indexOf(int start, Filter filter) { // int size = getContentSize(); // for (int i = start; i < size; i++) { // if (filter.matches(getContent(i))) { // return i; // } // } // return -1; // } /** * This will return true if this document has a * root element, false otherwise. * * @return true if this document has a root element, * false otherwise. */ public boolean hasRootElement() { return (content.indexOfFirstElement() < 0) ? false : true; } /** * This will return the root Element * for this Document * * @return Element - the document's root element * @throws IllegalStateException if the root element hasn't been set */ public Element getRootElement() { int index = content.indexOfFirstElement(); if (index < 0) { throw new IllegalStateException("Root element not set"); } return (Element) content.get(index); } /** * This sets the root {@link Element} for the * Document. If the document already has a root * element, it is replaced. * * @param rootElement Element to be new root. * @return Document - modified Document. * @throws IllegalAddException if the given rootElement already has * a parent. */ public Document setRootElement(Element rootElement) { int index = content.indexOfFirstElement(); if (index < 0) { content.add(rootElement); } else { content.set(index, rootElement); } return this; } /** * Detach the root {@link Element} from this document. * * @return removed root Element */ public Element detachRootElement() { int index = content.indexOfFirstElement(); if (index < 0) return null; return (Element) removeContent(index); } /** * This will return the {@link DocType} * declaration for this Document, or * null if none exists. * * @return DocType - the DOCTYPE declaration. */ public DocType getDocType() { int index = content.indexOfDocType(); if (index < 0) { return null; } else { return (DocType) content.get(index); } } /** * This will set the {@link DocType} * declaration for this Document. Note * that a DocType can only be attached to one Document. * Attempting to set the DocType to a DocType object * that already belongs to a Document will result in an * IllegalAddException being thrown. * * @param docType DocType declaration. * @return object on which the method was invoked * @throws IllegalAddException if the given docType is * already attached to a Document. */ public Document setDocType(DocType docType) { if (docType == null) { // Remove any existing doctype int docTypeIndex = content.indexOfDocType(); if (docTypeIndex >= 0) content.remove(docTypeIndex); return this; } if (docType.getParent() != null) { throw new IllegalAddException(docType, "The DocType already is attached to a document"); } // Add DocType to head if new, replace old otherwise int docTypeIndex = content.indexOfDocType(); if (docTypeIndex < 0) { content.add(0, docType); } else { content.set(docTypeIndex, docType); } return this; } /** * Appends the child to the end of the content list. * * @param child child to append to end of content list * @return the document on which the method was called * @throws IllegalAddException if the given child already has a parent. */ public Document addContent(Content child) { content.add(child); return this; } /** * Appends all children in the given collection to the end of * the content list. In event of an exception during add the * original content will be unchanged and the objects in the supplied * collection will be unaltered. * * @param c collection to append * @return the document on which the method was called * @throws IllegalAddException if any item in the collection * already has a parent or is of an illegal type. */ public Document addContent(Collection c) { content.addAll(c); return this; } /** * Inserts the child into the content list at the given index. * * @param index location for adding the collection * @param child child to insert * @return the parent on which the method was called * @throws IndexOutOfBoundsException if index is negative or beyond * the current number of children * @throws IllegalAddException if the given child already has a parent. */ public Document addContent(int index, Content child) { content.add(index, child); return this; } /** * Inserts the content in a collection into the content list * at the given index. In event of an exception the original content * will be unchanged and the objects in the supplied collection will be * unaltered. * * @param index location for adding the collection * @param c collection to insert * @return the parent on which the method was called * @throws IndexOutOfBoundsException if index is negative or beyond * the current number of children * @throws IllegalAddException if any item in the collection * already has a parent or is of an illegal type. */ public Document addContent(int index, Collection c) { content.addAll(index, c); return this; } public List cloneContent() { int size = getContentSize(); List list = new ArrayList(size); for (int i = 0; i < size; i++) { Content child = getContent(i); list.add(child.clone()); } return list; } public Content getContent(int index) { return (Content) content.get(index); } // public Content getChild(Filter filter) { // int i = indexOf(0, filter); // return (i < 0) ? null : getContent(i); // } /** * This will return all content for the Document. * The returned list is "live" in document order and changes to it * affect the document's actual content. * *

* Sequential traversal through the List is best done with a Iterator * since the underlying implement of List.size() may require walking the * entire list. *

* * @return List - all Document content * @throws IllegalStateException if the root element hasn't been set */ public List getContent() { if (!hasRootElement()) throw new IllegalStateException("Root element not set"); return content; } /** * Return a filtered view of this Document's content. * *

* Sequential traversal through the List is best done with a Iterator * since the underlying implement of List.size() may require walking the * entire list. *

* * @param filter Filter to apply * @return List - filtered Document content * @throws IllegalStateException if the root element hasn't been set */ public List getContent(Filter filter) { if (!hasRootElement()) throw new IllegalStateException("Root element not set"); return content.getView(filter); } /** * Removes all child content from this parent. * * @return list of the old children detached from this parent */ public List removeContent() { List old = new ArrayList(content); content.clear(); return old; } /** * Remove all child content from this parent matching the supplied filter. * * @param filter filter to select which content to remove * @return list of the old children detached from this parent */ public List removeContent(Filter filter) { List old = new ArrayList(); Iterator itr = content.getView(filter).iterator(); while (itr.hasNext()) { Content child = (Content) itr.next(); old.add(child); itr.remove(); } return old; } /** * This sets the content of the Document. The supplied * List should contain only objects of type Element, * Comment, and ProcessingInstruction. * *

* When all objects in the supplied List are legal and before the new * content is added, all objects in the old content will have their * parentage set to null (no parent) and the old content list will be * cleared. This has the effect that any active list (previously obtained * with a call to {@link #getContent}) will also * change to reflect the new content. In addition, all objects in the * supplied List will have their parentage set to this document, but the * List itself will not be "live" and further removals and additions will * have no effect on this document content. If the user wants to continue * working with a "live" list, then a call to setContent should be * followed by a call to {@link #getContent} to * obtain a "live" version of the content. *

* *

* Passing a null or empty List clears the existing content. *

* *

* In event of an exception the original content will be unchanged and * the objects in the supplied content will be unaltered. *

* * @param newContent List of content to set * @return this document modified * @throws IllegalAddException if the List contains objects of * illegal types or with existing parentage. */ public Document setContent(Collection newContent) { content.clearAndSet(newContent); return this; } /** * *

* Sets the effective URI from which this document was loaded, * and against which relative URLs in this document will be resolved. *

* * @param uri the base URI of this document */ public final void setBaseURI(String uri) { this.baseURI = uri; // XXX We don't check the URI } /** *

* Returns the URI from which this document was loaded, * or null if this is not known. *

* * @return the base URI of this document */ public final String getBaseURI() { return baseURI; } /* * Replace the current child the given index with the supplied child. *

* In event of an exception the original content will be unchanged and * the supplied child will be unaltered. *

* * @param index - index of child to replace. * @param child - child to add. * @throws IllegalAddException if the supplied child is already attached * or not legal content for this parent. * @throws IndexOutOfBoundsException if index is negative or greater * than the current number of children. */ public Document setContent(int index, Content child) { content.set(index, child); return this; } /** * Replace the child at the given index whith the supplied * collection. *

* In event of an exception the original content will be unchanged and * the content in the supplied collection will be unaltered. *

* * @param index - index of child to replace. * @param collection - collection of content to add. * @return object on which the method was invoked * @throws IllegalAddException if the collection contains objects of * illegal types. * @throws IndexOutOfBoundsException if index is negative or greater * than the current number of children. */ public Document setContent(int index, Collection collection) { content.remove(index); content.addAll(index, collection); return this; } public boolean removeContent(Content child) { return content.remove(child); } public Content removeContent(int index) { return (Content) content.remove(index); } /** * Set this document's content to be the supplied child. *

* If the supplied child is legal content for a Document and before * it is added, all content in the current content list will * be cleared and all current children will have their parentage set to * null. *

* This has the effect that any active list (previously obtained with * a call to one of the {@link #getContent} methods will also change * to reflect the new content. In addition, all content in the supplied * collection will have their parentage set to this Document. If the user * wants to continue working with a "live" list of this Document's * child, then a call to setContent should be followed by a call to one * of the {@link #getContent} methods to obtain a "live" * version of the children. *

* Passing a null child clears the existing content. *

* In event of an exception the original content will be unchanged and * the supplied child will be unaltered. * * @param child new content to replace existing content * @return the parent on which the method was called * @throws IllegalAddException if the supplied child is already attached * or not legal content for this parent */ public Document setContent(Content child) { content.clear(); content.add(child); return this; } /** * This returns a String representation of the * Document, suitable for debugging. If the XML * representation of the Document is desired, * {@link org.jdom.output.XMLOutputter#outputString(Document)} * should be used. * * @return String - information about the * Document */ public String toString() { StringBuffer stringForm = new StringBuffer() .append("[Document: "); DocType docType = getDocType(); if (docType != null) { stringForm.append(docType.toString()) .append(", "); } else { stringForm.append(" No DOCTYPE declaration, "); } Element rootElement = getRootElement(); if (rootElement != null) { stringForm.append("Root is ") .append(rootElement.toString()); } else { stringForm.append(" No root element"); // shouldn't happen } stringForm.append("]"); return stringForm // JCLIC modification //.toString(); .substring(0); } /** * This tests for equality of this Document to the supplied * Object. * * @param ob Object to compare to * @return boolean whether the Document is * equal to the supplied Object */ public final boolean equals(Object ob) { return (ob == this); } /** * This returns the hash code for this Document. * * @return int hash code */ public final int hashCode() { return super.hashCode(); } /** * This will return a deep clone of this Document. * * @return Object clone of this Document */ public Object clone() { Document doc = null; try { doc = (Document) super.clone(); } catch (CloneNotSupportedException ce) { // Can't happen } // The clone has a reference to this object's content list, so // owerwrite with a empty list doc.content = new ContentList(doc); // Add the cloned content to clone for (int i = 0; i < content.size(); i++) { Object obj = content.get(i); if (obj instanceof Element) { Element element = (Element)((Element)obj).clone(); doc.content.add(element); } else if (obj instanceof Comment) { Comment comment = (Comment)((Comment)obj).clone(); doc.content.add(comment); } else if (obj instanceof ProcessingInstruction) { ProcessingInstruction pi = (ProcessingInstruction) ((ProcessingInstruction)obj).clone(); doc.content.add(pi); } else if (obj instanceof DocType) { DocType dt = (DocType) ((DocType)obj).clone(); doc.content.add(dt); } } return doc; } /** * Returns an iterator that walks over all descendants in document order. * * @return an iterator to walk descendants */ public Iterator getDescendants() { return new DescendantIterator(this); } /** * Returns an iterator that walks over all descendants in document order * applying the Filter to return only elements that match the filter rule. * With filters you can match only Elements, only Comments, Elements or * Comments, only Elements with a given name and/or prefix, and so on. * * @param filter filter to select which descendants to see * @return an iterator to walk descendants within a filter */ public Iterator getDescendants(Filter filter) { return new FilterIterator(new DescendantIterator(this), filter); } public Parent getParent() { return null; // documents never have parents } /** * @see org.jdom.Parent#getDocument() */ public Document getDocument() { return this; } /** * Assigns an arbitrary object to be associated with this document under * the given "id" string. Null values are permitted. Strings beginning * with "http://www.jdom.org/ are reserved for JDOM use. * * @param id the id of the stored object * @param value the object to store */ public void setProperty(String id, Object value) { if (propertyMap == null) { propertyMap = new HashMap(); } propertyMap.put(id, value); } /** * Returns the object associated with this document under the given "id" * string, or null if there is no binding or if the binding explicitly * stored a null value. * * @param id the id of the stored object to return * @return the object associated with the given id */ public Object getProperty(String id) { if (propertyMap == null) return null; return propertyMap.get(id); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/ProcessingInstruction.java0000644000175000017500000004101511377161311024571 0ustar /*-- $Id: ProcessingInstruction.java,v 1.1.1.1 2005/12/02 14:16:48 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; /** * An XML processing instruction. Methods allow the user to obtain the target of * the PI as well as its data. The data can always be accessed as a String or, * if the data appears akin to an attribute list, can be retrieved as name/value * pairs. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:48 $ * @author Brett McLaughlin * @author Jason Hunter * @author Steven Gould */ public class ProcessingInstruction extends Content { private static final String CVS_ID = "@(#) $RCSfile: ProcessingInstruction.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:48 $ $Name: $"; /** The target of the PI */ protected String target; /** The data for the PI as a String */ protected String rawData; /** The data for the PI in name/value pairs */ protected Map mapData; /** * Default, no-args constructor for implementations * to use if needed. */ protected ProcessingInstruction() { } /** * This will create a new ProcessingInstruction * with the specified target and data. * * @param target String target of PI. * @param data Map data for PI, in * name/value pairs * @throws IllegalTargetException if the given target is illegal * as a processing instruction name. */ public ProcessingInstruction(String target, Map data) { setTarget(target); setData(data); } /** * This will create a new ProcessingInstruction * with the specified target and data. * * @param target String target of PI. * @param data String data for PI. * @throws IllegalTargetException if the given target is illegal * as a processing instruction name. */ public ProcessingInstruction(String target, String data) { setTarget(target); setData(data); } /** * This will set the target for the PI. * * @param newTarget String new target of PI. * @return ProcessingInstruction - this PI modified. */ public ProcessingInstruction setTarget(String newTarget) { String reason; if ((reason = Verifier.checkProcessingInstructionTarget(newTarget)) != null) { throw new IllegalTargetException(newTarget, reason); } target = newTarget; return this; } /** * Returns the XPath 1.0 string value of this element, which is the * data of this PI. * * @return the data of this PI */ public String getValue() { return rawData; } /** * This will retrieve the target of the PI. * * @return String - target of PI. */ public String getTarget() { return target; } /** * This will return the raw data from all instructions. * * @return String - data of PI. */ public String getData() { return rawData; } /** * This will return a List containing the names of the * "attribute" style pieces of name/value pairs in this PI's data. * * @return List - the List containing the * "attribute" names. */ public List getPseudoAttributeNames() { Set mapDataSet = mapData.entrySet(); List nameList = new ArrayList(); for (Iterator i = mapDataSet.iterator(); i.hasNext();) { String wholeSet = (i.next()).toString(); String attrName = wholeSet.substring(0,(wholeSet.indexOf("="))); nameList.add(attrName); } return nameList; } /** * This will set the raw data for the PI. * * @param data String data of PI. * @return ProcessingInstruction - this PI modified. */ public ProcessingInstruction setData(String data) { String reason = Verifier.checkProcessingInstructionData(data); if (reason != null) { throw new IllegalDataException(data, reason); } this.rawData = data; this.mapData = parseData(data); return this; } /** * This will set the name/value pairs within the passed * Map as the pairs for the data of * this PI. The keys should be the pair name * and the values should be the pair values. * * @param data new map data to use * @return ProcessingInstruction - modified PI. */ public ProcessingInstruction setData(Map data) { String temp = toString(data); String reason = Verifier.checkProcessingInstructionData(temp); if (reason != null) { throw new IllegalDataException(temp, reason); } this.rawData = temp; this.mapData = data; return this; } /** * This will return the value for a specific * name/value pair on the PI. If no such pair is * found for this PI, null is returned. * * @param name String name of name/value pair * to lookup value for. * @return String - value of name/value pair. */ public String getPseudoAttributeValue(String name) { return (String)mapData.get(name); } /** * This will set a pseudo attribute with the given name and value. * If the PI data is not already in a pseudo-attribute format, this will * replace the existing data. * * @param name String name of pair. * @param value String value for pair. * @return ProcessingInstruction this PI modified. */ public ProcessingInstruction setPseudoAttribute(String name, String value) { String reason = Verifier.checkProcessingInstructionData(name); if (reason != null) { throw new IllegalDataException(name, reason); } reason = Verifier.checkProcessingInstructionData(value); if (reason != null) { throw new IllegalDataException(value, reason); } this.mapData.put(name, value); this.rawData = toString(mapData); return this; } /** * This will remove the pseudo attribute with the specified name. * * @param name name of pseudo attribute to remove * @return boolean - whether the requested * instruction was removed. */ public boolean removePseudoAttribute(String name) { if ((mapData.remove(name)) != null) { rawData = toString(mapData); return true; } return false; } /** * This will convert the Map to a string representation. * * @param mapData Map PI data to convert * @return a string representation of the Map as appropriate for a PI */ private String toString(Map mapData) { StringBuffer rawData = new StringBuffer(); Iterator i = mapData.keySet().iterator(); while (i.hasNext()) { String name = (String)i.next(); String value = (String)mapData.get(name); rawData.append(name) .append("=\"") .append(value) .append("\" "); } // Remove last space, if we did any appending if (rawData.length() > 0) { rawData.setLength(rawData.length() - 1); } return rawData // JCLIC modification //.toString(); .substring(0); } /** * This will parse and load the instructions for the PI. * This is separated to allow it to occur once and then be reused. */ private Map parseData(String rawData) { // The parsing here is done largely "by hand" which means the code // gets a little tricky/messy. The following conditions should // now be handled correctly: // Reads OK // Reads OK // Reads OK // Reads OK // Empty Map // Empty Map // Empty Map Map data = new HashMap(); // System.out.println("rawData: " + rawData); // The inputData variable holds the part of rawData left to parse String inputData = rawData.trim(); // Iterate through the remaining inputData string while (!inputData.trim().equals("")) { //System.out.println("parseData() looking at: " + inputData); // Search for "name =", "name=" or "name1 name2..." String name = ""; String value = ""; int startName = 0; char previousChar = inputData.charAt(startName); int pos = 1; for (; pos 0 && value != null) { //if (data.containsKey(name)) { // A repeat, that's a parse error, so return a null map //return new HashMap(); //} //else { data.put(name, value); //} } } return data; } /** * This is a helper routine, only used by parseData, to extract a * quoted String from the input parameter, rawData. A quoted string * can use either single or double quotes, but they must match up. * A singly quoted string can contain an unbalanced amount of double * quotes, or vice versa. For example, the String "JDOM's the best" * is legal as is 'JDOM"s the best'. * * @param rawData the input string from which a quoted string is to * be extracted. * @return the first quoted string encountered in the input data. If * no quoted string is found, then the empty string, "", is * returned. * @see #parseData */ private static int[] extractQuotedString(String rawData) { // Remembers whether we're actually in a quoted string yet boolean inQuotes = false; // Remembers which type of quoted string we're in char quoteChar = '"'; // Stores the position of the first character inside // the quoted string (i.e. the start of the return string) int start = 0; // Iterate through the input string looking for the start // and end of the quoted string for (int pos=0; pos < rawData.length(); pos++) { char currentChar = rawData.charAt(pos); if (currentChar=='"' || currentChar=='\'') { if (!inQuotes) { // We're entering a quoted string quoteChar = currentChar; inQuotes = true; start = pos+1; } else if (quoteChar == currentChar) { // We're leaving a quoted string inQuotes = false; return new int[] { start, pos }; } // Otherwise we've encountered a quote // inside a quote, so just continue } } return null; } /** * This returns a String representation of the * ProcessingInstruction, suitable for debugging. If the XML * representation of the ProcessingInstruction is desired, * {@link org.jdom.output.XMLOutputter#outputString(ProcessingInstruction)} * should be used. * * @return String - information about the * ProcessingInstruction */ public String toString() { return new StringBuffer() .append("[ProcessingInstruction: ") .append(new org.jdom.output.XMLOutputter().outputString(this)) .append("]") // JCLIC modification //.toString(); .substring(0); } /** * This will return a clone of this ProcessingInstruction. * * @return Object - clone of this * ProcessingInstruction. */ public Object clone() { ProcessingInstruction pi = (ProcessingInstruction) super.clone(); // target and rawdata are immutable and references copied by // Object.clone() // Create a new Map object for the clone (since Map isn't Cloneable) if (mapData != null) { pi.mapData = parseData(rawData); } return pi; } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/DefaultJDOMFactory.java0000644000175000017500000001475311377161311023612 0ustar /*-- $Id: DefaultJDOMFactory.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; /** * Creates the standard top-level JDOM classes (Element, Document, Comment, * etc). A subclass of this factory might construct custom classes. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ * @author Ken Rune Holland * @author Phil Nelson * @author Bradley S. Huffman */ public class DefaultJDOMFactory implements JDOMFactory { private static final String CVS_ID = "@(#) $RCSfile: DefaultJDOMFactory.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:47 $ $Name: $"; public DefaultJDOMFactory() { } // Allow Javadocs to inherit from JDOMFactory public Attribute attribute(String name, String value, Namespace namespace) { return new Attribute(name, value, namespace); } public Attribute attribute(String name, String value, int type, Namespace namespace) { return new Attribute(name, value, type, namespace); } public Attribute attribute(String name, String value) { return new Attribute(name, value); } public Attribute attribute(String name, String value, int type) { return new Attribute(name, value, type); } public CDATA cdata(String text) { return new CDATA(text); } public Text text(String text) { return new Text(text); } public Comment comment(String text) { return new Comment(text); } public DocType docType(String elementName, String publicID, String systemID) { return new DocType(elementName, publicID, systemID); } public DocType docType(String elementName, String systemID) { return new DocType(elementName, systemID); } public DocType docType(String elementName) { return new DocType(elementName); } public Document document(Element rootElement, DocType docType) { return new Document(rootElement, docType); } public Document document(Element rootElement, DocType docType, String baseURI) { return new Document(rootElement, docType, baseURI); } public Document document(Element rootElement) { return new Document(rootElement); } public Element element(String name, Namespace namespace) { return new Element(name, namespace); } public Element element(String name) { return new Element(name); } public Element element(String name, String uri) { return new Element(name, uri); } public Element element(String name, String prefix, String uri) { return new Element(name, prefix, uri); } public ProcessingInstruction processingInstruction(String target, Map data) { return new ProcessingInstruction(target, data); } public ProcessingInstruction processingInstruction(String target, String data) { return new ProcessingInstruction(target, data); } public EntityRef entityRef(String name) { return new EntityRef(name); } public EntityRef entityRef(String name, String publicID, String systemID) { return new EntityRef(name, publicID, systemID); } public EntityRef entityRef(String name, String systemID) { return new EntityRef(name, systemID); } // ===================================================================== // List manipulation // ===================================================================== public void addContent(Parent parent, Content child) { if (parent instanceof Document) { ((Document) parent).addContent(child); } else { ((Element) parent).addContent(child); } } public void setAttribute(Element parent, Attribute a) { parent.setAttribute(a); } public void addNamespaceDeclaration(Element parent, Namespace additional) { parent.addNamespaceDeclaration(additional); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/DocType.java0000644000175000017500000002243111377161311021563 0ustar /*-- $Id: DocType.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * An XML DOCTYPE declaration. Method allow the user to get and set the * root element name, public id, and system id. * * @author Brett McLaughlin * @author Jason Hunter * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ */ public class DocType extends Content { private static final String CVS_ID = "@(#) $RCSfile: DocType.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; /** The element being constrained */ protected String elementName; /** The public ID of the DOCTYPE */ protected String publicID; /** The system ID of the DOCTYPE */ protected String systemID; /** The internal subset of the DOCTYPE */ protected String internalSubset; /** * Default, no-args constructor for implementations to use if needed. */ protected DocType() {} /* * XXX: * We need to take care of entities and notations here. */ /** * This will create the DocType with * the specified element name and a reference to an * external DTD. * * @param elementName String name of * element being constrained. * @param publicID String public ID of * referenced DTD * @param systemID String system ID of * referenced DTD * @throws IllegalDataException if the given system ID is not a legal * system literal or the public ID is not a legal public ID. * @throws IllegalNameException if the given root element name is not a * legal XML element name. */ public DocType(String elementName, String publicID, String systemID) { setElementName(elementName); setPublicID(publicID); setSystemID(systemID); } /** * This will create the DocType with * the specified element name and reference to an * external DTD. * * @param elementName String name of * element being constrained. * @param systemID String system ID of * referenced DTD * @throws IllegalDataException if the given system ID is not a legal * system literal. * @throws IllegalNameException if the given root element name is not a * legal XML element name. */ public DocType(String elementName, String systemID) { this(elementName, null, systemID); } /** * This will create the DocType with * the specified element name * * @param elementName String name of * element being constrained. * @throws IllegalNameException if the given root element name is not a * legal XML element name. */ public DocType(String elementName) { this(elementName, null, null); } /** * This will retrieve the element name being constrained. * * @return String - element name for DOCTYPE */ public String getElementName() { return elementName; } /** * This will set the root element name declared by this * DOCTYPE declaration. * * @return DocType DocType this DocType object * @param elementName String name of * root element being constrained. * @throws IllegalNameException if the given root element name is not a * legal XML element name. */ public DocType setElementName(String elementName) { // This can contain a colon so we use checkXMLName() // instead of checkElementName() String reason = Verifier.checkXMLName(elementName); if (reason != null) { throw new IllegalNameException(elementName, "DocType", reason); } this.elementName = elementName; return this; } /** * This will retrieve the public ID of an externally * referenced DTD, or an empty String if * none is referenced. * * @return String - public ID of referenced DTD. */ public String getPublicID() { return publicID; } /** * This will set the public ID of an externally * referenced DTD. * * @param publicID id to set * @return DocType DocType this DocType object * @throws IllegalDataException if the given public ID is not a legal * public ID. */ public DocType setPublicID(String publicID) { String reason = Verifier.checkPublicID(publicID); if (reason != null) { throw new IllegalDataException(publicID, "DocType", reason); } this.publicID = publicID; return this; } /** * This will retrieve the system ID of an externally * referenced DTD, or an empty String if * none is referenced. * * @return String - system ID of referenced DTD. */ public String getSystemID() { return systemID; } /** * This will set the system ID of an externally * referenced DTD. * * @param systemID id to set * @return systemID String system ID of * referenced DTD. * @throws IllegalDataException if the given system ID is not a legal * system literal. */ public DocType setSystemID(String systemID) { String reason = Verifier.checkSystemLiteral(systemID); if (reason != null) { throw new IllegalDataException(systemID, "DocType", reason); } this.systemID = systemID; return this; } /** * Returns the empty string since doctypes don't have an XPath * 1.0 string value. * @return the empty string */ public String getValue() { return ""; // doctypes don't have an XPath string value } /** * This sets the data for the internal subset. * * @param newData data for the internal subset, as a * String. */ public void setInternalSubset(String newData) { internalSubset = newData; } /** * This returns the data for the internal subset. * * @return String - the internal subset */ public String getInternalSubset() { return internalSubset; } /** * This returns a String representation of the * DocType, suitable for debugging. * * @return String - information about the * DocType */ public String toString() { return new StringBuffer() .append("[DocType: ") .append(new org.jdom.output.XMLOutputter().outputString(this)) .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Parent.java0000644000175000017500000002063611377161311021452 0ustar /*-- $Id: Parent.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.io.Serializable; import java.util.*; import org.jdom.filter.Filter; /** * Superclass for JDOM objects which are allowed to contain * {@link Content} content. * * @see org.jdom.Content * @see org.jdom.Document * @see org.jdom.Element * * @author Bradley S. Huffman * @author Jason Hunter * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ */ public interface Parent extends Cloneable, Serializable { /** * Returns the number of children in this parent's content list. * Children may be any {@link Content} type. * * @return number of children */ int getContentSize(); /** * Returns the index of the supplied child in the content list, * or -1 if not a child of this parent. * * @param child child to search for * @return index of child, or -1 if not found */ int indexOf(Content child); // /** // * Starting at the given index (inclusive), returns the index of // * the first child matching the supplied filter, or -1 // * if none is found. // * // * @return index of child, or -1 if none found // */ // int indexOf(int index, Filter filter); /** * Returns a list containing detached clones of this parent's content list. * * @return list of cloned child content */ List cloneContent(); /** * Returns the child at the given index. * * @param index location of desired child * @return child at the given index * @throws IndexOutOfBoundsException if index is negative or beyond * the current number of children * @throws IllegalStateException if parent is a Document * and the root element is not set */ Content getContent(int index); /** * Returns the full content of this parent as a {@link java.util.List} * which contains objects of type {@link Content}. The returned list is * "live" and in document order. Any modifications * to it affect the element's actual contents. Modifications are checked * for conformance to XML 1.0 rules. *

* Sequential traversal through the List is best done with an Iterator * since the underlying implement of {@link java.util.List#size} may * require walking the entire list and indexed lookups may require * starting at the beginning each time. * * @return a list of the content of the parent * @throws IllegalStateException if parent is a Document * and the root element is not set */ List getContent(); /** * Returns as a {@link java.util.List} the content of * this parent that matches the supplied filter. The returned list is * "live" and in document order. Any modifications to it affect * the element's actual contents. Modifications are checked for * conformance to XML 1.0 rules. *

* Sequential traversal through the List is best done with an Iterator * since the underlying implement of {@link java.util.List#size} may * require walking the entire list and indexed lookups may require * starting at the beginning each time. * * @param filter filter to apply * @return a list of the content of the parent matching the filter * @throws IllegalStateException if parent is a Document * and the root element is not set */ List getContent(Filter filter); /** * Removes all content from this parent and returns the detached * children. * * @return list of the old content detached from this parent */ List removeContent(); /** * Removes from this parent all child content matching the given filter * and returns a list of the detached children. * * @param filter filter to apply * @return list of the detached children matching the filter */ List removeContent(Filter filter); /** * Removes a single child node from the content list. * * @param child child to remove * @return whether the removal occurred */ boolean removeContent(Content child); /** * Removes and returns the child at the given * index, or returns null if there's no such child. * * @param index index of child to remove * @return detached child at given index or null if no * @throws IndexOutOfBoundsException if index is negative or beyond * the current number of children */ Content removeContent(int index); /** * Obtain a deep, unattached copy of this parent and it's children. * * @return a deep copy of this parent and it's children. */ Object clone(); /** * Returns an {@link java.util.Iterator} that walks over all descendants * in document order. * * @return an iterator to walk descendants */ Iterator getDescendants(); /** * Returns an {@link java.util.Iterator} that walks over all descendants * in document order applying the Filter to return only elements that * match the filter rule. With filters you can match only Elements, * only Comments, Elements or Comments, only Elements with a given name * and/or prefix, and so on. * * @param filter filter to select which descendants to see * @return an iterator to walk descendants that match a filter */ Iterator getDescendants(Filter filter); /** * Return this parent's parent, or null if this parent is currently * not attached to another parent. This is the same method as in Content but * also added to Parent to allow more easy up-the-tree walking. * * @return this parent's parent or null if none */ Parent getParent(); /** * Return this parent's owning document or null if the branch containing * this parent is currently not attached to a document. * * @return this child's owning document or null if none */ Document getDocument(); } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/EntityRef.java0000644000175000017500000002025511377161311022127 0ustar /*-- $Id: EntityRef.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * An XML entity reference. Methods allow the user to manage its name, public * id, and system id. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ * @author Brett McLaughlin * @author Jason Hunter * @author Philip Nelson */ public class EntityRef extends Content { private static final String CVS_ID = "@(#) $RCSfile: EntityRef.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:47 $ $Name: $"; /** The name of the EntityRef */ protected String name; /** The PublicID of the EntityRef */ protected String publicID; /** The SystemID of the EntityRef */ protected String systemID; /** * Default, no-args constructor for implementations to use if needed. */ protected EntityRef() {} /** * This will create a new EntityRef with the supplied name. * * @param name String name of element. * @throws IllegalNameException if the given name is not a legal * XML name. */ public EntityRef(String name) { this(name, null, null); } /** * This will create a new EntityRef * with the supplied name and system id. * * @param name String name of element. * @param systemID system id of the entity reference being constructed * @throws IllegalNameException if the given name is not a legal * XML name. * @throws IllegalDataException if the given system ID is not a legal * system literal. */ public EntityRef(String name, String systemID) { this(name, null, systemID); } /** * This will create a new EntityRef * with the supplied name, public id, and system id. * * @param name String name of element. * @param publicID public id of the entity reference being constructed * @param systemID system id of the entity reference being constructed * @throws IllegalDataException if the given system ID is not a legal * system literal or the the given public ID is not a * legal public ID * @throws IllegalNameException if the given name is not a legal * XML name. */ public EntityRef(String name, String publicID, String systemID) { setName(name); setPublicID(publicID); setSystemID(systemID); } /** * This returns the name of the EntityRef. * * @return String - entity name. */ public String getName() { return name; } /** * Returns the empty string since entity references don't have an XPath * 1.0 string value. * @return the empty string */ public String getValue() { return ""; // entity references don't have XPath string values } /** * This will return the publid ID of this EntityRef. * If there is no public ID, then this returns null. * * @return public ID of this EntityRef */ public String getPublicID() { return publicID; } /** * This will return the system ID of this EntityRef. * If there is no system ID, then this returns null. * * @return system ID of this EntityRef */ public String getSystemID() { return systemID; } /** * This will set the name of this EntityRef. * * @param name new name of the entity * @return this EntityRef modified. * @throws IllegalNameException if the given name is not a legal * XML name. */ public EntityRef setName(String name) { // This can contain a colon so we use checkXMLName() // instead of checkElementName() String reason = Verifier.checkXMLName(name); if (reason != null) { throw new IllegalNameException(name, "EntityRef", reason); } this.name = name; return this; } /** * This will set the public ID of this EntityRef. * * @param publicID new public id * @return this EntityRef modified. * @throws IllegalDataException if the given public ID is not a legal * public ID. */ public EntityRef setPublicID(String publicID) { String reason = Verifier.checkPublicID(publicID); if (reason != null) { throw new IllegalDataException(publicID, "EntityRef", reason); } this.publicID = publicID; return this; } /** * This will set the system ID of this EntityRef. * * @param systemID new system id * @throws IllegalDataException if the given system ID is not a legal * system literal. * @return this EntityRef modified. */ public EntityRef setSystemID(String systemID) { String reason = Verifier.checkSystemLiteral(systemID); if (reason != null) { throw new IllegalDataException(systemID, "EntityRef", reason); } this.systemID = systemID; return this; } /** * This returns a String representation of the * EntityRef, suitable for debugging. * * @return String - information about the * EntityRef */ public String toString() { return new StringBuffer() .append("[EntityRef: ") .append("&") .append(name) .append(";") .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/FilterIterator.java0000644000175000017500000000774511377161311023166 0ustar /*-- $Id: FilterIterator.java,v 1.1.1.1 2005/12/02 14:16:45 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.util.*; import org.jdom.filter.*; /** * Traverse a parent's children that match the supplied filter. * * @author Bradley S. Huffman * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:45 $ */ class FilterIterator implements Iterator { private Iterator iterator; private Filter filter; private Object nextObject; private static final String CVS_ID = "@(#) $RCSfile: FilterIterator.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:45 $ $Name: $"; public FilterIterator(Iterator iterator, Filter filter) { if ((iterator == null) || (filter == null)) { throw new IllegalArgumentException("null parameter"); } this.iterator = iterator; this.filter = filter; } public boolean hasNext() { if (nextObject != null) { return true; } while (iterator.hasNext()) { Object obj = iterator.next(); if (filter.matches(obj)) { nextObject = obj; return true; } } return false; } public Object next() { if (!hasNext()) { throw new NoSuchElementException(); } Object obj = nextObject; nextObject = null; return obj; } public void remove() { // XXX Could cause probs for sure if hasNext() is // called before the remove(), although that's unlikely. iterator.remove(); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/UncheckedJDOMFactory.java0000644000175000017500000001621511377161311024112 0ustar package org.jdom; import java.util.*; /** * Special factory for building documents without any content or structure * checking. This should only be used when you are 100% positive that the * input is absolutely correct. This factory can speed builds, but any * problems in the input will be uncaught until later when they could cause * infinite loops, malformed XML, or worse. Use with extreme caution. */ public class UncheckedJDOMFactory implements JDOMFactory { // ===================================================================== // Element Factory // ===================================================================== public Element element(String name, Namespace namespace) { Element e = new Element(); e.name = name; if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } e.namespace = namespace; return e; } public Element element(String name) { Element e = new Element(); e.name = name; e.namespace = Namespace.NO_NAMESPACE; return e; } public Element element(String name, String uri) { return element(name, Namespace.getNamespace("", uri)); } public Element element(String name, String prefix, String uri) { return element(name, Namespace.getNamespace(prefix, uri)); } // ===================================================================== // Attribute Factory // ===================================================================== public Attribute attribute(String name, String value, Namespace namespace) { Attribute a = new Attribute(); a.name = name; a.value = value; if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } a.namespace = namespace; return a; } public Attribute attribute(String name, String value, int type, Namespace namespace) { Attribute a = new Attribute(); a.name = name; a.type = type; a.value = value; if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } a.namespace = namespace; return a; } public Attribute attribute(String name, String value) { Attribute a = new Attribute(); a.name = name; a.value = value; a.namespace = Namespace.NO_NAMESPACE; return a; } public Attribute attribute(String name, String value, int type) { Attribute a = new Attribute(); a.name = name; a.type = type; a.value = value; a.namespace = Namespace.NO_NAMESPACE; return a; } // ===================================================================== // Text Factory // ===================================================================== public Text text(String str) { Text t = new Text(); t.value = str; return t; } // ===================================================================== // CDATA Factory // ===================================================================== public CDATA cdata(String str) { CDATA c = new CDATA(); c.value = str; return c; } // ===================================================================== // Comment Factory // ===================================================================== public Comment comment(String str) { Comment c = new Comment(); c.text = str; return c; } // ===================================================================== // Processing Instruction Factory // ===================================================================== public ProcessingInstruction processingInstruction(String target, Map data) { ProcessingInstruction p = new ProcessingInstruction(); p.target = target; p.setData(data); return p; } public ProcessingInstruction processingInstruction(String target, String data) { ProcessingInstruction p = new ProcessingInstruction(); p.target = target; p.setData(data); return p; } // ===================================================================== // Entity Ref Factory // ===================================================================== public EntityRef entityRef(String name) { EntityRef e = new org.jdom.EntityRef(); e.name = name; return e; } public EntityRef entityRef(String name, String systemID) { EntityRef e = new EntityRef(); e.name = name; e.systemID = systemID; return e; } public EntityRef entityRef(String name, String publicID, String systemID) { EntityRef e = new EntityRef(); e.name = name; e.publicID = publicID; e.systemID = systemID; return e; } // ===================================================================== // DocType Factory // ===================================================================== public DocType docType(String elementName, String publicID, String systemID) { DocType d = new DocType(); d.elementName = elementName; d.publicID = publicID; d.systemID = systemID; return d; } public DocType docType(String elementName, String systemID) { return docType(elementName, null, systemID); } public DocType docType(String elementName) { return docType(elementName, null, null); } // ===================================================================== // Document Factory // ===================================================================== public Document document(Element rootElement, DocType docType, String baseURI) { Document d = new Document(); if (docType != null) { addContent(d, docType); } if (rootElement != null) { addContent(d, rootElement); } if (baseURI != null) { d.baseURI = baseURI; } return d; } public Document document(Element rootElement, DocType docType) { return document(rootElement, docType, null); } public Document document(Element rootElement) { return document(rootElement, null, null); } // ===================================================================== // List manipulation // ===================================================================== public void addContent(Parent parent, Content child) { if (parent instanceof Element) { Element elt = (Element) parent; elt.content.uncheckedAddContent(child); } else { Document doc = (Document) parent; doc.content.uncheckedAddContent(child); } } public void setAttribute(Element parent, Attribute a) { parent.attributes.uncheckedAddAttribute(a); } public void addNamespaceDeclaration(Element parent, Namespace additional) { if (parent.additionalNamespaces == null) { parent.additionalNamespaces = new ArrayList(5); //Element.INITIAL_ARRAY_SIZE } parent.additionalNamespaces.add(additional); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Attribute.java0000644000175000017500000006021311377161311022157 0ustar /*-- $Id: Attribute.java,v 1.1.1.1 2005/12/02 14:16:49 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; import java.io.*; /** * An XML attribute. Methods allow the user to obtain the value of the attribute * as well as namespace and type information. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:49 $ * @author Brett McLaughlin * @author Jason Hunter * @author Elliotte Rusty Harold * @author Wesley Biggs */ public class Attribute implements Serializable, Cloneable { private static final String CVS_ID = "@(#) $RCSfile: Attribute.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:49 $ $Name: $"; /** * Attribute type: the attribute has not been declared or type * is unknown. * * @see #getAttributeType */ public final static int UNDECLARED_TYPE = 0; /** * Attribute type: the attribute value is a string. * * @see #getAttributeType */ public final static int CDATA_TYPE = 1; /** * Attribute type: the attribute value is a unique identifier. * * @see #getAttributeType */ public final static int ID_TYPE = 2; /** * Attribute type: the attribute value is a reference to a * unique identifier. * * @see #getAttributeType */ public final static int IDREF_TYPE = 3; /** * Attribute type: the attribute value is a list of references to * unique identifiers. * * @see #getAttributeType */ public final static int IDREFS_TYPE = 4; /** * Attribute type: the attribute value is the name of an entity. * * @see #getAttributeType */ public final static int ENTITY_TYPE = 5; /** *

* Attribute type: the attribute value is a list of entity names. *

* * @see #getAttributeType */ public final static int ENTITIES_TYPE = 6; /** * Attribute type: the attribute value is a name token. *

* According to SAX 2.0 specification, attributes of enumerated * types should be reported as "NMTOKEN" by SAX parsers. But the * major parsers (Xerces and Crimson) provide specific values * that permit to recognize them as {@link #ENUMERATED_TYPE}. * * @see #getAttributeType */ public final static int NMTOKEN_TYPE = 7; /** * Attribute type: the attribute value is a list of name tokens. * * @see #getAttributeType */ public final static int NMTOKENS_TYPE = 8; /** * Attribute type: the attribute value is the name of a notation. * * @see #getAttributeType */ public final static int NOTATION_TYPE = 9; /** * Attribute type: the attribute value is a name token from an * enumeration. * * @see #getAttributeType */ public final static int ENUMERATED_TYPE = 10; // Keep the old constant names for one beta cycle to help migration /** The local name of the Attribute */ protected String name; /** The {@link Namespace} of the Attribute */ protected transient Namespace namespace; /** The value of the Attribute */ protected String value; /** The type of the Attribute */ protected int type = UNDECLARED_TYPE; /** Parent element, or null if none */ protected Object parent; /** * Default, no-args constructor for implementations to use if needed. */ protected Attribute() {} /** * This will create a new Attribute with the * specified (local) name and value, and in the provided * {@link Namespace}. * * @param name String name of Attribute. * @param value String value for new attribute. * @param namespace Namespace namespace for new attribute. * @throws IllegalNameException if the given name is illegal as an * attribute name or if if the new namespace is the default * namespace. Attributes cannot be in a default namespace. * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}). */ public Attribute(String name, String value, Namespace namespace) { setName(name); setValue(value); setNamespace(namespace); } /** * This will create a new Attribute with the * specified (local) name, value, and type, and in the provided * {@link Namespace}. * * @param name String name of Attribute. * @param value String value for new attribute. * @param type int type for new attribute. * @param namespace Namespace namespace for new attribute. * @throws IllegalNameException if the given name is illegal as an * attribute name or if if the new namespace is the default * namespace. Attributes cannot be in a default namespace. * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}) or * if the given attribute type is not one of the * supported types. */ public Attribute(String name, String value, int type, Namespace namespace) { setName(name); setValue(value); setAttributeType(type); setNamespace(namespace); } /** * This will create a new Attribute with the * specified (local) name and value, and does not place * the attribute in a {@link Namespace}. *

* Note: This actually explicitly puts the * Attribute in the "empty" Namespace * ({@link Namespace#NO_NAMESPACE}). * * @param name String name of Attribute. * @param value String value for new attribute. * @throws IllegalNameException if the given name is illegal as an * attribute name. * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}). */ public Attribute(String name, String value) { this(name, value, UNDECLARED_TYPE, Namespace.NO_NAMESPACE); } /** * This will create a new Attribute with the * specified (local) name, value and type, and does not place * the attribute in a {@link Namespace}. *

* Note: This actually explicitly puts the * Attribute in the "empty" Namespace * ({@link Namespace#NO_NAMESPACE}). * * @param name String name of Attribute. * @param value String value for new attribute. * @param type int type for new attribute. * @throws IllegalNameException if the given name is illegal as an * attribute name. * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}) or * if the given attribute type is not one of the * supported types. */ public Attribute(String name, String value, int type) { this(name, value, type, Namespace.NO_NAMESPACE); } /** * This will return the parent of this Attribute. * If there is no parent, then this returns null. * * @return parent of this Attribute */ public Element getParent() { return (Element) parent; } /** * This retrieves the owning {@link Document} for * this Attribute, or null if not a currently a member of a * {@link Document}. * * @return Document owning this Attribute, or null. */ public Document getDocument() { if (parent != null) { return ((Element)parent).getDocument(); } return null; } /** * This will set the parent of this Attribute. * * @param parent Element to be new parent. * @return this Attribute modified. */ protected Attribute setParent(Element parent) { this.parent = parent; return this; } /** * This detaches the Attribute from its parent, or does * nothing if the Attribute has no parent. * * @return Attribute - this Attribute modified. */ public Attribute detach() { Element p = getParent(); if (p != null) { p.removeAttribute(this.getName(), this.getNamespace()); } return this; } /** * This will retrieve the local name of the * Attribute. For any XML attribute * which appears as * [namespacePrefix]:[attributeName], * the local name of the attribute would be * [attributeName]. When the attribute * has no namespace, the local name is simply the attribute * name. *

* To obtain the namespace prefix for this * attribute, the * {@link #getNamespacePrefix()} * method should be used. * * @return String - name of this attribute, * without any namespace prefix. */ public String getName() { return name; } /** * This sets the local name of the Attribute. * * @param name the new local name to set * @return Attribute - the attribute modified. * @throws IllegalNameException if the given name is illegal as an * attribute name. */ public Attribute setName(String name) { String reason; if ((reason = Verifier.checkAttributeName(name)) != null) { throw new IllegalNameException(name, "attribute", reason); } this.name = name; return this; } /** * This will retrieve the qualified name of the Attribute. * For any XML attribute whose name is * [namespacePrefix]:[elementName], * the qualified name of the attribute would be * everything (both namespace prefix and * element name). When the attribute has no * namespace, the qualified name is simply the attribute's * local name. *

* To obtain the local name of the attribute, the * {@link #getName()} method should be used. *

* To obtain the namespace prefix for this attribute, * the {@link #getNamespacePrefix()} * method should be used. * * @return String - full name for this element. */ public String getQualifiedName() { // Note: Any changes here should be reflected in // XMLOutputter.printQualifiedName() String prefix = namespace.getPrefix(); if ((prefix != null) && (!prefix.equals(""))) { return new StringBuffer(prefix) .append(':') .append(getName()) // JCLIC modification //.toString(); .substring(0); } else { return getName(); } } /** * This will retrieve the namespace prefix of the * Attribute. For any XML attribute * which appears as * [namespacePrefix]:[attributeName], * the namespace prefix of the attribute would be * [namespacePrefix]. When the attribute * has no namespace, an empty String is returned. * * @return String - namespace prefix of this * attribute. */ public String getNamespacePrefix() { return namespace.getPrefix(); } /** * This returns the URI mapped to this Attribute's * prefix. If no mapping is found, an empty String is * returned. * * @return String - namespace URI for this Attribute. */ public String getNamespaceURI() { return namespace.getURI(); } /** * This will return this Attribute's * {@link Namespace}. * * @return Namespace - Namespace object for this Attribute */ public Namespace getNamespace() { return namespace; } /** * This sets this Attribute's {@link Namespace}. * If the provided namespace is null, the attribute will have no namespace. * The namespace must have a prefix. * * @param namespace the new namespace * @return Element - the element modified. * @throws IllegalNameException if the new namespace is the default * namespace. Attributes cannot be in a default namespace. */ public Attribute setNamespace(Namespace namespace) { if (namespace == null) { namespace = Namespace.NO_NAMESPACE; } // Verify the attribute isn't trying to be in a default namespace // Attributes can't be in a default namespace if (namespace != Namespace.NO_NAMESPACE && namespace.getPrefix().equals("")) { throw new IllegalNameException("", "attribute namespace", "An attribute namespace without a prefix can only be the " + "NO_NAMESPACE namespace"); } this.namespace = namespace; return this; } /** * This will return the actual textual value of this * Attribute. This will include all text * within the quotation marks. * * @return String - value for this attribute. */ public String getValue() { return value; } /** * This will set the value of the Attribute. * * @param value String value for the attribute. * @return Attribute - this Attribute modified. * @throws IllegalDataException if the given attribute value is * illegal character data (as determined by * {@link org.jdom.Verifier#checkCharacterData}). */ public Attribute setValue(String value) { String reason = null; if ((reason = Verifier.checkCharacterData(value)) != null) { throw new IllegalDataException(value, "attribute", reason); } this.value = value; return this; } /** * This will return the actual declared type of this * Attribute. * * @return int - type for this attribute. */ public int getAttributeType() { return type; } /** * This will set the type of the Attribute. * * @param type int type for the attribute. * @return Attribute - this Attribute modified. * @throws IllegalDataException if the given attribute type is * not one of the supported types. */ public Attribute setAttributeType(int type) { if ((type < UNDECLARED_TYPE) || (type > ENUMERATED_TYPE)) { throw new IllegalDataException(String.valueOf(type), "attribute", "Illegal attribute type"); } this.type = type; return this; } /** * This returns a String representation of the * Attribute, suitable for debugging. * * @return String - information about the * Attribute */ public String toString() { return new StringBuffer() .append("[Attribute: ") .append(getQualifiedName()) .append("=\"") .append(value) .append("\"") .append("]") // JCLIC modification //.toString(); .substring(0); } /** * This tests for equality of this Attribute to the supplied * Object. * * @param ob Object to compare to. * @return boolean - whether the Attribute is * equal to the supplied Object. */ public final boolean equals(Object ob) { return (ob == this); } /** * This returns the hash code for this Attribute. * * @return int - hash code. */ public final int hashCode() { return super.hashCode(); } /** * This will return a clone of this Attribute. * * @return Object - clone of this Attribute. */ public Object clone() { Attribute attribute = null; try { attribute = (Attribute) super.clone(); } catch(CloneNotSupportedException ce) { // Won't happen } // Name, namespace, and value are references to imutable objects // and are copied by super.clone() (aka Object.clone()) // super.clone() copies reference to set parent to null attribute.parent = null; return attribute; } ///////////////////////////////////////////////////////////////// // Convenience Methods below here ///////////////////////////////////////////////////////////////// /** * This gets the value of the attribute, in * int form, and if no conversion * can occur, throws a * {@link DataConversionException} * * @return int value of attribute. * @throws DataConversionException when conversion fails. */ public int getIntValue() throws DataConversionException { try { return Integer.parseInt(value.trim()); } catch (NumberFormatException e) { throw new DataConversionException(name, "int"); } } /** * This gets the value of the attribute, in * long form, and if no conversion * can occur, throws a * {@link DataConversionException} * * @return long value of attribute. * @throws DataConversionException when conversion fails. */ public long getLongValue() throws DataConversionException { try { return Long.parseLong(value.trim()); } catch (NumberFormatException e) { throw new DataConversionException(name, "long"); } } /** * This gets the value of the attribute, in * float form, and if no conversion * can occur, throws a * {@link DataConversionException} * * @return float value of attribute. * @throws DataConversionException when conversion fails. */ public float getFloatValue() throws DataConversionException { try { // Avoid Float.parseFloat() to support JDK 1.1 return Float.valueOf(value.trim()).floatValue(); } catch (NumberFormatException e) { throw new DataConversionException(name, "float"); } } /** * This gets the value of the attribute, in * double form, and if no conversion * can occur, throws a * {@link DataConversionException} * * @return double value of attribute. * @throws DataConversionException when conversion fails. */ public double getDoubleValue() throws DataConversionException { try { // Avoid Double.parseDouble() to support JDK 1.1 return Double.valueOf(value.trim()).doubleValue(); } catch (NumberFormatException e) { throw new DataConversionException(name, "double"); } } /** * This gets the effective boolean value of the attribute, or throws a * {@link DataConversionException} if a conversion can't be * performed. True values are: "true", "on", "1", and "yes". False * values are: "false", "off", "0", and "no". Values are trimmed before * comparison. Values other than those listed here throw the exception. * * @return boolean value of attribute. * @throws DataConversionException when conversion fails. */ public boolean getBooleanValue() throws DataConversionException { String valueTrim = value.trim(); if ((valueTrim.equalsIgnoreCase("true")) || (valueTrim.equalsIgnoreCase("on")) || (valueTrim.equalsIgnoreCase("1")) || (valueTrim.equalsIgnoreCase("yes"))) { return true; } else if ((valueTrim.equalsIgnoreCase("false")) || (valueTrim.equalsIgnoreCase("off")) || (valueTrim.equalsIgnoreCase("0")) || (valueTrim.equalsIgnoreCase("no"))) { return false; } else { throw new DataConversionException(name, "boolean"); } } // Support a custom Namespace serialization so no two namespace // object instances may exist for the same prefix/uri pair private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); // We use writeObject() and not writeUTF() to minimize space // This allows for writing pointers to already written strings out.writeObject(namespace.getPrefix()); out.writeObject(namespace.getURI()); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); namespace = Namespace.getNamespace( (String)in.readObject(), (String)in.readObject()); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/Comment.java0000644000175000017500000001167011377161311021621 0ustar /*-- $Id: Comment.java,v 1.1.1.1 2005/12/02 14:16:47 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * An XML comment. Methods allow the user to get and set the text of the * comment. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:47 $ * @author Brett McLaughlin * @author Jason Hunter */ public class Comment extends Content { private static final String CVS_ID = "@(#) $RCSfile: Comment.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:47 $ $Name: $"; /** Text of the Comment */ protected String text; /** * Default, no-args constructor for implementations to use if needed. */ protected Comment() {} /** * This creates the comment with the supplied text. * * @param text String content of comment. */ public Comment(String text) { setText(text); } /** * Returns the XPath 1.0 string value of this element, which is the * text of this comment. * * @return the text of this comment */ public String getValue() { return text; } /** * This returns the textual data within the Comment. * * @return String - text of comment. */ public String getText() { return text; } /** * This will set the value of the Comment. * * @param text String text for comment. * @return Comment - this Comment modified. * @throws IllegalDataException if the given text is illegal for a * Comment. */ public Comment setText(String text) { String reason; if ((reason = Verifier.checkCommentData(text)) != null) { throw new IllegalDataException(text, "comment", reason); } this.text = text; return this; } /** * This returns a String representation of the * Comment, suitable for debugging. If the XML * representation of the Comment is desired, * {@link org.jdom.output.XMLOutputter#outputString(Comment)} * should be used. * * @return String - information about the * Attribute */ public String toString() { return new StringBuffer() .append("[Comment: ") .append(new org.jdom.output.XMLOutputter().outputString(this)) .append("]") // JCLIC modification //.toString(); .substring(0); } } jclic-0.2.1.0.orig/extensions/xml/jdom-1.0/src/org/jdom/IllegalNameException.java0000644000175000017500000001150611377161311024246 0ustar /*-- $Id: IllegalNameException.java,v 1.1.1.1 2005/12/02 14:16:46 fbusquets Exp $ Copyright (C) 2000-2004 Jason Hunter & Brett McLaughlin. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions, and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions, and the disclaimer that follows these conditions in the documentation and/or other materials provided with the distribution. 3. The name "JDOM" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact . 4. Products derived from this software may not be called "JDOM", nor may "JDOM" appear in their name, without prior written permission from the JDOM Project Management . In addition, we request (but do not require) that you include in the end-user documentation provided with the redistribution and/or in the software itself an acknowledgement equivalent to the following: "This product includes software developed by the JDOM Project (http://www.jdom.org/)." Alternatively, the acknowledgment may be graphical using the logos available at http://www.jdom.org/images/logos. THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE JDOM AUTHORS OR THE PROJECT CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. This software consists of voluntary contributions made by many individuals on behalf of the JDOM Project and was originally created by Jason Hunter and Brett McLaughlin . For more information on the JDOM Project, please see . */ package org.jdom; /** * Thrown when a name is supplied in construction of a JDOM construct whose * where the name breaks XML naming conventions. * * @version $Revision: 1.1.1.1 $, $Date: 2005/12/02 14:16:46 $ * @author Brett McLaughlin * @author Elliotte Rusty Harold */ public class IllegalNameException extends IllegalArgumentException { private static final String CVS_ID = "@(#) $RCSfile: IllegalNameException.java,v $ $Revision: 1.1.1.1 $ $Date: 2005/12/02 14:16:46 $ $Name: $"; /** * This will create an Exception indicating * that the specified name is illegal for the construct * it was supplied to. * * @param name String name that breaks rules. * @param construct String name of JDOM construct * that name was supplied to. * @param reason String message or reason name is illegal. */ IllegalNameException(String name, String construct, String reason) { super(new StringBuffer() .append("The name \"") .append(name) .append("\" is not legal for JDOM/XML ") .append(construct) .append("s: ") .append(reason) .append(".") // JCLIC modification //.toString() .substring(0) ); } /** * This will create an Exception indicating * that the specified name is illegal for the construct * it was supplied to. * * @param name String name that breaks rules. * @param construct String name of JDOM construct * that name was supplied to. */ IllegalNameException(String name, String construct) { super(new StringBuffer() .append("The name \"") .append(name) .append("\" is not legal for JDOM/XML ") .append(construct) .append("s.") // JCLIC modification //.toString() .substring(0) ); } /** * Creates an exception with the specified error message. * * @param reason cause of the problem */ public IllegalNameException(String reason) { super(reason); } } jclic-0.2.1.0.orig/extensions/img/0000755000175000017500000000000011377161311013567 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/0000755000175000017500000000000011377161311015107 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/build.xml0000644000175000017500000000254711377161311016740 0ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/0000755000175000017500000000000011377161311015676 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/0000755000175000017500000000000011377161311016464 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/0000755000175000017500000000000011377161311017074 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/0000755000175000017500000000000011377161311020414 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/util/0000755000175000017500000000000011377161311021371 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/util/package.html0000644000175000017500000000035511377161311023655 0ustar Provides utilities for working with images, such as scaling and colour depth conversion. jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/util/ImageUtil.java0000644000175000017500000000371411377161311024121 0ustar /* * ImageUtil.java * * Created on 15 May 2006, 01:12 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.util; import java.awt.AlphaComposite; import java.awt.Composite; import java.awt.Graphics2D; import java.awt.Image; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import java.awt.image.IndexColorModel; /** * Provides utility methods for handling images (java.awt.BufferedImage) * @author Ian McDonagh */ public class ImageUtil { /** * Creates a scaled copy of the source image. * @param src source image to be scaled * @param width the width for the new scaled image in pixels * @param height the height for the new scaled image in pixels * @return a copy of the source image scaled to width x height pixels. */ public static BufferedImage scaleImage(BufferedImage src, int width, int height) { Image scaled = src.getScaledInstance(width, height, 0); BufferedImage ret = null; /* ColorModel cm = src.getColorModel(); if (cm instanceof IndexColorModel) { ret = new BufferedImage( width, height, src.getType(), (IndexColorModel) cm ); } else { ret = new BufferedImage( src.getWidth(), src.getHeight(), src.getType() ); } Graphics2D g = ret.createGraphics(); //clear alpha channel Composite comp = g.getComposite(); g.setComposite(AlphaComposite.getInstance(AlphaComposite.CLEAR, 0.0f)); Rectangle2D.Double d = new Rectangle2D.Double(0,0,ret.getWidth(),ret.getHeight()); g.fill(d); g.setComposite(comp); */ ret = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); Graphics2D g = ret.createGraphics(); //copy image g.drawImage(scaled, 0, 0, null); return ret; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/util/ConvertUtil.java0000644000175000017500000001214711377161311024517 0ustar /* * ConvertUtil.java * * Created on 12 May 2006, 09:22 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.util; import java.awt.Transparency; import java.awt.image.BufferedImage; import java.awt.image.ColorConvertOp; import java.awt.image.DataBuffer; import java.awt.image.IndexColorModel; /** * Provides useful methods for converting images from one colour depth to another. * @author Ian McDonagh */ public class ConvertUtil { /** * Converts the source to 1-bit colour depth (monochrome). * No transparency. * @param src the source image to convert * @return a copy of the source image with a 1-bit colour depth. */ public static BufferedImage convert1(BufferedImage src) { IndexColorModel icm = new IndexColorModel( 1, 2, new byte[] { (byte) 0, (byte) 0xFF }, new byte[] { (byte) 0, (byte) 0xFF }, new byte[] { (byte) 0, (byte) 0xFF } ); BufferedImage dest = new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_BINARY, icm ); ColorConvertOp cco = new ColorConvertOp( src.getColorModel().getColorSpace(), dest.getColorModel().getColorSpace(), null ); cco.filter(src, dest); return dest; } /** * Converts the source image to 4-bit colour * using the default 16-colour palette: *

    *
  • black
  • dark red
  • dark green
  • *
  • dark yellow
  • dark blue
  • dark magenta
  • *
  • dark cyan
  • dark grey
  • light grey
  • *
  • red
  • green
  • yellow
  • blue
  • *
  • magenta
  • cyan
  • white
  • *
* No transparency. * @param src the source image to convert * @return a copy of the source image with a 4-bit colour depth, with the default colour pallette */ public static BufferedImage convert4(BufferedImage src) { int[] cmap = new int[] { 0x000000, 0x800000, 0x008000, 0x808000, 0x000080, 0x800080, 0x008080, 0x808080, 0xC0C0C0, 0xFF0000, 0x00FF00, 0xFFFF00, 0x0000FF, 0xFF00FF, 0x00FFFF, 0xFFFFFF }; return convert4(src, cmap); } /** * Converts the source image to 4-bit colour * using the given colour map. No transparency. * @param src the source image to convert * @param cmap the colour map, which should contain no more than 16 entries * The entries are in the form RRGGBB (hex). * @return a copy of the source image with a 4-bit colour depth, with the custom colour pallette */ public static BufferedImage convert4(BufferedImage src, int[] cmap) { IndexColorModel icm = new IndexColorModel( 4, cmap.length, cmap, 0, false, Transparency.OPAQUE, DataBuffer.TYPE_BYTE ); BufferedImage dest = new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_BINARY, icm ); ColorConvertOp cco = new ColorConvertOp( src.getColorModel().getColorSpace(), dest.getColorModel().getColorSpace(), null ); cco.filter(src, dest); return dest; } /** * Converts the source image to 8-bit colour * using the default 256-colour palette. No transparency. * @param src the source image to convert * @return a copy of the source image with an 8-bit colour depth */ public static BufferedImage convert8(BufferedImage src) { BufferedImage dest = new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_INDEXED ); ColorConvertOp cco = new ColorConvertOp( src.getColorModel().getColorSpace(), dest.getColorModel().getColorSpace(), null ); cco.filter(src, dest); return dest; } /** * Converts the source image to 24-bit colour (RGB). No transparency. * @param src the source image to convert * @return a copy of the source image with a 24-bit colour depth */ public static BufferedImage convert24(BufferedImage src) { BufferedImage dest = new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_INT_RGB ); ColorConvertOp cco = new ColorConvertOp( src.getColorModel().getColorSpace(), dest.getColorModel().getColorSpace(), null ); cco.filter(src, dest); return dest; } /** * Converts the source image to 32-bit colour with transparency (ARGB). * @param src the source image to convert * @return a copy of the source image with a 32-bit colour depth. */ public static BufferedImage convert32(BufferedImage src) { BufferedImage dest = new BufferedImage( src.getWidth(), src.getHeight(), BufferedImage.TYPE_INT_ARGB ); ColorConvertOp cco = new ColorConvertOp( src.getColorModel().getColorSpace(), dest.getColorModel().getColorSpace(), null ); cco.filter(src, dest); return dest; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/io/0000755000175000017500000000000011377161311021023 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/io/package.html0000644000175000017500000000065411377161311023311 0ustar Provides special classes for working with I/O, such as endian conversions. Java uses big-endian byte ordering, while some formats use little-endian byte ordering. Thus it is necessary to perform endian conversions when encoding and decoding data in these formats. jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/io/LittleEndianInputStream.java0000644000175000017500000000651711377161311026447 0ustar /* * LittleEndianInputStream.java * * Created on 07 November 2006, 08:26 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.io; import java.io.EOFException; import java.io.IOException; /** * Reads little-endian data from a source InputStream by reversing byte ordering. * @author Ian McDonagh */ public class LittleEndianInputStream extends java.io.DataInputStream { /** * Creates a new instance of LittleEndianInputStream, which will read from the specified source. * @param in the source InputStream */ public LittleEndianInputStream(java.io.InputStream in) { super(in); } /** * Reads a little-endian short value * @throws java.io.IOException if an error occurs * @return short value with reversed byte order */ public short readShortLE() throws IOException { int b1 = read(); int b2 = read(); if (b1 < 0 || b2 < 0) { throw new EOFException(); } short ret = (short) ((b2 << 8) + (b1 << 0)); return ret; } /** * Reads a little-endian int value. * @throws java.io.IOException if an error occurs * @return int value with reversed byte order */ public int readIntLE() throws IOException { int b1 = read(); int b2 = read(); int b3 = read(); int b4 = read(); if (b1 < -1 || b2 < -1 || b3 < -1 || b4 < -1) { throw new EOFException(); } int ret = (b4 << 24) + (b3 << 16) + (b2 << 8) + (b1 << 0); return ret; } /** * Reads a little-endian float value. * @throws java.io.IOException if an error occurs * @return float value with reversed byte order */ public float readFloatLE() throws IOException { int i = readIntLE(); float ret = Float.intBitsToFloat(i); return ret; } /** * Reads a little-endian long value. * @throws java.io.IOException if an error occurs * @return long value with reversed byte order */ public long readLongLE() throws IOException { int i1 = readIntLE(); int i2 = readIntLE(); long ret = ((long)(i1) << 32) + (i2 & 0xFFFFFFFFL); return ret; } /** * Reads a little-endian double value. * @throws java.io.IOException if an error occurs * @return double value with reversed byte order */ public double readDoubleLE() throws IOException { long l = readLongLE(); double ret = Double.longBitsToDouble(l); return ret; } /** * @since 0.6 */ public long readUnsignedInt() throws IOException { long i1 = readUnsignedByte(); long i2 = readUnsignedByte(); long i3 = readUnsignedByte(); long i4 = readUnsignedByte(); long ret = ((i1 << 24) | (i2 << 16) | (i3 << 8) | i4); return ret; } /** * @since 0.6 */ public long readUnsignedIntLE() throws IOException { long i1 = readUnsignedByte(); long i2 = readUnsignedByte(); long i3 = readUnsignedByte(); long i4 = readUnsignedByte(); long ret = (i4 << 24) | (i3 << 16) | (i2 << 8) | i1; return ret; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/io/LittleEndianOutputStream.java0000644000175000017500000000557511377161311026653 0ustar /* * LittleEndianOutputStream.java * * Created on 07 November 2006, 08:26 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.io; import java.io.DataOutputStream; import java.io.IOException; /** * Writes little-endian data to a target OutputStream by reversing byte ordering. * @author Ian McDonagh */ public class LittleEndianOutputStream extends DataOutputStream { /** * Creates a new instance of LittleEndianOutputStream, which will write to the specified target. * @param out the target OutputStream */ public LittleEndianOutputStream(java.io.OutputStream out) { super(out); } /** * Writes a little-endian short value * @param value the source value to convert * @throws java.io.IOException if an error occurs */ public void writeShortLE(short value) throws IOException { value = EndianUtils.swapShort(value); super.writeShort(value); } /** * Writes a little-endian int value * @param value the source value to convert * @throws java.io.IOException if an error occurs */ public void writeIntLE(int value) throws IOException { value = EndianUtils.swapInteger(value); super.writeInt(value); } /** * Writes a little-endian float value * @param value the source value to convert * @throws java.io.IOException if an error occurs */ public void writeFloatLE(float value) throws IOException { value = EndianUtils.swapFloat(value); super.writeFloat(value); } /** * Writes a little-endian long value * @param value the source value to convert * @throws java.io.IOException if an error occurs */ public void writeLongLE(long value) throws IOException { value = EndianUtils.swapLong(value); super.writeLong(value); } /** * Writes a little-endian double value * @param value the source value to convert * @throws java.io.IOException if an error occurs */ public void writeDoubleLE(double value) throws IOException { value = EndianUtils.swapDouble(value); super.writeDouble(value); } /** * @since 0.6 */ public void writeUnsignedInt(long value) throws IOException { int i1 = (int)(value >> 24); int i2 = (int)((value >> 16) & 0xFF); int i3 = (int)((value >> 8) & 0xFF); int i4 = (int)(value & 0xFF); write(i1); write(i2); write(i3); write(i4); } /** * @since 0.6 */ public void writeUnsignedIntLE(long value) throws IOException { int i1 = (int)(value >> 24); int i2 = (int)((value >> 16) & 0xFF); int i3 = (int)((value >> 8) & 0xFF); int i4 = (int)(value & 0xFF); write(i4); write(i3); write(i2); write(i1); } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/io/LittleEndianRandomAccessFile.java0000644000175000017500000000444111377161311027330 0ustar /* * LittleEndianRandomAccessFile.java * * Created on 07 November 2006, 03:04 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.io; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; /** * Provides endian conversions for input and output with a RandomAccessFile. * * This class is currently not in use and has not been tested. * * @author Ian McDonagh */ public class LittleEndianRandomAccessFile extends RandomAccessFile { public LittleEndianRandomAccessFile(java.io.File file, String mode) throws FileNotFoundException { super(file, mode); } public LittleEndianRandomAccessFile(String name, String mode) throws FileNotFoundException { super(name, mode); } public short readShortLE() throws IOException { short ret = super.readShort(); ret = EndianUtils.swapShort(ret); return ret; } public int readIntLE() throws IOException { int ret = super.readInt(); ret = EndianUtils.swapInteger(ret); return ret; } public float readFloatLE() throws IOException { float ret = super.readFloat(); ret = EndianUtils.swapFloat(ret); return ret; } public long readLongLE() throws IOException { long ret = super.readLong(); ret = EndianUtils.swapLong(ret); return ret; } public double readDoubleLE() throws IOException { double ret = super.readDouble(); ret = EndianUtils.swapDouble(ret); return ret; } public void writeShortLE(short value) throws IOException { value = EndianUtils.swapShort(value); super.writeShort(value); } public void writeIntLE(int value) throws IOException { value = EndianUtils.swapInteger(value); super.writeInt(value); } public void writeFloatLE(float value) throws IOException { value = EndianUtils.swapFloat(value); super.writeFloat(value); } public void writeLongLE(long value) throws IOException { value = EndianUtils.swapLong(value); super.writeLong(value); } public void writeDoubleLE(double value) throws IOException { value = EndianUtils.swapDouble(value); super.writeDouble(value); } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/io/EndianUtils.java0000644000175000017500000000415511377161311024112 0ustar package net.sf.image4j.io; /** * Provides utility methods for endian conversions [big-endian to little-endian; little-endian to big-endian]. * @author Ian McDonagh */ public class EndianUtils { /** * Reverses the byte order of the source short value * @param value the source value * @return the converted value */ public static short swapShort(short value) { return (short) ( ((value & 0xFF00) >> 8) | ((value & 0x00FF) << 8) ) ; } /** * Reverses the byte order of the source int value * @param value the source value * @return the converted value */ public static int swapInteger(int value) { return ((value & 0xFF000000) >> 24) | ((value & 0x00FF0000) >> 8) | ((value & 0x0000FF00) << 8) | ((value & 0x000000FF) << 24) ; } /** * Reverses the byte order of the source long value * @param value the source value * @return the converted value */ public static long swapLong(long value) { return ((value & 0xFF00000000000000L) >> 56) | ((value & 0x00FF000000000000L) >> 40) | ((value & 0x0000FF0000000000L) >> 24) | ((value & 0x000000FF00000000L) >> 8) | ((value & 0x00000000FF000000L) << 8) | ((value & 0x0000000000FF0000L) << 24) | ((value & 0x000000000000FF00L) << 40) | ((value & 0x00000000000000FFL) << 56) ; } /** * Reverses the byte order of the source float value * @param value the source value * @return the converted value */ public static float swapFloat(float value) { int i = Float.floatToIntBits(value); i = swapInteger(i); return Float.intBitsToFloat(i); } /** * Reverses the byte order of the source double value * @param value the source value * @return the converted value */ public static double swapDouble(double value) { long l = Double.doubleToLongBits(value); l = swapLong(l); return Double.longBitsToDouble(l); } }jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/0000755000175000017500000000000011377161311021471 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/package.html0000644000175000017500000000051211377161311023750 0ustar Provides functionality which implement encoding and decoding of image formats. By convension, classes pertaining to a particular image format are contained in a sub-package. jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/0000755000175000017500000000000011377161311022247 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/package.html0000644000175000017500000000034511377161311024532 0ustar BMP codec implementation, which allows encoding and decoding of MS BMP format. jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/InfoHeader.java0000644000175000017500000001376011377161311025125 0ustar /* * InfoHeader.java * * Created on 10 May 2006, 08:10 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.bmp; import java.io.IOException; import net.sf.image4j.io.LittleEndianOutputStream; /** * Represents a bitmap InfoHeader structure, which provides header information. * @author Ian McDonagh */ public class InfoHeader { /** * The size of this InfoHeader structure in bytes. */ public int iSize; /** * The width in pixels of the bitmap represented by this InfoHeader. */ public int iWidth; /** * The height in pixels of the bitmap represented by this InfoHeader. */ public int iHeight; /** * The number of planes, which should always be 1. */ public short sPlanes; /** * The bit count, which represents the colour depth (bits per pixel). * This should be either 1, 4, 8, 24 or 32. */ public short sBitCount; /** * The compression type, which should be one of the following: *
    *
  • {@link BMPConstants#BI_RGB BI_RGB} - no compression
  • *
  • {@link BMPConstants#BI_RLE8 BI_RLE8} - 8-bit RLE compression
  • *
  • {@link BMPConstants#BI_RLE4 BI_RLE4} - 4-bit RLE compression
  • *
*/ public int iCompression; /** * The compressed size of the image in bytes, or 0 if iCompression is 0. */ public int iImageSize; /** * Horizontal resolution in pixels/m. */ public int iXpixelsPerM; /** * Vertical resolution in pixels/m. */ public int iYpixelsPerM; /** * Number of colours actually used in the bitmap. */ public int iColorsUsed; /** * Number of important colours (0 = all). */ public int iColorsImportant; /** * Calculated number of colours, based on the colour depth specified by {@link #sBitCount sBitCount}. */ public int iNumColors; /** * Creates an InfoHeader structure from the source input. * @param in the source input * @throws java.io.IOException if an error occurs */ public InfoHeader(net.sf.image4j.io.LittleEndianInputStream in) throws IOException { //Size of InfoHeader structure = 40 iSize = in.readIntLE(); init(in, iSize); } /** * @since 0.6 */ public InfoHeader(net.sf.image4j.io.LittleEndianInputStream in, int infoSize) throws IOException { init(in, infoSize); } /** * @since 0.6 */ protected void init(net.sf.image4j.io.LittleEndianInputStream in, int infoSize) throws IOException { this.iSize = infoSize; //Width iWidth = in.readIntLE(); //Height iHeight = in.readIntLE(); //Planes (=1) sPlanes = in.readShortLE(); //Bit count sBitCount = in.readShortLE(); //calculate NumColors iNumColors = (int) Math.pow(2, sBitCount); //Compression iCompression = in.readIntLE(); //Image size - compressed size of image or 0 if Compression = 0 iImageSize = in.readIntLE(); //horizontal resolution pixels/meter iXpixelsPerM = in.readIntLE(); //vertical resolution pixels/meter iYpixelsPerM = in.readIntLE(); //Colors used - number of colors actually used iColorsUsed = in.readIntLE(); //Colors important - number of important colors 0 = all iColorsImportant = in.readIntLE(); } /** * Creates an InfoHeader with default values. */ public InfoHeader() { //Size of InfoHeader structure = 40 iSize = 40; //Width iWidth = 0; //Height iHeight = 0; //Planes (=1) sPlanes = 1; //Bit count sBitCount = 0; //caculate NumColors iNumColors = 0; //Compression iCompression = BMPConstants.BI_RGB; //Image size - compressed size of image or 0 if Compression = 0 iImageSize = 0; //horizontal resolution pixels/meter iXpixelsPerM = 0; //vertical resolution pixels/meter iYpixelsPerM = 0; //Colors used - number of colors actually used iColorsUsed = 0; //Colors important - number of important colors 0 = all iColorsImportant = 0; } /** * Creates a copy of the source InfoHeader. * @param source the source to copy */ public InfoHeader(InfoHeader source) { iColorsImportant = source.iColorsImportant; iColorsUsed = source.iColorsUsed; iCompression = source.iCompression; iHeight = source.iHeight; iWidth = source.iWidth; iImageSize = source.iImageSize; iNumColors = source.iNumColors; iSize = source.iSize; iXpixelsPerM = source.iXpixelsPerM; iYpixelsPerM = source.iYpixelsPerM; sBitCount = source.sBitCount; sPlanes = source.sPlanes; } /** * Writes the InfoHeader structure to output * @param out the output to which the structure will be written * @throws java.io.IOException if an error occurs */ public void write(net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { //Size of InfoHeader structure = 40 out.writeIntLE(iSize); //Width out.writeIntLE(iWidth); //Height out.writeIntLE(iHeight); //Planes (=1) out.writeShortLE(sPlanes); //Bit count out.writeShortLE(sBitCount); //caculate NumColors //iNumColors = (int) Math.pow(2, sBitCount); //Compression out.writeIntLE(iCompression); //Image size - compressed size of image or 0 if Compression = 0 out.writeIntLE(iImageSize); //horizontal resolution pixels/meter out.writeIntLE(iXpixelsPerM); //vertical resolution pixels/meter out.writeIntLE(iYpixelsPerM); //Colors used - number of colors actually used out.writeIntLE(iColorsUsed); //Colors important - number of important colors 0 = all out.writeIntLE(iColorsImportant); } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/ColorEntry.java0000644000175000017500000000326411377161311025217 0ustar /* * ColorEntry.java * * Created on 10 May 2006, 08:29 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.bmp; import java.io.IOException; /** * Represents an RGB colour entry used in the palette of an indexed image (colour depth <= 8). * @author Ian McDonagh */ public class ColorEntry { /** * The red component, which should be in the range 0..255. */ public int bRed; /** * The green component, which should be in the range 0..255. */ public int bGreen; /** * The blue component, which should be in the range 0..255. */ public int bBlue; /** * Unused. */ public int bReserved; /** * Reads and creates a colour entry from the source input. * @param in the source input * @throws java.io.IOException if an error occurs */ public ColorEntry(net.sf.image4j.io.LittleEndianInputStream in) throws IOException { bBlue = in.readUnsignedByte(); bGreen = in.readUnsignedByte(); bRed = in.readUnsignedByte(); bReserved = in.readUnsignedByte(); } /** * Creates a colour entry with colour components initialized to 0. */ public ColorEntry() { bBlue = 0; bGreen = 0; bRed = 0; bReserved = 0; } /** * Creates a colour entry with the specified colour components. * @param r red component * @param g green component * @param b blue component * @param a unused */ public ColorEntry(int r, int g, int b, int a) { bBlue = b; bGreen = g; bRed = r; bReserved = a; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/BMPDecoder.java0000644000175000017500000004571111377161311025026 0ustar /* * Decodes a BMP image from an InputStream to a BufferedImage * * @author Ian McDonagh */ package net.sf.image4j.codec.bmp; import java.awt.image.BufferedImage; import java.awt.image.IndexColorModel; import java.awt.image.WritableRaster; import java.io.IOException; /** * Decodes images in BMP format. * @author Ian McDonagh */ public class BMPDecoder { private BufferedImage img; private InfoHeader infoHeader; /** Creates a new instance of BMPDecoder and reads the BMP data from the source. * @param in the source InputStream from which to read the BMP data * @throws java.io.IOException if an error occurs */ public BMPDecoder(java.io.InputStream in) throws IOException { net.sf.image4j.io.LittleEndianInputStream lis = new net.sf.image4j.io.LittleEndianInputStream(in); /* header [14] */ //signature "BM" [2] byte[] bsignature = new byte[2]; lis.read(bsignature); String signature = new String(bsignature, "UTF-8"); if (!signature.equals("BM")) { throw new IOException("Invalid signature '"+signature+"' for BMP format"); } //file size [4] int fileSize = lis.readIntLE(); //reserved = 0 [4] int reserved = lis.readIntLE(); //DataOffset [4] file offset to raster data int dataOffset = lis.readIntLE(); /* info header [40] */ infoHeader = readInfoHeader(lis); /* Color table and Raster data */ img = read(infoHeader, lis); } /** * Retrieves a bit from the lowest order byte of the given integer. * @param bits the source integer, treated as an unsigned byte * @param index the index of the bit to retrieve, which must be in the range 0..7. * @return the bit at the specified index, which will be either 0 or 1. */ private static int getBit(int bits, int index) { return (bits >> (7 - index)) & 1; } /** * Retrieves a nibble (4 bits) from the lowest order byte of the given integer. * @param nibbles the source integer, treated as an unsigned byte * @param index the index of the nibble to retrieve, which must be in the range 0..1. * @return the nibble at the specified index, as an unsigned byte. */ private static int getNibble(int nibbles, int index) { return (nibbles >> (4 * (1 - index))) & 0xF; } /** * The InfoHeader structure, which provides information about the BMP data. * @return the InfoHeader structure that was read from the source data when this BMPDecoder * was created. */ public InfoHeader getInfoHeader() { return infoHeader; } /** * The decoded image read from the source input. * @return the BufferedImage representing the BMP image. */ public BufferedImage getBufferedImage() { return img; } private static void getColorTable(ColorEntry[] colorTable, byte[] ar, byte[] ag, byte[] ab) { for (int i = 0; i < colorTable.length; i++) { ar[i] = (byte) colorTable[i].bRed; ag[i] = (byte) colorTable[i].bGreen; ab[i] = (byte) colorTable[i].bBlue; } } /** * Reads the BMP info header structure from the given InputStream. * @param lis the InputStream to read * @return the InfoHeader structure * @throws java.io.IOException if an error occurred */ public static InfoHeader readInfoHeader(net.sf.image4j.io.LittleEndianInputStream lis) throws IOException { InfoHeader infoHeader = new InfoHeader(lis); return infoHeader; } /** * @since 0.6 */ public static InfoHeader readInfoHeader(net.sf.image4j.io.LittleEndianInputStream lis, int infoSize) throws IOException { InfoHeader infoHeader = new InfoHeader(lis, infoSize); return infoHeader; } /** * Reads the BMP data from the given InputStream using the information * contained in the InfoHeader. * @param lis the source input * @param infoHeader an InfoHeader that was read by a call to * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()}. * @return the decoded image read from the source input * @throws java.io.IOException if an error occurs */ public static BufferedImage read(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis) throws IOException { BufferedImage img = null; /* Color table (palette) */ ColorEntry[] colorTable = null; //color table is only present for 1, 4 or 8 bit (indexed) images if (infoHeader.sBitCount <= 8) { colorTable = readColorTable(infoHeader, lis); } img = read(infoHeader, lis, colorTable); return img; } /** * Reads the BMP data from the given InputStream using the information * contained in the InfoHeader. * @param colorTable ColorEntry array containing palette * @param infoHeader an InfoHeader that was read by a call to * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()}. * @param lis the source input * @return the decoded image read from the source input * @throws java.io.IOException if any error occurs */ public static BufferedImage read(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis, ColorEntry[] colorTable) throws IOException { BufferedImage img = null; //1-bit (monochrome) uncompressed if (infoHeader.sBitCount == 1 && infoHeader.iCompression == BMPConstants.BI_RGB) { img = read1(infoHeader, lis, colorTable); } //4-bit uncompressed else if (infoHeader.sBitCount == 4 && infoHeader.iCompression == BMPConstants.BI_RGB) { img = read4(infoHeader, lis, colorTable); } //8-bit uncompressed else if (infoHeader.sBitCount == 8 && infoHeader.iCompression == BMPConstants.BI_RGB) { img = read8(infoHeader, lis, colorTable); } //24-bit uncompressed else if (infoHeader.sBitCount == 24 && infoHeader.iCompression == BMPConstants.BI_RGB) { img = read24(infoHeader, lis); } //32bit uncompressed else if (infoHeader.sBitCount == 32 && infoHeader.iCompression == BMPConstants.BI_RGB) { img = read32(infoHeader, lis); } else { throw new IOException("Unrecognized bitmap format: bit count="+infoHeader.sBitCount+", compression="+ infoHeader.iCompression); } return img; } /** * Reads the ColorEntry table from the given InputStream using * the information contained in the given infoHeader. * @param infoHeader the InfoHeader structure, which was read using * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()} * @param lis the InputStream to read * @throws java.io.IOException if an error occurs * @return the decoded image read from the source input */ public static ColorEntry[] readColorTable(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis) throws IOException { ColorEntry[] colorTable = new ColorEntry[infoHeader.iNumColors]; for (int i = 0; i < infoHeader.iNumColors; i++) { ColorEntry ce = new ColorEntry(lis); colorTable[i] = ce; } return colorTable; } /** * Reads 1-bit uncompressed bitmap raster data, which may be monochrome depending on the * palette entries in colorTable. * @param infoHeader the InfoHeader structure, which was read using * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()} * @param lis the source input * @param colorTable ColorEntry array specifying the palette, which * must not be null. * @throws java.io.IOException if an error occurs * @return the decoded image read from the source input */ public static BufferedImage read1(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis, ColorEntry[] colorTable) throws IOException { //1 bit per pixel or 8 pixels per byte //each pixel specifies the palette index byte[] ar = new byte[colorTable.length]; byte[] ag = new byte[colorTable.length]; byte[] ab = new byte[colorTable.length]; getColorTable(colorTable, ar, ag, ab); IndexColorModel icm = new IndexColorModel( 1, 2, ar, ag, ab ); // Create indexed image BufferedImage img = new BufferedImage( infoHeader.iWidth, infoHeader.iHeight, BufferedImage.TYPE_BYTE_BINARY, icm ); // We'll use the raster to set samples instead of RGB values. // The SampleModel of an indexed image interprets samples as // the index of the colour for a pixel, which is perfect for use here. WritableRaster raster = img.getRaster(); //padding int dataBitsPerLine = infoHeader.iHeight; int bitsPerLine = dataBitsPerLine; if (bitsPerLine % 32 != 0) { bitsPerLine = (bitsPerLine / 32 + 1) * 32; } int padBits = bitsPerLine - dataBitsPerLine; int padBytes = padBits / 8; int bytesPerLine = (int) (bitsPerLine / 8); int[] line = new int[bytesPerLine]; for (int y = infoHeader.iHeight - 1; y >= 0; y--) { for (int i = 0; i < bytesPerLine; i++) { line[i] = lis.readUnsignedByte(); } for (int x = 0; x < infoHeader.iWidth; x++) { int i = x / 8; int v = line[i]; int b = x % 8; int index = getBit(v, b); //int rgb = c[index]; //img.setRGB(x, y, rgb); //set the sample (colour index) for the pixel raster.setSample(x, y, 0, index); } } return img; } /** * Reads 4-bit uncompressed bitmap raster data, which is interpreted based on the colours * specified in the palette. * @param infoHeader the InfoHeader structure, which was read using * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()} * @param lis the source input * @param colorTable ColorEntry array specifying the palette, which * must not be null. * @throws java.io.IOException if an error occurs * @return the decoded image read from the source input */ public static BufferedImage read4(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis, ColorEntry[] colorTable) throws IOException { //2 pixels per byte or 4 bits per pixel //colour for each pixel specified by the color index in the pallette byte[] ar = new byte[colorTable.length]; byte[] ag = new byte[colorTable.length]; byte[] ab = new byte[colorTable.length]; getColorTable(colorTable, ar, ag, ab); IndexColorModel icm = new IndexColorModel( 4, infoHeader.iNumColors, ar, ag, ab ); BufferedImage img = new BufferedImage( infoHeader.iWidth, infoHeader.iHeight, BufferedImage.TYPE_BYTE_BINARY, icm ); WritableRaster raster = img.getRaster(); //padding int bitsPerLine = infoHeader.iWidth * 4; if (bitsPerLine % 32 != 0) { bitsPerLine = (bitsPerLine / 32 + 1) * 32; } int bytesPerLine = (int) (bitsPerLine / 8); int[] line = new int[bytesPerLine]; for (int y = infoHeader.iHeight - 1; y >= 0; y--) { //scan line for (int i = 0; i < bytesPerLine; i++) { int b = lis.readUnsignedByte(); line[i] = b; } //get pixels for (int x = 0; x < infoHeader.iWidth; x++) { //get byte index for line int b = x / 2; // 2 pixels per byte int i = x % 2; int n = line[b]; int index = getNibble(n, i); raster.setSample(x, y, 0, index); } } return img; } /** * Reads 8-bit uncompressed bitmap raster data, which is interpreted based on the colours * specified in the palette. * @param infoHeader the InfoHeader structure, which was read using * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()} * @param lis the source input * @param colorTable ColorEntry array specifying the palette, which * must not be null. * @throws java.io.IOException if an error occurs * @return the decoded image read from the source input */ public static BufferedImage read8(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis, ColorEntry[] colorTable) throws IOException { //1 byte per pixel // color index 1 (index of color in palette) //lines padded to nearest 32bits //no alpha byte[] ar = new byte[colorTable.length]; byte[] ag = new byte[colorTable.length]; byte[] ab = new byte[colorTable.length]; getColorTable(colorTable, ar, ag, ab); IndexColorModel icm = new IndexColorModel( 8, infoHeader.iNumColors, ar, ag, ab ); BufferedImage img = new BufferedImage( infoHeader.iWidth, infoHeader.iHeight, BufferedImage.TYPE_BYTE_INDEXED, icm ); WritableRaster raster = img.getRaster(); /* //create color pallette int[] c = new int[infoHeader.iNumColors]; for (int i = 0; i < c.length; i++) { int r = colorTable[i].bRed; int g = colorTable[i].bGreen; int b = colorTable[i].bBlue; c[i] = (r << 16) | (g << 8) | (b); } */ //padding int dataPerLine = infoHeader.iWidth; int bytesPerLine = dataPerLine; if (bytesPerLine % 4 != 0) { bytesPerLine = (bytesPerLine / 4 + 1) * 4; } int padBytesPerLine = bytesPerLine - dataPerLine; for (int y = infoHeader.iHeight - 1; y >= 0; y--) { for (int x = 0; x < infoHeader.iWidth; x++) { int b = lis.readUnsignedByte(); //int clr = c[b]; //img.setRGB(x, y, clr); //set sample (colour index) for pixel raster.setSample(x, y , 0, b); } lis.skipBytes(padBytesPerLine); } return img; } /** * Reads 24-bit uncompressed bitmap raster data. * @param lis the source input * @param infoHeader the InfoHeader structure, which was read using * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()} * @throws java.io.IOException if an error occurs * @return the decoded image read from the source input */ public static BufferedImage read24(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis) throws IOException { //3 bytes per pixel // blue 1 // green 1 // red 1 // lines padded to nearest 32 bits // no alpha BufferedImage img = new BufferedImage( infoHeader.iWidth, infoHeader.iHeight, BufferedImage.TYPE_INT_RGB ); WritableRaster raster = img.getRaster(); //padding to nearest 32 bits int dataPerLine = infoHeader.iWidth * 3; int bytesPerLine = dataPerLine; if (bytesPerLine % 4 != 0) { bytesPerLine = (bytesPerLine / 4 + 1) * 4; } int padBytesPerLine = bytesPerLine - dataPerLine; for (int y = infoHeader.iHeight - 1; y >= 0; y--) { for (int x = 0; x < infoHeader.iWidth; x++) { int b = lis.readUnsignedByte(); int g = lis.readUnsignedByte(); int r = lis.readUnsignedByte(); //int c = 0x00000000 | (r << 16) | (g << 8) | (b); //System.out.println(x + ","+y+"="+Integer.toHexString(c)); //img.setRGB(x, y, c); raster.setSample(x, y, 0, r); raster.setSample(x, y, 1, g); raster.setSample(x, y, 2, b); } lis.skipBytes(padBytesPerLine); } return img; } /** * Reads 32-bit uncompressed bitmap raster data, with transparency. * @param lis the source input * @param infoHeader the InfoHeader structure, which was read using * {@link #readInfoHeader(net.sf.image4j.io.LittleEndianInputStream) readInfoHeader()} * @throws java.io.IOException if an error occurs * @return the decoded image read from the source input */ public static BufferedImage read32(InfoHeader infoHeader, net.sf.image4j.io.LittleEndianInputStream lis) throws IOException { //4 bytes per pixel // blue 1 // green 1 // red 1 // alpha 1 //No padding since each pixel = 32 bits BufferedImage img = new BufferedImage( infoHeader.iWidth, infoHeader.iHeight, BufferedImage.TYPE_INT_ARGB ); WritableRaster rgb = img.getRaster(); WritableRaster alpha = img.getAlphaRaster(); for (int y = infoHeader.iHeight - 1; y >= 0; y--) { for (int x = 0; x < infoHeader.iWidth; x++) { int b = lis.readUnsignedByte(); int g = lis.readUnsignedByte(); int r = lis.readUnsignedByte(); int a = lis.readUnsignedByte(); rgb.setSample(x, y, 0, r); rgb.setSample(x, y, 1, g); rgb.setSample(x, y, 2, b); alpha.setSample(x, y, 0, a); } } return img; } /** * Reads and decodes BMP data from the source file. * @param file the source file * @throws java.io.IOException if an error occurs * @return the decoded image read from the source file */ public static BufferedImage read(java.io.File file) throws IOException { return read(new java.io.FileInputStream(file)); } /** * Reads and decodes BMP data from the source input. * @param in the source input * @throws java.io.IOException if an error occurs * @return the decoded image read from the source file */ public static BufferedImage read(java.io.InputStream in) throws IOException { BMPDecoder d = new BMPDecoder(in); return d.getBufferedImage(); } /** * Reads and decodes BMP data from the source file, together with metadata. * @param file the source file * @throws java.io.IOException if an error occurs * @return the decoded image read from the source file * @since 0.7 */ public static BMPImage readExt(java.io.File file) throws IOException { return readExt(new java.io.FileInputStream(file)); } /** * Reads and decodes BMP data from the source input, together with metadata. * @param in the source input * @throws java.io.IOException if an error occurs * @return the decoded image read from the source file * @since 0.7 */ public static BMPImage readExt(java.io.InputStream in) throws IOException { BMPDecoder d = new BMPDecoder(in); BMPImage ret = new BMPImage(d.getBufferedImage(), d.getInfoHeader()); return ret; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/BMPEncoder.java0000644000175000017500000003164611377161311025042 0ustar /* * BMPEncoder.java * * Created on 11 May 2006, 04:19 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.bmp; import java.awt.image.BufferedImage; import java.awt.image.IndexColorModel; import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.io.IOException; import net.sf.image4j.io.LittleEndianOutputStream; /** * Encodes images in BMP format. * @author Ian McDonagh */ public class BMPEncoder { /** Creates a new instance of BMPEncoder */ private BMPEncoder() { } /** * Encodes and writes BMP data the output file * @param img the image to encode * @param file the file to which encoded data will be written * @throws java.io.IOException if an error occurs */ public static void write(BufferedImage img, java.io.File file) throws IOException { write(img, new java.io.FileOutputStream(file)); } /** * Encodes and writes BMP data to the output * @param img the image to encode * @param os the output to which encoded data will be written * @throws java.io.IOException if an error occurs */ public static void write(BufferedImage img, java.io.OutputStream os) throws IOException { InfoHeader ih = createInfoHeader(img); int mapSize = 0; IndexColorModel icm = null; if (ih.sBitCount <= 8) { icm = (IndexColorModel) img.getColorModel(); mapSize = icm.getMapSize(); } int headerSize = 14 //file header + ih.iSize //info header ; int mapBytes = 4 * mapSize; int dataOffset = headerSize + mapBytes; int bytesPerLine = 0; switch (ih.sBitCount) { case 1: bytesPerLine = getBytesPerLine1(ih.iWidth); break; case 4: bytesPerLine = getBytesPerLine4(ih.iWidth); break; case 8: bytesPerLine = getBytesPerLine8(ih.iWidth); break; case 24: bytesPerLine = getBytesPerLine24(ih.iWidth); break; case 32: bytesPerLine = ih.iWidth * 4; break; } int fileSize = dataOffset + bytesPerLine * ih.iHeight; LittleEndianOutputStream out = new LittleEndianOutputStream(os); //write file header writeFileHeader(fileSize, dataOffset, out); //write info header ih.write(out); //write color map (bit count <= 8) if (ih.sBitCount <= 8) { writeColorMap(icm, out); } //write raster data switch (ih.sBitCount) { case 1: write1(img.getRaster(), out); break; case 4: write4(img.getRaster(), out); break; case 8: write8(img.getRaster(), out); break; case 24: write24(img.getRaster(), out); break; case 32: write32(img.getRaster(), img.getAlphaRaster(), out); break; } } /** * Creates an InfoHeader from the source image. * @param img the source image * @return the resultant InfoHeader structure */ public static InfoHeader createInfoHeader(BufferedImage img) { InfoHeader ret = new InfoHeader(); ret.iColorsImportant = 0; ret.iColorsUsed = 0; ret.iCompression = 0; ret.iHeight = img.getHeight(); ret.iWidth = img.getWidth(); ret.sBitCount = (short) img.getColorModel().getPixelSize(); ret.iNumColors = 1 << (ret.sBitCount == 32 ? 24 : ret.sBitCount); ret.iImageSize = 0; return ret; } /** * Writes the file header. * @param fileSize the calculated file size for the BMP data being written * @param dataOffset the calculated offset within the BMP data where the actual bitmap begins * @param out the output to which the file header will be written * @throws java.io.IOException if an error occurs */ public static void writeFileHeader(int fileSize, int dataOffset, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { //signature byte[] signature = BMPConstants.FILE_HEADER.getBytes("UTF-8"); out.write(signature); //file size out.writeIntLE(fileSize); //reserved out.writeIntLE(0); //data offset out.writeIntLE(dataOffset); } /** * Writes the colour map resulting from the source IndexColorModel. * @param icm the source IndexColorModel * @param out the output to which the colour map will be written * @throws java.io.IOException if an error occurs */ public static void writeColorMap(IndexColorModel icm, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { int mapSize = icm.getMapSize(); for (int i = 0; i < mapSize; i++) { int rgb = icm.getRGB(i); int r = (rgb >> 16) & 0xFF; int g = (rgb >> 8) & 0xFF; int b = (rgb) &0xFF; out.writeByte(b); out.writeByte(g); out.writeByte(r); out.writeByte(0); } } /** * Calculates the number of bytes per line required for the given width in pixels, * for a 1-bit bitmap. Lines are always padded to the next 4-byte boundary. * @param width the width in pixels * @return the number of bytes per line */ public static int getBytesPerLine1(int width) { int ret = (int) width / 8; if (ret % 4 != 0) { ret = (ret / 4 + 1) * 4; } return ret; } /** * Calculates the number of bytes per line required for the given with in pixels, * for a 4-bit bitmap. Lines are always padded to the next 4-byte boundary. * @param width the width in pixels * @return the number of bytes per line */ public static int getBytesPerLine4(int width) { int ret = (int) width / 2; if (ret % 4 != 0) { ret = (ret / 4 + 1) * 4; } return ret; } /** * Calculates the number of bytes per line required for the given with in pixels, * for a 8-bit bitmap. Lines are always padded to the next 4-byte boundary. * @param width the width in pixels * @return the number of bytes per line */ public static int getBytesPerLine8(int width) { int ret = width; if (ret % 4 != 0) { ret = (ret / 4 + 1) * 4; } return ret; } /** * Calculates the number of bytes per line required for the given with in pixels, * for a 24-bit bitmap. Lines are always padded to the next 4-byte boundary. * @param width the width in pixels * @return the number of bytes per line */ public static int getBytesPerLine24(int width) { int ret = width * 3; if (ret % 4 != 0) { ret = (ret / 4 + 1) * 4; } return ret; } /** * Calculates the size in bytes of a bitmap with the specified size and colour depth. * @param w the width in pixels * @param h the height in pixels * @param bpp the colour depth (bits per pixel) * @return the size of the bitmap in bytes */ public static int getBitmapSize(int w, int h, int bpp) { int bytesPerLine = 0; switch (bpp) { case 1: bytesPerLine = getBytesPerLine1(w); break; case 4: bytesPerLine = getBytesPerLine4(w); break; case 8: bytesPerLine = getBytesPerLine8(w); break; case 24: bytesPerLine = getBytesPerLine24(w); break; case 32: bytesPerLine = w * 4; break; } int ret = bytesPerLine * h; return ret; } /** * Encodes and writes raster data as a 1-bit bitmap. * @param raster the source raster data * @param out the output to which the bitmap will be written * @throws java.io.IOException if an error occurs */ public static void write1(Raster raster, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { int bytesPerLine = getBytesPerLine1(raster.getWidth()); byte[] line = new byte[bytesPerLine]; for (int y = raster.getHeight() - 1; y >= 0; y--) { for (int i = 0; i < bytesPerLine; i++) { line[i] = 0; } for (int x = 0; x < raster.getWidth(); x++) { int bi = x / 8; int i = x % 8; int index = raster.getSample(x, y, 0); line[bi] = setBit(line[bi], i, index); } out.write(line); } } /** * Encodes and writes raster data as a 4-bit bitmap. * @param raster the source raster data * @param out the output to which the bitmap will be written * @throws java.io.IOException if an error occurs */ public static void write4(Raster raster, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { int bytesPerLine = getBytesPerLine4(raster.getWidth()); byte[] line = new byte[bytesPerLine]; for (int y = raster.getHeight() - 1; y >= 0; y--) { for (int i = 0; i < bytesPerLine; i++) { line[i] = 0; } for (int x = 0; x < raster.getWidth(); x++) { int bi = x / 2; int i = x % 2; int index = raster.getSample(x, y, 0); line[bi] = setNibble(line[bi], i, index); } out.write(line); } } /** * Encodes and writes raster data as a 8-bit bitmap. * @param raster the source raster data * @param out the output to which the bitmap will be written * @throws java.io.IOException if an error occurs */ public static void write8(Raster raster, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { int bytesPerLine = getBytesPerLine8(raster.getWidth()); for (int y = raster.getHeight() - 1; y >= 0; y--) { for (int x = 0; x < raster.getWidth(); x++) { int index = raster.getSample(x, y, 0); out.writeByte(index); } for (int i = raster.getWidth(); i < bytesPerLine; i++) { out.writeByte(0); } } } /** * Encodes and writes raster data as a 24-bit bitmap. * @param raster the source raster data * @param out the output to which the bitmap will be written * @throws java.io.IOException if an error occurs */ public static void write24(Raster raster, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { int bytesPerLine = getBytesPerLine24(raster.getWidth()); for (int y = raster.getHeight() - 1; y >= 0; y--) { for (int x = 0; x < raster.getWidth(); x++) { int r = raster.getSample(x, y, 0); int g = raster.getSample(x, y, 1); int b = raster.getSample(x, y, 2); out.writeByte(b); out.writeByte(g); out.writeByte(r); } for (int i = raster.getWidth() * 3; i < bytesPerLine; i++) { out.writeByte(0); } } } /** * Encodes and writes raster data, together with alpha data, as a 32-bit bitmap. * @param raster the source raster data * @param alpha the source alpha data * @param out the output to which the bitmap will be written * @throws java.io.IOException if an error occurs */ public static void write32(Raster raster, Raster alpha, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { for (int y = raster.getHeight() - 1; y >= 0; y--) { for (int x = 0; x < raster.getWidth(); x++) { int r = raster.getSample(x, y, 0); int g = raster.getSample(x, y, 1); int b = raster.getSample(x, y, 2); int a = alpha.getSample(x, y, 0); out.writeByte(b); out.writeByte(g); out.writeByte(r); out.writeByte(a); } } } /** * Sets a particular bit in a byte. * @param bits the source byte * @param index the index of the bit to set * @param bit the value for the bit, which should be either 0 or 1. * @param the resultant byte */ private static byte setBit(byte bits, int index, int bit) { if (bit == 0) { bits &= ~(1 << (7 - index)); } else { bits |= 1 << (7 - index); } return bits; } /** * Sets a particular nibble (4 bits) in a byte. * @param nibbles the source byte * @param index the index of the nibble to set * @param the value for the nibble, which should be in the range 0x0..0xF. */ private static byte setNibble(byte nibbles, int index, int nibble) { nibbles |= (nibble << ((1 - index) * 4)); return nibbles; } /** * Calculates the size in bytes for a colour map with the specified bit count. * @param sBitCount the bit count, which represents the colour depth * @return the size of the colour map, in bytes if sBitCount is less than or equal to 8, * otherwise 0 as colour maps are only used for bitmaps with a colour depth of 8 bits or less. */ public static int getColorMapSize(short sBitCount) { int ret = 0; if (sBitCount <= 8) { ret = (1 << sBitCount) * 4; } return ret; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/BMPConstants.java0000644000175000017500000000167611377161311025437 0ustar /* * BMPConstants.java * * Created on 10 May 2006, 08:17 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.bmp; /** * Provides constants used with BMP format. * @author Ian McDonagh */ public class BMPConstants { private BMPConstants() { } /** * The signature for the BMP format header "BM". */ public static final String FILE_HEADER = "BM"; /** * Specifies no compression. * @see InfoHeader#iCompression InfoHeader */ public static final int BI_RGB = 0; //no compression /** * Specifies 8-bit RLE compression. * @see InfoHeader#iCompression InfoHeader */ public static final int BI_RLE8 = 1; //8bit RLE compression /** * Specifies 4-bit RLE compression. * @see InfoHeader#iCompression InfoHeader */ public static final int BI_RLE4 = 2; //4bit RLE compression } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/bmp/BMPImage.java0000644000175000017500000000533311377161311024477 0ustar /* * BMPImage.java * * Created on February 19, 2007, 8:08 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.bmp; /** * Contains a decoded BMP image, as well as information about the source encoded image. * @since 0.7 * @author Ian McDonagh */ public class BMPImage { protected InfoHeader infoHeader; protected java.awt.image.BufferedImage image; /** * Creates a new instance of BMPImage * @param image the decoded image * @param infoHeader the InfoHeader structure providing information about the source encoded image */ public BMPImage(java.awt.image.BufferedImage image, InfoHeader infoHeader) { this.image = image; this.infoHeader = infoHeader; } /** * The InfoHeader structure representing the encoded BMP image. */ public InfoHeader getInfoHeader() { return infoHeader; } /** * Sets the InfoHeader structure used for encoding the BMP image. */ public void setInfoHeader(InfoHeader infoHeader) { this.infoHeader = infoHeader; } /** * The decoded BMP image. */ public java.awt.image.BufferedImage getImage() { return image; } /** * Sets the image to be encoded. */ public void setImage(java.awt.image.BufferedImage image) { this.image = image; } /** * The width of the BMP image in pixels. * @return the width of the BMP image, or -1 if unknown * @since 0.7alpha2 */ public int getWidth() { return infoHeader == null ? -1 : infoHeader.iWidth; } /** * The height of the BMP image in pixels. * @return the height of the BMP image, or -1 if unknown. * @since 0.7alpha2 */ public int getHeight() { return infoHeader == null ? -1 : infoHeader.iHeight; } /** * The colour depth of the BMP image (bits per pixel). * @return the colour depth, or -1 if unknown. * @since 0.7alpha2 */ public int getColourDepth() { return infoHeader == null ? -1 : infoHeader.sBitCount; } /** * The number of possible colours for the BMP image. * @return the number of colours, or -1 if unknown. * @since 0.7alpha2 */ public int getColourCount() { int bpp = infoHeader.sBitCount == 32 ? 24 : infoHeader.sBitCount; return bpp == -1 ? -1 : (int) (1 << bpp); } /** * Specifies whether this BMP image is indexed, that is, the encoded bitmap uses a colour table. * If getColourDepth() returns -1, the return value has no meaning. * @return true if indexed, false if not. * @since 0.7alpha2 */ public boolean isIndexed() { return infoHeader == null ? false : infoHeader.sBitCount <= 8; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/0000755000175000017500000000000011377161311022243 5ustar jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/package.html0000644000175000017500000000104211377161311024521 0ustar

ICO codec implementation, which allows encoding and decoding of MS ICO format.

ICO images typically contain multiple images of various sizes and colour depths. Thus, this codec implementation provides methods to decode an ICO image as a list of BufferedImage objects, and to encode a list of BufferedImage objects as an ICO image.

jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/ICOConstants.java0000644000175000017500000000106711377161311025421 0ustar /* * ICOConstants.java * * Created on May 13, 2006, 8:07 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.ico; /** * Provides constants used with ICO format. * @author Ian McDonagh */ public class ICOConstants { /** * Indicates that ICO data represents an icon (.ICO). */ public static final int TYPE_ICON = 1; /** * Indicates that ICO data represents a cursor (.CUR). */ public static final int TYPE_CURSOR = 2; } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/IconEntry.java0000644000175000017500000000744711377161311025034 0ustar /* * 21-Jan-08 Modified by fbusquets: * Generic types removed to make the class compatible with Java 1.4 */ package net.sf.image4j.codec.ico; import java.io.IOException; import net.sf.image4j.io.LittleEndianInputStream; /** * Represents an IconEntry structure, which contains information about an ICO image. * @author Ian McDonagh */ public class IconEntry { /** * The width of the icon image in pixels. * 0 specifies a width of 256 pixels. */ public int bWidth; /** * The height of the icon image in pixels. * 0 specifies a height of 256 pixels. */ public int bHeight; /** * The number of colours, calculated from {@link #sBitCount sBitCount}. * 0 specifies a colour count of >= 256. */ public int bColorCount; /** * Unused. Should always be 0. */ public byte bReserved; /** * Number of planes, which should always be 1. */ public short sPlanes; /** * Colour depth in bits per pixel. */ public short sBitCount; /** * Size of ICO data, which should be the size of (InfoHeader + AND bitmap + XOR bitmap). */ public int iSizeInBytes; /** * Position in file where the InfoHeader starts. */ public int iFileOffset; /** * Creates an IconEntry structure from the source input * @param in the source input * @throws java.io.IOException if an error occurs */ public IconEntry(LittleEndianInputStream in) throws IOException { //Width 1 byte Cursor Width (16, 32, 64, 0 = 256) bWidth = in.readUnsignedByte(); //Height 1 byte Cursor Height (16, 32, 64, 0 = 256 , most commonly = Width) bHeight = in.readUnsignedByte(); //ColorCount 1 byte Number of Colors (2,16, 0=256) bColorCount = in.readUnsignedByte(); //Reserved 1 byte =0 bReserved = in.readByte(); //Planes 2 byte =1 sPlanes = in.readShortLE(); //BitCount 2 byte bits per pixel (1, 4, 8) sBitCount = in.readShortLE(); //SizeInBytes 4 byte Size of (InfoHeader + ANDbitmap + XORbitmap) iSizeInBytes = in.readIntLE(); //FileOffset 4 byte FilePos, where InfoHeader starts iFileOffset = in.readIntLE(); } /** * Creates and IconEntry structure with default values. */ public IconEntry() { bWidth = 0; bHeight = 0; bColorCount = 0; sPlanes = 1; bReserved = 0; sBitCount = 0; iSizeInBytes = 0; iFileOffset = 0; } /** * A string representation of this IconEntry structure. */ public String toString() { StringBuffer sb = new StringBuffer(); sb.append("width="); sb.append(bWidth); sb.append(",height="); sb.append(bHeight); sb.append(",bitCount="); sb.append(sBitCount); sb.append(",colorCount="+bColorCount); return sb.toString(); } /** * Writes the IconEntry structure to output * @param out the output * @throws java.io.IOException if an error occurs */ public void write(net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { //Width 1 byte Cursor Width (16, 32 or 64) out.writeByte(bWidth); //Height 1 byte Cursor Height (16, 32 or 64 , most commonly = Width) out.writeByte(bHeight); //ColorCount 1 byte Number of Colors (2,16, 0=256) out.writeByte(bColorCount); //Reserved 1 byte =0 out.writeByte(bReserved); //Planes 2 byte =1 out.writeShortLE(sPlanes); //BitCount 2 byte bits per pixel (1, 4, 8) out.writeShortLE(sBitCount); //SizeInBytes 4 byte Size of (InfoHeader + ANDbitmap + XORbitmap) out.writeIntLE(iSizeInBytes); //FileOffset 4 byte FilePos, where InfoHeader starts out.writeIntLE(iFileOffset); } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/ICODecoder.java0000644000175000017500000002527311377161311025017 0ustar /* * ICODecoder.java * * Created on May 9, 2006, 9:31 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. * * 21-Jan-08 Modified by fbusquets: * Generic types removed to make the class compatible with Java 1.4 * */ package net.sf.image4j.codec.ico; import java.awt.image.BufferedImage; import java.awt.image.WritableRaster; import java.io.IOException; import net.sf.image4j.codec.bmp.BMPConstants; import net.sf.image4j.codec.bmp.BMPDecoder; import net.sf.image4j.codec.bmp.ColorEntry; import net.sf.image4j.codec.bmp.InfoHeader; /** * Decodes images in ICO format. * @author Ian McDonagh */ public class ICODecoder { private static final int PNG_MAGIC = 0x89504E47; private static final int PNG_MAGIC_LE = 0x474E5089; private static final int PNG_MAGIC2 = 0x0D0A1A0A; private static final int PNG_MAGIC2_LE = 0x0A1A0A0D; //private java.util.List img; private ICODecoder() { } /** * Reads and decodes the given ICO file. Convenience method equivalent to {@link #read(java.io.InputStream) read(new java.io.FileInputStream(file))}. * @param file the source file to read * @return the list of images decoded from the ICO data * @throws java.io.IOException if an error occurs */ public static java.util.List read(java.io.File file) throws IOException { return read(new java.io.FileInputStream(file)); } /** * Reads and decodes the given ICO file, together with all metadata. * Convenience method equivalent to {@link #readExt(java.io.InputStream) readExt(new java.io.FileInputStream(file))}. * @param file the source file to read * @return the list of images decoded from the ICO data * @throws java.io.IOException if an error occurs * @since 0.7 */ public static java.util.List readExt(java.io.File file) throws IOException { return readExt(new java.io.FileInputStream(file)); } /** * Reads and decodes ICO data from the given source. * The returned list of images is in the order in which they appear in the source ICO data. * @param is the source InputStream to read * @return the list of images decoded from the ICO data * @throws java.io.IOException if an error occurs */ public static java.util.List read(java.io.InputStream is) throws IOException { java.util.List list = readExt(is); java.util.List ret = new java.util.ArrayList(list.size()); for (int i = 0; i < list.size(); i++) { ICOImage icoImage = (ICOImage)list.get(i); BufferedImage image = icoImage.getImage(); ret.add(image); } return ret; } /** * Reads and decodes ICO data from the given source, together with all metadata. * The returned list of images is in the order in which they appear in the source ICO data. * @param is the source InputStream to read * @return the list of images decoded from the ICO data * @throws java.io.IOException if an error occurs * @since 0.7 */ public static java.util.List readExt(java.io.InputStream is) throws IOException { //long t = System.currentTimeMillis(); net.sf.image4j.io.LittleEndianInputStream in = new net.sf.image4j.io.LittleEndianInputStream(is); //Reserved 2 byte =0 short sReserved = in.readShortLE(); //Type 2 byte =1 short sType = in.readShortLE(); //Count 2 byte Number of Icons in this file short sCount = in.readShortLE(); //Entries Count * 16 list of icons IconEntry[] entries = new IconEntry[sCount]; for (short s = 0; s < sCount; s++) { entries[s] = new IconEntry(in); } int i = 0; //images list of bitmap structures in BMP format java.util.List ret = new java.util.ArrayList(sCount); try { for (i = 0; i < sCount; i++) { int info = in.readIntLE(); if (info == 40) { //read XOR bitmap //BMPDecoder bmp = new BMPDecoder(is); InfoHeader infoHeader = BMPDecoder.readInfoHeader(in, info); InfoHeader andHeader = new InfoHeader(infoHeader); andHeader.iHeight = (int) (infoHeader.iHeight / 2); InfoHeader xorHeader = new InfoHeader(infoHeader); xorHeader.iHeight = andHeader.iHeight; andHeader.sBitCount = 1; andHeader.iNumColors = 2; //for now, just read all the raster data (xor + and) // and store as separate images BufferedImage xor = BMPDecoder.read(xorHeader, in); //img.add(xor); BufferedImage img = new BufferedImage( xorHeader.iWidth, xorHeader.iHeight, BufferedImage.TYPE_INT_ARGB ); ColorEntry[] andColorTable = new ColorEntry[] { new ColorEntry(255, 255, 255, 255), new ColorEntry(0, 0, 0, 0) }; if (infoHeader.sBitCount == 32) { //transparency from alpha //ignore bytes after XOR bitmap int size = entries[i].iSizeInBytes; int infoHeaderSize = infoHeader.iSize; // data size = w * h * 4 int dataSize = xorHeader.iWidth * xorHeader.iHeight * 4; int skip = size - infoHeaderSize - dataSize; //ignore AND bitmap since alpha channel stores transparency int skipped = in.skipBytes(skip); int s = skip; while (skipped < s) { if (skipped < 0) { throw new IOException("Failed to read [skip]"); } s = skip - skipped; skipped = in.skipBytes(s); } ////read AND bitmap //BufferedImage and = BMPDecoder.read(andHeader, in, andColorTable); //this.img.add(and); WritableRaster srgb = xor.getRaster(); WritableRaster salpha = xor.getAlphaRaster(); WritableRaster rgb = img.getRaster(); WritableRaster alpha = img.getAlphaRaster(); for (int y = xorHeader.iHeight - 1; y >= 0; y--) { for (int x = 0; x < xorHeader.iWidth; x++) { int r = srgb.getSample(x, y, 0); int g = srgb.getSample(x, y, 1); int b = srgb.getSample(x, y, 2); int a = salpha.getSample(x, y, 0); rgb.setSample(x, y, 0, r); rgb.setSample(x, y, 1, g); rgb.setSample(x, y, 2, b); alpha.setSample(x, y, 0, a); } } } else { BufferedImage and = BMPDecoder.read(andHeader, in, andColorTable); //img.add(and); //copy rgb WritableRaster srgb = xor.getRaster(); WritableRaster rgb = img.getRaster(); //copy alpha WritableRaster alpha = img.getAlphaRaster(); WritableRaster salpha = and.getRaster(); for (int y = 0; y < xorHeader.iHeight; y++) { for (int x = 0; x < xorHeader.iWidth; x++) { int r, g, b; int c = xor.getRGB(x, y); r = (c >> 16) & 0xFF; g = (c >> 8) & 0xFF; b = (c) & 0xFF; //red rgb.setSample(x, y, 0, r); //green rgb.setSample(x, y, 1, g); //blue rgb.setSample(x, y, 2, b); //System.out.println(x+","+y+"="+Integer.toHexString(c)); //img.setRGB(x, y, c); //alpha int a = and.getRGB(x, y); alpha.setSample(x, y, 0, a); } } } // create ICOImage IconEntry iconEntry = entries[i]; ICOImage icoImage = new ICOImage(img, infoHeader, iconEntry); icoImage.setPngCompressed(false); icoImage.setIconIndex(i); ret.add(icoImage); } //check for PNG magic header and that image height and width = 0 = 256 -> Vista format else if (info == PNG_MAGIC_LE) { int info2 = in.readIntLE(); if (info2 != PNG_MAGIC2_LE) { throw new IOException("Unrecognized icon format for image #"+i); } IconEntry e = entries[i]; byte[] pngData = new byte[e.iSizeInBytes - 8]; int count = in.read(pngData); if (count != pngData.length) { throw new IOException("Unable to read image #"+i+" - incomplete PNG compressed data"); } java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream(); java.io.DataOutputStream dout = new java.io.DataOutputStream(bout); dout.writeInt(PNG_MAGIC); dout.writeInt(PNG_MAGIC2); dout.write(pngData); byte[] pngData2 = bout.toByteArray(); java.io.ByteArrayInputStream bin = new java.io.ByteArrayInputStream(pngData2); javax.imageio.stream.ImageInputStream input = javax.imageio.ImageIO.createImageInputStream(bin); javax.imageio.ImageReader reader = getPNGImageReader(); reader.setInput(input); java.awt.image.BufferedImage img = reader.read(0); // create ICOImage IconEntry iconEntry = entries[i]; ICOImage icoImage = new ICOImage(img, null, iconEntry); icoImage.setPngCompressed(true); icoImage.setIconIndex(i); ret.add(icoImage); } else { throw new IOException("Unrecognized icon format for image #"+i); } /* InfoHeader andInfoHeader = new InfoHeader(); andInfoHeader.iColorsImportant = 0; andInfoHeader.iColorsUsed = 0; andInfoHeader.iCompression = BMPConstants.BI_RGB; andInfoHeader.iHeight = xorInfoHeader.iHeight / 2; andInfoHeader.iWidth = xorInfoHeader. */ } } catch (IOException ex) { throw new IOException("Failed to read image # "+i); } //long t2 = System.currentTimeMillis(); //System.out.println("Loaded ICO file in "+(t2 - t)+"ms"); return ret; } private static javax.imageio.ImageReader getPNGImageReader() { javax.imageio.ImageReader ret = null; java.util.Iterator itr = javax.imageio.ImageIO.getImageReadersByFormatName("png"); if (itr.hasNext()) { ret = (javax.imageio.ImageReader)itr.next(); } return ret; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/ICOEncoder.java0000644000175000017500000004256511377161311025034 0ustar /* * ICOEncoder.java * * Created on 12 May 2006, 04:08 * * To change this template, choose Tools | Template Manager * and open the template in the editor. * * 21-Jan-08 Modified by fbusquets: * Generic types removed to make the class compatible with Java 1.4 * */ package net.sf.image4j.codec.ico; import java.awt.image.BufferedImage; import java.awt.image.IndexColorModel; import java.awt.image.Raster; import java.awt.image.WritableRaster; import java.io.IOException; import java.util.List; import javax.imageio.ImageWriter; import net.sf.image4j.io.LittleEndianOutputStream; import net.sf.image4j.codec.bmp.BMPEncoder; import net.sf.image4j.util.ConvertUtil; import net.sf.image4j.codec.bmp.InfoHeader; /** * Encodes images in ICO format. * @author Ian McDonagh */ public class ICOEncoder { /** Creates a new instance of ICOEncoder */ private ICOEncoder() { } /** * Encodes and writes a single image to file without colour depth conversion. * @param image the source image to encode * @param file the output file to which the encoded image will be written * @throws java.io.IOException if an exception occurs */ public static void write(BufferedImage image, java.io.File file) throws IOException { write(image, -1, file); } /** * Encodes and writes a single image without colour depth conversion. * @param image the source image to encode * @param os the output to which the encoded image will be written * @throws java.io.IOException if an exception occurs */ public static void write(BufferedImage image, java.io.OutputStream os) throws IOException { write(image, -1, os); } /** * Encodes and writes multiple images without colour depth conversion. * @param images the list of source images to be encoded * @param os the output to which the encoded image will be written * @throws java.io.IOException if an error occurs */ public static void write(List images, java.io.OutputStream os) throws IOException { write(images, null, null, os); } /** * Encodes and writes multiple images to file without colour depth conversion. * @param images the list of source images to encode * @param file the file to which the encoded images will be written * @throws java.io.IOException if an exception occurs */ public static void write(List images, java.io.File file) throws IOException { write(images, null, file); } /** * Encodes and writes multiple images to file with the colour depth conversion using the specified values. * @param images the list of source images to encode * @param bpp array containing desired colour depths for colour depth conversion * @param file the output file to which the encoded images will be written * @throws java.io.IOException if an error occurs */ public static void write(List images, int[] bpp, java.io.File file) throws IOException { write(images, bpp, new java.io.FileOutputStream(file)); } /** * Encodes and outputs a list of images in ICO format. The first image in the list will be at index #0 in the ICO file, the second at index #1, and so on. * @param images List of images to encode, which will be output in the order supplied in the list. * @param bpp Array containing the color depth (bits per pixel) for encoding the corresponding image at each index in the images list. If the array is null, no colour depth conversion will be performed. A colour depth value of -1 at a particular index indicates that no colour depth conversion should be performed for that image. * @param compress Array containing the compression flag for the corresponding image at each index in the images list. If the array is null, no compression will be peformed. A value of true specifies that compression should be performed, while a value of false specifies that no compression should be performed. * @param file the file to which the encoded images will be written. * @throws java.io.IOException if an error occurred. * @since 0.6 */ public static void write(List images, int[] bpp, boolean[] compress, java.io.File file) throws IOException { write(images, bpp, compress, new java.io.FileOutputStream(file)); } /** * Encodes and writes a single image to file with colour depth conversion using the specified value. * @param image the source image to encode * @param bpp the colour depth (bits per pixel) for the colour depth conversion, or -1 if no colour depth conversion should be performed * @param file the output file to which the encoded image will be written * @throws java.io.IOException if an error occurs */ public static void write(BufferedImage image, int bpp, java.io.File file) throws IOException { write(image, bpp, new java.io.FileOutputStream(file)); } /** * Encodes and outputs a single image in ICO format. * Convenience method, which calls {@link #write(java.util.List,int[],java.io.OutputStream) write(java.util.List,int[],java.io.OutputStream)}. * @param image The image to encode. * @param bpp Colour depth (in bits per pixel) for the colour depth conversion, or -1 if no colour depth conversion should be performed. * @param os The output to which the encoded image will be written. * @throws java.io.IOException if an error occurs when trying to write the output. */ public static void write(BufferedImage image, int bpp, java.io.OutputStream os) throws IOException { List list = new java.util.ArrayList(1); list.add(image); write(list, new int[] { bpp }, new boolean[] { false }, os); } /** * Encodes and outputs a list of images in ICO format. The first image in the list will be at index #0 in the ICO file, the second at index #1, and so on. * @param images List of images to encode, which will be output in the order supplied in the list. * @param bpp Array containing the color depth (bits per pixel) for encoding the corresponding image at each index in the images list. If the array is null, no colour depth conversion will be performed. A colour depth value of -1 at a particular index indicates that no colour depth conversion should be performed for that image. * @param os The output to which the encoded images will be written. * @throws java.io.IOException if an error occurred. */ public static void write(List images, int[] bpp, java.io.OutputStream os) throws IOException { write(images, bpp, null, os); } /** * Encodes and outputs a list of images in ICO format. The first image in the list will be at index #0 in the ICO file, the second at index #1, and so on. * @param images List of images to encode, which will be output in the order supplied in the list. * @param bpp Array containing the color depth (bits per pixel) for encoding the corresponding image at each index in the images list. If the array is null, no colour depth conversion will be performed. A colour depth value of -1 at a particular index indicates that no colour depth conversion should be performed for that image. * @param compress Array containing the compression flag for the corresponding image at each index in the images list. If the array is null, no compression will be peformed. A value of true specifies that compression should be performed, while a value of false specifies that no compression should be performed. * @param os The output to which the encoded images will be written. * @throws java.io.IOException if an error occurred. * @since 0.6 */ public static void write(List images, int[] bpp, boolean[] compress, java.io.OutputStream os) throws IOException { LittleEndianOutputStream out = new LittleEndianOutputStream(os); int count = images.size(); //file header 6 writeFileHeader(count, ICOConstants.TYPE_ICON, out); //file offset where images start int fileOffset = 6 + count * 16; List infoHeaders = new java.util.ArrayList(count); List converted = new java.util.ArrayList(count); List compressedImages = null; if (compress != null) { compressedImages = new java.util.ArrayList(count); } javax.imageio.ImageWriter pngWriter = null; //icon entries 16 * count for (int i = 0; i < count; i++) { BufferedImage img = (BufferedImage)images.get(i); int b = bpp == null ? -1 : bpp[i]; //convert image BufferedImage imgc = b == -1 ? img : convert(img, b); converted.add(imgc); //create info header InfoHeader ih = BMPEncoder.createInfoHeader(imgc); //create icon entry IconEntry e = createIconEntry(ih); if (compress != null) { if (compress[i]) { if (pngWriter == null) { pngWriter = getPNGImageWriter(); } byte[] compressedImage = encodePNG(pngWriter, imgc); compressedImages.add(compressedImage); e.iSizeInBytes = compressedImage.length; } else { compressedImages.add(null); } } ih.iHeight *= 2; e.iFileOffset = fileOffset; fileOffset += e.iSizeInBytes; e.write(out); infoHeaders.add(ih); } //images for (int i = 0; i < count; i++) { BufferedImage img = (BufferedImage)images.get(i); BufferedImage imgc = (BufferedImage)converted.get(i); if (compress == null || !compress[i]) { //info header InfoHeader ih = (InfoHeader)infoHeaders.get(i); ih.write(out); //color map if (ih.sBitCount <= 8) { IndexColorModel icm = (IndexColorModel) imgc.getColorModel(); BMPEncoder.writeColorMap(icm, out); } //xor bitmap writeXorBitmap(imgc, ih, out); //and bitmap writeAndBitmap(img, out); } else { byte[] compressedImage = (byte[])compressedImages.get(i); out.write(compressedImage); } //javax.imageio.ImageIO.write(imgc, "png", new java.io.File("test_"+i+".png")); } } /** * Writes the ICO file header for an ICO containing the given number of images. * @param count the number of images in the ICO * @param type one of {@link net.sf.image4j.codec.ico.ICOConstants#TYPE_ICON TYPE_ICON} or * {@link net.sf.image4j.codec.ico.ICOConstants#TYPE_CURSOR TYPE_CURSOR} * @param out the output to which the file header will be written * @throws java.io.IOException if an error occurs */ public static void writeFileHeader(int count, int type, LittleEndianOutputStream out) throws IOException { //reserved 2 out.writeShortLE((short) 0); //type 2 out.writeShortLE((short) type); //count 2 out.writeShortLE((short) count); } /** * Constructs an IconEntry from the given InfoHeader * structure. * @param ih the InfoHeader structure from which to construct the IconEntry structure. * @return the IconEntry structure constructed from the IconEntry structure. */ public static IconEntry createIconEntry(InfoHeader ih) { IconEntry ret = new IconEntry(); //width 1 ret.bWidth = ih.iWidth == 256 ? 0 : ih.iWidth; //height 1 ret.bHeight = ih.iHeight == 256 ? 0 : ih.iHeight; //color count 1 ret.bColorCount = ih.iNumColors >= 256 ? 0 : ih.iNumColors; //reserved 1 ret.bReserved = 0; //planes 2 = 1 ret.sPlanes = 1; //bit count 2 ret.sBitCount = ih.sBitCount; //sizeInBytes 4 - size of infoHeader + xor bitmap + and bitbmap int cmapSize = BMPEncoder.getColorMapSize(ih.sBitCount); int xorSize = BMPEncoder.getBitmapSize(ih.iWidth, ih.iHeight, ih.sBitCount); int andSize = BMPEncoder.getBitmapSize(ih.iWidth, ih.iHeight, 1); int size = ih.iSize + cmapSize + xorSize + andSize; ret.iSizeInBytes = size; //fileOffset 4 ret.iFileOffset = 0; return ret; } /** * Encodes the AND bitmap for the given image according the its alpha channel (transparency) and writes it to the given output. * @param img the image to encode as the AND bitmap. * @param out the output to which the AND bitmap will be written * @throws java.io.IOException if an error occurs. */ public static void writeAndBitmap(BufferedImage img, net.sf.image4j.io.LittleEndianOutputStream out) throws IOException { WritableRaster alpha = img.getAlphaRaster(); //indexed transparency (eg. GIF files) if (img.getColorModel() instanceof IndexColorModel && img.getColorModel().hasAlpha()) { int w = img.getWidth(); int h = img.getHeight(); int bytesPerLine = BMPEncoder.getBytesPerLine1(w); byte[] line = new byte[bytesPerLine]; IndexColorModel icm = (IndexColorModel) img.getColorModel(); Raster raster = img.getRaster(); for (int y = h - 1; y >= 0; y--) { for (int x = 0; x < w; x++) { int bi = x / 8; int i = x % 8; //int a = alpha.getSample(x, y, 0); int p = raster.getSample(x, y, 0); int a = icm.getAlpha(p); //invert bit since and mask is applied to xor mask int b = ~a & 1; line[bi] = setBit(line[bi], i, b); } out.write(line); } } //no transparency else if (alpha == null) { int h = img.getHeight(); int w = img.getWidth(); //calculate number of bytes per line, including 32-bit padding int bytesPerLine = BMPEncoder.getBytesPerLine1(w); byte[] line = new byte[bytesPerLine]; for (int i = 0; i < bytesPerLine; i++) { line[i] = (byte) 0; } for (int y = h - 1; y >= 0; y--) { out.write(line); } } //transparency (ARGB, etc. eg. PNG) else { //BMPEncoder.write1(alpha, cmap, out); int w = img.getWidth(); int h = img.getHeight(); int bytesPerLine = BMPEncoder.getBytesPerLine1(w); byte[] line = new byte[bytesPerLine]; for (int y = h - 1; y >= 0; y--) { for (int x = 0; x < w; x++) { int bi = x / 8; int i = x % 8; int a = alpha.getSample(x, y, 0); //invert bit since and mask is applied to xor mask int b = ~a & 1; line[bi] = setBit(line[bi], i, b); } out.write(line); } } } private static byte setBit(byte bits, int index, int bit) { int mask = 1 << (7 - index); bits &= ~mask; bits |= bit << (7 - index); return bits; } private static void writeXorBitmap(BufferedImage img, InfoHeader ih, LittleEndianOutputStream out) throws IOException { Raster raster = img.getRaster(); switch (ih.sBitCount) { case 1: BMPEncoder.write1(raster, out); break; case 4: BMPEncoder.write4(raster, out); break; case 8: BMPEncoder.write8(raster, out); break; case 24: BMPEncoder.write24(raster, out); break; case 32: Raster alpha = img.getAlphaRaster(); BMPEncoder.write32(raster, alpha, out); break; } } /** * Utility method, which converts the given image to the specified colour depth. * @param img the image to convert. * @param bpp the target colour depth (bits per pixel) for the conversion. * @return the given image converted to the specified colour depth. */ public static BufferedImage convert(BufferedImage img, int bpp) { BufferedImage ret = null; switch (bpp) { case 1: ret = ConvertUtil.convert1(img); break; case 4: ret = ConvertUtil.convert4(img); break; case 8: ret = ConvertUtil.convert8(img); break; case 24: int b = img.getColorModel().getPixelSize(); if (b == 24 || b == 32) { ret = img; } else { ret = ConvertUtil.convert24(img); } break; case 32: int b2 = img.getColorModel().getPixelSize(); if (b2 == 24 || b2 == 32) { ret = img; } else { ret = ConvertUtil.convert32(img); } break; } return ret; } /** * @since 0.6 */ private static javax.imageio.ImageWriter getPNGImageWriter() { javax.imageio.ImageWriter ret = null; java.util.Iterator itr = javax.imageio.ImageIO.getImageWritersByFormatName("png"); if (itr.hasNext()) { ret = (javax.imageio.ImageWriter)itr.next(); } return ret; } /** * @since 0.6 */ private static byte[] encodePNG(ImageWriter pngWriter, BufferedImage img) throws IOException { java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream(); javax.imageio.stream.ImageOutputStream output = javax.imageio.ImageIO.createImageOutputStream(bout); pngWriter.setOutput(output); pngWriter.write(img); bout.flush(); byte[] ret = bout.toByteArray(); return ret; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/net/sf/image4j/codec/ico/ICOImage.java0000644000175000017500000001024611377161311024466 0ustar /* * ICOImage.java * * Created on February 19, 2007, 8:11 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package net.sf.image4j.codec.ico; import net.sf.image4j.codec.bmp.InfoHeader; /** * Contains a decoded ICO image, as well as information about the source encoded ICO image. * @since 0.7 * @author Ian McDonagh */ public class ICOImage extends net.sf.image4j.codec.bmp.BMPImage { protected IconEntry iconEntry; protected boolean pngCompressed = false; protected int iconIndex = -1; /** * Creates a new instance of ICOImage * @param image the BufferedImage decoded from the source ICO image * @param infoHeader the BMP InfoHeader structure for the BMP encoded ICO image * @param iconEntry the IconEntry structure describing the ICO image */ public ICOImage(java.awt.image.BufferedImage image, net.sf.image4j.codec.bmp.InfoHeader infoHeader, IconEntry iconEntry) { super(image, infoHeader); this.iconEntry = iconEntry; } /** * The IconEntry associated with this ICOImage, which provides information * about the image format and encoding. * @return the IconEntry structure */ public IconEntry getIconEntry() { return iconEntry; } /** * Sets the IconEntry associated with this ICOImage. * @param iconEntry the new IconEntry structure to set */ public void setIconEntry(IconEntry iconEntry) { this.iconEntry = iconEntry; } /** * Specifies whether the encoded image is PNG compressed. * @return true if the encoded image is PNG compressed, false if it is plain BMP encoded */ public boolean isPngCompressed() { return pngCompressed; } /** * Sets whether the encoded image is PNG compressed. * @param pngCompressed true if the encoded image is PNG compressed, false if it is plain BMP encoded */ public void setPngCompressed(boolean pngCompressed) { this.pngCompressed = pngCompressed; } /** * The InfoHeader structure representing the encoded ICO image. * @return the InfoHeader structure, or null if there is no InfoHeader structure, which is possible for PNG compressed icons. */ public InfoHeader getInfoHeader() { return super.getInfoHeader(); } /** * The zero-based index for this ICOImage in the source ICO file or resource. * @return the index in the source, or -1 if it is unknown. */ public int getIconIndex() { return iconIndex; } /** * Sets the icon index, which is zero-based. * @param iconIndex the zero-based icon index, or -1 if unknown. */ public void setIconIndex(int iconIndex) { this.iconIndex = iconIndex; } /** * The width of the ICO image in pixels. * @return the width of the ICO image, or -1 if unknown * @since 0.7alpha2 */ public int getWidth() { return iconEntry == null ? -1 : (iconEntry.bWidth == 0 ? 256 : iconEntry.bWidth); } /** * The height of the ICO image in pixels. * @return the height of the ICO image, or -1 if unknown. * @since 0.7alpha2 */ public int getHeight() { return iconEntry == null ? -1 : (iconEntry.bHeight == 0 ? 256 : iconEntry.bHeight); } /** * The colour depth of the ICO image (bits per pixel). * @return the colour depth, or -1 if unknown. * @since 0.7alpha2 */ public int getColourDepth() { return iconEntry == null ? -1 : iconEntry.sBitCount; } /** * The number of possible colours for the ICO image. * @return the number of colours, or -1 if unknown. * @since 0.7alpha2 */ public int getColourCount() { int bpp = iconEntry.sBitCount == 32 ? 24 : iconEntry.sBitCount; return bpp == -1 ? -1 : (int) (1 << bpp); } /** * Specifies whether this ICO image is indexed, that is, the encoded bitmap uses a colour table. * If getColourDepth() returns -1, the return value has no meaning. * @return true if indexed, false if not. * @since 0.7alpha2 */ public boolean isIndexed() { return iconEntry == null ? false : iconEntry.sBitCount <= 8; } } jclic-0.2.1.0.orig/extensions/img/image4j/src/overview.html0000644000175000017500000000203311377161311020430 0ustar

The image4j library allows you to read and write certain image formats using only Java code.

All sub-packages under the codec package provide the implementation for a particular codec. The naming convension is as follows:

ElementDescription
package <codec>Package containing codec implementation
class <codec>DecoderDecoder class
class <codec>EncoderEncoder class

The Decoder and Encoder classes provide various static read and write methods respectively, which provide the functionality for decoding and encoding images.

jclic-0.2.1.0.orig/extensions/img/image4j/license.txt0000644000175000017500000004474011377161311017303 0ustar GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS jclic-0.2.1.0.orig/extensions/dbconn/0000755000175000017500000000000011377161311014256 5ustar jclic-0.2.1.0.orig/extensions/dbconn/config.properties0000644000175000017500000000270611377161311017646 0ustar #Name of the JDBC driver to use #ODBC: sun.jdbc.odbc.JdbcOdbcDriver #PointBase: com.pointbase.jdbc.jdbcUniversalDriver #Oracle: oracle.jdbc.driver.OracleDriver #MySQL: com.mysql.jdbc.Driver #JNDI datasource lookup: JNDI dbDriver=oracle.jdbc.driver.OracleDriver #Path to the database #ODBC: jdbc:odbc:JClicUserReports #PointBase: jdbc:pointbase:jclic #Oracle: jdbc:oracle:thin:@host:1521:db #MySQL: jdbc:mysql://localhost/clic #JNDI: jdbc/JClicPoolDS dbServer=jdbc:odbc:JClicUserReports #Context where to look for the JNDI datasource, used only in JNDI mode #Tomcat: java\:comp/env #Other systems: can be null dbContext= #DB system username and password dbLogin= dbPassword= #Save and reuse PreparedStatement objects dbMapStatements=true #Minimum number of connections to start with. default is 1 dbMinConns=1 #Maximum number of connections in dynamic pool. Default is 3 dbMaxConns=3 #Absolute path name for log file. e.g. 'c:/temp/mylog.log'. #Default is 'pooledConnectionBean.log' in user's home dir. dbLogFile=DBConnection.log #Time in days between connection resets. (Reset does a basic cleanup). Default is 1.0 dbMaxConnDays=1.0 #Append to logfile. Default is true. dbLogAppend=true #Max time a connection can be checked out before being recycled. #Zero value turns option off. Default is 60. dbMaxCheckoutSeconds=60 #Level of debug messages output to the log file. #0 -> no messages, 1 -> Errors, 2 -> Warnings, 3 -> Information. Default is 2. dbDebugLevel=2 jclic-0.2.1.0.orig/extensions/dbconn/build.xml0000644000175000017500000000742411377161311016106 0ustar Copyright © ${year} Francesc Busquets (fbusquets@xtec.net) & Departament d'Educació de la Generalitat de Catalunya (info@xtec.net)
Licensed under the terms of the GNU General Public License

]]>
jclic-0.2.1.0.orig/extensions/dbconn/src/0000755000175000017500000000000011377161311015045 5ustar jclic-0.2.1.0.orig/extensions/dbconn/src/edu/0000755000175000017500000000000011377161311015622 5ustar jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/0000755000175000017500000000000011377161311016565 5ustar jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/0000755000175000017500000000000011377161311017542 5ustar jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/db/0000755000175000017500000000000011377161311020127 5ustar jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/db/ConnectionBean.java0000644000175000017500000002252311377161311023663 0ustar /* * File : ConnectionBean.java * Created : 21-oct-2003 18:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util.db; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Date; import java.util.HashMap; import java.util.Iterator; /** * This class stores an SQL {@link java.sql.Connection} and provides methods to * obtain {@link java.sql.PreparedStatement} objects from it. * ConnectionBean can also store a collection containing all the * PreparedStatement objects, allowing client applications to reuse them. * @author Francesc Busquets */ public class ConnectionBean { private Connection con; private HashMap statements; private Date born; private Date lastUsed; private String lastStatement; private Date closed; /** * This field is used by {@link edu.xtec.util.db.ConnectionBeanProvider} to count * the number of times a ConectionBean has been used. */ public int usageCount; /** * Creates a new instance of ConnectionBean * @param con {@link java.sql.Connection} object in wich this ConnectionBean will be based. * @param mapStatements When set to true, PreparedStatement objects will be stored and reused. */ public ConnectionBean(Connection con, boolean mapStatements) { this.con=con; if(mapStatements) statements=new HashMap(); born=new Date(); } /** * Provides information about the current state of the ConnectionBean. * @return Information string, formatted in HTML. */ public String getInfo(){ StringBuffer sb=new StringBuffer(); sb.append("ConnectionBean ").append(hashCode()); if(statements!=null){ sb.append(" (").append(statements.size()).append(" statements)"); } sb.append("
\n"); sb.append("Created: ").append(born).append("
\n"); sb.append("Usage count: ").append(usageCount).append("
\n"); if(lastUsed==null) sb.append("Not yet used!
\n"); else{ sb.append("Last used: ").append(lastUsed).append("
\n"); sb.append("Last statement: ").append(lastStatement).append("
\n"); } if(closed!=null){ sb.append("Closed: ").append(closed).append("
\n"); } return sb.toString(); } /** * Provides direct access to the {@link java.sql.Connection} object. * @return The {@link java.sql.Connection} object used in this ConnectionBean. */ public Connection getConnection(){ lastUsed=new Date(); return con; } /** * Creates a PreparedStatement based on the current connection and the provided SQL expression.
* Important: Never call the close() method on Prepared statements obtained * from ConnectionBean objects created with the mapStatements option. * @param sql The SQL statement. * @throws SQLException If something goes wrong * @return The {@link java.sql.PreparedStatement} object.
*/ public PreparedStatement getPreparedStatement(String sql) throws SQLException{ if(closed!=null) throw new SQLException("Connection closed!"); lastUsed=new Date(); lastStatement=sql; PreparedStatement stmt=(statements==null) ? null : (PreparedStatement)statements.get(sql); if(stmt==null){ stmt=con.prepareStatement(sql); if(statements!=null) statements.put(sql, stmt); } else{ try{ // try - catch because // odbc.jdbc driver throws NullPoiterException on // PreparedStatement.clearParameters // stmt.clearParameters(); } catch(Exception ex){ // eat exception } } return stmt; } /** * Creates a PreparedStatement based on the current connection and the provided SQL expression.
* Important: Never call the close() method on Prepared statements obtained * from ConnectionBean objects created with the mapStatements option. * @return The {@link java.sql.PreparedStatement} object.
* @param resultSetType A resultSet type. See {@link java.sql.ResultSet}. * @param resultSetConcurrency A concurrency type. See {@link java.sql.ResultSet}. * @param sql The SQL sentence of the PreparedStatemnt. * @throws SQLException If something goes wrong */ public PreparedStatement getPreparedStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException{ if(closed!=null) throw new SQLException("Connection closed!"); lastUsed=new Date(); lastStatement=sql; PreparedStatement stmt=(statements==null) ? null : (PreparedStatement)statements.get(sql); if(stmt==null){ stmt=con.prepareStatement(sql, resultSetType, resultSetConcurrency); if(statements!=null) statements.put(sql, stmt); } else{ try{ // try - catch because // odbc.jdbc driver throws NullPoiterException on PreparedStatement.clearParameters // stmt.clearParameters(); } catch(Exception ex){ // eat exception } } return stmt; } /** * Closes a {@link java.sql.PreparedStatement} object supplied by a previous call * to getPreparedStatement(). Applications should always call this method * when the PreparedStatement is no longer needed, and never directly * call close() in the PreparedStatement. * @param stmt The PreparedStatement to be closed. */ public void closeStatement(PreparedStatement stmt){ closeStatement(stmt, false); } /** * ConnectionBeans created with the mapStatements tag set * to true can reuse {@link java.sql.PreparedStatement} objects between calls. * This method is functionally identical to closeStatement(PreparedStatement), but * has a param that allows to specify if the statement must be really closed. * @param stmt The PreparedStatement to be closed. * @param forceClose When true, the statement will be effectively closed. */ public void closeStatement(PreparedStatement stmt, boolean forceClose){ if(stmt!=null){ if(forceClose || statements==null){ try{ stmt.close(); } catch(Exception ex){ System.err.println("Error closing statement: "+stmt); } } if(statements!=null && forceClose){ Iterator it=statements.keySet().iterator(); while(it.hasNext()){ Object o=it.next(); if(statements.get(o)==stmt){ statements.remove(o); break; } } } } } /** * Clears all the stored {@link java.sql.PreparedStatement} objects (if any) and closes * the {@link java.sql.Connection}. * @throws SQLException If something goes wrong. */ public void closeConnection() throws SQLException{ if(closed==null){ closed=new Date(); if(statements!=null){ Iterator it=statements.keySet().iterator(); while(it.hasNext()){ PreparedStatement stmt=(PreparedStatement)statements.get(it.next()); try{ stmt.close(); } catch(Exception ex){ // Eat Exception } } statements.clear(); } con.close(); } } /** * Getter for property lastStatement. * @return Value of property lastStatement. */ public java.lang.String getLastStatement() { return lastStatement; } /** * Returns the number of {@link java.sql.PreparedStatement} objects stored by this * ConnectionBean. Used only in connection beans created with the mapStatements * param set to true. * @return The number of stored statements. */ public int getNumStatements(){ return statements==null ? 0 : statements.size(); } } jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/db/PooledConnectionBeanProvider.java0000644000175000017500000007633611377161311026554 0ustar /* * File : PooledConnectionBeanProvider.java * Created : 21-oct-2003 20:13 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * Based on DbConnectionBeanBroker. * version 1.0.13 3/12/02 * by Marc A. Mnich * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util.db; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.FileWriter; import java.io.IOException; import java.io.PrintWriter; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.SQLWarning; import java.sql.Statement; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Map; /** Implementation of {@link ConnectionBeanProvider} that uses a pool of * {@link edu.xtec.util.db.ConnectionBean} objects. * Based on DbConnectionBroker 1.0.13, by Marc A. Mnich * @author fbusquets * @version 1.0.13 */ public class PooledConnectionBeanProvider extends ConnectionBeanProvider implements Runnable{ // Additional parameter names /** Key for minimum number of connections to start with. Default is 1. */ public static final String MIN_CONNS = "dbMinConns"; private static final String DEFAULT_MIN_CONNS = "1"; /** Key for maximum number of connections in dynamic pool. Default is 3 */ public static final String MAX_CONNS = "dbMaxConns"; private static final String DEFAULT_MAX_CONNS = "3"; /** Key for absolute path name for log file. e.g. 'c:/temp/mylog.log'. Default is 'pooledConnectionBean.log' in user's dir */ public static final String LOG_FILE="dbLogFile"; private static final String DEFAULT_LOG_FILE="connectionPool.log"; /** Key for time in days between connection resets. (Reset does a basic cleanup). Default is 1.0 */ public static final String MAX_CONN_TIME="dbMaxConnDays"; private static final String DEFAULT_MAX_CONN_TIME="1.0"; /** Key for append to logfile. Default is true.*/ public static final String LOG_APPEND="dbLogAppend"; private static final String DEFAULT_LOG_APPEND="true"; /** Key for max time a connection can be checked out before being recycled. Zero value turns option off. Default is 60.*/ public static final String MAX_CHECKOUT_SECONDS="dbMaxCheckoutSeconds"; private static final String DEFAULT_MAX_CHECKOUT_SECONDS="60"; /** Key for level of debug messages output to the log file. 0 -> no messages, 1 -> Errors, 2 -> Warnings, 3 -> Information. Default is 2. */ public static final String DEBUG_LEVEL="dbDebugLevel"; private static final String DEFAULT_DEBUG_LEVEL="2"; private Thread runner; private ConnectionBean[] connPool; private int[] connStatus; private long[] connLockTime, connCreateDate; private String[] connID; private String logFileString, logPIDFileString; private int currConnections, connLast, minConns, maxConns, maxConnMSec, maxCheckoutSeconds, debugLevel; //available: set to false on destroy, checked by getConnection() private boolean available=true; private PrintWriter log; private SQLWarning currSQLWarning; private String pid; /** * Number of times this ConnectionBean provider has been used since its creation. */ public int globalUsageCount; /** Main initialization function, called immediatelly after constructor by * getConnectionBeanProvider functions. * @param map Collection of key - value pairs that must specify the driver, url, login and * password of the just created ConnectionBeanProvider. * @throws Exception Throwed if dbDriver does not contain a valid driver name, or if it can't be * instantiated. */ protected void setUp(Map map) throws Exception { super.setUp(map); if(dbDriver==null || dbDriver.length()==0) throw new Exception("Parameter dbDriver is null!"); Class.forName(dbDriver); if(dbServer==null || dbServer.length()==0) throw new Exception("Parameter dbServer is null!"); minConns = Math.max(1, Integer.parseInt(getValue(map, MIN_CONNS, DEFAULT_MIN_CONNS))); maxConns = Math.max(minConns, Math.min(15, Integer.parseInt(getValue(map, MAX_CONNS, DEFAULT_MAX_CONNS)))); logFileString = getValue(map, LOG_FILE, DEFAULT_LOG_FILE); double maxConnTime = new Double(getValue(map, MAX_CONN_TIME, DEFAULT_MAX_CONN_TIME)).doubleValue(); boolean logAppend = new Boolean(getValue(map, LOG_APPEND, DEFAULT_LOG_APPEND)).booleanValue(); maxCheckoutSeconds = Integer.parseInt(getValue(map, MAX_CHECKOUT_SECONDS, DEFAULT_MAX_CHECKOUT_SECONDS)); debugLevel = Integer.parseInt(getValue(map, DEBUG_LEVEL, DEFAULT_DEBUG_LEVEL)); connPool = new ConnectionBean[maxConns]; connStatus = new int[maxConns]; connLockTime = new long[maxConns]; connCreateDate = new long[maxConns]; connID = new String[maxConns]; currConnections = minConns; File f=new File(logFileString); if(!f.isAbsolute()){ f=new File(System.getProperty("user.home")); f=new File(f, logFileString); logFileString=f.getAbsolutePath(); } logPIDFileString=logFileString+".pid"; maxConnMSec = (int)(maxConnTime * 86400000.0); //86400 sec/day if(maxConnMSec < 30000) { // Recycle no less than 30 seconds. maxConnMSec = 30000; } if(debugLevel>0){ try { log = new PrintWriter(new FileOutputStream(logFileString, logAppend),true); // Can't open the requested file. Open the default file. } catch (IOException e1) { try { log = new PrintWriter(new FileOutputStream("DBConn_" + System.currentTimeMillis() + ".log", logAppend),true); } catch (IOException e2) { throw new IOException("Can't open any log file"); } } } // Write the pid file (used to clean up dead/broken connection) SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd G 'at' hh:mm:ss a zzz"); Date nowc = new Date(); pid = formatter.format(nowc); BufferedWriter pidout = new BufferedWriter(new FileWriter(logPIDFileString)); pidout.write(pid); pidout.close(); if(log!=null){ log.println("-----------------------------------------"); log.println(new Date()); log.println("Starting DbConnectionBeanBroker Version 1.0.13:"); log.println("dbDriver = " + dbDriver); log.println("dbServer = " + dbServer); log.println("dbLogin = " + dbLogin); log.println("log file = " + logFileString); log.println("minconnections = " + minConns); log.println("maxconnections = " + maxConns); log.println("Total refresh interval = " + maxConnTime + " days"); log.println("logAppend = " + logAppend); log.println("maxCheckoutSeconds = " + maxCheckoutSeconds); log.println("debugLevel = " + debugLevel); log.println("mapStatements = " + mapStatements); log.println("-----------------------------------------"); } // Initialize the pool of connections with the mininum connections: // Problems creating connections may be caused during reboot when the // servlet is started before the database is ready. Handle this // by waiting and trying again. The loop allows 5 minutes for // db reboot. boolean connectionsSucceeded=false; Exception sqlEx=null; //int dbLoop=20; int dbLoop=3; try { for(int i=1; i < dbLoop; i++) { try { for(int j=0; j < currConnections; j++) { createConn(j); } connectionsSucceeded=true; break; } catch (SQLException e){ sqlEx=e; if(log!=null && debugLevel > 0) { StringBuffer sb=new StringBuffer(); sb.append(new Date()).append(" ->Attempt (").append(i); sb.append(" of ").append(dbLoop).append(") failed to create new connections set at startup:\n"); sb.append(e).append("\n"); sb.append("Will try again in 15 seconds..."); log.println(sb.substring(0)); } try { Thread.sleep(15000); } catch(InterruptedException e1) {} } } if(!connectionsSucceeded) { // All attempts at connecting to db exhausted if(log!=null && debugLevel > 0) { log.println("\r\nAll attempts at connecting to Database exhausted"); } if(sqlEx==null) sqlEx=new IOException("Unable to connect to Database"); throw sqlEx; } } catch (Exception e) { throw e; //throw new IOException(); } // Fire up the background housekeeping thread runner = new Thread(this); runner.start(); }//End DbConnectionBeanBroker() /** * Housekeeping thread. Runs in the background with low CPU overhead. * Connections are checked for warnings and closure and are periodically * restarted. * This thread is a catchall for corrupted * connections and prevents the buildup of open cursors. (Open cursors * result when the application fails to close a Statement). * This method acts as fault tolerance for bad connection/statement programming. */ public void run() { boolean forever = true; Statement stmt=null; String currCatalog=null; long maxCheckoutMillis = maxCheckoutSeconds * 1000; while(forever) { /* * CHECK OF PID DISABLED * FileReader fr=null; BufferedReader in=null; // Make sure the log file is the one this instance opened // If not, clean it up! try { fr=new FileReader(logPIDFileString); in = new BufferedReader(fr); String curr_pid = in.readLine(); if(curr_pid.equals(pid)) { //log.println("They match = " + curr_pid); } else { //log.println("No match = " + curr_pid); if(log!=null) log.close(); // Close all connections silently - they are definitely dead. for(int i=0; i < currConnections; i++) { try { connPool[i].closeConnection(); } catch (SQLException e1) {} // ignore } // Returning from the run() method kills the thread return; } // moved to "finally" //in.close(); } catch (IOException e1) { if(log!=null){ log.print(new Date().toString() + "Can't read the file for pid info: " + logPIDFileString + " - "); log.println(e1.getMessage()); } } finally{ try{ if(in!=null) in.close(); if(fr!=null) fr.close(); in=null; fr=null; } catch(IOException ex){ // ignore exceptions on close } } */ // Get any Warnings on connections and print to event file for(int i=0; i < currConnections; i++) { try { currSQLWarning = connPool[i].getConnection().getWarnings(); if(currSQLWarning != null) { if(log!=null && debugLevel > 1) { log.println(new Date().toString()+" - Warnings on connection " + String.valueOf(i) + " " + currSQLWarning); } connPool[i].getConnection().clearWarnings(); } } catch(SQLException e) { if(log!=null && debugLevel > 1) { log.println("Cannot access Warnings: " + e); } } } for(int i=0; i < currConnections; i++) { // Do for each connection long age = System.currentTimeMillis() - connCreateDate[i]; try { // Test the connection with createStatement call synchronized(connStatus) { if(connStatus[i] > 0) { // In use, catch it next time! // Check the time it's been checked out and recycle long timeInUse = System.currentTimeMillis() - connLockTime[i]; if(log!=null && debugLevel > 2) { log.println(new Date().toString()+" - Warning. Connection " + i + " in use for " + timeInUse + " ms"); } if(maxCheckoutMillis != 0) { if(timeInUse > maxCheckoutMillis) { if(log!=null && debugLevel > 1) { log.println(new Date().toString()+" Warning. Connection " + i + " failed to be returned in time. Recycling..."); } throw new SQLException(); } } continue; } connStatus[i] = 2; // Take offline (2 indicates housekeeping lock) } if(age > maxConnMSec) { // Force a reset at the max conn time throw new SQLException(); } stmt = connPool[i].getConnection().createStatement(); connStatus[i] = 0; // Connection is O.K. //log.println("Connection confirmed for conn = " + // String.valueOf(i)); // Some DBs return an object even if DB is shut down if(connPool[i].getConnection().isClosed()) { throw new SQLException(); } // Connection has a problem, restart it } catch(SQLException e) { if(log!=null && debugLevel > 1) { log.println(new Date().toString() + " ***** Recycling connection " + String.valueOf(i) + ":"); } try { connPool[i].closeConnection(); } catch(SQLException e0) { if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" - Error! Can't close connection! Might have been closed already. Trying to recycle anyway... (" + e0 + ")"); } } try { createConn(i); } catch(SQLException e1) { if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" - Failed to create connection: " + e1); } connStatus[i] = 0; // Can't open, try again next time } } finally { try{ if(stmt != null) { stmt.close(); } } catch(SQLException e1){ }; } } try { Thread.sleep(20000); // Wait 20 seconds for next cycle } catch(InterruptedException e) { // Returning from the run method sets the internal // flag referenced by Thread.isAlive() to false. // This is required because we don't use stop() to // shutdown this thread. return; } } } // End run /** This method hands out the connections in round-robin order. * This prevents a faulty connection from locking * up an application entirely. A browser 'refresh' will * get the next connection while the faulty * connection is cleaned up by the housekeeping thread. * * If the min number of threads are ever exhausted, new * threads are added up the the max thread count. * Finally, if all threads are in use, this method waits * 2 seconds and tries again, up to ten times. After that, it * returns a null. * @return The ConnectionBean object, ready to be used. Remember to free it using * freeConnectionBean, as explained in {@link * ConnectionBeanProvider#freeConnectionBean} ConnectionBeanProvider. */ public ConnectionBean getConnectionBean() { ConnectionBean conn=null; if(available){ boolean gotOne = false; for(int outerloop=1; outerloop<=10; outerloop++) { try { int loop=0; int roundRobin = connLast + 1; if(roundRobin >= currConnections) roundRobin=0; do { synchronized(connStatus) { if((connStatus[roundRobin] < 1) && (!connPool[roundRobin].getConnection().isClosed())) { conn = connPool[roundRobin]; connStatus[roundRobin]=1; connLockTime[roundRobin] = System.currentTimeMillis(); connLast = roundRobin; gotOne = true; break; } else { loop++; roundRobin++; if(roundRobin >= currConnections) roundRobin=0; } } } while((gotOne==false)&&(loop < currConnections)); } catch (SQLException e1) { if(log!=null) log.println(new Date().toString()+" - Error: " + e1); } if(gotOne) { break; } else { synchronized(this) { // Add new connections to the pool if(currConnections < maxConns) { try { createConn(currConnections); currConnections++; } catch(SQLException e) { if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" - Error: Unable to create new connection: " + e); } } } } try { Thread.sleep(2000); } catch(InterruptedException e) { } if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" --> Connections Exhausted! Will wait and try again in loop " + String.valueOf(outerloop)); } } } // End of try 10 times loop } else { if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" - Unsuccessful getConnection() request during destroy()"); } } // End if(available) if(log!=null && debugLevel > 2) { log.println(new Date().toString()+" - Handing out connection " + idOfConnection(conn)); } if(conn!=null) conn.usageCount++; return conn; } /** Returns the local JDBC ID for a connection. * @param conn The ConnectionBean owner if the Connection. * @return The JDBC ID. */ public int idOfConnection(ConnectionBean conn) { int match; String tag; try { tag = conn.getConnection().toString(); } catch (NullPointerException e1) { tag = "none"; } match=-1; for(int i=0; i< currConnections; i++) { if(connID[i].equals(tag)) { match = i; break; } } return match; } /** Frees a connection. Replaces connection back into the main pool for * reuse. * @param conn The ConnectionBean to be released. * @return A String useful only for debug purposes. */ public String freeConnectionBean(ConnectionBean conn) { StringBuffer res=new StringBuffer(); int thisconn = idOfConnection(conn); if(thisconn >= 0) { connStatus[thisconn]=0; res.append("freed ").append(conn.getConnection().toString()); //log.println("Freed connection " + String.valueOf(thisconn) + // " normal exit: "); } else { if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" --> Error: Could not free connection!!!"); } } return res.substring(0); } /** Returns the age of a connection -- the time since it was handed out to * an application. * @param conn The ConnectionBean to be examined. * @return The age of the Connection, measured in milliseconds. */ public long getAge(ConnectionBean conn) { // Returns the age of the connection in millisec. int thisconn = idOfConnection(conn); return System.currentTimeMillis() - connLockTime[thisconn]; } private void createConn(int i) throws SQLException { if(connPool[i]!=null){ globalUsageCount+=connPool[i].usageCount; } Date now = new Date(); try { Class.forName(dbDriver); connPool[i] = new ConnectionBean(DriverManager.getConnection (dbServer,dbLogin,dbPassword), mapStatements); connStatus[i]=0; connID[i]=connPool[i].getConnection().toString(); connLockTime[i]=0; connCreateDate[i] = now.getTime(); } catch (ClassNotFoundException e2) { if(log!=null && debugLevel > 0) { log.println(now.toString()+" - Error creating connection: " + e2); } } if(log!=null) log.println(now.toString() + " Opening connection " + String.valueOf(i) + " " + connPool[i].getConnection().toString() + ":"); } /** * Shuts down the housekeeping thread and closes all connections * in the pool. Call this method from the destroy() method of the servlet. */ /** * Multi-phase shutdown. having following sequence: *
    *
  1. getConnection() will refuse to return connections. *
  2. The housekeeping thread is shut down.
    * Up to the time of millis milliseconds after shutdown of * the housekeeping thread, freeConnection() can still be * called to return used connections. *
  3. After millis milliseconds after the shutdown of the * housekeeping thread, all connections in the pool are closed. *
  4. If any connections were in use while being closed then a * SQLException is thrown. *
  5. The log is closed. *

* Call this method from a servlet destroy() method. * * @param millis the time to wait in milliseconds. * @exception SQLException if connections were in use after * millis. */ public void destroy(int millis) throws SQLException { // Checking for invalid negative arguments is not necessary, // Thread.join() does this already in runner.join(). // Stop issuing connections available=false; // Shut down the background housekeeping thread runner.interrupt(); // Wait until the housekeeping thread has died. try { runner.join(millis); } catch(InterruptedException e){} // ignore // The housekeeping thread could still be running // (e.g. if millis is too small). This case is ignored. // At worst, this method will throw an exception with the // clear indication that the timeout was too short. long startTime=System.currentTimeMillis(); // Wait for freeConnection() to return any connections // that are still used at this time. int useCount; while((useCount=getUseCount())>0 && System.currentTimeMillis() - startTime <= millis) { try { Thread.sleep(500); } catch(InterruptedException e) {} // ignore } // Close all connections, whether safe or not for(int i=0; i < currConnections; i++) { try { connPool[i].closeConnection(); } catch (SQLException e1) { if(log!=null && debugLevel > 0) { log.println(new Date().toString()+" - Cannot close connections on Destroy"); } } } if(useCount > 0) { //bt-test successful String msg=new Date().toString()+" - Unsafe shutdown: Had to close "+useCount+ " active DB connections after "+millis+"ms"; if(log!=null){ log.println(msg); // Close all open files log.close(); } // Throwing following Exception is essential because servlet authors // are likely to have their own error logging requirements. throw new SQLException(msg); } // Close all open files if(log!=null) log.close(); }//End destroy() /** * Less safe shutdown. Uses default timeout value. * This method simply calls the destroy() method * with a millis * value of 10000 (10 seconds) and ignores SQLException * thrown by that method. * @see #destroy(int) */ protected void destroy() { try { destroy(10000); } catch(SQLException e) {} } /** Returns the number of connections in use. * @return The nomber of ConnectionBean objects in use. */ // This method could be reduced to return a counter that is // maintained by all methods that update connStatus. // However, it is more efficient to do it this way because: // Updating the counter would put an additional burden on the most // frequently used methods; in comparison, this method is // rarely used (although essential). public int getUseCount() { int useCount=0; synchronized(connStatus) { for(int i=0; i < currConnections; i++) { if(connStatus[i] > 0) { // In use useCount++; } } } return useCount; } /** Returns the number of connections in the dynamic pool. * @return The number of ConnectionBean objects created. */ public int getSize() { return currConnections; } /** Provides information about the current state of this ConnectionBeanProvider. * @return Information string, formatted in HTML. */ public String getInfo(){ int totalUsageCount=globalUsageCount; StringBuffer sb=new StringBuffer(); sb.append("PooledConnectionBeanProvider ").append(hashCode()).append("
\n"); sb.append(super.getInfo()); sb.append("PID: ").append(pid).append("
\n"); sb.append("LogFileString: ").append(logFileString).append("
\n"); sb.append("currConnections: ").append(currConnections).append("
\n"); sb.append("connLast: ").append(connLast).append("
\n"); sb.append("minConns: ").append(minConns).append("
\n"); sb.append("maxConns: ").append(maxConns).append("
\n"); sb.append("maxConnMSec: ").append(maxConnMSec).append("
\n"); sb.append("maxCheckoutSeconds: ").append(maxCheckoutSeconds).append("
\n"); sb.append("debugLevel: ").append(debugLevel).append("
\n"); sb.append("CURRENT CONNECTIONS:
\n"); sb.append("
\n"); for(int i=0; i\n"); else{ sb.append("Id: "+connID[i]+"
\n"); sb.append("Status: "+connStatus[i]+"
\n"); sb.append("LockTime: "+connLockTime[i]+"
\n"); sb.append("CreateDate: "+new Date(connCreateDate[i])+"
\n"); sb.append("------------\n"); sb.append(cb.getInfo()); totalUsageCount+=cb.usageCount; } sb.append("
\n"); } sb.append("TOTAL STATEMENTS USED: ").append(totalUsageCount).append("
\n"); return sb.substring(0); } } jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/db/ConnectionBeanProvider.java0000644000175000017500000003570311377161311025402 0ustar /* * File : ConnectionBeanProvider.java * Created : 21-oct-2003 18:18 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util.db; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.HashMap; import java.util.Iterator; import java.util.Map; /** * Classes that extended this abstract class provide {@link edu.xtec.util.db.ConnectionBean} * objects to clients. It also provides a static method to create ConnectionBeanProvider objects * based on different parameters, and stores a map containing all the created * objects, in order to reuse them between different instances or applications * sharing the same JVM. * @author fbusquets */ public abstract class ConnectionBeanProvider { /** Tag used in properties to identify the JDBC driver used in the connections * to the database. */ public static final String DB_DRIVER="dbDriver"; /** Tag used in properties to identify the server used in connections */ public static final String DB_SERVER="dbServer"; /** Tag used in properties to identify the login name used in connections. */ public static final String DB_LOGIN="dbLogin"; /** Tag used in properties to identify the password used in connections. */ public static final String DB_PASSWORD="dbPassword"; /** * Tag used in properties to determine if the {@link edu.xtec.util.db.ConnectionBean} * objects created must store and reuse {@link java.sql.PreparedStatement} objects. */ public static final String MAP_STATEMENTS="dbMapStatements"; /** Tag used for true */ public static final String TRUE = "true"; /** Tag used for false */ public static final String FALSE="false"; /** * Name of the JDBC driver used in Connection objects */ protected String dbDriver; /** * Name of the JDBC url used in Connection objects */ protected String dbServer; /** Name of the user used in Connection objects. */ protected String dbLogin; /** * Password used in JDBC Connection objects. */ protected String dbPassword; /** * When true, the {@link edu.xtec.util.db.ConnectionBean} objects created will store and reuse * prepared statements. */ protected boolean mapStatements; private int useCount; private static HashMap cbProviders; /** * Main initialization function. Must be called immediatelly after constructor by * getConnectionBeanProvider functions. * @param map Collection of key - value pairs that must specify the driver, url, login and * password of the just created ConnectionBeanProvider. * @throws Exception Throwed if dbDriver does not contain a valid driver name, or if it can't be * instantiated. */ protected void setUp(Map map) throws Exception{ dbDriver = getValue(map, DB_DRIVER, null); dbServer = getValue(map, DB_SERVER, null); dbLogin = getValue(map, DB_LOGIN, null); dbPassword = getValue(map, DB_PASSWORD, null); mapStatements = !FALSE.equals(getValue(map, MAP_STATEMENTS, TRUE)); useCount=0; } /** This is the main function that all ConnectionbeanProvider objects must * implement.

* Important: You must ever call FreeConnectionBean after the use of the ConnectionBean * object. Typical inmplementation use a try - catch - finally statement block in * order to ensure that all ConnectionBean objects will be properly disposed after * use.

* Example:

*

     * ConectionBeanProvider cbp;
     * java.util.Properties prop=new Java.util.Properties();
     * // ...
     * // ... fill-up properties with values for dbDriver, dbServer, dbLogin, etc.
     * // ...
     * cbp=ConnectionBeanProvider.getConnectionBeanProvider(map);
     * ConnectionBean cb=cbp.getConnectionBean();
     * try {
     *  // ... use of the ConnectionBean object
     * } catch(Exception ex){
     *  // ... process possible exceptions done while database access
     * } finally {
     *  // Very important: free the ConnectionBean object:
     *  cbp.freeConnectionBean(cb);
     * }
     * 
* @return A ready-to-use ConnectionBean. Remember to return it by calling * FreeConnectionBean. */ public abstract ConnectionBean getConnectionBean(); /** This method must be called when the obtained ConnectionBean is no longer needed, * usualy inside the finally block of a try - catch statement. * @param conn The ConnectionBean object to be disposed * @return A descriptive String, useful only for debug purposes. */ public abstract String freeConnectionBean(ConnectionBean conn); /** * This method will be called before finalization. Implementations of * ConnectionBeanProvider must perform cleanup operations on all opened * connections. */ protected abstract void destroy(); /** * Provides information about the current state of this ConnectionBeanProvider. * @return Information string, formatted in HTML. */ public String getInfo(){ StringBuffer sb=new StringBuffer(); sb.append(DB_DRIVER).append(": ").append(dbDriver).append("
\n"); sb.append(DB_SERVER).append(": ").append(dbServer).append("
\n"); sb.append(DB_LOGIN).append(": ").append(dbLogin).append("
\n"); sb.append(MAP_STATEMENTS).append(": ").append(mapStatements).append("
\n"); sb.append("Use count:").append(useCount).append("
\n"); return sb.substring(0); } /** * Provides information about all the ConnectionBeanProvider objects currently * existing. * @return Information string, formatted in HTML. */ public static String getGlobalInfo(){ StringBuffer sb=new StringBuffer(); if(cbProviders==null) cbProviders=new HashMap(2); sb.append("").append(cbProviders.size()).append(" ConnectionBeanProviders created
\n"); Iterator it=cbProviders.keySet().iterator(); while(it.hasNext()){ ConnectionBeanProvider cbp=(ConnectionBeanProvider)cbProviders.get(it.next()); sb.append("
\n"); sb.append(cbp.getInfo()); } return sb.substring(0); } /** * Method used to build a ConnectionBeanProvider. The current * implementations returns a {@link edu.xtec.util.db.SingleConnectionBeanProvider} if mapStatements * is false. Otherwise, it checks the value of dbDriverName to return a * {@link PooledConnectionBeanProvider} or a {@link * edu.xtec.util.db.JNDIConnectionBeanProvider}. * @param pooled Determines the type of ConnectionbeanProvider to be created: pooled or simple. * @param dbDriver Name of the JDBC driver to be used. When this param is "JNDI", a * {@link edu.xtec.util.db.JNDIConnectionBeanProvider} will be created. * @param dbServer Path to the JDBC source or JNDI datasource to be used. * @param dbLogin User name to be used in JDB connections. * @param dbPassword Password to be used in JDBC connections. * @param mapStatements When true, the created {@link edu.xtec.util.db.ConnectionBean} * objects will reuse PreparedStatements. * @throws Exception If something goes wrong. * @return The ConnectionBean object. */ public static ConnectionBeanProvider getConnectionBeanProvider(boolean pooled, String dbDriver, String dbServer, String dbLogin, String dbPassword, boolean mapStatements) throws Exception{ HashMap map=new HashMap(); map.put(DB_DRIVER, dbDriver); map.put(DB_SERVER, dbServer); map.put(DB_LOGIN, dbLogin); map.put(DB_PASSWORD, dbPassword); map.put(MAP_STATEMENTS, mapStatements ? TRUE : FALSE); return getConnectionBeanProvider(pooled, map); } /** * This method calls the many-params version of getConnectionBeanProvider(), * extracting the needed parameters from the map. * @param map Collection containing all the key - value pairs needed to create the * ConnectionBeanProvider object. * @param pooled Determines the type of ConnectionbeanProvider to be created: pooled or simple. * @throws Exception If something goes wrong. * @return The requested ConnectionBeanProvider object. */ public static ConnectionBeanProvider getConnectionBeanProvider(boolean pooled, Map map) throws Exception{ ConnectionBeanProvider result=null; String staticDbDriver=(String)map.get(DB_DRIVER); String staticDbServer=(String)map.get(DB_SERVER); String staticDbLogin=(String)map.get(DB_LOGIN); StringBuffer kb=new StringBuffer(); kb.append(staticDbDriver).append("@"); kb.append(staticDbServer).append("@"); kb.append(staticDbLogin).append("@"); kb.append(pooled ? "POOLED" : "DIRECT"); String ks=kb.substring(0); if(cbProviders==null) cbProviders=new HashMap(2); Iterator it=cbProviders.keySet().iterator(); while(it.hasNext()){ Object o=it.next(); if(o!=null && o.equals(ks)){ result=(ConnectionBeanProvider)cbProviders.get(o); break; } } if(result==null){ if(JNDIConnectionBeanProvider.JNDI.equals(staticDbDriver)) result=new JNDIConnectionBeanProvider(); else if(pooled) result=new PooledConnectionBeanProvider(); else result=new SingleConnectionBeanProvider(); result.setUp(map); cbProviders.put(ks, result); } result.useCount++; result.readDBSettings(map); return result; } /** Use this method when a ConectionbeanProvider is no longer needed. * ConnectionBeanProvider objects are stored into a static collection, so they can * be reused when multiple classes (or multiple instances of the same class) need * them. The ConnectionBeanProvider object will be destroyed only when a internal * counter decreases to zero. * @param cbp The ConnectionBeanProvider to be released. */ public static void freeConnectionBeanProvider(ConnectionBeanProvider cbp){ if(cbp!=null && cbProviders!=null){ Iterator it=cbProviders.keySet().iterator(); while(it.hasNext()){ String s=(String)it.next(); ConnectionBeanProvider o=(ConnectionBeanProvider)cbProviders.get(s); if(o!=null && o.equals(cbp) && --cbp.useCount<=0){ cbp.destroy(); cbProviders.remove(s); break; } } } } /** * Useful method used to retrieve a value from a Map using a default value when not * found, or when found with null value. * @param map The map where to search for * @param key The key to be searched * @param defaultValue Value returned when not found or null * @return The String associated with the specified key, or the defaultValue if not found. */ protected String getValue(Map map, String key, String defaultValue){ String result=(String)map.get(key); if(result==null || result.trim().length()==0) result=defaultValue; return result; } /** * Key for the name of the database table that contains key-value pairs of settings */ public static final String SETTINGS_TABLE_KEY="SETTINGS_TABLE"; /** * Default name for the settings table */ public static final String DEFAULT_SETTINGS_TABLE = "SETTINGS"; /** * All the settings with this value will be read from the database */ public static final String READ_FROM_DATABASE="READ_FROM_DATABASE"; /** * This function looks inside a map for entries with the value "READ_FROM_DATABASE". * All settings with this text will be replaced with the value stored in a * table names "SETTINGS" (or with the name specified in the map with the key * "SETTINGS_TABLE"). This table must contain at least two fields: "SETTING_KEY" * and "SETTING_VALUE". * @param map The map to be processed * @throws Exception If the database is not accessible. */ public void readDBSettings(Map map) throws Exception{ Exception exception=null; String settingsTable=getValue(map, SETTINGS_TABLE_KEY, DEFAULT_SETTINGS_TABLE); if(settingsTable!=null && map.containsValue(READ_FROM_DATABASE)){ edu.xtec.util.db.ConnectionBean con=null; PreparedStatement stmt=null; ResultSet rs=null; try{ con=getConnectionBean(); String sql= "SELECT SETTING_VALUE"+ " FROM "+settingsTable+ " WHERE SETTING_KEY=?"; stmt=con.getPreparedStatement(sql); Iterator it=map.keySet().iterator(); while(it.hasNext()){ String key=(String)it.next(); String value=(String)map.get(key); if(READ_FROM_DATABASE.equals(value)){ stmt.setString(1, key); rs=stmt.executeQuery(); if(rs.next()){ value=rs.getString(1); map.put(key, value); } } } } catch(Exception ex) { exception=ex; } finally { if(rs!=null) rs.close(); if(stmt!=null && con!=null) con.closeStatement(stmt); if(con!=null) freeConnectionBean(con); } } if(exception!=null) throw exception; } } jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/db/JNDIConnectionBeanProvider.java0000644000175000017500000002045611377161311026046 0ustar /* * File : JNDIConnectionBeanProvider.java * Created : 10-nov-2005 19:28 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util.db; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.util.Date; import java.util.Map; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource; /** * This class is a special {@link edu.xtec.util.db.ConnectionBeanProvider} that obtains * the {@link java.sql.Connection} objects from a JNDI datasource. In order to * obtain objects of this class, the static method getConnectionBeanProvider of * ConnectionBeanProvider must be called, passing the text JNDI as * value of the dbDriver parameter, and the JNDI name of the datasource * as the value of dbServer param. * @author fbusquet * @version 1.0 */ public class JNDIConnectionBeanProvider extends ConnectionBeanProvider{ /** * Key used for the dbContext property */ public static final String DB_CONTEXT="dbContext"; /** * String "JNDI", used to indicate ConnectionBeanProvider that an * object of this class is required. */ public static final String JNDI="JNDI"; /** * Object used to obtain valid {@link java.sql.Connection} objects. */ protected DataSource ds; /** * Context where to look for the indicated JNDI resource. In Apache Tomcat, this value should be * java:comp/env. */ protected String dbContext; private int totalCBRequests; private Date started; private Date lastUse; private String logFileString; private PrintWriter log; private int debugLevel; private int totalStatements; private String lastRequest; /** Creates a new instance of JNDIConnectionBeanProvider */ public JNDIConnectionBeanProvider() { } /** * Main initialization function, called immediatelly after constructor by * getConnectionBeanProvider functions. * @param map Collection of key - value pairs that must specify the JNDI Datasource name and * context params. * @throws Exception Throwed if the DataSource can't be * instantiated. */ protected void setUp(Map map) throws Exception{ super.setUp(map); started=new Date(); dbDriver=JNDI; if(dbServer==null) throw new Exception("JNDI datasource name not specified!"); dbContext = getValue(map, DB_CONTEXT, null); debugLevel = Integer.parseInt(getValue(map, "dbDebugLevel", "2")); if(debugLevel>0){ try{ logFileString = getValue(map, "dbLogFile", null); if(logFileString!=null){ File f=new File(logFileString); if(!f.isAbsolute()){ f=new File(System.getProperty("user.home")); f=new File(f, logFileString); logFileString=f.getAbsolutePath(); } boolean logAppend = new Boolean(getValue(map, "dbLogAppend", "true")).booleanValue(); log = new PrintWriter(new FileOutputStream(logFileString, logAppend),true); } } catch(IOException ioex){ System.err.println(new Date().toString()+" - Error creating log file for JNDIConnectionProvider - "+ioex); } } Context ctx=new InitialContext(); if(dbContext!=null && dbContext.trim().length()>0) ctx=(Context)ctx.lookup(dbContext); ds=(DataSource)ctx.lookup(dbServer); if(log!=null){ log.println("-----------------------------------------"); log.println(started); log.println("Starting JNDIConnectionBeanProvider"); log.println("dbContext = " + dbContext); log.println("dbServer = " + dbServer); log.println("Context = " + ctx); log.println("Datasource = " + ds); log.println("-----------------------------------------"); } } /** Provides information about the current state of this ConnectionBeanProvider. * @return Information string, formatted in HTML. */ public String getInfo(){ StringBuffer sb=new StringBuffer(); sb.append("JNDIConnectionBeanProvider ").append(hashCode()).append("
\n"); sb.append(super.getInfo()); sb.append("started: ").append(started).append("
\n"); sb.append("dbContext: ").append(dbContext).append("
\n"); sb.append("Total requests: ").append(totalCBRequests).append("
\n"); sb.append("Total statements: ").append(totalStatements).append("
\n"); sb.append("Last use: ").append(lastUse).append("
\n"); sb.append("Last request: ").append(lastRequest).append("
\n"); return sb.toString(); } /** * Performs cleanup */ protected void destroy() { } /** This method must be called when the obtained ConnectionBean is no longer needed, * usualy inside the finally block of a try - catch statement. * @param conn The ConnectionBean object to be disposed * @return A descriptive String, useful only for debug purposes. */ public String freeConnectionBean(ConnectionBean conn) { if(conn!=null){ try{ lastRequest=conn.getLastStatement(); totalStatements+=conn.getNumStatements(); conn.closeConnection(); } catch(Exception ex){ if(log!=null) log.println(new Date().toString() + " Unable to close DB connection: "+ex); } } return ""; } /** This is the main function that all ConnectionbeanProvider objects must * implement.

* Important: You must ever call FreeConnectionBean after the use of the ConnectionBean * object. Typical inmplementation use a try - catch - finally statement block in * order to ensure that all ConnectionBean objects will be properly disposed after * use.

* Example:

*

     * ConectionBeanProvider cbp;
     * java.util.Properties prop=new Java.util.Properties();
     * // ...
     * // ... fill-up properties with values for dbDriver, dbServer, dbLogin, etc.
     * // ...
     * cbp=ConnectionBeanProvider.getConnectionBeanProvider(map);
     * ConnectionBean cb=cbp.getConnectionBean();
     * try {
     *  // ... use of the ConnectionBean object
     * } catch(Exception ex){
     *  // ... process possible exceptions done while database access
     * } finally {
     *  // Very important: free the ConnectionBean object:
     *  cbp.freeConnectionBean(cb);
     * }
     * 
* @return A ready-to-use ConnectionBean. Remember to return it by calling * FreeConnectionBean. */ public ConnectionBean getConnectionBean() { ConnectionBean result=null; try{ if(ds!=null){ Connection con=ds.getConnection(); result=new ConnectionBean(con, mapStatements); totalCBRequests++; lastUse=new Date(); } if(log!=null && debugLevel>2) log.println(new Date().toString()+" - connection request"); } catch(Exception ex){ if(log!=null) log.println(new Date().toString() + " Unable to get DB connection: "+ex.getMessage()); } return result; } } jclic-0.2.1.0.orig/extensions/dbconn/src/edu/xtec/util/db/SingleConnectionBeanProvider.java0000644000175000017500000000703311377161311026537 0ustar /* * File : SingleConnectionBeanProvider.java * Created : 21-oct-2003 19:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util.db; import java.sql.Connection; import java.sql.DriverManager; import java.util.Map; /** A single ConnectionBeanProvider, that uses only one single connection to the * database, in a single ConnectionBean. * @author fbusquet */ public class SingleConnectionBeanProvider extends ConnectionBeanProvider{ private Connection con; private ConnectionBean conBean; /** Main initialization function, called immediatelly after constructor by * getConnectionBeanProvider functions. * @param map Collection of key - value pairs that must specify the driver, url, login and * password of the just created ConnectionBeanProvider. * @throws Exception Throwed if dbDriver does not contain a valid driver name, or if it can't be * instantiated. */ protected void setUp(Map map) throws Exception{ super.setUp(map); if(dbDriver==null || dbDriver.length()==0) throw new Exception("Parameter dbDriver is null!"); Class.forName(dbDriver); if(dbServer==null || dbServer.length()==0) throw new Exception("Parameter dbServer is null!"); if(dbLogin!=null && dbLogin.length()>0){ con=DriverManager.getConnection(dbServer, dbLogin, dbPassword==null ? "":dbPassword); } else{ con=DriverManager.getConnection(dbServer); } conBean=new ConnectionBean(con, mapStatements); } /** Closes the jdbc connection and frees the unique ConnectionBean. */ protected void destroy() { if(conBean!=null) conBean=null; if(con!=null){ try{ con.close(); } catch(Exception ex){ } con=null; } } /** Provides information about the current state of this ConnectionBeanProvider. * @return Information string, formatted in HTML. */ public String getInfo(){ StringBuffer sb=new StringBuffer(); sb.append("SingleConnectionBeanProvider ").append(hashCode()).append("
\n"); sb.append(super.getInfo()); sb.append(conBean.getInfo()); return sb.toString(); } /** This method does nothing in this implementation of ConnectionBeanProvider, * because only one ConnectionBean is reused for all getConnectionBean * calls. * @param conn The Connectionbean to be released. * @return A zero-length string. */ public String freeConnectionBean(ConnectionBean conn) { // Do nothing return ""; } /** Returns the ConnectionBean object. * @return The ConnectionBean object. */ public ConnectionBean getConnectionBean() { return conBean; } } jclic-0.2.1.0.orig/extensions/soundspi/0000755000175000017500000000000011377161311014657 5ustar jclic-0.2.1.0.orig/extensions/soundspi/catalog/0000755000175000017500000000000011377161311016271 5ustar jclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/0000755000175000017500000000000011377161311017431 5ustar jclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/0000755000175000017500000000000011377161311021254 5ustar ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/javax.sound.sampled.spi.FormatConversionProviderjclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/javax.sound.sampled.spi.FormatConve0000644000175000017500000000057511377161311030106 0ustar # for the javalayer mp3 decoder javazoom.spi.mpeg.sampled.convert.MpegFormatConversionProvider # for the javalayer mp3 decoder # and the lame mp3 encoder org.tritonus.sampled.convert.javalayer.MpegFormatConversionProvider org.tritonus.sampled.convert.lame.Mp3LameFormatConversionProvider # for the jorbis decoder org.tritonus.sampled.convert.jorbis.JorbisFormatConversionProvider ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/javax.sound.sampled.spi.AudioFileWriterjclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/javax.sound.sampled.spi.AudioFileWr0000644000175000017500000000011711377161311030025 0ustar # for the lame mp3 encoder org.tritonus.sampled.file.mpeg.MpegAudioFileWriter ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/javax.sound.sampled.spi.AudioFileReaderjclic-0.2.1.0.orig/extensions/soundspi/catalog/META-INF/services/javax.sound.sampled.spi.AudioFileRe0000644000175000017500000000032611377161311030005 0ustar # for the javalayer mp3 decoder javazoom.spi.mpeg.sampled.file.MpegAudioFileReader org.tritonus.sampled.file.mpeg.MpegAudioFileReader # for the vorbis codec org.tritonus.sampled.file.jorbis.JorbisAudioFileReader jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/0000755000175000017500000000000011377161311017105 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/LICENSE.txt0000644000175000017500000006347611377161311020750 0ustar GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/README.txt0000644000175000017500000000513211377161311020604 0ustar MP3SPI 1.9.1 JavaZOOM 1999-2004 Project Homepage : http://www.javazoom.net/mp3spi/mp3spi.html JAVA and MP3 online Forums : http://www.javazoom.net/services/forums/index.jsp ----------------------------------------------------- DESCRIPTION : ----------- MP3SPI is a SPI (Service Provider Interface) that adds MP3 support for JavaSound. It allows to play MPEG 1/2/2.5 Layer 1/2/3 files thanks to underlying JavaLayer and Tritonus libraries. This is a non-commercial project and anyone can add his contribution. MP3SPI is licensed under LGPL (see LICENSE.txt). FAQ : --- - How to install MP3SPI ? Before running MP3SPI you must set PATH and CLASSPATH for JAVA and you must add jl0.4.jar, tritonus_share.jar and mp3spi1.9.1.jar to the CLASSPATH. - Do I need JMF to run MP3SPI player ? No, JMF is not required. You just need a JVM JavaSound 1.0 compliant. (i.e. JVM1.3 or higher). However, MP3SPI is not JMF compliant. - Does MP3SPI support streaming ? Yes, it has been successfully tested with ShoutCast streaming server. - Does MP3SPI support MPEG 2.5 ? Yes, MP3SPI includes same features as JavaLayer. - Does MP3SPI support VBR ? Yes, It supports XING VBR header too. - How to get ID3v2 tags from MP3SPI API ? MP3SPI exposes many audio properties such as ID3v2 frames, VBR, bitrate ... See online examples from MP3SPI homepage to learn how to get them. - How to skip frames to have a seek feature ? Call skip(long bytes) on AudioInputStream. - How to run jUnit tests ? See ANT script included (ant test). You need to update test.mp3.properties file with the audio properties of the MP3 you want to use for testing. You could generate test.mp3.properties by uncommenting //out=System.out in jUnit test sources. - How much memory/CPU MP3SPI needs to run ? Here are our benchmark notes : - Heap use range : 1380KB to 1900KB - 370 classes loaded. - Footprint : ~8MB under WinNT4/Win2K + J2SE 1.3 (Hotspot). ~10MB under WinNT4/Win2K + J2SE 1.4.1 (Hotspot). - CPU usage : ~12% under PIII 800Mhz/WinNT4+J2SE 1.3 (Hotspot). ~8% under PIII 1Ghz/Win2K+J2SE 1.3.1 (Hotspot). ~12% under PIII 1Ghz/Win2K+J2SE 1.4.1 (Hotspot). - How to contact MP3SPI developers ? Try to post a thread on Java&MP3 online forums at : http://www.javazoom.net/services/forums/index.jsp You can also contact us at mp3spi@javazoom.net for contributions. KNOWN PROBLEMS : -------------- 99% of MP3 plays well with JavaLayer but some (1%) return an ArrayIndexOutOfBoundsException while playing. It's a bug (hard to fix) in the underlying JavaLayer decoder.jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/CHANGES.txt0000644000175000017500000001123211377161311020715 0ustar MP3SPI 1.9.1 JavaZOOM 1999-2004 Project Homepage : http://www.javazoom.net/mp3spi/mp3spi.html JAVA and MP3 online Forums : http://www.javazoom.net/services/forums/index.jsp ----------------------------------------------------- 05/03/2004: MP3SPI 1.9.1 ------------------------ - Shoutcast stream meta-data (title, url) added. See DecodedMpegAudioInputStream : mp3.shoutcast.metadata.key [String], Shoutcast meta key with matching value. For instance : mp3.shoutcast.metadata.StreamTitle=Current song playing in stream. mp3.shoutcast.metadata.StreamUrl=Url info. - Icecast 2.0 icy-metaint support added. 04/05/2004: MP3SPI 1.9 ---------------------- - Shoutcast ICY meta-data support added. (jicylib classes included). - ID3v1 support added. - Audio parameters could be read through AudioFileFormat.properties() and AudioFormat.properties(). Here are all audio parameters provided by MP3 SPI : AudioFormat parameters : ~~~~~~~~~~~~~~~~~~~~~~ - bitrate : [Integer], bitrate in bits per seconds, average bitrate for VBR enabled stream. - vbr : [Boolean], VBR flag AudioFileFormat parameters : ~~~~~~~~~~~~~~~~~~~~~~~~~~ + Standard parameters : - duration : [Long], duration in microseconds. - title : [String], Title of the stream. - author : [String], Name of the artist of the stream. - album : [String], Name of the album of the stream. - date : [String], The date (year) of the recording or release of the stream. - copyright : [String], Copyright message of the stream. - comment : [String], Comment of the stream. + Extended MP3 parameters : - mp3.version.mpeg : [String], mpeg version : 1,2 or 2.5 - mp3.version.layer : [String], layer version 1, 2 or 3 - mp3.version.encoding : [String], mpeg encoding : MPEG1, MPEG2-LSF, MPEG2.5-LSF - mp3.channels : [Integer], number of channels 1 : mono, 2 : stereo. - mp3.frequency.hz : [Integer], sampling rate in hz. - mp3.bitrate.nominal.bps : [Integer], nominal bitrate in bps. - mp3.length.bytes : [Integer], length in bytes. - mp3.length.frames : [Integer], length in frames. - mp3.framesize.bytes : [Integer], framesize of the first frame. framesize is not constant for VBR streams. - mp3.framerate.fps : [Float], framerate in frames per seconds. - mp3.header.pos : [Integer], position of first audio header (or ID3v2 size). - mp3.vbr : [Boolean], vbr flag. - mp3.vbr.scale : [Integer], vbr scale. - mp3.crc : [Boolean], crc flag. - mp3.original : [Boolean], original flag. - mp3.copyright : [Boolean], copyright flag. - mp3.padding : [Boolean], padding flag. - mp3.mode : [Integer], mode 0:STEREO 1:JOINT_STEREO 2:DUAL_CHANNEL 3:SINGLE_CHANNEL - mp3.id3tag.genre : [String], ID3 tag (v1 or v2) genre. - mp3.id3tag.track : [String], ID3 tag (v1 or v2) track info. - mp3.id3tagv2 : [InputStream], ID3v2 frames. - mp3.shoutcast.metadata.key : [String], Shoutcast meta key with matching value. For instance : mp3.shoutcast.metadata.icy-irc=#shoutcast mp3.shoutcast.metadata.icy-metaint=8192 mp3.shoutcast.metadata.icy-genre=Trance Techno Dance mp3.shoutcast.metadata.icy-url=http://www.di.fm and so on ... DecodedMpegAudioInputStream parameters : ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - mp3.frame : [Long], current frame position. - mp3.frame.bitrate : [Integer], bitrate of the current frame. - mp3.frame.size.bytes : [Integer], size in bytes of the current frame. - mp3.position.byte : [Long], current position in bytes in the stream. - mp3.position.microseconds : [Long], elapsed microseconds. - mp3.equalizer : float[32], interactive equalizer array, values could be in [-1.0, +1.0]. 02/01/2004: MP3SPI 1.8 ---------------------- Initial official release. It targets J2SE 1.3 and J2SE 1.4. It includes a workaround to get audio properties (duration, title, author, bitrate, vbr, ...) that will be available in JDK 1.5. It provides "static" MP3 format properties such as (mp3.version.mpeg, mp3.version.layer, mp3.id3tagv2, ...). The mp3.id3tagv2 property allows to get all ID3v2 frames. MP3SPI also provides "dynamic" MP3 properties for each frame played such as (mp3.frame , mp3.frame.bitrate, mp3.frame.size.bytes, mp3.equalizer, ...). The mp3.equalizer property allows to have equalizer feature. Notes : ----- MP3SPI needs JavaLayer and Tritonus libraries to work. jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/0000755000175000017500000000000011377161311017674 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/0000755000175000017500000000000011377161311021522 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/0000755000175000017500000000000011377161311022315 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/0000755000175000017500000000000011377161311023245 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/0000755000175000017500000000000011377161311024672 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/convert/0000755000175000017500000000000011377161311026352 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/convert/DecodedMpegAudioInputStream.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/convert/DecodedMpe0000644000175000017500000002340311377161311030270 0ustar /* * DecodedMpegAudioInputStream. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *------------------------------------------------------------------------ */ package javazoom.spi.mpeg.sampled.convert; import java.io.IOException; import java.io.InputStream; import java.util.HashMap; import java.util.Map; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.BitstreamException; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.DecoderException; import javazoom.jl.decoder.Equalizer; import javazoom.jl.decoder.Header; import javazoom.jl.decoder.Obuffer; import javazoom.spi.PropertiesContainer; import javazoom.spi.mpeg.sampled.file.IcyListener; import javazoom.spi.mpeg.sampled.file.tag.TagParseEvent; import javazoom.spi.mpeg.sampled.file.tag.TagParseListener; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.convert.TAsynchronousFilteredAudioInputStream; /** * Main decoder. */ public class DecodedMpegAudioInputStream extends TAsynchronousFilteredAudioInputStream implements PropertiesContainer, TagParseListener { private InputStream m_encodedStream; private Bitstream m_bitstream; private Decoder m_decoder; private Equalizer m_equalizer; private float[] m_equalizer_values; private Header m_header; private DMAISObuffer m_oBuffer; // Bytes info. private long byteslength = -1; private long currentByte = 0; // Frame info. private int frameslength = -1; private long currentFrame = 0; private int currentFramesize = 0; private int currentBitrate = -1; // Time info. private long currentMicrosecond = 0; // Shoutcast stream info private IcyListener shoutlst = null; private HashMap properties = null; public DecodedMpegAudioInputStream(AudioFormat outputFormat, AudioInputStream inputStream) { super(outputFormat, -1); if (TDebug.TraceAudioConverter) { TDebug.out(">DecodedMpegAudioInputStream(AudioFormat outputFormat, AudioInputStream inputStream)"); } try { // Try to find out inputstream length to allow skip. byteslength = inputStream.available(); } catch (IOException e) { TDebug.out("DecodedMpegAudioInputStream : Cannot run inputStream.available() : "+e.getMessage()); byteslength = -1; } m_encodedStream = inputStream; shoutlst = IcyListener.getInstance(); shoutlst.reset(); m_bitstream = new Bitstream(inputStream); m_decoder = new Decoder(null); m_equalizer = new Equalizer(); m_equalizer_values = new float[32]; for (int b=0;b 0)) frameslength = m_header.max_number_of_frames((int)byteslength); } catch (BitstreamException e) { TDebug.out("DecodedMpegAudioInputStream : Cannot read first frame : "+e.getMessage()); byteslength = -1; } properties = new HashMap(); } /** * Return dynamic properties. * *
    *
  • mp3.frame [Long], current frame position. *
  • mp3.frame.bitrate [Integer], bitrate of the current frame. *
  • mp3.frame.size.bytes [Integer], size in bytes of the current frame. *
  • mp3.position.byte [Long], current position in bytes in the stream. *
  • mp3.position.microseconds [Long], elapsed microseconds. *
  • mp3.equalizer float[32], interactive equalizer array, values could be in [-1.0, +1.0]. *
  • mp3.shoutcast.metadata.key [String], Shoutcast meta key with matching value. *
    For instance : *
    mp3.shoutcast.metadata.StreamTitle=Current song playing in stream. *
    mp3.shoutcast.metadata.StreamUrl=Url info. *
*/ public Map properties() { properties.put("mp3.frame",new Long(currentFrame)); properties.put("mp3.frame.bitrate",new Integer(currentBitrate)); properties.put("mp3.frame.size.bytes",new Integer(currentFramesize)); properties.put("mp3.position.byte",new Long(currentByte)); properties.put("mp3.position.microseconds",new Long(currentMicrosecond)); properties.put("mp3.equalizer",m_equalizer_values); // Optionnal shoutcast stream meta-data. if (shoutlst != null) { String surl = shoutlst.getStreamUrl(); String stitle = shoutlst.getStreamTitle(); if ((stitle != null) && (stitle.trim().length()>0)) properties.put("mp3.shoutcast.metadata.StreamTitle",stitle); if ((surl != null) && (surl.trim().length()>0)) properties.put("mp3.shoutcast.metadata.StreamUrl",surl); } return properties; } public void execute() { if (TDebug.TraceAudioConverter) TDebug.out("execute() : begin"); try { // Following line hangs when FrameSize is available in AudioFormat. Header header = null; if (m_header == null) header = m_bitstream.readFrame(); else header = m_header; if (TDebug.TraceAudioConverter) TDebug.out("execute() : header = "+header); if (header == null) { if (TDebug.TraceAudioConverter) { TDebug.out("header is null (end of mpeg stream)"); } getCircularBuffer().close(); return; } currentFrame++; currentBitrate = header.bitrate_instant(); currentFramesize = header.calculate_framesize(); currentByte = currentByte + currentFramesize; currentMicrosecond = (long) (currentFrame* header.ms_per_frame()*1000.0f); for (int b=0;b 0) && (frameslength > 0)) { float ratio = bytes*1.0f/byteslength*1.0f; long bytesread = skipFrames((long) (ratio*frameslength)); currentByte = currentByte + bytesread; return bytesread; } else return -1; } /** * Skip frames. * You don't need to call it severals times, it will exactly skip given frames number. * @param frames * @return bytes length skipped matching to frames skipped. */ public long skipFrames(long frames) { if (TDebug.TraceAudioConverter) TDebug.out("skip(long frames) : begin"); int framesRead = 0; int bytesReads = 0; try { for (int i=0;i>> 8) & 0xFF); bSecondByte = (byte) (sValue & 0xFF); } else // little endian { bFirstByte = (byte) (sValue & 0xFF); bSecondByte = (byte) ((sValue >>> 8) & 0xFF); } m_abBuffer[m_anBufferPointers[nChannel]] = bFirstByte; m_abBuffer[m_anBufferPointers[nChannel] + 1] = bSecondByte; m_anBufferPointers[nChannel] += m_nChannels * 2; } public void set_stop_flag() { } public void close() { } public void write_buffer(int nValue) { } public void clear_buffer() { } public byte[] getBuffer() { return m_abBuffer; } public int getCurrentBufferSize() { return m_anBufferPointers[0]; } public void reset() { for (int i = 0; i < m_nChannels; i++) { /* Points to byte location, * implicitely assuming 16 bit * samples. */ m_anBufferPointers[i] = i * 2; } } } public void tagParsed(TagParseEvent tpe) { System.out.println("TAG:"+tpe.getTag()); } } ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/convert/MpegFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/convert/MpegFormat0000644000175000017500000000757411377161311030353 0ustar /* * MpegFormatConversionProvider. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * * --------------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * -------------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.convert; import java.util.Arrays; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javazoom.spi.mpeg.sampled.file.MpegEncoding; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.sampled.convert.TEncodingFormatConversionProvider; /** * ConversionProvider for MPEG files. */ public class MpegFormatConversionProvider extends TEncodingFormatConversionProvider { private static final AudioFormat.Encoding MP3 = Encodings.getEncoding("MP3"); private static final AudioFormat.Encoding PCM_SIGNED = Encodings.getEncoding("PCM_SIGNED"); private static final AudioFormat[] INPUT_FORMATS = { // mono new AudioFormat(MP3, -1.0F, -1, 1, -1, -1.0F, false), new AudioFormat(MP3, -1.0F, -1, 1, -1, -1.0F, true), // stereo new AudioFormat(MP3, -1.0F, -1, 2, -1, -1.0F, false), new AudioFormat(MP3, -1.0F, -1, 2, -1, -1.0F, true), }; private static final AudioFormat[] OUTPUT_FORMATS = { // mono, 16 bit signed new AudioFormat(PCM_SIGNED, -1.0F, 16, 1, 2, -1.0F, false), new AudioFormat(PCM_SIGNED, -1.0F, 16, 1, 2, -1.0F, true), // stereo, 16 bit signed new AudioFormat(PCM_SIGNED, -1.0F, 16, 2, 4, -1.0F, false), new AudioFormat(PCM_SIGNED, -1.0F, 16, 2, 4, -1.0F, true), }; /** * Constructor. */ public MpegFormatConversionProvider() { super(Arrays.asList(INPUT_FORMATS), Arrays.asList(OUTPUT_FORMATS)); if (TDebug.TraceAudioConverter) { TDebug.out(">MpegFormatConversionProvider()"); } } public AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream audioInputStream) { if (TDebug.TraceAudioConverter) { TDebug.out(">MpegFormatConversionProvider.getAudioInputStream(AudioFormat targetFormat, AudioInputStream audioInputStream):"); } return new DecodedMpegAudioInputStream(targetFormat, audioInputStream); } /** * Add conversion support for any MpegEncoding source with FrameRate or FrameSize not empty. * @param targetFormat * @param sourceFormat * @return */ public boolean isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat) { if (TDebug.TraceAudioConverter) { TDebug.out(">MpegFormatConversionProvider.isConversionSupported(AudioFormat targetFormat, AudioFormat sourceFormat):"); TDebug.out("checking if conversion possible"); TDebug.out("from: " + sourceFormat); TDebug.out("to: " + targetFormat); } boolean conversion = super.isConversionSupported(targetFormat, sourceFormat); if (conversion == false) { AudioFormat.Encoding enc = sourceFormat.getEncoding(); if (enc instanceof MpegEncoding) { if ((sourceFormat.getFrameRate() != AudioSystem.NOT_SPECIFIED) || (sourceFormat.getFrameSize() != AudioSystem.NOT_SPECIFIED)) { conversion = true; } } } return conversion; } } jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/0000755000175000017500000000000011377161311025611 5ustar jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/0000755000175000017500000000000011377161311026364 5ustar ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/MP3Tag.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/MP3Tag.ja0000644000175000017500000000316711377161311027742 0ustar /* * MP3Tag. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; /** An individual piece of mp3 metadata, as a name/value pair. Abstract just so that subclasses will indicate their tagging scheme (Icy, ID3, etc.). */ public abstract class MP3Tag extends Object { protected String name; protected Object value; public MP3Tag(String name, Object value) { this.name = name; this.value = value; } public String getName() { return name; } public Object getValue() { return value; } public String toString() { return getClass().getName() + " -- " + getName() + ":" + getValue().toString(); } } ././@LongLink0000000000000000000000000000016200000000000011564 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/MP3MetadataParser.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/MP3Metada0000644000175000017500000000406211377161311030024 0ustar /* * MP3MetadataParser. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; /** An object that fires off TagParseEvents as they are parsed from a stream, ServerSocket, or other metadata source */ public interface MP3MetadataParser { /** Adds a TagParseListener to be notified when this object parses MP3Tags. */ public void addTagParseListener(TagParseListener tpl); /** Removes a TagParseListener, so it won't be notified when this object parses MP3Tags. */ public void removeTagParseListener(TagParseListener tpl); /** Get all tags (headers or in-stream) encountered thusfar. This is included in this otherwise Listener-like scheme because most standards are a mix of start-of-stream metadata tags (like the http headers or the stuff at the top of an ice stream) and inline data. Implementations should hang onto all tags they parse and provide them with this call. Callers should first use this call to get initial tags, then subscribe for events as the stream continues. */ public MP3Tag[] getTags(); } ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/MP3TagParseSupport.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/MP3TagPar0000644000175000017500000000406411377161311030011 0ustar /* * MP3TagParseSupport. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; import java.util.ArrayList; /** */ public class MP3TagParseSupport extends Object { ArrayList tagParseListeners; /** trivial constructor, sets up listeners list. */ public MP3TagParseSupport() { super(); tagParseListeners = new ArrayList(); } /** Adds a TagParseListener to be notified when a stream parses MP3Tags. */ public void addTagParseListener(TagParseListener tpl) { tagParseListeners.add(tpl); } /** Removes a TagParseListener, so it won't be notified when a stream parses MP3Tags. */ public void removeTagParseListener(TagParseListener tpl) { tagParseListeners.add(tpl); } /** Fires the given event to all registered listeners */ public void fireTagParseEvent(TagParseEvent tpe) { for (int i = 0; i < tagParseListeners.size(); i++) { TagParseListener l = (TagParseListener) tagParseListeners.get(i); l.tagParsed(tpe); } } public void fireTagParsed(Object source, MP3Tag tag) { fireTagParseEvent(new TagParseEvent(source, tag)); } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/IcyInputStream.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/IcyInputS0000644000175000017500000003311511377161311030201 0ustar /* * IcyInputStream. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.StringTokenizer; /** An BufferedInputStream that parses Shoutcast's "icy" metadata from the stream. Gets headers at the beginning and if the "icy-metaint" tag is found, it parses and strips in-stream metadata.

The deal with metaint: Icy streams don't try to put tags between MP3 frames the way that ID3 does. Instead, it requires the client to strip metadata from the stream before it hits the decoder. You get an icy-metaint name/val in the beginning of the stream iff you sent "Icy-Metadata" with value "1" in the request headers (SimpleMP3DataSource does this if the "parseStreamMetadata" boolean is true). If this is the case then the value of icy-metaint is the amount of real data between metadata blocks. Each block begins with an int indicating how much metadata there is -- the block is this value times 16 (it can be, and often is, 0).

Originally thought that "icy" implied Icecast, but this is completely wrong -- real Icecast servers, found through www.icecast.net and typified by URLs with a trailing directory (like CalArts School of Music - http://65.165.174.100:8000/som) do not have the "ICY 200 OK" magic string or any of the CRLF-separated headers. Apparently, "icy" means "Shoutcast". Yep, that's weird. @author Chris Adamson, invalidname@mac.com */ public class IcyInputStream extends BufferedInputStream implements MP3MetadataParser { public static boolean DEBUG = false; MP3TagParseSupport tagParseSupport; /** inline tags are delimited by ';', also filter out null bytes */ protected static final String INLINE_TAG_SEPARATORS = ";\u0000"; /* looks like icy streams start start with ICY 200 OK\r\n then the tags are like icy-notice1:
This stream requires Winamp
\r\n icy-notice2:SHOUTcast Distributed Network Audio Server/win32 v1.8.2
\r\n icy-name:Core-upt Radio\r\n icy-genre:Punk Ska Emo\r\n icy-url:http://www.core-uptrecords.com\r\n icy-pub:1\r\n icy-metaint:8192\r\n icy-br:56\r\n \r\n (signifies end of headers) we only get icy-metaint if the http request that created this stream sent the header "icy-metadata:1" // in in-line metadata, we read a byte that tells us how many 16-byte blocks there are (presumably, we still use \r\n for the separator... the block is padded out with 0x00's that we can ignore) // when server is full/down/etc, we get the following for // one of the notice lines: icy-notice2:This server has reached its user limit
or icy-notice2:The resource requested is currently unavailable
*/ /** Tags that have been discovered in the stream. */ HashMap tags; /** Buffer for readCRLF line... note this limits lines to 1024 chars (I've read that WinAmp barfs at 128, so this is generous) */ protected byte[] crlfBuffer = new byte[1024]; /** value of the "metaint" tag, which tells us how many bytes of real data are between the metadata tags. if -1, this stream does not have metadata after the header. */ protected int metaint = -1; /** how many bytes of real data remain before the next block of metadata. Only meaningful if metaint != -1. */ protected int bytesUntilNextMetadata = -1; // TODO: comment for constructor /** Reads the initial headers of the stream and adds tags appropriatly. Gets set up to find, read, and strip blocks of in-line metadata if the icy-metaint header is found. */ public IcyInputStream(InputStream in) throws IOException { super(in); tags = new HashMap(); tagParseSupport = new MP3TagParseSupport(); // read the initial tags here, including the metaint // and set the counter for how far we read until // the next metadata block (if any). readInitialHeaders(); IcyTag metaIntTag = (IcyTag) getTag("icy-metaint"); if (DEBUG) System.out.println("METATAG:"+metaIntTag); if (metaIntTag != null) { String metaIntString = metaIntTag.getValueAsString(); try { metaint = Integer.parseInt(metaIntString.trim()); if (DEBUG) System.out.println("METAINT:"+metaint); bytesUntilNextMetadata = metaint; } catch (NumberFormatException nfe) { } } } /** * IcyInputStream constructor for know meta-interval (Icecast 2) * @param in * @param metaint * @throws IOException */ public IcyInputStream(InputStream in, String metaIntString) throws IOException { super(in); tags = new HashMap(); tagParseSupport = new MP3TagParseSupport(); try { metaint = Integer.parseInt(metaIntString.trim()); if (DEBUG) System.out.println("METAINT:"+metaint); bytesUntilNextMetadata = metaint; } catch (NumberFormatException nfe) { } } /** Assuming we're at the top of the stream, read lines one by one until we hit a completely blank \r\n. Parse the data as IcyTags. */ protected void readInitialHeaders() throws IOException { String line = null; while (!((line = readCRLFLine()).equals(""))) { int colonIndex = line.indexOf(':'); // does it have a ':' separator if (colonIndex == -1) continue; IcyTag tag = new IcyTag( line.substring(0, colonIndex), line.substring(colonIndex + 1)); //System.out.println(tag); addTag(tag); } } /** Read everything up to the next CRLF, return it as a String. */ protected String readCRLFLine() throws IOException { int i = 0; for (; i < crlfBuffer.length; i++) { byte aByte = (byte) read(); if (aByte == '\r') { // possible end of line byte anotherByte = (byte) read(); i++; // since we read again if (anotherByte == '\n') { break; // break out of while } else { // oops, not end of line - put these in array crlfBuffer[i - 1] = aByte; crlfBuffer[i] = anotherByte; } } else { // if not \r crlfBuffer[i] = aByte; } } // for // get the string from the byte[]. i is 1 too high because of // read-ahead in crlf block return new String(crlfBuffer, 0, i - 1); } /** Reads and returns a single byte. If the next byte is a metadata block, then that block is read, stripped, and parsed before reading and returning the first byte after the metadata block. */ public int read() throws IOException { if (bytesUntilNextMetadata > 0) { bytesUntilNextMetadata--; return super.read(); } else if (bytesUntilNextMetadata == 0) { // we need to read next metadata block readMetadata(); bytesUntilNextMetadata = metaint - 1; // -1 because we read byte on next line return super.read(); } else { // no metadata in this stream return super.read(); } } /** Reads a block of bytes. If the next byte is known to be a block of metadata, then that is read, parsed, and stripped, and then a block of bytes is read and returned. Otherwise, it may read up to but not into the next metadata block if bytesUntilNextMetadata < length */ public int read(byte[] buf, int offset, int length) throws IOException { // if not on metadata, do the usual read so long as we // don't read past metadata if (bytesUntilNextMetadata > 0) { int adjLength = Math.min(length, bytesUntilNextMetadata); int got = super.read(buf, offset, adjLength); bytesUntilNextMetadata -= got; return got; } else if (bytesUntilNextMetadata == 0) { // read/parse the metadata readMetadata(); // now as above, except that we reset // bytesUntilNextMetadata differently //int adjLength = Math.min(length, bytesUntilNextMetadata); //int got = super.read(buf, offset, adjLength); //bytesUntilNextMetadata = metaint - got; // Chop Fix - JavaZOOM (3 lines above seem buggy) bytesUntilNextMetadata = metaint; int adjLength = Math.min(length, bytesUntilNextMetadata); int got = super.read(buf, offset, adjLength); bytesUntilNextMetadata -= got; // End fix - JavaZOOM return got; } else { // not even reading metadata return super.read(buf, offset, length); } } /** trivial return read (buf, 0, buf.length) */ public int read(byte[] buf) throws IOException { return read(buf, 0, buf.length); } /** Read the next segment of metadata. The stream must be right on the segment, ie, the next byte to read is the metadata block count. The metadata is parsed and new tags are added with addTag(), which fires events */ protected void readMetadata() throws IOException { int blockCount = super.read(); if (DEBUG) System.out.println("BLOCKCOUNT:"+blockCount); // System.out.println ("blocks to read: " + blockCount); int byteCount = (blockCount * 16); // 16 bytes per block if (byteCount < 0) return; // WTF?! byte[] metadataBlock = new byte[byteCount]; int index = 0; // build an array of this metadata while (byteCount > 0) { int bytesRead = super.read(metadataBlock, index, byteCount); index += bytesRead; byteCount -= bytesRead; } // now parse it if (blockCount > 0) parseInlineIcyTags(metadataBlock); } // readMetadata /** Parse metadata from an in-stream "block" of bytes, add a tag for each one.

Hilariously, the inline data format is totally different than the top-of-stream header. For example, here's a block I saw on "Final Fantasy Radio":

	StreamTitle='Final Fantasy 8 - Nobuo Uematsu - Blue Fields';StreamUrl='';
	
In other words:
  1. Tags are delimited by semicolons
  2. Keys/values are delimited by equals-signs
  3. Values are wrapped in single-quotes
  4. Key names are in SentenceCase, not lowercase-dashed
*/ protected void parseInlineIcyTags(byte[] tagBlock) { String blockString = new String(tagBlock); if (DEBUG) System.out.println("BLOCKSTR:"+blockString); StringTokenizer izer = new StringTokenizer(blockString, INLINE_TAG_SEPARATORS); int i = 0; while (izer.hasMoreTokens()) { String tagString = izer.nextToken(); int separatorIdx = tagString.indexOf('='); if (separatorIdx == -1) continue; // bogus tagString if no '=' // try to strip single-quotes around value, if present int valueStartIdx = (tagString.charAt(separatorIdx + 1) == '\'') ? separatorIdx + 2 : separatorIdx + 1; int valueEndIdx = (tagString.charAt(tagString.length() - 1)) == '\'' ? tagString.length() - 1 : tagString.length(); String name = tagString.substring(0, separatorIdx); String value = tagString.substring(valueStartIdx, valueEndIdx); // System.out.println (i++ + " " + name + ":" + value); IcyTag tag = new IcyTag(name, value); addTag(tag); } } /** adds the tag to the HashMap of tags we have encountered either in-stream or as headers, replacing any previous tag with this name. */ protected void addTag(IcyTag tag) { tags.put(tag.getName(), tag); // fire this as an event too tagParseSupport.fireTagParsed(this, tag); } /** Get the named tag from the HashMap of headers and in-line tags. Null if no such tag has been encountered. */ public MP3Tag getTag(String tagName) { return (MP3Tag) tags.get(tagName); } /** Get all tags (headers or in-stream) encountered thus far. */ public MP3Tag[] getTags() { return (MP3Tag[]) tags.values().toArray(new MP3Tag[0]); } /** Returns a HashMap of all headers and in-stream tags parsed so far. */ public HashMap getTagHash() { return tags; } /** Adds a TagParseListener to be notified when this stream parses MP3Tags. */ public void addTagParseListener(TagParseListener tpl) { tagParseSupport.addTagParseListener(tpl); } /** Removes a TagParseListener, so it won't be notified when this stream parses MP3Tags. */ public void removeTagParseListener(TagParseListener tpl) { tagParseSupport.removeTagParseListener(tpl); } /** Quickie unit-test. */ public static void main(String args[]) { byte[] chow = new byte[200]; if (args.length != 1) { //System.out.println("Usage: IcyInputStream "); return; } try { URL url = new URL(args[0]); URLConnection conn = url.openConnection(); conn.setRequestProperty("Icy-Metadata", "1"); IcyInputStream icy = new IcyInputStream( new BufferedInputStream(conn.getInputStream())); while (icy.available() > -1) { // icy.read(); icy.read(chow, 0, chow.length); } } catch (Exception e) { e.printStackTrace(); } } } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/TagParseEvent.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/TagParseE0000644000175000017500000000300311377161311030116 0ustar /* * TagParseEvent. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; import java.util.EventObject; /** Event to indicate that an MP3 tag was received through some means (parsed in stream, received via UDP, whatever) and converted into an MP3Tag object. */ public class TagParseEvent extends EventObject { protected MP3Tag tag; public TagParseEvent(Object source, MP3Tag tag) { super(source); this.tag = tag; } /** Get the tag that was parsed. */ public MP3Tag getTag() { return tag; } } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/IcyTag.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/IcyTag.ja0000644000175000017500000000303111377161311030055 0ustar /* * IcyTag. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; /** * A tag parsed from an icecast tag. */ public class IcyTag extends MP3Tag implements StringableTag { /** Create a new tag, from the parsed name and (String) value. It looks like all Icecast tags are Strings (safe to assume this going forward?) */ public IcyTag(String name, String stringValue) { super(name, stringValue); } // so far as I know, all Icecast tags are strings public String getValueAsString() { return (String) getValue(); } } ././@LongLink0000000000000000000000000000016100000000000011563 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/TagParseListener.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/TagParseL0000644000175000017500000000263511377161311030137 0ustar /* * TagParseListener. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; import java.util.EventListener; /** EventListener to be implemented by objects that want to get callbacks when MP3 tags are received. */ public interface TagParseListener extends EventListener { /** Called when a tag is found (parsed from the stream, received via UDP, etc.) */ public void tagParsed(TagParseEvent tpe); } ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/StringableTag.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/tag/Stringabl0000644000175000017500000000254511377161311030242 0ustar /* * StringableTag. * * jicyshout : http://sourceforge.net/projects/jicyshout/ * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file.tag; /** Indicates that the value of a tag is a string, and provides a getValueAsString() method to get it. Appropriate for tags like artist, title, etc. */ public interface StringableTag { /** Return the value of this tag as a string. */ public String getValueAsString(); } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegAudioFileReader.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegAudioFile0000644000175000017500000005253211377161311030215 0ustar /* * MpegAudioFileReader. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PushbackInputStream; import java.io.UnsupportedEncodingException; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.Header; import javazoom.spi.mpeg.sampled.file.tag.IcyInputStream; import javazoom.spi.mpeg.sampled.file.tag.MP3Tag; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.file.TAudioFileReader; /** * This class implements AudioFileReader for MP3 SPI. */ public class MpegAudioFileReader extends TAudioFileReader { private final int SYNC = 0xFFE00000; private final AudioFormat.Encoding[][] sm_aEncodings = { {MpegEncoding.MPEG2L1, MpegEncoding.MPEG2L2, MpegEncoding.MPEG2L3}, {MpegEncoding.MPEG1L1, MpegEncoding.MPEG1L2, MpegEncoding.MPEG1L3}, {MpegEncoding.MPEG2DOT5L1, MpegEncoding.MPEG2DOT5L2, MpegEncoding.MPEG2DOT5L3}, }; private static final int INITAL_READ_LENGTH = 64000; private static final int MARK_LIMIT = INITAL_READ_LENGTH + 1; private static final String[] id3v1genres = { "Blues" , "Classic Rock" , "Country" , "Dance" , "Disco" , "Funk" , "Grunge" , "Hip-Hop" , "Jazz" , "Metal" , "New Age" , "Oldies" , "Other" , "Pop" , "R&B" , "Rap" , "Reggae" , "Rock" , "Techno" , "Industrial" , "Alternative" , "Ska" , "Death Metal" , "Pranks" , "Soundtrack" , "Euro-Techno" , "Ambient" , "Trip-Hop" , "Vocal" , "Jazz+Funk" , "Fusion" , "Trance" , "Classical" , "Instrumental" , "Acid" , "House" , "Game" , "Sound Clip" , "Gospel" , "Noise" , "AlternRock" , "Bass" , "Soul" , "Punk" , "Space" , "Meditative" , "Instrumental Pop" , "Instrumental Rock" , "Ethnic" , "Gothic" , "Darkwave" , "Techno-Industrial" , "Electronic" , "Pop-Folk" , "Eurodance" , "Dream" , "Southern Rock" , "Comedy" , "Cult" , "Gangsta" , "Top 40" , "Christian Rap" , "Pop/Funk" , "Jungle" , "Native American" , "Cabaret" , "New Wave" , "Psychadelic" , "Rave" , "Showtunes" , "Trailer" , "Lo-Fi" , "Tribal" , "Acid Punk" , "Acid Jazz" , "Polka" , "Retro" , "Musical" , "Rock & Roll" , "Hard Rock" , "Folk" , "Folk-Rock" , "National Folk" , "Swing" , "Fast Fusion" , "Bebob" , "Latin" , "Revival" , "Celtic" , "Bluegrass" , "Avantgarde" , "Gothic Rock" , "Progressive Rock" , "Psychedelic Rock" , "Symphonic Rock" , "Slow Rock" , "Big Band" , "Chorus" , "Easy Listening" , "Acoustic" , "Humour" , "Speech" , "Chanson" , "Opera" , "Chamber Music" , "Sonata" , "Symphony" , "Booty Brass" , "Primus" , "Porn Groove" , "Satire" , "Slow Jam" , "Club" , "Tango" , "Samba" , "Folklore" , "Ballad" , "Power Ballad" , "Rhythmic Soul" , "Freestyle" , "Duet" , "Punk Rock" , "Drum Solo" , "A Capela" , "Euro-House" , "Dance Hall" , "Goa" , "Drum & Bass" , "Club-House" , "Hardcore" , "Terror" , "Indie" , "BritPop" , "Negerpunk" , "Polsk Punk" , "Beat" , "Christian Gangsta Rap" , "Heavy Metal" , "Black Metal" , "Crossover" , "Contemporary Christian" , "Christian Rock" , "Merengue" , "Salsa" , "Thrash Metal" , "Anime" , "JPop" , "SynthPop" }; public MpegAudioFileReader() { super(MARK_LIMIT, true); if (TDebug.TraceAudioFileReader) TDebug.out(">MpegAudioFileReader()"); } /** * Returns AudioFileFormat from File. */ public AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException { return super.getAudioFileFormat(file); } /** * Returns AudioFileFormat from URL. */ public AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("MpegAudioFileReader.getAudioFileFormat(URL): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; URLConnection conn = url.openConnection(); // Tell shoucast server (if any) that SPI support shoutcast stream. conn.setRequestProperty ("Icy-Metadata", "1"); InputStream inputStream = conn.getInputStream(); AudioFileFormat audioFileFormat = null; try { audioFileFormat = getAudioFileFormat(inputStream, lFileLengthInBytes); } finally { inputStream.close(); } if (TDebug.TraceAudioFileReader) {TDebug.out("MpegAudioFileReader.getAudioFileFormat(URL): end"); } return audioFileFormat; } /** * Returns AudioFileFormat from inputstream and medialength. */ public AudioFileFormat getAudioFileFormat(InputStream inputStream, long mediaLength) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) TDebug.out(">MpegAudioFileReader.getAudioFileFormat(InputStream inputStream, long mediaLength): begin"); HashMap aff_properties = new HashMap(); HashMap af_properties = new HashMap(); int mLength = (int) mediaLength; int size = inputStream.available(); PushbackInputStream pis = new PushbackInputStream(inputStream, MARK_LIMIT); byte head[] = new byte[12]; pis.read(head); if (TDebug.TraceAudioFileReader) { TDebug.out("InputStream : "+inputStream + " =>" + new String(head)); } /* * Check for WAV, AU, and AIFF file formats. * * Next check for Shoutcast (supported) and OGG (unsupported) streams. * * Note -- the check for WAV files will reject Broadcast WAV files. * This may be incorrect as broadcast WAV files may contain MPEG data. * Need to investigate. * */ if ((head[0] == 'R') && (head[1] == 'I') && (head[2] == 'F') && (head[3] == 'F') && (head[8] == 'W') && (head[9] == 'A') && (head[10] == 'V') && (head[11] == 'E')) { if (TDebug.TraceAudioFileReader) TDebug.out("WAV stream found"); throw new UnsupportedAudioFileException("WAV stream found"); } else if ((head[0] == '.') && (head[1] == 's') && (head[2] == 'n') && (head[3] == 'd')) { if (TDebug.TraceAudioFileReader) TDebug.out("AU stream found"); throw new UnsupportedAudioFileException("AU stream found"); } else if ((head[0] == 'F') && (head[1] == 'O') && (head[2] == 'R') && (head[3] == 'M') && (head[8] == 'A') && (head[9] == 'I') && (head[10] == 'F') && (head[11] == 'F')) { if (TDebug.TraceAudioFileReader) TDebug.out("AIFF stream found"); throw new UnsupportedAudioFileException("AIFF stream found"); } // Shoutcast stream ? else if (((head[0] == 'I') | (head[0] == 'i')) && ((head[1] == 'C') | (head[1] == 'c')) && ((head[2] == 'Y') | (head[2] == 'y'))) { pis.unread(head); // Load shoutcast meta data. loadShoutcastInfo(pis, aff_properties); } // Ogg stream ? else if (((head[0] == 'O') | (head[0] == 'o')) && ((head[1] == 'G') | (head[1] == 'g')) && ((head[2] == 'G') | (head[2] == 'g'))) { if (TDebug.TraceAudioFileReader) TDebug.out("Ogg stream found"); throw new UnsupportedAudioFileException("Ogg stream found"); } // No, so pushback. else { pis.unread(head); } // MPEG header info. int nVersion = AudioSystem.NOT_SPECIFIED; int nLayer = AudioSystem.NOT_SPECIFIED; int nSFIndex = AudioSystem.NOT_SPECIFIED; int nMode = AudioSystem.NOT_SPECIFIED; int FrameSize = AudioSystem.NOT_SPECIFIED; int nFrameSize = AudioSystem.NOT_SPECIFIED; int nFrequency = AudioSystem.NOT_SPECIFIED; int nTotalFrames = AudioSystem.NOT_SPECIFIED; float FrameRate = AudioSystem.NOT_SPECIFIED; int BitRate = AudioSystem.NOT_SPECIFIED; int nChannels = AudioSystem.NOT_SPECIFIED; int nHeader = AudioSystem.NOT_SPECIFIED; int nTotalMS = AudioSystem.NOT_SPECIFIED; boolean nVBR = false; AudioFormat.Encoding encoding = null; try { Bitstream m_bitstream = new Bitstream(pis); aff_properties.put("mp3.header.pos",new Integer(m_bitstream.header_pos())); Header m_header = m_bitstream.readFrame(); // nVersion = 0 => MPEG2-LSF (Including MPEG2.5), nVersion = 1 => MPEG1 nVersion = m_header.version(); if (nVersion == 2) aff_properties.put("mp3.version.mpeg",Float.toString(2.5f)); else aff_properties.put("mp3.version.mpeg",Integer.toString(2-nVersion)); // nLayer = 1,2,3 nLayer = m_header.layer(); aff_properties.put("mp3.version.layer",Integer.toString(nLayer)); nSFIndex = m_header.sample_frequency(); nMode = m_header.mode(); aff_properties.put("mp3.mode",new Integer(nMode)); nChannels = nMode == 3 ? 1 : 2; aff_properties.put("mp3.channels",new Integer(nChannels)); nVBR = m_header.vbr(); af_properties.put("vbr",new Boolean(nVBR)); aff_properties.put("mp3.vbr",new Boolean(nVBR)); aff_properties.put("mp3.vbr.scale",new Integer(m_header.vbr_scale())); FrameSize = m_header.calculate_framesize(); aff_properties.put("mp3.framesize.bytes",new Integer(FrameSize)); if (FrameSize < 0) throw new UnsupportedAudioFileException("Invalid FrameSize : " + FrameSize); nFrequency = m_header.frequency(); aff_properties.put("mp3.frequency.hz",new Integer(nFrequency)); FrameRate = (float) ((1.0 / (m_header.ms_per_frame())) * 1000.0); aff_properties.put("mp3.framerate.fps",new Float(FrameRate)); if (FrameRate < 0) throw new UnsupportedAudioFileException("Invalid FrameRate : " + FrameRate); if (mLength != AudioSystem.NOT_SPECIFIED) { aff_properties.put("mp3.length.bytes",new Integer(mLength)); nTotalFrames = m_header.max_number_of_frames(mLength); aff_properties.put("mp3.length.frames",new Integer(nTotalFrames)); } BitRate = m_header.bitrate(); af_properties.put("bitrate",new Integer(BitRate)); aff_properties.put("mp3.bitrate.nominal.bps",new Integer(BitRate)); nHeader = m_header.getSyncHeader(); encoding = sm_aEncodings[nVersion][nLayer - 1]; aff_properties.put("mp3.version.encoding",encoding.toString()); if (mLength != AudioSystem.NOT_SPECIFIED) { nTotalMS = Math.round(m_header.total_ms(mLength)); aff_properties.put("duration",new Long((long)nTotalMS*1000L)); } aff_properties.put("mp3.copyright",new Boolean(m_header.copyright())); aff_properties.put("mp3.original",new Boolean(m_header.original())); aff_properties.put("mp3.crc",new Boolean(m_header.checksums())); aff_properties.put("mp3.padding",new Boolean(m_header.padding())); InputStream id3v2 = m_bitstream.getRawID3v2(); if (id3v2 != null) { aff_properties.put("mp3.id3tag.v2",id3v2); parseID3v2Frames(id3v2,aff_properties); } if (TDebug.TraceAudioFileReader) TDebug.out(m_header.toString()); } catch (Exception e) { if (TDebug.TraceAudioFileReader) TDebug.out("not a MPEG stream:" + e.getMessage()); throw new UnsupportedAudioFileException("not a MPEG stream:" + e.getMessage()); } // Deeper checks ? int cVersion = (nHeader >> 19) & 0x3; if (cVersion == 1) { if (TDebug.TraceAudioFileReader) TDebug.out("not a MPEG stream: wrong version"); throw new UnsupportedAudioFileException("not a MPEG stream: wrong version"); } int cSFIndex = (nHeader >> 10) & 0x3; if (cSFIndex == 3) { if (TDebug.TraceAudioFileReader) TDebug.out("not a MPEG stream: wrong sampling rate"); throw new UnsupportedAudioFileException("not a MPEG stream: wrong sampling rate"); } // Look up for ID3v1 tag if ((size == mediaLength) && (mediaLength != AudioSystem.NOT_SPECIFIED)) { FileInputStream fis = (FileInputStream) inputStream; byte[] id3v1 = new byte[128]; long bytesSkipped = fis.skip(inputStream.available()-id3v1.length); int read = fis.read(id3v1,0,id3v1.length); if ((id3v1[0]=='T') && (id3v1[1]=='A') && (id3v1[2]=='G')) { parseID3v1Frames(id3v1, aff_properties); } } AudioFormat format = new MpegAudioFormat(encoding, (float) nFrequency, AudioSystem.NOT_SPECIFIED // SampleSizeInBits - The size of a sample , nChannels // Channels - The number of channels , -1 // The number of bytes in each frame , FrameRate // FrameRate - The number of frames played or recorded per second , true , af_properties); return new MpegAudioFileFormat(MpegFileFormatType.MP3, format, nTotalFrames, mLength,aff_properties); } /** * Returns AudioInputStream from file. */ public AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) TDebug.out("getAudioInputStream(File file)"); InputStream inputStream = new FileInputStream(file); try { return getAudioInputStream(inputStream); } catch (UnsupportedAudioFileException e) { if (inputStream != null) inputStream.close(); throw e; } catch (IOException e) { if (inputStream != null) inputStream.close(); throw e; } } /** * Returns AudioInputStream from url. */ public AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("MpegAudioFileReader.getAudioInputStream(URL): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; URLConnection conn = url.openConnection(); // Tell shoucast server (if any) that SPI support shoutcast stream. boolean isShout = false; int toRead=4; byte[] head = new byte[toRead]; conn.setRequestProperty ("Icy-Metadata", "1"); BufferedInputStream bInputStream = new BufferedInputStream(conn.getInputStream()); bInputStream.mark(toRead); int read = bInputStream.read(head,0,toRead); if ((read>2) && (((head[0] == 'I') | (head[0] == 'i')) && ((head[1] == 'C') | (head[1] == 'c')) && ((head[2] == 'Y') | (head[2] == 'y')))) isShout = true; bInputStream.reset(); InputStream inputStream = null; // Is is a shoutcast server ? if (isShout == true) { // Yes IcyInputStream icyStream = new IcyInputStream(bInputStream); icyStream.addTagParseListener(IcyListener.getInstance()); inputStream = icyStream; } else { // No, is Icecast 2 ? String metaint = conn.getHeaderField("icy-metaint"); if (metaint != null) { // Yes, it might be icecast 2 mp3 stream. IcyInputStream icyStream = new IcyInputStream(bInputStream,metaint); icyStream.addTagParseListener(IcyListener.getInstance()); inputStream = icyStream; } else { // No inputStream = bInputStream; } } AudioInputStream audioInputStream = null; try { audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } if (TDebug.TraceAudioFileReader) {TDebug.out("MpegAudioFileReader.getAudioInputStream(URL): end"); } return audioInputStream; } /** * Return the AudioInputStream from the given InputStream. */ public AudioInputStream getAudioInputStream(InputStream inputStream) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) TDebug.out("MpegAudioFileReader.getAudioInputStream(InputStream inputStream)"); if (!inputStream.markSupported()) inputStream = new BufferedInputStream(inputStream); return super.getAudioInputStream(inputStream); } /** * Parser ID3v1 frames * @param frames * @param props */ protected void parseID3v1Frames(byte[] frames, HashMap props) { String tag = new String(frames, 0, frames.length); int start = 3; String titlev1 = chopSubstring(tag, start, start += 30); String titlev2 = (String) props.get("title"); if (((titlev2==null) || (titlev2.length()==0)) && (titlev1 != null)) props.put("title",titlev1); String artistv1 = chopSubstring(tag, start, start += 30); String artistv2 = (String) props.get("author"); if (((artistv2==null) || (artistv2.length()==0)) && (artistv1 != null)) props.put("author",artistv1); String albumv1 = chopSubstring(tag, start, start += 30); String albumv2 = (String) props.get("album"); if (((albumv2==null) || (albumv2.length()==0)) && (albumv1 != null)) props.put("album",albumv1); String yearv1 = chopSubstring(tag, start, start += 4); String yearv2 = (String) props.get("year"); if (((yearv2==null) || (yearv2.length()==0)) && (yearv1 != null)) props.put("year",yearv1); String commentv1 = chopSubstring(tag, start, start += 28); String commentv2 = (String) props.get("comment"); if (((commentv2==null) || (commentv2.length()==0)) && (commentv1 != null)) props.put("comment",commentv1); String trackv1 = ""+((int) (frames[126] & 0xff)); String trackv2 = (String) props.get("mp3.id3tag.track"); if (((trackv2==null) || (trackv2.length()==0)) && (trackv1 != null)) props.put("mp3.id3tag.track",trackv1); int genrev1 = (int) (frames[127] & 0xff); if ((genrev1 >=0) && (genrev10)) { if (code.equals("TALB")) props.put("album",value); else if (code.equals("TIT2")) props.put("title",value); else if (code.equals("TYER")) props.put("date",value); else if (code.equals("TPE1")) props.put("author",value); else if (code.equals("TCOP")) props.put("copyright",value); else if (code.equals("COMM")) props.put("comment",value); else if (code.equals("TCON")) props.put("mp3.id3tag.genre",value); else if (code.equals("TRCK")) props.put("mp3.id3tag.track",value); } i=i+size-1; } } } catch (RuntimeException e) { // Ignore all parsing errors. if (TDebug.TraceAudioFileReader) TDebug.out("Cannot parse ID3v2 :"+e.getMessage()); } } /** * Parse Text Frames. * @param bframes * @param offset * @param size * @param skip * @return */ protected String parseText(byte[] bframes, int offset, int size, int skip) { String value = null; try { String[] ENC_TYPES = {"ISO-8859-1", "UTF16","UTF-16BE", "UTF-8"}; value = new String(bframes,offset+skip,size-skip,ENC_TYPES[bframes[offset]]); } catch (UnsupportedEncodingException e) { if (TDebug.TraceAudioFileReader) TDebug.out("ID3v2 Encoding error :"+e.getMessage()); } return value; } /** * Load shoutcast (ICY) info. * @param input * @param props * @throws IOException */ protected void loadShoutcastInfo(InputStream input, HashMap props) throws IOException { IcyInputStream icy = new IcyInputStream(new BufferedInputStream(input)); HashMap metadata = icy.getTagHash(); MP3Tag titleMP3Tag = icy.getTag("icy-name"); if (titleMP3Tag != null) props.put("title",((String) titleMP3Tag.getValue()).trim()); MP3Tag[] meta = icy.getTags(); if (meta != null) { StringBuffer metaStr = new StringBuffer(); for (int i=0;iAudioFormat parameters. *
    *
  • bitrate [Integer], bitrate in bits per seconds, average bitrate for VBR enabled stream. *
  • vbr [Boolean], VBR flag. *
*/ public Map properties() { return super.properties(); } } ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegEncoding.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegEncoding.0000644000175000017500000000372011377161311030153 0ustar /* * MpegEncoding. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file; import javax.sound.sampled.AudioFormat; /** * Encodings used by the MPEG audio decoder. */ public class MpegEncoding extends AudioFormat.Encoding { public static final AudioFormat.Encoding MPEG1L1 = new MpegEncoding("MPEG1L1"); public static final AudioFormat.Encoding MPEG1L2 = new MpegEncoding("MPEG1L2"); public static final AudioFormat.Encoding MPEG1L3 = new MpegEncoding("MPEG1L3"); public static final AudioFormat.Encoding MPEG2L1 = new MpegEncoding("MPEG2L1"); public static final AudioFormat.Encoding MPEG2L2 = new MpegEncoding("MPEG2L2"); public static final AudioFormat.Encoding MPEG2L3 = new MpegEncoding("MPEG2L3"); public static final AudioFormat.Encoding MPEG2DOT5L1 = new MpegEncoding("MPEG2DOT5L1"); public static final AudioFormat.Encoding MPEG2DOT5L2 = new MpegEncoding("MPEG2DOT5L2"); public static final AudioFormat.Encoding MPEG2DOT5L3 = new MpegEncoding("MPEG2DOT5L3"); public MpegEncoding(String strName) { super(strName); } } ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/IcyListener.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/IcyListener.j0000644000175000017500000000546211377161311030225 0ustar /* * IcyListener. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file; import javazoom.spi.mpeg.sampled.file.tag.MP3Tag; import javazoom.spi.mpeg.sampled.file.tag.TagParseEvent; import javazoom.spi.mpeg.sampled.file.tag.TagParseListener; /** * This class (singleton) allow to be notified on shoutcast meta data * while playing the stream (such as song title). */ public class IcyListener implements TagParseListener { private static IcyListener instance = null; private MP3Tag lastTag = null; private String streamTitle = null; private String streamUrl = null; private IcyListener() { super(); } public static synchronized IcyListener getInstance() { if (instance == null) { instance = new IcyListener(); } return instance; } /* (non-Javadoc) * @see javazoom.spi.mpeg.sampled.file.tag.TagParseListener#tagParsed(javazoom.spi.mpeg.sampled.file.tag.TagParseEvent) */ public void tagParsed(TagParseEvent tpe) { lastTag = tpe.getTag(); String name = lastTag.getName(); if ((name != null) && (name.equalsIgnoreCase("streamtitle"))) { streamTitle = (String) lastTag.getValue(); } else if ((name != null) && (name.equalsIgnoreCase("streamurl"))) { streamUrl = (String) lastTag.getValue(); } } /** * @return */ public MP3Tag getLastTag() { return lastTag; } /** * @param tag */ public void setLastTag(MP3Tag tag) { lastTag = tag; } /** * @return */ public String getStreamTitle() { return streamTitle; } /** * @return */ public String getStreamUrl() { return streamUrl; } /** * @param string */ public void setStreamTitle(String string) { streamTitle = string; } /** * @param string */ public void setStreamUrl(String string) { streamUrl = string; } /** * Reset all properties. */ public void reset() { lastTag = null; streamTitle = null; streamUrl = null; } } ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegFileFormatType.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegFileForma0000644000175000017500000000271611377161311030217 0ustar /* * MpegFileFormatType. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file; import javax.sound.sampled.AudioFileFormat; /** * FileFormatTypes used by the MPEG audio decoder. */ public class MpegFileFormatType extends AudioFileFormat.Type { public static final AudioFileFormat.Type MPEG = new MpegFileFormatType("MPEG", "mpeg"); public static final AudioFileFormat.Type MP3 = new MpegFileFormatType("MP3", "mp3"); public MpegFileFormatType(String strName, String strExtension) { super(strName, strExtension); } } ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegAudioFileFormat.javajclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/mpeg/sampled/file/MpegAudioFile0000644000175000017500000001007011377161311030204 0ustar /* * MpegAudioFileFormat. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi.mpeg.sampled.file; import java.util.Map; import javax.sound.sampled.AudioFormat; import org.tritonus.share.sampled.file.TAudioFileFormat; /** * @author JavaZOOM */ public class MpegAudioFileFormat extends TAudioFileFormat { /** * Contructor. * @param type * @param audioFormat * @param nLengthInFrames * @param nLengthInBytes */ public MpegAudioFileFormat(Type type, AudioFormat audioFormat, int nLengthInFrames, int nLengthInBytes, Map properties) { super(type, audioFormat, nLengthInFrames, nLengthInBytes, properties); } /** * MP3 audio file format parameters. * Some parameters might be unavailable. So availability test is required before reading any parameter. * *
AudioFileFormat parameters. *
    *
  • duration [Long], duration in microseconds. *
  • title [String], Title of the stream. *
  • author [String], Name of the artist of the stream. *
  • album [String], Name of the album of the stream. *
  • date [String], The date (year) of the recording or release of the stream. *
  • copyright [String], Copyright message of the stream. *
  • comment [String], Comment of the stream. *
*
MP3 parameters. *
    *
  • mp3.version.mpeg [String], mpeg version : 1,2 or 2.5 *
  • mp3.version.layer [String], layer version 1, 2 or 3 *
  • mp3.version.encoding [String], mpeg encoding : MPEG1, MPEG2-LSF, MPEG2.5-LSF *
  • mp3.channels [Integer], number of channels 1 : mono, 2 : stereo. *
  • mp3.frequency.hz [Integer], sampling rate in hz. *
  • mp3.bitrate.nominal.bps [Integer], nominal bitrate in bps. *
  • mp3.length.bytes [Integer], length in bytes. *
  • mp3.length.frames [Integer], length in frames. *
  • mp3.framesize.bytes [Integer], framesize of the first frame. framesize is not constant for VBR streams. *
  • mp3.framerate.fps [Float], framerate in frames per seconds. *
  • mp3.header.pos [Integer], position of first audio header (or ID3v2 size). *
  • mp3.vbr [Boolean], vbr flag. *
  • mp3.vbr.scale [Integer], vbr scale. *
  • mp3.crc [Boolean], crc flag. *
  • mp3.original [Boolean], original flag. *
  • mp3.copyright [Boolean], copyright flag. *
  • mp3.padding [Boolean], padding flag. *
  • mp3.mode [Integer], mode 0:STEREO 1:JOINT_STEREO 2:DUAL_CHANNEL 3:SINGLE_CHANNEL *
  • mp3.id3tag.genre [String], ID3 tag (v1 or v2) genre. *
  • mp3.id3tag.track [String], ID3 tag (v1 or v2) track info. *
  • mp3.id3tagv2 [InputStream], ID3v2 frames. *
  • mp3.shoutcast.metadata.key [String], Shoutcast meta key with matching value. *
    For instance : *
    mp3.shoutcast.metadata.icy-irc=#shoutcast *
    mp3.shoutcast.metadata.icy-metaint=8192 *
    mp3.shoutcast.metadata.icy-genre=Trance Techno Dance *
    mp3.shoutcast.metadata.icy-url=http://www.di.fm *
    and so on ... *
*/ public Map properties() { return super.properties(); } } jclic-0.2.1.0.orig/extensions/soundspi/MpegAudioSPI/src/javazoom/spi/PropertiesContainer.java0000644000175000017500000000212511377161311027157 0ustar /* * PropertiesContainer. * * JavaZOOM : mp3spi@javazoom.net * http://www.javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.spi; import java.util.Map; public interface PropertiesContainer { public Map properties(); } jclic-0.2.1.0.orig/extensions/soundspi/tritonus/0000755000175000017500000000000011377161311016546 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/README0000644000175000017500000000160111377161311017424 0ustar This is Tritonus, version 0.3.1 Tritonus is an implementation of the Java Sound API 1.0. What you see here is an implementaion for GNU/Linux i386 and GNU/Linux PowerPC. It is intended to support different plattforms in the future. Several components are written purely in Java. They can be used to extend any known Java Sound implementation. For pre-compiled versions of these components, see: http://www.tritonus.org/plugins.html Tritonus is distributed under the terms of the GNU Library General Public License. See the file LGPL for details. For installing instructions, see the file INSTALL. For new features and bug fixes, see file NEWS Please report bugs in Tritonus: http://sourceforge.net/bugs/?group_id=1390 or send mail to the developer mailing list: mailto:tritonus-devel@lists.sourceforge.net You may also have a look at the Tritonus page: http://www.tritonus.org/ Have fun! jclic-0.2.1.0.orig/extensions/soundspi/tritonus/LGPL0000644000175000017500000006127311377161311017240 0ustar GNU LIBRARY GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the library GPL. It is numbered 2 because it goes with version 2 of the ordinary GPL.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Library General Public License, applies to some specially designated Free Software Foundation software, and to any other libraries whose authors decide to use it. You can use it for your libraries, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library, or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link a program with the library, you must provide complete object files to the recipients so that they can relink them with the library, after making changes to the library and recompiling it. And you must show them these terms so they know their rights. Our method of protecting your rights has two steps: (1) copyright the library, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the library. Also, for each distributor's protection, we want to make certain that everyone understands that there is no warranty for this free library. If the library is modified by someone else and passed on, we want its recipients to know that what they have is not the original version, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that companies distributing free software will individually obtain patent licenses, thus in effect transforming the program into proprietary software. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License, which was designed for utility programs. This license, the GNU Library General Public License, applies to certain designated libraries. This license is quite different from the ordinary one; be sure to read it in full, and don't assume that anything in it is the same as in the ordinary license. The reason we have a separate public license for some libraries is that they blur the distinction we usually make between modifying or adding to a program and simply using it. Linking a program with a library, without changing the library, is in some sense simply using the library, and is analogous to running a utility program or application program. However, in a textual and legal sense, the linked executable is a combined work, a derivative of the original library, and the ordinary General Public License treats it as such. Because of this blurred distinction, using the ordinary General Public License for libraries did not effectively promote software sharing, because most developers did not use the libraries. We concluded that weaker conditions might promote sharing better. However, unrestricted linking of non-free programs would deprive the users of those programs of all benefit from the free status of the libraries themselves. This Library General Public License is intended to permit developers of non-free programs to use free libraries, while preserving your freedom as a user of such programs to change the free libraries that are incorporated in them. (We have not seen how to achieve this as regards changes in header files, but we have achieved it as regards changes in the actual functions of the Library.) The hope is that this will lead to faster development of free libraries. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, while the latter only works together with the library. Note that it is possible for a library to be covered by the ordinary General Public License rather than by this special one. GNU LIBRARY GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Library General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also compile or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. c) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. d) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Library General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; if not, write to the Free Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! jclic-0.2.1.0.orig/extensions/soundspi/tritonus/VERSION0000644000175000017500000000000611377161311017612 0ustar 0.3.1 jclic-0.2.1.0.orig/extensions/soundspi/tritonus/NEWS0000644000175000017500000000352711377161311017254 0ustar NEWS for Tritonus version 0.2.0: - bug fixes in audio file writers - improved A-law and u-law converters - bug fixes in installation procedure version 0.1.92: - file writers for .aiff and .wav - improved file readers - a-law and u-law converters - installation with jdk1.1.x now possible again version 0.1.91: - MIDI OUT is working (exception: sysex events) - major improvements in handling of 8-bit sound data version 0.1.90: many, many new things. Only key points here: - Java Sound API 1.0 interface - mp3 decoder fully integrated - recording works, even full-duplex - MIDI stuff: Sequencer (playback), Synthesizer (some advanced features missing), external MIDI IN, external MIDI OUT (only together with Sequencer) - NAS support removed version 0.1.82: - automatic configuration with configure - builds on jdk1.1.x (many thanks to Peter Pilgrim) - new base class TMixerProvider - NasMixer now has Mixer.Info object - interface of PanControl changed to 0.90 API - AudioInputStream can now handle streams with indefinite length - basis support for mp3 decoding by integration of javalayer - MidiDevice.Info.getVersion() added, constructor adapted - GroupLine added - Port.Info added version 0.1.81: - audio file writing for .au files - Clips for esd - several bugs fixed version 0.1.80: - JavaSound 0.90 API - support for esd - AudioInputStreamProviders for au, aiff and wave files version 0.1.003: - pause() and resume() are implemented - channels send start, stop and eom events - workaround for buggy fileparsers (now all work) version 0.1.002: - works with AuParser of Sun (other parser do not work/are not tested) - circular buffer in output channel has been eliminated - honors passed AudioFormat in Mixer.getOutputChannel() - Mixer.get*Formats() work Please report bugs to the author of this library: Matthias Pfisterer Have fun! jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/0000755000175000017500000000000011377161311017335 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/0000755000175000017500000000000011377161311020124 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/0000755000175000017500000000000011377161311022013 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/0000755000175000017500000000000011377161311023440 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/0000755000175000017500000000000011377161311025120 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/jorbis/0000755000175000017500000000000011377161311026410 5ustar ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/jorbis/JorbisFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/jorbis/JorbisFormat0000644000175000017500000004661411377161311030747 0ustar /* * JorbisFormatConversionProvider.java */ /* * Copyright (c) 1999 - 2003 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* |<--- this code is formatted to fit into 80 columns --->| */ package org.tritonus.sampled.convert.jorbis; import java.io.EOFException; import java.io.InputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.AudioFormats; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.sampled.convert.TAsynchronousFilteredAudioInputStream; import org.tritonus.share.sampled.convert.TEncodingFormatConversionProvider; import com.jcraft.jogg.SyncState; import com.jcraft.jogg.StreamState; import com.jcraft.jogg.Page; import com.jcraft.jogg.Packet; import com.jcraft.jorbis.Info; import com.jcraft.jorbis.Comment; import com.jcraft.jorbis.DspState; import com.jcraft.jorbis.Block; /** Pure-java decoder for ogg vorbis streams. The FormatConversionProvider uses the pure-java ogg vorbis decoder from www.jcraft.com/jorbis/. @author Matthias Pfisterer */ public class JorbisFormatConversionProvider extends TEncodingFormatConversionProvider { // only used as abbreviation private static final AudioFormat.Encoding VORBIS = Encodings.getEncoding("VORBIS"); private static final AudioFormat.Encoding PCM_SIGNED = Encodings.getEncoding("PCM_SIGNED"); private static final AudioFormat[] INPUT_FORMATS = { // mono // TODO: mechanism to make the double specification with // different endianess obsolete. new AudioFormat(VORBIS, -1.0F, -1, 1, -1, -1.0F, false), new AudioFormat(VORBIS, -1.0F, -1, 1, -1, -1.0F, true), // stereo new AudioFormat(VORBIS, -1.0F, -1, 2, -1, -1.0F, false), new AudioFormat(VORBIS, -1.0F, -1, 2, -1, -1.0F, true), // TODO: other channel configurations }; private static final AudioFormat[] OUTPUT_FORMATS = { // mono, 16 bit signed new AudioFormat(PCM_SIGNED, -1.0F, 16, 1, 2, -1.0F, false), new AudioFormat(PCM_SIGNED, -1.0F, 16, 1, 2, -1.0F, true), // stereo, 16 bit signed new AudioFormat(PCM_SIGNED, -1.0F, 16, 2, 4, -1.0F, false), new AudioFormat(PCM_SIGNED, -1.0F, 16, 2, 4, -1.0F, true), // TODO: other channel configurations }; /** Constructor. */ // TODO: check interaction with base class public JorbisFormatConversionProvider() { super(Arrays.asList(INPUT_FORMATS), Arrays.asList(OUTPUT_FORMATS)/*, true, // new behaviour false*/); // bidirectional .. constants UNIDIR../BIDIR..? } public AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream audioInputStream) { /** The AudioInputStream to return. */ AudioInputStream convertedAudioInputStream = null; if (TDebug.TraceAudioConverter) { TDebug.out(">JorbisFormatConversionProvider.getAudioInputStream(): begin"); TDebug.out("checking if conversion supported"); TDebug.out("from: " + audioInputStream.getFormat()); TDebug.out("to: " + targetFormat); } // what is this ??? targetFormat=getDefaultTargetFormat(targetFormat, audioInputStream.getFormat()); if (isConversionSupported(targetFormat, audioInputStream.getFormat())) { if (TDebug.TraceAudioConverter) { TDebug.out("conversion supported; trying to create DecodedJorbisAudioInputStream"); } convertedAudioInputStream = new DecodedJorbisAudioInputStream( targetFormat, audioInputStream); } else { if (TDebug.TraceAudioConverter) { TDebug.out("conversion not supported; throwing IllegalArgumentException"); TDebug.out("<"); } throw new IllegalArgumentException("conversion not supported"); } if (TDebug.TraceAudioConverter) { TDebug.out("(): begin"); } m_oggBitStream = bitStream; m_bHeadersExpected = true; init_jorbis(); if (TDebug.TraceAudioConverter) { TDebug.out("DecodedJorbisAudioInputStream.(): end"); } } /** * Initializes all the jOrbis and jOgg vars that are used for song playback. */ private void init_jorbis() { m_oggSyncState = new SyncState(); m_oggStreamState = new StreamState(); m_oggPage = new Page(); m_oggPacket = new Packet(); m_vorbisInfo = new Info(); m_vorbisComment = new Comment(); m_vorbisDspState = new DspState(); m_vorbisBlock = new Block(m_vorbisDspState); m_oggSyncState.init(); } /** Callback from circular buffer. */ public void execute() { if (TDebug.TraceAudioConverter) TDebug.out(">DecodedJorbisAudioInputStream.execute(): begin"); if (m_bHeadersExpected) { if (TDebug.TraceAudioConverter) TDebug.out("reading headers..."); // Headers (+ Comments). try { readHeaders(); } catch (IOException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } closePhysicalStream(); if (TDebug.TraceAudioConverter) TDebug.out(" 0) { float[][] pcmf = _pcmf[0]; int bout = (samples < convsize ? samples : convsize); // convert floats to signed ints and // interleave for (int nChannel = 0; nChannel < m_vorbisInfo.channels; nChannel++) { int pointer = nChannel * getSampleSizeInBytes(); int mono = _index[nChannel]; for (int j = 0; j < bout; j++) { float fVal = pcmf[nChannel][mono + j]; clipAndWriteSample(fVal, pointer); pointer += getFrameSize(); } } m_vorbisDspState.synthesis_read(bout); getCircularBuffer().write(convbuffer, 0, getFrameSize() * bout); } } /** Scale and clip the sample and write it to convbuffer. */ private void clipAndWriteSample(float fSample, int nPointer) { int nSample; // TODO: check if clipping is necessary if (fSample > 1.0F) { fSample = 1.0F; } if (fSample < -1.0F) { fSample = -1.0F; } switch (getFormat().getSampleSizeInBits()) { case 16: nSample = (int) (fSample * 32767.0F); if (isBigEndian()) { convbuffer[nPointer++] = (byte) (nSample >> 8); convbuffer[nPointer] = (byte) (nSample & 0xFF); } else { convbuffer[nPointer++] = (byte) (nSample & 0xFF); convbuffer[nPointer] = (byte) (nSample >> 8); } break; case 24: nSample = (int) (fSample * 8388607.0F); if (isBigEndian()) { convbuffer[nPointer++] = (byte) (nSample >> 16); convbuffer[nPointer++] = (byte) ((nSample >>> 8) & 0xFF); convbuffer[nPointer] = (byte) (nSample & 0xFF); } else { convbuffer[nPointer++] = (byte) (nSample & 0xFF); convbuffer[nPointer++] = (byte) ((nSample >>> 8) & 0xFF); convbuffer[nPointer] = (byte) (nSample >> 16); } break; case 32: nSample = (int) (fSample * 2147483647.0F); if (isBigEndian()) { convbuffer[nPointer++] = (byte) (nSample >> 24); convbuffer[nPointer++] = (byte) ((nSample >>> 16) & 0xFF); convbuffer[nPointer++] = (byte) ((nSample >>> 8) & 0xFF); convbuffer[nPointer] = (byte) (nSample & 0xFF); } else { convbuffer[nPointer++] = (byte) (nSample & 0xFF); convbuffer[nPointer++] = (byte) ((nSample >>> 8) & 0xFF); convbuffer[nPointer++] = (byte) ((nSample >>> 16) & 0xFF); convbuffer[nPointer] = (byte) (nSample >> 24); } break; } } /** Read an ogg packet. This method does everything necessary to read an ogg packet. If needed, it calls {@link #readOggPage readOggPage()}, which, in turn, may read more data from the stream. The resulting packet is placed in {@link #m_oggPacket m_oggPacket} (for which the reference is not altered; is has to be initialized before). */ private void readOggPacket() throws IOException { while (true) { int result = m_oggStreamState.packetout(m_oggPacket); if (result == 1) { return; } if (result == -1) { throw new IOException("can't read packet"); } readOggPage(); if (m_oggStreamState.pagein(m_oggPage) < 0) { throw new IOException("can't read page of Ogg bitstream data"); } } } /** Read an ogg page. This method does everything necessary to read an ogg page. If needed, it reads more data from the stream. The resulting page is placed in {@link #m_oggPage m_oggPage} (for which the reference is not altered; is has to be initialized before). Note: this method doesn't deliver the page read to a StreamState object (which assembles pages to packets). This has to be done by the caller. */ private void readOggPage() throws IOException { while (true) { int result = m_oggSyncState.pageout(m_oggPage); if (result == 1) { return; } // we need more data from the stream int nIndex = m_oggSyncState.buffer(BUFFER_SIZE); // TODO: call stream.read() directly int nBytes = readFromStream(m_oggSyncState.data, nIndex, BUFFER_SIZE); // TODO: This clause should become obsolete; readFromStream() should // propagate exceptions directly. if (nBytes == -1) { throw new EOFException(); } m_oggSyncState.wrote(nBytes); } } /** Read raw data from to ogg bitstream. Reads from {@ #m_oggBitStream m_oggBitStream} a specified number of bytes into a buffer, starting at a specified buffer index. @param buffer the where the read data should be put into. Its length has to be at least nStart + nLength. @param nStart @param nLength the number of bytes to read @return the number of bytes read (maybe 0) or -1 if there is no more data in the stream. */ private int readFromStream(byte[] buffer, int nStart, int nLength) throws IOException { return m_oggBitStream.read(buffer, nStart, nLength); } /** */ private int getSampleSizeInBytes() { return getFormat().getFrameSize() / getFormat().getChannels(); } /** . @return . */ private int getFrameSize() { return getFormat().getFrameSize(); } /** Returns if this stream (the decoded one) is big endian. @return true if this stream is big endian. */ private boolean isBigEndian() { return getFormat().isBigEndian(); } /** * */ public void close() throws IOException { super.close(); m_oggBitStream.close(); } } } /*** JorbisFormatConversionProvider.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/lame/0000755000175000017500000000000011377161311026036 5ustar ././@LongLink0000000000000000000000000000017300000000000011566 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/lame/Mp3LameFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/lame/Mp3LameFormatC0000644000175000017500000004043111377161311030475 0ustar /* * Mp3LameFormatConversionProvider.java */ /* * Copyright (c) 2000 by Florian Bomers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.sampled.convert.lame; import java.io.File; import java.io.FileOutputStream; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Arrays; import java.util.Iterator; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.spi.FormatConversionProvider; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.TCircularBuffer; import org.tritonus.share.sampled.AudioFormatSet; import org.tritonus.share.sampled.convert.TSimpleFormatConversionProvider; import org.tritonus.share.sampled.convert.TAsynchronousFilteredAudioInputStream; import org.tritonus.lowlevel.lame.Lame; /** * ConversionProvider for encoding MP3 audio files with the lame lib. *

* It uses a sloppy implementation of the MPEG1L3 encoding: * It is used as a common denominator. So users can always ask for * MPEG1L3 encoding but may get in fact an MPEG2L3 or MPEG2.5L3 encoded * stream. * * @author Florian Bomers */ //TODO: - fill frame rate, frame size. Use frame rate for bit rate ? // - add decoding ? more work on LAME itself... // - byte swapping support in LAME ? public class Mp3LameFormatConversionProvider extends TSimpleFormatConversionProvider { private static final int ALL=AudioSystem.NOT_SPECIFIED; private static final int MPEG_BITS_PER_SAMPLE=ALL; // TODO! should be 0... private static final int MPEG_FRAME_RATE=ALL; // TODO private static final int MPEG_FRAME_SIZE=ALL; // TODO public static final AudioFormat.Encoding MPEG1L3 = Encodings.getEncoding("MPEG1L3"); // Lame converts automagically to MPEG2 or MPEG2.5, if necessary. public static final AudioFormat.Encoding MPEG2L3 = Encodings.getEncoding("MPEG2L3"); public static final AudioFormat.Encoding MPEG2DOT5L3 = Encodings.getEncoding("MPEG2DOT5L3"); /* * Lame provides these formats: * MPEG1 layer III samplerates(kHz): 32 44.1 48 * bitrates(kbs): 32 40 48 56 64 80 96 112 128 160 192 224 256 320 * * MPEG2 layer III samplerates(kHz): 16 22.05 24 * bitrates(kbs): 8 16 24 32 40 48 56 64 80 96 112 128 144 160 * * MPEG2.5 layer III samplerates(kHz): 8 11.025 12 * bitrates(kbs): 8 16 24 32 40 48 56 64 80 96 112 128 144 160 */ private static final AudioFormat[] OUTPUT_FORMATS = { new AudioFormat(MPEG2DOT5L3, 8000, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG2DOT5L3, 8000, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG2DOT5L3, 8000, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG2DOT5L3, 8000, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG2DOT5L3, 11025, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG2DOT5L3, 11025, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG2DOT5L3, 11025, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG2DOT5L3, 11025, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG2DOT5L3, 12000, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG2DOT5L3, 12000, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG2DOT5L3, 12000, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG2DOT5L3, 12000, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG2L3, 16000, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG2L3, 16000, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG2L3, 16000, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG2L3, 16000, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG2L3, 22050, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG2L3, 22050, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG2L3, 22050, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG2L3, 22050, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG2L3, 24000, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG2L3, 24000, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG2L3, 24000, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG2L3, 24000, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG1L3, 8000, ALL, 1, ALL, ALL, false), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 8000, ALL, 2, ALL, ALL, false), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 8000, ALL, 1, ALL, ALL, true), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 8000, ALL, 2, ALL, ALL, true), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 11025, ALL, 1, ALL, ALL, false),//MPEG2DOT5L3 new AudioFormat(MPEG1L3, 11025, ALL, 2, ALL, ALL, false),//MPEG2DOT5L3 new AudioFormat(MPEG1L3, 11025, ALL, 1, ALL, ALL, true), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 11025, ALL, 2, ALL, ALL, true), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 12000, ALL, 1, ALL, ALL, false),//MPEG2DOT5L3 new AudioFormat(MPEG1L3, 12000, ALL, 2, ALL, ALL, false),//MPEG2DOT5L3 new AudioFormat(MPEG1L3, 12000, ALL, 1, ALL, ALL, true), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 12000, ALL, 2, ALL, ALL, true), //MPEG2DOT5L3 new AudioFormat(MPEG1L3, 16000, ALL, 1, ALL, ALL, false), //MPEG2L3 new AudioFormat(MPEG1L3, 16000, ALL, 2, ALL, ALL, false), //MPEG2L3 new AudioFormat(MPEG1L3, 16000, ALL, 1, ALL, ALL, true), //MPEG2L3 new AudioFormat(MPEG1L3, 16000, ALL, 2, ALL, ALL, true), //MPEG2L3 new AudioFormat(MPEG1L3, 22050, ALL, 1, ALL, ALL, false), //MPEG2L3 new AudioFormat(MPEG1L3, 22050, ALL, 2, ALL, ALL, false), //MPEG2L3 new AudioFormat(MPEG1L3, 22050, ALL, 1, ALL, ALL, true), //MPEG2L3 new AudioFormat(MPEG1L3, 22050, ALL, 2, ALL, ALL, true), //MPEG2L3 new AudioFormat(MPEG1L3, 24000, ALL, 1, ALL, ALL, false), //MPEG2L3 new AudioFormat(MPEG1L3, 24000, ALL, 2, ALL, ALL, false), //MPEG2L3 new AudioFormat(MPEG1L3, 24000, ALL, 1, ALL, ALL, true), //MPEG2L3 new AudioFormat(MPEG1L3, 24000, ALL, 2, ALL, ALL, true), //MPEG2L3 new AudioFormat(MPEG1L3, 32000, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG1L3, 32000, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG1L3, 32000, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG1L3, 32000, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG1L3, 44100, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG1L3, 44100, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG1L3, 44100, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG1L3, 44100, ALL, 2, ALL, ALL, true), new AudioFormat(MPEG1L3, 48000, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG1L3, 48000, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG1L3, 48000, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG1L3, 48000, ALL, 2, ALL, ALL, true), }; private static final AudioFormat[] INPUT_FORMATS = { new AudioFormat(8000, 16, 1, true, false), new AudioFormat(8000, 16, 1, true, true), new AudioFormat(11025, 16, 1, true, false), new AudioFormat(11025, 16, 1, true, true), new AudioFormat(12000, 16, 1, true, false), new AudioFormat(12000, 16, 1, true, true), new AudioFormat(16000, 16, 1, true, false), new AudioFormat(16000, 16, 1, true, true), new AudioFormat(22050, 16, 1, true, false), new AudioFormat(22050, 16, 1, true, true), new AudioFormat(24000, 16, 1, true, false), new AudioFormat(24000, 16, 1, true, true), new AudioFormat(32000, 16, 1, true, false), new AudioFormat(32000, 16, 1, true, true), new AudioFormat(44100, 16, 1, true, false), new AudioFormat(44100, 16, 1, true, true), new AudioFormat(48000, 16, 1, true, false), new AudioFormat(48000, 16, 1, true, true), new AudioFormat(8000, 16, 2, true, false), new AudioFormat(8000, 16, 2, true, true), new AudioFormat(11025, 16, 2, true, false), new AudioFormat(11025, 16, 2, true, true), new AudioFormat(12000, 16, 2, true, false), new AudioFormat(12000, 16, 2, true, true), new AudioFormat(16000, 16, 2, true, false), new AudioFormat(16000, 16, 2, true, true), new AudioFormat(22050, 16, 2, true, false), new AudioFormat(22050, 16, 2, true, true), new AudioFormat(24000, 16, 2, true, false), new AudioFormat(24000, 16, 2, true, true), new AudioFormat(32000, 16, 2, true, false), new AudioFormat(32000, 16, 2, true, true), new AudioFormat(44100, 16, 2, true, false), new AudioFormat(44100, 16, 2, true, true), new AudioFormat(48000, 16, 2, true, false), new AudioFormat(48000, 16, 2, true, true), }; /** * Constructor. */ public Mp3LameFormatConversionProvider() { super(Arrays.asList(INPUT_FORMATS), Arrays.asList(OUTPUT_FORMATS)); if (!Lame.isLibAvailable()) { disable(); if (TDebug.TraceAudioConverter) { TDebug.out("******* Error initializing LAME mp3 encoder: "+Lame.getLinkError()); } } } public AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream audioInputStream) { if (isConversionSupported(targetFormat, audioInputStream.getFormat())) { return new EncodedMpegAudioInputStream( getDefaultTargetFormat(targetFormat, audioInputStream.getFormat(), false), audioInputStream); } else { throw new IllegalArgumentException("conversion not supported"); } } public AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) { if (TDebug.TraceAudioConverter) { TDebug.out(">MP3Lame getTargetFormats(AudioFormat.Encoding, AudioFormat):"); TDebug.out("checking out possible target formats"); TDebug.out("from: " + sourceFormat); TDebug.out("to : " + targetEncoding); } if (isConversionSupported(targetEncoding, sourceFormat)) { AudioFormatSet result=new AudioFormatSet(); Iterator iterator=getCollectionTargetFormats().iterator(); while (iterator.hasNext()) { AudioFormat targetFormat = (AudioFormat) iterator.next(); //if (TDebug.TraceAudioConverter) { //TDebug.out("-checking target format "+targetFormat); //} if (doMatch(targetFormat.getSampleRate(), sourceFormat.getSampleRate()) && targetFormat.getEncoding().equals(targetEncoding) && doMatch(targetFormat.getChannels(), sourceFormat.getChannels())) { targetFormat=getDefaultTargetFormat(targetFormat, sourceFormat, true); //if (TDebug.TraceAudioConverter) { //TDebug.out("-yes. added "+targetFormat); //} result.add(targetFormat); } //else { //if (TDebug.TraceAudioConverter) { //boolean e=targetFormat.getEncoding().equals(targetEncoding); //TDebug.out("-no. \""+targetFormat.getEncoding()+"\"==\""+targetEncoding+"\" ? "+e); //} //} } if (TDebug.TraceAudioConverter) { TDebug.out("0) { encodedBytes=encoder.encodeBuffer(pcmBuffer, 0, readBytes, encodedBuffer); buffer=encodedBuffer; } else { // take the larger buffer for the remaining frame(s) buffer=encodedBuffer.length>pcmBuffer.length?encodedBuffer:pcmBuffer; encodedBytes=encoder.encodeFinish(buffer); encoder.close(); encoder=null; } } if (encodedBytes>0) { getCircularBuffer().write(buffer, 0, encodedBytes); } if (encoder==null) { getCircularBuffer().close(); } } catch (ArrayIndexOutOfBoundsException e) { if (TDebug.TraceAudioConverter || TDebug.TraceAllExceptions) { TDebug.out(e); } } catch (IOException e) { if (TDebug.TraceAudioConverter || TDebug.TraceAllExceptions) { TDebug.out(e); } } } private boolean isBigEndian() { return getFormat().isBigEndian(); } public void close() throws IOException { super.close(); pcmStream.close(); if (encoder!=null) { encoder.encodeFinish(null); encoder.close(); encoder=null; } } } } /*** Mp3LameFormatConversionProvider.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/javalayer/0000755000175000017500000000000011377161311027076 5ustar ././@LongLink0000000000000000000000000000017500000000000011570 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/javalayer/MpegFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/convert/javalayer/MpegForma0000644000175000017500000005605411377161311030710 0ustar /* * MpegFormatConversionProvider.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.sampled.convert.javalayer; import java.io.InputStream; import java.io.IOException; import java.util.Arrays; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.sampled.TConversionTool; import org.tritonus.share.sampled.convert.TMatrixFormatConversionProvider; import org.tritonus.share.sampled.convert.TAsynchronousFilteredAudioInputStream; import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.BitstreamException; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.DecoderException; import javazoom.jl.decoder.Header; import javazoom.jl.decoder.Obuffer; /** * ConversionProvider for MPEG files. * * @author Matthias Pfisterer */ public class MpegFormatConversionProvider extends TMatrixFormatConversionProvider { public static final AudioFormat.Encoding MPEG1L1 = Encodings.getEncoding("MPEG1L1"); public static final AudioFormat.Encoding MPEG1L2 = Encodings.getEncoding("MPEG1L2"); public static final AudioFormat.Encoding MPEG1L3 = Encodings.getEncoding("MPEG1L3"); public static final AudioFormat.Encoding MPEG2L1 = Encodings.getEncoding("MPEG2L1"); public static final AudioFormat.Encoding MPEG2L2 = Encodings.getEncoding("MPEG2L2"); public static final AudioFormat.Encoding MPEG2L3 = Encodings.getEncoding("MPEG2L3"); public static final AudioFormat.Encoding MPEG2DOT5L1 = Encodings.getEncoding("MPEG2DOT5L1"); public static final AudioFormat.Encoding MPEG2DOT5L2 = Encodings.getEncoding("MPEG2DOT5L2"); public static final AudioFormat.Encoding MPEG2DOT5L3 = Encodings.getEncoding("MPEG2DOT5L3"); /* private static final AudioFormat.Encoding[] INPUT_ENCODINGS = { MPEG1L1, MPEG1L2, MPEG1L3, MPEG2L1, MPEG2L2, MPEG2L3, MPEG2DOT5L1, MPEG2DOT5L2, MPEG2DOT5L3 }; private static final AudioFormat.Encoding[] OUTPUT_ENCODINGS = { AudioFormat.Encoding.PCM_SIGNED }; */ // TODO: frame size, frame rate, sample size, endianess? private static final AudioFormat[] INPUT_FORMATS = { new AudioFormat(MPEG1L1, 32000.0F, -1, 1, -1, -1, false), // 0 new AudioFormat(MPEG1L1, 32000.0F, -1, 2, -1, -1, false), // 1 new AudioFormat(MPEG1L1, 44100.0F, -1, 1, -1, -1, false), // 2 new AudioFormat(MPEG1L1, 44100.0F, -1, 2, -1, -1, false), // 3 new AudioFormat(MPEG1L1, 48000.0F, -1, 1, -1, -1, false), // 4 new AudioFormat(MPEG1L1, 48000.0F, -1, 2, -1, -1, false), // 5 new AudioFormat(MPEG1L2, 32000.0F, -1, 1, -1, -1, false), // 6 new AudioFormat(MPEG1L2, 32000.0F, -1, 2, -1, -1, false), // 7 new AudioFormat(MPEG1L2, 44100.0F, -1, 1, -1, -1, false), // 8 new AudioFormat(MPEG1L2, 44100.0F, -1, 2, -1, -1, false), // 9 new AudioFormat(MPEG1L2, 48000.0F, -1, 1, -1, -1, false), // 10 new AudioFormat(MPEG1L2, 48000.0F, -1, 2, -1, -1, false), // 11 new AudioFormat(MPEG1L3, 32000.0F, -1, 1, -1, -1, false), // 12 new AudioFormat(MPEG1L3, 32000.0F, -1, 2, -1, -1, false), // 13 new AudioFormat(MPEG1L3, 44100.0F, -1, 1, -1, -1, false), // 14 new AudioFormat(MPEG1L3, 44100.0F, -1, 2, -1, -1, false), // 15 new AudioFormat(MPEG1L3, 48000.0F, -1, 1, -1, -1, false), // 16 new AudioFormat(MPEG1L3, 48000.0F, -1, 2, -1, -1, false), // 17 new AudioFormat(MPEG2L1, 16000.0F, -1, 1, -1, -1, false), // 18 new AudioFormat(MPEG2L1, 16000.0F, -1, 2, -1, -1, false), // 19 new AudioFormat(MPEG2L1, 22050.0F, -1, 1, -1, -1, false), // 20 new AudioFormat(MPEG2L1, 22050.0F, -1, 2, -1, -1, false), // 21 new AudioFormat(MPEG2L1, 24000.0F, -1, 1, -1, -1, false), // 22 new AudioFormat(MPEG2L1, 24000.0F, -1, 2, -1, -1, false), // 23 new AudioFormat(MPEG2L2, 16000.0F, -1, 1, -1, -1, false), // 24 new AudioFormat(MPEG2L2, 16000.0F, -1, 2, -1, -1, false), // 25 new AudioFormat(MPEG2L2, 22050.0F, -1, 1, -1, -1, false), // 26 new AudioFormat(MPEG2L2, 22050.0F, -1, 2, -1, -1, false), // 27 new AudioFormat(MPEG2L2, 24000.0F, -1, 1, -1, -1, false), // 28 new AudioFormat(MPEG2L2, 24000.0F, -1, 2, -1, -1, false), // 29 new AudioFormat(MPEG2L3, 16000.0F, -1, 1, -1, -1, false), // 30 new AudioFormat(MPEG2L3, 16000.0F, -1, 2, -1, -1, false), // 31 new AudioFormat(MPEG2L3, 22050.0F, -1, 1, -1, -1, false), // 32 new AudioFormat(MPEG2L3, 22050.0F, -1, 2, -1, -1, false), // 33 new AudioFormat(MPEG2L3, 24000.0F, -1, 1, -1, -1, false), // 34 new AudioFormat(MPEG2L3, 24000.0F, -1, 2, -1, -1, false), // 35 new AudioFormat(MPEG2DOT5L1, 8000.0F, -1, 1, -1, -1, false), // 36 new AudioFormat(MPEG2DOT5L1, 8000.0F, -1, 2, -1, -1, false), // 37 new AudioFormat(MPEG2DOT5L1, 11025.0F, -1, 1, -1, -1, false), // 38 new AudioFormat(MPEG2DOT5L1, 11025.0F, -1, 2, -1, -1, false), // 39 new AudioFormat(MPEG2DOT5L1, 12000.0F, -1, 1, -1, -1, false), // 40 new AudioFormat(MPEG2DOT5L1, 12000.0F, -1, 2, -1, -1, false), // 41 new AudioFormat(MPEG2DOT5L2, 8000.0F, -1, 1, -1, -1, false), // 42 new AudioFormat(MPEG2DOT5L2, 8000.0F, -1, 2, -1, -1, false), // 43 new AudioFormat(MPEG2DOT5L2, 11025.0F, -1, 1, -1, -1, false), // 44 new AudioFormat(MPEG2DOT5L2, 11025.0F, -1, 2, -1, -1, false), // 45 new AudioFormat(MPEG2DOT5L2, 12000.0F, -1, 1, -1, -1, false), // 46 new AudioFormat(MPEG2DOT5L2, 12000.0F, -1, 2, -1, -1, false), // 47 new AudioFormat(MPEG2DOT5L3, 8000.0F, -1, 1, -1, -1, false), // 48 new AudioFormat(MPEG2DOT5L3, 8000.0F, -1, 2, -1, -1, false), // 49 new AudioFormat(MPEG2DOT5L3, 11025.0F, -1, 1, -1, -1, false), // 50 new AudioFormat(MPEG2DOT5L3, 11025.0F, -1, 2, -1, -1, false), // 51 new AudioFormat(MPEG2DOT5L3, 12000.0F, -1, 1, -1, -1, false), // 52 new AudioFormat(MPEG2DOT5L3, 12000.0F, -1, 2, -1, -1, false), // 53 }; private static final AudioFormat[] OUTPUT_FORMATS = { new AudioFormat(8000.0F, 16, 1, true, false), // 0 new AudioFormat(8000.0F, 16, 1, true, true), // 1 new AudioFormat(8000.0F, 16, 2, true, false), // 2 new AudioFormat(8000.0F, 16, 2, true, true), // 3 /* 24 and 32 bit not yet possible new AudioFormat(8000.0F, 24, 1, true, false), new AudioFormat(8000.0F, 24, 1, true, true), new AudioFormat(8000.0F, 24, 2, true, false), new AudioFormat(8000.0F, 24, 2, true, true), new AudioFormat(8000.0F, 32, 1, true, false), new AudioFormat(8000.0F, 32, 1, true, true), new AudioFormat(8000.0F, 32, 2, true, false), new AudioFormat(8000.0F, 32, 2, true, true), */ new AudioFormat(11025.0F, 16, 1, true, false), // 4 new AudioFormat(11025.0F, 16, 1, true, true), // 5 new AudioFormat(11025.0F, 16, 2, true, false), // 6 new AudioFormat(11025.0F, 16, 2, true, true), // 7 /* 24 and 32 bit not yet possible new AudioFormat(11025.0F, 24, 1, true, false), new AudioFormat(11025.0F, 24, 1, true, true), new AudioFormat(11025.0F, 24, 2, true, false), new AudioFormat(11025.0F, 24, 2, true, true), new AudioFormat(11025.0F, 32, 1, true, false), new AudioFormat(11025.0F, 32, 1, true, true), new AudioFormat(11025.0F, 32, 2, true, false), new AudioFormat(11025.0F, 32, 2, true, true), */ new AudioFormat(12000.0F, 16, 1, true, false), // 8 new AudioFormat(12000.0F, 16, 1, true, true), // 9 new AudioFormat(12000.0F, 16, 2, true, false), // 10 new AudioFormat(12000.0F, 16, 2, true, true), // 11 /* 24 and 32 bit not yet possible new AudioFormat(12000.0F, 24, 1, true, false), new AudioFormat(12000.0F, 24, 1, true, true), new AudioFormat(12000.0F, 24, 2, true, false), new AudioFormat(12000.0F, 24, 2, true, true), new AudioFormat(12000.0F, 32, 1, true, false), new AudioFormat(12000.0F, 32, 1, true, true), new AudioFormat(12000.0F, 32, 2, true, false), new AudioFormat(12000.0F, 32, 2, true, true), */ new AudioFormat(16000.0F, 16, 1, true, false), // 12 new AudioFormat(16000.0F, 16, 1, true, true), // 13 new AudioFormat(16000.0F, 16, 2, true, false), // 14 new AudioFormat(16000.0F, 16, 2, true, true), // 15 /* 24 and 32 bit not yet possible new AudioFormat(16000.0F, 24, 1, true, false), new AudioFormat(16000.0F, 24, 1, true, true), new AudioFormat(16000.0F, 24, 2, true, false), new AudioFormat(16000.0F, 24, 2, true, true), new AudioFormat(16000.0F, 32, 1, true, false), new AudioFormat(16000.0F, 32, 1, true, true), new AudioFormat(16000.0F, 32, 2, true, false), new AudioFormat(16000.0F, 32, 2, true, true), */ new AudioFormat(22050.0F, 16, 1, true, false), // 16 new AudioFormat(22050.0F, 16, 1, true, true), // 17 new AudioFormat(22050.0F, 16, 2, true, false), // 18 new AudioFormat(22050.0F, 16, 2, true, true), // 19 /* 24 and 32 bit not yet possible new AudioFormat(22050.0F, 24, 1, true, false), new AudioFormat(22050.0F, 24, 1, true, true), new AudioFormat(22050.0F, 24, 2, true, false), new AudioFormat(22050.0F, 24, 2, true, true), new AudioFormat(22050.0F, 32, 1, true, false), new AudioFormat(22050.0F, 32, 1, true, true), new AudioFormat(22050.0F, 32, 2, true, false), new AudioFormat(22050.0F, 32, 2, true, true), */ new AudioFormat(24000.0F, 16, 1, true, false), // 20 new AudioFormat(24000.0F, 16, 1, true, true), // 21 new AudioFormat(24000.0F, 16, 2, true, false), // 22 new AudioFormat(24000.0F, 16, 2, true, true), // 23 /* 24 and 32 bit not yet possible new AudioFormat(24000.0F, 24, 1, true, false), new AudioFormat(24000.0F, 24, 1, true, true), new AudioFormat(24000.0F, 24, 2, true, false), new AudioFormat(24000.0F, 24, 2, true, true), new AudioFormat(24000.0F, 32, 1, true, false), new AudioFormat(24000.0F, 32, 1, true, true), new AudioFormat(24000.0F, 32, 2, true, false), new AudioFormat(24000.0F, 32, 2, true, true), */ new AudioFormat(32000.0F, 16, 1, true, false), // 24 new AudioFormat(32000.0F, 16, 1, true, true), // 25 new AudioFormat(32000.0F, 16, 2, true, false), // 26 new AudioFormat(32000.0F, 16, 2, true, true), // 27 /* 24 and 32 bit not yet possible new AudioFormat(32000.0F, 24, 1, true, false), new AudioFormat(32000.0F, 24, 1, true, true), new AudioFormat(32000.0F, 24, 2, true, false), new AudioFormat(32000.0F, 24, 2, true, true), new AudioFormat(32000.0F, 32, 1, true, false), new AudioFormat(32000.0F, 32, 1, true, true), new AudioFormat(32000.0F, 32, 2, true, false), new AudioFormat(32000.0F, 32, 2, true, true), */ new AudioFormat(44100.0F, 16, 1, true, false), // 28 new AudioFormat(44100.0F, 16, 1, true, true), // 29 new AudioFormat(44100.0F, 16, 2, true, false), // 30 new AudioFormat(44100.0F, 16, 2, true, true), // 31 /* 24 and 32 bit not yet possible new AudioFormat(44100.0F, 24, 1, true, false), new AudioFormat(44100.0F, 24, 1, true, true), new AudioFormat(44100.0F, 24, 2, true, false), new AudioFormat(44100.0F, 24, 2, true, true), new AudioFormat(44100.0F, 32, 1, true, false), new AudioFormat(44100.0F, 32, 1, true, true), new AudioFormat(44100.0F, 32, 2, true, false), new AudioFormat(44100.0F, 32, 2, true, true), */ new AudioFormat(48000.0F, 16, 1, true, false), // 32 new AudioFormat(48000.0F, 16, 1, true, true), // 33 new AudioFormat(48000.0F, 16, 2, true, false), // 34 new AudioFormat(48000.0F, 16, 2, true, true), // 35 /* 24 and 32 bit not yet possible new AudioFormat(48000.0F, 24, 1, true, false), new AudioFormat(48000.0F, 24, 1, true, true), new AudioFormat(48000.0F, 24, 2, true, false), new AudioFormat(48000.0F, 24, 2, true, true), new AudioFormat(48000.0F, 32, 1, true, false), new AudioFormat(48000.0F, 32, 1, true, true), new AudioFormat(48000.0F, 32, 2, true, false), new AudioFormat(48000.0F, 32, 2, true, true), */ }; private static final boolean t = true; private static final boolean f = false; /* * One row for each source format. */ private static final boolean[][] CONVERSIONS = { {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f}, // 0 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f}, // 1 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f}, // 2 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f}, // 3 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f}, // 4 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t}, // 5 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f}, // 6 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f}, // 7 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f}, // 8 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f}, // 9 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f}, // 10 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t}, // 11 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f}, // 12 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f}, // 13 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f}, // 14 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f}, // 15 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f}, // 16 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t}, // 17 {f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 18 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 19 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 20 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 21 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 22 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f}, // 23 {f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 24 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 25 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 26 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 27 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 28 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f}, // 29 {f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 30 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 31 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 32 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 33 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 34 {f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f}, // 35 {t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 36 {f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 37 {f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 38 {f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 39 {f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 40 {f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 41 {t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 42 {f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 43 {f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 44 {f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 45 {f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 46 {f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 47 {t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 48 {f,f,t,t,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 49 {f,f,f,f,t,t,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 50 {f,f,f,f,f,f,t,t,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 51 {f,f,f,f,f,f,f,f,t,t, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 52 {f,f,f,f,f,f,f,f,f,f, t,t,f,f,f,f,f,f,f,f, f,f,f,f,f,f,f,f,f,f, f,f,f,f,f,f}, // 53 }; /** Constructor. */ public MpegFormatConversionProvider() { super(Arrays.asList(INPUT_FORMATS), Arrays.asList(OUTPUT_FORMATS), CONVERSIONS); if (TDebug.TraceAudioConverter) { TDebug.out("MpegFormatConversionProvider.(): begin"); } if (TDebug.TraceAudioConverter) { TDebug.out("MpegFormatConversionProvider.(): end"); } } public AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream audioInputStream) { if (TDebug.TraceAudioConverter) { TDebug.out("MpegFormatConversionProvider.getAudioInputStream(AudioFormat, AudioInputStream):"); TDebug.out("trying to convert"); TDebug.out("\tfrom: " + audioInputStream.getFormat()); TDebug.out("\tto: " + targetFormat); } AudioFormat matchingFormat = getMatchingFormat( targetFormat, audioInputStream.getFormat()); // if (isConversionSupported(targetFormat, // audioInputStream.getFormat())) if (matchingFormat != null) { if (TDebug.TraceAudioConverter) { TDebug.out("MpegFormatConversionProvider.getAudioInputStream(AudioFormat, AudioInputStream):"); TDebug.out("\tisConversionSupported() accepted it; now setting up the conversion"); } targetFormat = setUnspecifiedFieldsFromProto(targetFormat, matchingFormat); if (TDebug.TraceAudioConverter) { TDebug.out("MpegFormatConversionProvider.getAudioInputStream(AudioFormat, AudioInputStream):"); TDebug.out("\tcompleted target format (1. stage): " + targetFormat); } targetFormat = setUnspecifiedFieldsFromProto(targetFormat, audioInputStream.getFormat()); if (TDebug.TraceAudioConverter) { TDebug.out("MpegFormatConversionProvider.getAudioInputStream(AudioFormat, AudioInputStream):"); TDebug.out("\tcompleted target format (2. stage): " + targetFormat); } return new DecodedMpegAudioInputStream( targetFormat, audioInputStream); } else { throw new IllegalArgumentException("conversion not supported"); } } // TODO: ask Florian if these methods are of general interest private static AudioFormat setUnspecifiedFieldsFromProto( AudioFormat incomplete, AudioFormat prototype) { AudioFormat format = new AudioFormat( incomplete.getEncoding(), getSpecificValue(incomplete.getSampleRate(), prototype.getSampleRate()), getSpecificValue(incomplete.getSampleSizeInBits(), prototype.getSampleSizeInBits()), getSpecificValue(incomplete.getChannels(), prototype.getChannels()), getSpecificValue(incomplete.getFrameSize(), prototype.getFrameSize()), getSpecificValue(incomplete.getFrameRate(), prototype.getFrameRate()), incomplete.isBigEndian()); return format; } private static float getSpecificValue(float fIncomplete, float fProto) { return (fIncomplete == AudioSystem.NOT_SPECIFIED) ? fProto : fIncomplete; } private static int getSpecificValue(int nIncomplete, int nProto) { return (nIncomplete == AudioSystem.NOT_SPECIFIED) ? nProto : nIncomplete; } public static class DecodedMpegAudioInputStream extends TAsynchronousFilteredAudioInputStream { private InputStream m_encodedStream; private Bitstream m_bitstream; private Decoder m_decoder; private DMAISObuffer m_oBuffer; public DecodedMpegAudioInputStream(AudioFormat outputFormat, AudioInputStream inputStream) { // TODO: try to find out length (possible?) super(outputFormat, AudioSystem.NOT_SPECIFIED); m_encodedStream = inputStream; m_bitstream = new Bitstream(inputStream); m_decoder = new Decoder(null); m_oBuffer = new DMAISObuffer(outputFormat.getChannels()); m_decoder.setOutputBuffer(m_oBuffer); } public void execute() { try { Header header = m_bitstream.readFrame(); if (header == null) { if (TDebug.TraceAudioConverter) { TDebug.out("header is null (end of mpeg stream)"); } getCircularBuffer().close(); return; } Obuffer decoderOutput = m_decoder.decodeFrame(header, m_bitstream); m_bitstream.closeFrame(); getCircularBuffer().write(m_oBuffer.getBuffer(), 0, m_oBuffer.getCurrentBufferSize()); m_oBuffer.reset(); } catch (BitstreamException e) { if (TDebug.TraceAudioConverter || TDebug.TraceAllExceptions) { TDebug.out(e); } } catch (DecoderException e) { if (TDebug.TraceAudioConverter || TDebug.TraceAllExceptions) { TDebug.out(e); } } } private boolean isBigEndian() { return getFormat().isBigEndian(); } public void close() throws IOException { super.close(); m_encodedStream.close(); } private class DMAISObuffer extends Obuffer { private int m_nChannels; private byte[] m_abBuffer; private int[] m_anBufferPointers; private boolean m_bIsBigEndian; public DMAISObuffer(int nChannels) { m_nChannels = nChannels; m_abBuffer = new byte[OBUFFERSIZE * nChannels]; m_anBufferPointers = new int[nChannels]; reset(); m_bIsBigEndian = DecodedMpegAudioInputStream.this.isBigEndian(); } public void append(int nChannel, short sValue) { // TODO: replace by TConversionTool methods /* byte bFirstByte; byte bSecondByte; if (m_bIsBigEndian) { bFirstByte = (byte) ((sValue >>> 8) & 0xFF); bSecondByte = (byte) (sValue & 0xFF); } else // little endian { bFirstByte = (byte) (sValue & 0xFF); bSecondByte = (byte) ((sValue >>> 8) & 0xFF); } m_abBuffer[m_anBufferPointers[nChannel]] = bFirstByte; m_abBuffer[m_anBufferPointers[nChannel] + 1] = bSecondByte; */ TConversionTool.shortToBytes16(sValue, m_abBuffer, m_anBufferPointers[nChannel], m_bIsBigEndian); m_anBufferPointers[nChannel] += m_nChannels * 2; } public void set_stop_flag() { } public void close() { } public void write_buffer(int nValue) { } public void clear_buffer() { } public byte[] getBuffer() { return m_abBuffer; } public int getCurrentBufferSize() { return m_anBufferPointers[0]; } public void reset() { for (int i = 0; i < m_nChannels; i++) { /* Points to byte location, * implicitely assuming 16 bit * samples. */ m_anBufferPointers[i] = i * 2; } } } } } /*** MpegFormatConversionProvider.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/0000755000175000017500000000000011377161311024357 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/mpeg/0000755000175000017500000000000011377161311025307 5ustar ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/mpeg/MpegAudioFileWriter.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/mpeg/MpegAudioFileWrit0000644000175000017500000000444511377161311030561 0ustar /* * MpegAudioFileWriter.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.sampled.file.mpeg; import java.util.Arrays; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.sampled.AudioFileTypes; import org.tritonus.share.sampled.file.THeaderlessAudioFileWriter; /** Class for writing mpeg files * * @author Florian Bomers */ public class MpegAudioFileWriter extends THeaderlessAudioFileWriter { private static final AudioFileFormat.Type[] FILE_TYPES = { //AudioFileTypes.getType("MPEG", "mpeg"), // workaround for the fixed extension problem in AudioFileFormat.Type // see org.tritonus.share.sampled.AudioFileTypes.java AudioFileTypes.getType("MP3", "mp3") }; public static AudioFormat.Encoding MPEG1L3=Encodings.getEncoding("MPEG1L3"); private static final AudioFormat[] AUDIO_FORMATS = { new AudioFormat(MPEG1L3, ALL, ALL, 1, ALL, ALL, false), new AudioFormat(MPEG1L3, ALL, ALL, 1, ALL, ALL, true), new AudioFormat(MPEG1L3, ALL, ALL, 2, ALL, ALL, false), new AudioFormat(MPEG1L3, ALL, ALL, 2, ALL, ALL, true), }; public MpegAudioFileWriter() { super(Arrays.asList(FILE_TYPES), Arrays.asList(AUDIO_FORMATS)); if (TDebug.TraceAudioFileWriter) { TDebug.out("MpegAudioFileWriter.(): begin"); } if (TDebug.TraceAudioFileWriter) { TDebug.out("MpegAudioFileWriter.(): end"); } } } /*** MpegAudioFileWriter.java ***/ ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/mpeg/MpegAudioFileReader.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/mpeg/MpegAudioFileRead0000644000175000017500000001235111377161311030502 0ustar /* * MpegAudioFileReader.java */ /* * Copyright (c) 1999 -2001 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.sampled.file.mpeg; import java.io.InputStream; import java.io.IOException; import java.io.EOFException; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.UnsupportedAudioFileException; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.sampled.AudioFileTypes; import org.tritonus.share.sampled.file.TAudioFileFormat; import org.tritonus.share.sampled.file.TAudioFileReader; /* * @author Matthias Pfisterer */ public class MpegAudioFileReader extends TAudioFileReader { private static final int SYNC = 0xFFE00000; private static final AudioFormat.Encoding[][] sm_aEncodings = { {Encodings.getEncoding("MPEG2DOT5L3"), Encodings.getEncoding("MPEG2DOT5L2"), Encodings.getEncoding("MPEG2DOT5L1")}, {null, null, null}, /* reserved */ {Encodings.getEncoding("MPEG2L3"), Encodings.getEncoding("MPEG2L2"), Encodings.getEncoding("MPEG2L1")}, {Encodings.getEncoding("MPEG1L3"), Encodings.getEncoding("MPEG1L2"), Encodings.getEncoding("MPEG1L1")}, }; private static final float[][] sm_afSamplingRates = { {11025.0F, 12000.0F, 8000.0F}, {0.0F, 0.0F, 0.0F}, /* reserved */ {22050.0F, 24000.0F, 16000.0F}, {44100.0F, 48000.0F, 32000.0F}, }; private static final int MARK_LIMIT = 4; public MpegAudioFileReader() { super(MARK_LIMIT, true); } //protected AudioFileFormat getAudioFileFormat(InputStream inputStream, long lFileSizeInBytes) public AudioFileFormat getAudioFileFormat(InputStream inputStream, long lFileSizeInBytes) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) { TDebug.out("MpegAudioFileReader.getAudioFileFormat(): begin"); } int b0 = inputStream.read(); int b1 = inputStream.read(); int b2 = inputStream.read(); int b3 = inputStream.read(); if ((b0 | b1 | b2 | b3) < 0) { throw new EOFException(); } int nHeader = (b0 << 24) + (b1 << 16) + (b2 << 8) + (b3 << 0); /* * We check for the sync bits. If they are present, we * assume that we have an MPEG bitstream. */ if ((nHeader & SYNC) != SYNC) { throw new UnsupportedAudioFileException("not a MPEG stream: no sync bits"); } int nVersion = (nHeader >> 19) & 0x3; if (nVersion == 1) { throw new UnsupportedAudioFileException("not a MPEG stream: wrong version"); } int nLayer = (nHeader >> 17) & 0x3; if (nLayer == 0) { throw new UnsupportedAudioFileException("not a MPEG stream: wrong layer"); } AudioFormat.Encoding encoding = sm_aEncodings[nVersion][nLayer - 1]; // TODO: bit rate, protection int nSFIndex = (nHeader >> 10) & 0x3; if (nSFIndex == 3) { throw new UnsupportedAudioFileException("not a MPEG stream: wrong sampling rate"); } float fSamplingRate = sm_afSamplingRates[nVersion][nSFIndex]; int nMode = (nHeader >> 6) & 0x3; int nChannels = nMode == 3 ? 1 : 2; AudioFormat format = new AudioFormat( encoding, fSamplingRate, AudioSystem.NOT_SPECIFIED /*???*/, nChannels, AudioSystem.NOT_SPECIFIED /*????*/, AudioSystem.NOT_SPECIFIED /*????*/, true); //$$fb 2000-08-15: workaround for the fixed extension problem in AudioFileFormat.Type // see org.tritonus.share.sampled.AudioFileTypes.java AudioFileFormat.Type type = AudioFileTypes.getType("MPEG", "mpeg"); if (encoding.equals(Encodings.getEncoding("MPEG1L3"))) { type = AudioFileTypes.getType("MP3", "mp3"); } /* If the file size is known, we derive the number of frames ('frame size') from it. If the values don't fit into integers, we leave them at NOT_SPECIFIED. 'Unknown' is considered less incorrect than a wrong value. */ // [fb] not specifying it causes Sun's Wave file writer to write rubbish int nByteSize = AudioSystem.NOT_SPECIFIED; int nFrameSize = AudioSystem.NOT_SPECIFIED; if (lFileSizeInBytes != AudioSystem.NOT_SPECIFIED && lFileSizeInBytes <= Integer.MAX_VALUE) { nByteSize = (int) lFileSizeInBytes; // TODO: check if we can calculate a useful value here // nFrameSize = (int) (lFileSizeInBytes / 33); } AudioFileFormat audioFileFormat = new TAudioFileFormat( type, format, nFrameSize, nByteSize); if (TDebug.TraceAudioFileReader) { TDebug.out("MpegAudioFileReader.getAudioFileFormat(): end"); } return audioFileFormat; } } /*** MpegAudioFileReader.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/jorbis/0000755000175000017500000000000011377161311025647 5ustar ././@LongLink0000000000000000000000000000016000000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/jorbis/JorbisAudioFileReader.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/sampled/file/jorbis/JorbisAudioFile0000644000175000017500000001664511377161311030620 0ustar /* * JorbisAudioFileReader.java */ /* * Copyright (c) 2001 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.sampled.file.jorbis; import java.io.InputStream; import java.io.IOException; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.UnsupportedAudioFileException; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.sampled.AudioFileTypes; import org.tritonus.share.sampled.file.TAudioFileFormat; import org.tritonus.share.sampled.file.TAudioFileReader; import com.jcraft.jogg.Buffer; import com.jcraft.jogg.SyncState; import com.jcraft.jogg.StreamState; import com.jcraft.jogg.Page; import com.jcraft.jogg.Packet; /** * @author Matthias Pfisterer */ public class JorbisAudioFileReader extends TAudioFileReader { private static final int INITAL_READ_LENGTH = 4096; private static final int MARK_LIMIT = INITAL_READ_LENGTH + 1; public JorbisAudioFileReader() { super(MARK_LIMIT, true); } protected AudioFileFormat getAudioFileFormat(InputStream inputStream, long lFileSizeInBytes) throws UnsupportedAudioFileException, IOException { // sync and verify incoming physical bitstream SyncState oggSyncState = new SyncState(); // take physical pages, weld into a logical stream of packets StreamState oggStreamState = new StreamState(); // one Ogg bitstream page. Vorbis packets are inside Page oggPage = new Page(); // one raw packet of data for decode Packet oggPacket = new Packet(); int bytes = 0; // Decode setup oggSyncState.init(); // Now we can read pages // grab some data at the head of the stream. We want the first page // (which is guaranteed to be small and only contain the Vorbis // stream initial header) We need the first page to get the stream // serialno. // submit a 4k block to libvorbis' Ogg layer int index = oggSyncState.buffer(INITAL_READ_LENGTH); bytes = inputStream.read(oggSyncState.data, index, INITAL_READ_LENGTH); oggSyncState.wrote(bytes); // Get the first page. if (oggSyncState.pageout(oggPage) != 1) { // have we simply run out of data? If so, we're done. if (bytes < 4096) { // IDEA: throw EOFException? throw new UnsupportedAudioFileException("not a Vorbis stream: ended prematurely"); } throw new UnsupportedAudioFileException("not a Vorbis stream: not in Ogg bitstream format"); } // Get the serial number and set up the rest of decode. // serialno first; use it to set up a logical stream oggStreamState.init(oggPage.serialno()); // extract the initial header from the first page and verify that the // Ogg bitstream is in fact Vorbis data // I handle the initial header first instead of just having the code // read all three Vorbis headers at once because reading the initial // header is an easy way to identify a Vorbis bitstream and it's // useful to see that functionality seperated out. if (oggStreamState.pagein(oggPage) < 0) { // error; stream version mismatch perhaps throw new UnsupportedAudioFileException("not a Vorbis stream: can't read first page of Ogg bitstream data"); } if (oggStreamState.packetout(oggPacket) != 1) { // no page? must not be vorbis throw new UnsupportedAudioFileException("not a Vorbis stream: can't read initial header packet"); } Buffer oggPacketBuffer = new Buffer(); oggPacketBuffer.readinit(oggPacket.packet_base, oggPacket.packet, oggPacket.bytes); int nPacketType = oggPacketBuffer.read(8); byte[] buf = new byte[6]; oggPacketBuffer.read(buf, 6); if(buf[0]!='v' || buf[1]!='o' || buf[2]!='r' || buf[3]!='b' || buf[4]!='i' || buf[5]!='s') { throw new UnsupportedAudioFileException("not a Vorbis stream: not a vorbis header packet"); } if (nPacketType != 1) { throw new UnsupportedAudioFileException("not a Vorbis stream: first packet is not the identification header"); } if(oggPacket.b_o_s == 0) { throw new UnsupportedAudioFileException("not a Vorbis stream: initial packet not marked as beginning of stream"); } int nVersion = oggPacketBuffer.read(32); if (nVersion != 0) { throw new UnsupportedAudioFileException("not a Vorbis stream: wrong vorbis version"); } int nChannels = oggPacketBuffer.read(8); float fSampleRate = oggPacketBuffer.read(32); // These are only used for error checking. int bitrate_upper = oggPacketBuffer.read(32); int bitrate_nominal = oggPacketBuffer.read(32); int bitrate_lower = oggPacketBuffer.read(32); int[] blocksizes = new int[2]; blocksizes[0] = 1 << oggPacketBuffer.read(4); blocksizes[1] = 1 << oggPacketBuffer.read(4); if (fSampleRate < 1.0F || nChannels < 1 || blocksizes[0] < 8|| blocksizes[1] < blocksizes[0] || oggPacketBuffer.read(1) != 1) { throw new UnsupportedAudioFileException("not a Vorbis stream: illegal values in initial header"); } if (TDebug.TraceAudioFileReader) { TDebug.out("JorbisAudioFileReader.getAudioFileFormat(): channels: " + nChannels); } if (TDebug.TraceAudioFileReader) { TDebug.out("JorbisAudioFileReader.getAudioFileFormat(): rate: " + fSampleRate); } /* If the file size is known, we derive the number of frames ('frame size') from it. If the values don't fit into integers, we leave them at NOT_SPECIFIED. 'Unknown' is considered less incorrect than a wrong value. */ // [fb] not specifying it causes Sun's Wave file writer to write rubbish int nByteSize = AudioSystem.NOT_SPECIFIED; if (lFileSizeInBytes != AudioSystem.NOT_SPECIFIED && lFileSizeInBytes <= Integer.MAX_VALUE) { nByteSize = (int) lFileSizeInBytes; } int nFrameSize = AudioSystem.NOT_SPECIFIED; /* Can we calculate a useful size? Peeking into ogginfo gives the insight that the only way seems to be reading through the file. This is something we do not want, at least not by default. */ // nFrameSize = (int) (lFileSizeInBytes / ...; AudioFormat format = new AudioFormat( Encodings.getEncoding("VORBIS"), fSampleRate, AudioSystem.NOT_SPECIFIED, nChannels, AudioSystem.NOT_SPECIFIED, AudioSystem.NOT_SPECIFIED, true); // this value is chosen arbitrarily if (TDebug.TraceAudioFileReader) { TDebug.out("JorbisAudioFileReader.getAudioFileFormat(): AudioFormat: " + format); } AudioFileFormat.Type type = AudioFileTypes.getType("Ogg","ogg"); AudioFileFormat audioFileFormat = new TAudioFileFormat( type, format, nFrameSize, nByteSize); if (TDebug.TraceAudioFileReader) { TDebug.out("JorbisAudioFileReader.getAudioFileFormat(): AudioFileFormat: " + audioFileFormat); } return audioFileFormat; } } /*** JorbisAudioFileReader.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/lowlevel/0000755000175000017500000000000011377161311023644 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/lowlevel/lame/0000755000175000017500000000000011377161311024562 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/lowlevel/lame/Lame.java0000644000175000017500000003475211377161311026316 0ustar /* * Lame.java */ /* * Copyright (c) 2000,2001 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.lowlevel.lame; import java.io.IOException; import java.io.UnsupportedEncodingException; import javax.sound.sampled.AudioFormat; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.Encodings; public class Lame { // constants from lame.h private static final int MPEG_VERSION_2 = 0; // MPEG-2 private static final int MPEG_VERSION_1 = 1; // MPEG-1 private static final int MPEG_VERSION_2DOT5 = 2; // MPEG-2.5 public static final int QUALITY_LOWEST = 9; // low mean bitrate in VBR mode public static final int QUALITY_LOW = 7; public static final int QUALITY_MIDDLE = 5; public static final int QUALITY_HIGH = 2; // quality==0 not yet coded in LAME (3.83alpha) public static final int QUALITY_HIGHEST = 1; // high mean bitrate in VBR mode public static final int CHANNEL_MODE_STEREO = 0; public static final int CHANNEL_MODE_JOINT_STEREO = 1; public static final int CHANNEL_MODE_DUAL_CHANNEL = 2; public static final int CHANNEL_MODE_MONO = 3; // channel mode has no influence on mono files. public static final int CHANNEL_MODE_AUTO = -1; public static final int BITRATE_AUTO = -1; // suggested maximum buffer size for an mpeg frame private static final int DEFAULT_PCM_BUFFER_SIZE=2048*16; // frame size=576 for MPEG2 and MPEG2.5 // =576*2 for MPEG1 private static boolean libAvailable=false; private static String linkError=""; private static int DEFAULT_QUALITY = QUALITY_MIDDLE; private static int DEFAULT_BITRATE = BITRATE_AUTO; private static int DEFAULT_CHANNEL_MODE = CHANNEL_MODE_AUTO; // in VBR mode, bitrate is ignored. private static boolean DEFAULT_VBR = false; private static final int OUT_OF_MEMORY = -300; private static final int NOT_INITIALIZED = -301; private static final int LAME_ENC_NOT_FOUND = -302; private static final String PROPERTY_PREFIX = "tritonus.lame."; static { try { System.loadLibrary("lametritonus"); libAvailable=true; } catch (UnsatisfiedLinkError e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } linkError=e.getMessage(); } } /** * Holds LameConf * This field is long because on 64 bit architectures, the native * size of ints may be 64 bit. */ private long m_lNativeGlobalFlags; // these fields are set upon successful initialization to show effective values. private int effQuality; private int effBitRate; private int effVbr; private int effChMode; private int effSampleRate; private int effEncoding; private void handleNativeException(int resultCode) { close(); if (resultCode==OUT_OF_MEMORY) { throw new OutOfMemoryError("out of memory"); } else if (resultCode==NOT_INITIALIZED) { throw new RuntimeException("not initialized"); } else if (resultCode==LAME_ENC_NOT_FOUND) { libAvailable=false; linkError="lame_enc.dll not found"; throw new IllegalArgumentException(linkError); } } /** * Initializes the decoder with * DEFAULT_BITRATE, DEFAULT_CHANNEL_MODE, DEFAULT_QUALITY, and DEFAULT_VBR * Throws IllegalArgumentException when parameters are not supported * by LAME. */ public Lame(AudioFormat sourceFormat) { initParams(sourceFormat); } /** * Initializes the decoder. * Throws IllegalArgumentException when parameters are not supported * by LAME. */ public Lame(AudioFormat sourceFormat, int bitRate, int channelMode, int quality, boolean VBR) { initParams(sourceFormat, bitRate, channelMode, quality, VBR); } private void initParams(AudioFormat sourceFormat) { readParameters(); initParams(sourceFormat, DEFAULT_BITRATE, DEFAULT_CHANNEL_MODE, DEFAULT_QUALITY, DEFAULT_VBR); } private void initParams(AudioFormat sourceFormat, int bitRate, int channelMode, int quality, boolean VBR) { // simple check that bitrate is not too high for MPEG2 and MPEG2.5 // todo: exception ? if (sourceFormat.getSampleRate()<32000 && bitRate>160) { bitRate=160; } if (TDebug.TraceAudioConverter) { TDebug.out("LAME parameters: channels="+sourceFormat.getChannels() +" sample rate="+((int) Math.round(sourceFormat.getSampleRate())+"Hz") +" bitrate="+bitRate+"KBit/s"); TDebug.out(" channelMode="+chmode2string(channelMode) +" quality="+quality2string(quality) +" VBR="+VBR+" bigEndian="+sourceFormat.isBigEndian()); } int result=nInitParams(sourceFormat.getChannels(), (int) Math.round(sourceFormat.getSampleRate()), bitRate, channelMode, quality, VBR, sourceFormat.isBigEndian()); if (result<0) { handleNativeException(result); throw new IllegalArgumentException( "parameters not supported by LAME (returned "+result+")"); } // provide effective parameters to user-space try { System.setProperty(PROPERTY_PREFIX + "effective.quality", quality2string(getEffectiveQuality())); System.setProperty(PROPERTY_PREFIX + "effective.bitrate", String.valueOf(getEffectiveBitRate())); System.setProperty(PROPERTY_PREFIX + "effective.chmode", chmode2string(getEffectiveChannelMode())); System.setProperty(PROPERTY_PREFIX + "effective.vbr", String.valueOf(getEffectiveVBR())); System.setProperty(PROPERTY_PREFIX + "effective.samplerate", String.valueOf(getEffectiveSampleRate())); System.setProperty(PROPERTY_PREFIX + "effective.encoding", getEffectiveEncoding().toString()); System.setProperty(PROPERTY_PREFIX + "encoder.version", getEncoderVersion()); } catch (Throwable t) { if (TDebug.TraceAllExceptions) { TDebug.out(t); } } } /** * Initializes the lame encoder. * Throws IllegalArgumentException when parameters are not supported * by LAME. */ private native int nInitParams(int channels, int sampleRate, int bitrate, int mode, int quality, boolean VBR, boolean bigEndian); /** * returns -1 if string is too short * or returns one of the exception constants * if everything OK, returns the length of the string */ private native int nGetEncoderVersion(byte[] string); public String getEncoderVersion() { byte[] string=new byte[300]; int res=nGetEncoderVersion(string); if (res<0) { if (res==-1) { throw new RuntimeException("Unexpected error in Lame.getEncoderVersion()"); } handleNativeException(res); } String sRes=""; if (res>0) { try { sRes=new String(string, 0, res, "ISO-8859-1"); } catch (UnsupportedEncodingException uee) { if (TDebug.TraceAllExceptions) { TDebug.out(uee); } sRes=new String(string, 0, res); } } return sRes; } private native int nGetPCMBufferSize(int suggested); /** * Returns the buffer needed pcm buffer size. * The passed parameter is a wished buffer size. * The implementation of the encoder may return * a lower or higher buffer size. * The encoder must be initalized (i.e. not closed) at this point. * A return value of <0 denotes an error. */ public int getPCMBufferSize() { int ret=nGetPCMBufferSize(DEFAULT_PCM_BUFFER_SIZE); if (ret<0) { handleNativeException(ret); throw new RuntimeException("Unknown error in Lame.nGetPCMBufferSize(). Resultcode="+ret); } return ret; } public int getMP3BufferSize() { // bad estimate :) return getPCMBufferSize()/2+1024; } private native int nEncodeBuffer(byte[] pcm, int offset, int length, byte[] encoded); /** * Encode a block of data. Throws IllegalArgumentException when parameters * are wrong. * When the encoded array is too small, * an ArrayIndexOutOfBoundsException is thrown. * length should be the value returned by getPCMBufferSize. * @return the number of bytes written to encoded. May be 0. */ public int encodeBuffer(byte[] pcm, int offset, int length, byte[] encoded) throws ArrayIndexOutOfBoundsException { if (length<0 || (offset+length)>pcm.length) { throw new IllegalArgumentException("inconsistent parameters"); } int result=nEncodeBuffer(pcm, offset, length, encoded); if (result<0) { if (result==-1) { throw new ArrayIndexOutOfBoundsException("Encode buffer too small"); } handleNativeException(result); throw new RuntimeException("crucial error in encodeBuffer."); } return result; } /** * Has to be called to finish encoding. encoded may be null. * * @return the number of bytes written to encoded */ private native int nEncodeFinish(byte[] encoded); public int encodeFinish(byte[] encoded) { return nEncodeFinish(encoded); } /* * Deallocates resources used by the native library. * *MUST* be called ! */ private native void nClose(); public void close() { nClose(); } /* * Returns whether the libraries are installed correctly. */ public static boolean isLibAvailable() { return libAvailable; } public static String getLinkError() { return linkError; } public int getEffectiveQuality() { if (effQuality>=QUALITY_LOWEST) { return QUALITY_LOWEST; } else if (effQuality>=QUALITY_LOW) { return QUALITY_LOW; } else if (effQuality>=QUALITY_MIDDLE) { return QUALITY_MIDDLE; } else if (effQuality>=QUALITY_HIGH) { return QUALITY_HIGH; } return QUALITY_HIGHEST; } public int getEffectiveBitRate() { return effBitRate; } public int getEffectiveChannelMode() { return effChMode; } public boolean getEffectiveVBR() { return effVbr!=0; } public int getEffectiveSampleRate() { return effSampleRate; } public AudioFormat.Encoding getEffectiveEncoding() { if (effEncoding==MPEG_VERSION_2) { if (getEffectiveSampleRate()<16000) { return Encodings.getEncoding("MPEG2DOT5L3"); } return Encodings.getEncoding("MPEG2L3"); } else if (effEncoding==MPEG_VERSION_2DOT5) { return Encodings.getEncoding("MPEG2DOT5L3"); } return Encodings.getEncoding("MPEG1L3"); } /** * workaround for missing paramtrization possibilities * for FormatConversionProviders */ private void readParameters() { String v=getStringProperty("quality", quality2string(DEFAULT_QUALITY)); DEFAULT_QUALITY=string2quality(v.toLowerCase(), DEFAULT_QUALITY); DEFAULT_BITRATE=getIntProperty("bitrate", DEFAULT_BITRATE); v=getStringProperty("chmode", chmode2string(DEFAULT_CHANNEL_MODE)); DEFAULT_CHANNEL_MODE=string2chmode(v.toLowerCase(), DEFAULT_CHANNEL_MODE); DEFAULT_VBR = getBooleanProperty("vbr", DEFAULT_VBR); // set the parameters back so that user program can verify them try { System.setProperty(PROPERTY_PREFIX + "quality", quality2string(DEFAULT_QUALITY)); System.setProperty(PROPERTY_PREFIX + "bitrate", String.valueOf(DEFAULT_BITRATE)); System.setProperty(PROPERTY_PREFIX + "chmode", chmode2string(DEFAULT_CHANNEL_MODE)); System.setProperty(PROPERTY_PREFIX + "vbr", String.valueOf(DEFAULT_VBR)); } catch (Throwable t) { if (TDebug.TraceAllExceptions) { TDebug.out(t); } } } private String quality2string(int quality) { if (quality>=QUALITY_LOWEST) { return "lowest"; } else if (quality>=QUALITY_LOW) { return "low"; } else if (quality>=QUALITY_MIDDLE) { return "middle"; } else if (quality>=QUALITY_HIGH) { return "high"; } return "highest"; } private int string2quality(String quality, int def) { if (quality.equals("lowest")) { return QUALITY_LOWEST; } else if (quality.equals("low")) { return QUALITY_LOW; } else if (quality.equals("middle")) { return QUALITY_MIDDLE; } else if (quality.equals("high")) { return QUALITY_HIGH; } else if (quality.equals("highest")) { return QUALITY_HIGHEST; } return def; } private String chmode2string(int chmode) { if (chmode==CHANNEL_MODE_STEREO) { return "stereo"; } else if (chmode==CHANNEL_MODE_JOINT_STEREO) { return "jointstereo"; } else if (chmode==CHANNEL_MODE_DUAL_CHANNEL) { return "dual"; } else if (chmode==CHANNEL_MODE_MONO) { return "mono"; } else if (chmode==CHANNEL_MODE_AUTO) { return "auto"; } return "auto"; } private int string2chmode(String chmode, int def) { if (chmode.equals("stereo")) { return CHANNEL_MODE_STEREO; } else if (chmode.equals("jointstereo")) { return CHANNEL_MODE_JOINT_STEREO; } else if (chmode.equals("dual")) { return CHANNEL_MODE_DUAL_CHANNEL; } else if (chmode.equals("mono")) { return CHANNEL_MODE_MONO; } else if (chmode.equals("auto")) { return CHANNEL_MODE_AUTO; } return def; } private static boolean getBooleanProperty(String strName, boolean def) { String strPropertyName = PROPERTY_PREFIX + strName; String strValue = def ? "true":"false"; try { strValue = System.getProperty(strPropertyName, strValue); } catch (Throwable t) { if (TDebug.TraceAllExceptions) { TDebug.out(t); } } strValue=strValue.toLowerCase(); boolean bValue=false; if (strValue.length()>0) { if (def) { bValue=(strValue.charAt(0)!='f') // false && (strValue.charAt(0)!='n') // no && (!strValue.equals("off")); } else { bValue=(strValue.charAt(0)=='t') // true || (strValue.charAt(0)=='y') // yes || (strValue.equals("on")); } } return bValue; } private static String getStringProperty(String strName, String def) { String strPropertyName = PROPERTY_PREFIX + strName; String strValue = def; try { strValue = System.getProperty(strPropertyName, def); } catch (Throwable t) { if (TDebug.TraceAllExceptions) { TDebug.out(t); } } return strValue; } private static int getIntProperty(String strName, int def) { String strPropertyName = PROPERTY_PREFIX + strName; int value = def; try { String strValue = System.getProperty(strPropertyName, String.valueOf(def)); value=new Integer(strValue).intValue(); } catch (Throwable e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } } return value; } } /*** Lame.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/0000755000175000017500000000000011377161311023115 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/ArraySet.java0000644000175000017500000000311411377161311025511 0ustar /* * ArraySet.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share; import java.util.ArrayList; import java.util.Collection; import java.util.Set; public class ArraySet extends ArrayList implements Set { public ArraySet() { super(); } public ArraySet(Collection c) { this(); addAll(c); } public boolean add(Object element) { if (!contains(element)) { super.add(element); return true; } else { return false; } } public void add(int index, Object element) { throw new UnsupportedOperationException("ArraySet.add(int index, Object element) unsupported"); } public Object set(int index, Object element) { throw new UnsupportedOperationException("ArraySet.set(int index, Object element) unsupported"); } } /*** ArraySet.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/0000755000175000017500000000000011377161311024542 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/AudioFileTypes.java0000644000175000017500000001250611377161311030277 0ustar /* * AudioFileTypes.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled; import javax.sound.sampled.AudioFileFormat; import org.tritonus.share.StringHashedSet; import org.tritonus.share.TDebug; /** * This class is a proposal for generic handling of audio file format types. * The main purpose is to provide a standardized way of * implementing audio file format types. Like this, file types * are only identified by their String name, and not, as currently, * by their object instance. *

* A standard registry of file type names will * be maintained by the Tritonus team. *

* In a specification request to JavaSoft, these static methods * could be integrated intoAudioFileFormat.Type. The static * instances of AIFF, AIFC, AU, SND, and WAVE types in class * AudioFileFormat.Type should be retrieved * using this method, too (internally).
* At best, the protected constructor of that class * should also be replaced to be a private constructor. * Like this it will be prevented that developers create * instances of Type, which causes problems with the * equals method. In fact, the equals method should be redefined anyway * so that it compares the names and not the objects. *

* Also, the file name extension should be deprecated and moved * to AudioFileFormat. There are some file formats * which have varying extensions depending, e.g. on the encoding. * An example for this is MPEG: the special encoding Mpeg 1, layer 3 * has the extension mp3, whereas other Mpeg files use mpeg or mpg.
* This could be implemented with 2 methods in AudioFileFormat: *

  1. String[] getFileExtensions(): returns all usable extensions * for this file. *
  2. String getDefaultFileExtension(): returns the preferred extension. *
* * @author Florian Bomers */ public class AudioFileTypes extends AudioFileFormat.Type { /** contains all known types */ private static StringHashedSet types = new StringHashedSet(); // initially add the standard types static { types.add(AudioFileFormat.Type.AIFF); types.add(AudioFileFormat.Type.AIFC); types.add(AudioFileFormat.Type.AU); types.add(AudioFileFormat.Type.SND); types.add(AudioFileFormat.Type.WAVE); } AudioFileTypes(String name, String ext) { super(name, ext); } /** * Use this method to retrieve an instance of * AudioFileFormat.Type of the specified * name. If no type of this name is in the internally * maintained list, null is returned. *

* This method is supposed to be used by user programs. *

* In order to assure a well-filled internal list, * call AudioSystem.getAudioFileTypes() * at initialization time. * * @see #getType(String, String) */ public static AudioFileFormat.Type getType(String name) { return getType(name, null); } /** * Use this method to retrieve an instance of * AudioFileFormat.Type of the specified * name. If it does not exist in the internal list * of types, a new type is created and returned. * If it a type of that name already exists (regardless * of extension), it is returned. In this case it can * not be guaranteed that the extension is the same as * passed as parameter.
* If extension is null, * this method returns null if the * type of the specified name does not exist in the * internal list. *

* This method is supposed to be used by file providers. * Every file reader and file writer provider should * exclusively use this method for retrieving instances * of AudioFileFormat.Type. */ public static AudioFileFormat.Type getType(String name, String extension) { AudioFileFormat.Type res=(AudioFileFormat.Type) types.get(name); if (res==null) { // it is not already in the string set. if (extension==null) { return null; } // Create a new type instance. res=new AudioFileTypes(name, extension); // and save it for the future types.add(res); } return res; } /** * Tests for equality of 2 file types. They are equal when their names match. *

* This function should be AudioFileFormat.Type.equals and must * be considered as a temporary workaround until it flows into the * JavaSound API. */ // IDEA: create a special "NOT_SPECIFIED" file type // and a AudioFileFormat.Type.matches method. public static boolean equals(AudioFileFormat.Type t1, AudioFileFormat.Type t2) { return t2.toString().equals(t1.toString()); } } /*** AudioFileTypes.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/AudioFormats.java0000644000175000017500000001044611377161311030007 0ustar /* * AudioFormats.java */ /* * Copyright (c) 1999,2000 by Matthias Pfisterer * Copyright (c) 1999 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; public class AudioFormats { private static boolean doMatch(int i1, int i2) { return i1 == AudioSystem.NOT_SPECIFIED || i2 == AudioSystem.NOT_SPECIFIED || i1 == i2; } private static boolean doMatch(float f1, float f2) { return f1 == AudioSystem.NOT_SPECIFIED || f2 == AudioSystem.NOT_SPECIFIED || Math.abs(f1 - f2) < 1.0e-9; } /** * Tests whether 2 AudioFormats have matching formats. * A field matches when it is AudioSystem.NOT_SPECIFIED in * at least one of the formats or the field is the same * in both formats.
* Exceptions: *

    *
  • Encoding must always be equal for a match. *
  • For a match, endianness must be equal if SampleSizeInBits is not * AudioSystem.NOT_SPECIFIED and greater than 8bit in both formats.
    * In other words: If SampleSizeInBits is AudioSystem.NOT_SPECIFIED * in either format or both formats have a SampleSizeInBits<8, * endianness does not matter. *
* This is a proposition to be used as AudioFormat.matches. * It can therefore be considered as a temporary workaround. */ // IDEA: create a special "NOT_SPECIFIED" encoding // and a AudioFormat.Encoding.matches method. public static boolean matches(AudioFormat format1, AudioFormat format2) { //$$fb 19 Dec 99: endian must be checked, too. // // we do have a problem with redundant elements: // e.g. // encoding=ALAW || ULAW -> bigEndian and samplesizeinbits don't matter // sample size in bits == 8 -> bigEndian doesn't matter // sample size in bits > 8 -> PCM is always signed. // This is an overall issue in JavaSound, I think. // At present, it is not consistently implemented to support these // redundancies and implicit definitions // // As a workaround of this issue I return in the converters // all combinations, e.g. for ULAW I return bigEndian and !bigEndian formats. /* old version */ // as proposed by florian return Encodings.equals(format1.getEncoding(), format2.getEncoding()) && (format2.getSampleSizeInBits()<=8 || format1.getSampleSizeInBits()==AudioSystem.NOT_SPECIFIED || format2.getSampleSizeInBits()==AudioSystem.NOT_SPECIFIED || format1.isBigEndian()==format2.isBigEndian()) && doMatch(format1.getChannels(),format2.getChannels()) && doMatch(format1.getSampleSizeInBits(), format2.getSampleSizeInBits()) && doMatch(format1.getFrameSize(), format2.getFrameSize()) && doMatch(format1.getSampleRate(), format2.getSampleRate()) && doMatch(format1.getFrameRate(),format2.getFrameRate()); } /** * Tests for exact equality of 2 AudioFormats. * This is the behaviour of AudioFormat.matches in JavaSound 1.0. *

* This is a proposition to be used as AudioFormat.equals. * It can therefore be considered as a temporary workaround. */ public static boolean equals(AudioFormat format1, AudioFormat format2) { return Encodings.equals(format1.getEncoding(), format2.getEncoding()) && format1.getChannels() == format2.getChannels() && format1.getSampleSizeInBits() == format2.getSampleSizeInBits() && format1.getFrameSize() == format2.getFrameSize() && (Math.abs(format1.getSampleRate() - format2.getSampleRate()) < 1.0e-9) && (Math.abs(format1.getFrameRate() - format2.getFrameRate()) < 1.0e-9); } } /*** AudioFormats.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/AudioUtils.java0000644000175000017500000001116211377161311027470 0ustar /* * AudioUtils.java */ /* * Copyright (c) 2000 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Collection; import java.util.Iterator; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.spi.AudioFileWriter; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.TConversionTool; public class AudioUtils { public static long getLengthInBytes(AudioInputStream audioInputStream) { return getLengthInBytes(audioInputStream.getFormat(), audioInputStream.getFrameLength()); /* long lLengthInFrames = audioInputStream.getFrameLength(); int nFrameSize = audioInputStream.getFormat().getFrameSize(); if (lLengthInFrames >= 0 && nFrameSize >= 1) { return lLengthInFrames * nFrameSize; } else { return AudioSystem.NOT_SPECIFIED; } */ } /** * if the passed value for lLength is * AudioSystem.NOT_SPECIFIED (unknown * length), the length in bytes becomes * AudioSystem.NOT_SPECIFIED, too. */ public static long getLengthInBytes(AudioFormat audioFormat, long lLengthInFrames) { int nFrameSize = audioFormat.getFrameSize(); if (lLengthInFrames >= 0 && nFrameSize >= 1) { return lLengthInFrames * nFrameSize; } else { return AudioSystem.NOT_SPECIFIED; } } public static boolean containsFormat(AudioFormat sourceFormat, Iterator possibleFormats) { while (possibleFormats.hasNext()) { AudioFormat format = (AudioFormat) possibleFormats.next(); if (AudioFormats.matches(format, sourceFormat)) { return true; } } return false; } /** * Conversion milliseconds -> bytes */ public static long millis2Bytes(long ms, AudioFormat format) { return millis2Bytes(ms, format.getFrameRate(), format.getFrameSize()); } public static long millis2Bytes(long ms, float frameRate, int frameSize) { return (long) (ms*frameRate/1000*frameSize); } /** * Conversion milliseconds -> bytes (bytes will be frame-aligned) */ public static long millis2BytesFrameAligned(long ms, AudioFormat format) { return millis2BytesFrameAligned(ms, format.getFrameRate(), format.getFrameSize()); } public static long millis2BytesFrameAligned(long ms, float frameRate, int frameSize) { return ((long) (ms*frameRate/1000))*frameSize; } /** * Conversion milliseconds -> frames */ public static long millis2Frames(long ms, AudioFormat format) { return millis2Frames(ms, format.getFrameRate()); } public static long millis2Frames(long ms, float frameRate) { return (long) (ms*frameRate/1000); } /** * Conversion bytes -> milliseconds */ public static long bytes2Millis(long bytes, AudioFormat format) { return (long) (bytes/format.getFrameRate()*1000/format.getFrameSize()); } /** * Conversion frames -> milliseconds */ public static long frames2Millis(long frames, AudioFormat format) { return (long) (frames/format.getFrameRate()*1000); } //$$fb 2000-07-18: added these debugging functions public static String NS_or_number(int number) { return (number==AudioSystem.NOT_SPECIFIED)?"NOT_SPECIFIED":String.valueOf(number); } public static String NS_or_number(float number) { return (number==AudioSystem.NOT_SPECIFIED)?"NOT_SPECIFIED":String.valueOf(number); } /** * For debugging purposes. */ public static String format2ShortStr(AudioFormat format) { return format.getEncoding() + "-" + NS_or_number(format.getChannels()) + "ch-" + NS_or_number(format.getSampleSizeInBits()) + "bit-" + NS_or_number(((int)format.getSampleRate())) + "Hz-"+ (format.isBigEndian() ? "be" : "le"); } } /*** AudioUtils.java ***/ ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/FloatSampleBuffer.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/FloatSampleBuffer.jav0000644000175000017500000010173411377161311030613 0ustar /* * FloatSampleBuffer.java */ /* * Copyright (c) 2000 by Florian Bomers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled; import java.util.ArrayList; import java.util.Iterator; import java.util.Random; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.spi.AudioFileWriter; import org.tritonus.share.TDebug; /** * A class for small buffers of samples in linear, 32-bit * floating point format. *

* It is supposed to be a replacement of the byte[] stream * architecture of JavaSound, especially for chains of * AudioInputStreams. Ideally, all involved AudioInputStreams * handle reading into a FloatSampleBuffer. *

* Specifications: *

    *
  1. Channels are separated, i.e. for stereo there are 2 float arrays * with the samples for the left and right channel *
  2. All data is handled in samples, where one sample means * one float value in each channel *
  3. All samples are normalized to the interval [-1.0...1.0] *
*

* When a cascade of AudioInputStreams use FloatSampleBuffer for * processing, they may implement the interface FloatSampleInput. * This signals that this stream may provide float buffers * for reading. The data is not converted back to bytes, * but stays in a single buffer that is passed from stream to stream. * For that serves the read(FloatSampleBuffer) method, which is * then used as replacement for the byte-based read functions of * AudioInputStream.
* However, backwards compatibility must always be retained, so * even when an AudioInputStream implements FloatSampleInput, * it must work the same way when any of the byte-based read methods * is called.
* As an example, consider the following set-up:
*

    *
  • auAIS is an AudioInputStream (AIS) that reads from an AU file * in 8bit pcm at 8000Hz. It does not implement FloatSampleInput. *
  • pcmAIS1 is an AIS that reads from auAIS and converts the data * to PCM 16bit. This stream implements FloatSampleInput, i.e. it * can generate float audio data from the ulaw samples. *
  • pcmAIS2 reads from pcmAIS1 and adds a reverb. * It operates entirely on floating point samples. *
  • The method that reads from pcmAIS2 (i.e. AudioSystem.write) does * not handle floating point samples. *
* So, what happens when a block of samples is read from pcmAIS2 ? *
    *
  1. the read(byte[]) method of pcmAIS2 is called *
  2. pcmAIS2 always operates on floating point samples, so * it uses an own instance of FloatSampleBuffer and initializes * it with the number of samples requested in the read(byte[]) * method. *
  3. It queries pcmAIS1 for the FloatSampleInput interface. As it * implements it, pcmAIS2 calls the read(FloatSampleBuffer) method * of pcmAIS1. *
  4. pcmAIS1 notes that its underlying stream does not support floats, * so it instantiates a byte buffer which can hold the number of * samples of the FloatSampleBuffer passed to it. It calls the * read(byte[]) method of auAIS. *
  5. auAIS fills the buffer with the bytes. *
  6. pcmAIS1 calls the initFromByteArray method of * the float buffer to initialize it with the 8 bit data. *
  7. Then pcmAIS1 processes the data: as the float buffer is * normalized, it does nothing with the buffer - and returns * control to pcmAIS2. The SampleSizeInBits field of the * AudioFormat of pcmAIS1 defines that it should be 16 bits. *
  8. pcmAIS2 receives the filled buffer from pcmAIS1 and does * its processing on the buffer - it adds the reverb. *
  9. As pcmAIS2's read(byte[]) method had been called, pcmAIS2 * calls the convertToByteArray method of * the float buffer to fill the byte buffer with the * resulting samples. *
*

* To summarize, here are some advantages when using a FloatSampleBuffer * for streaming: *

    *
  • no conversions from/to bytes need to be done during processing *
  • the sample size in bits is irrelevant - normalized range *
  • higher quality for processing *
  • separated channels (easy process/remove/add channels) *
  • potentially less copying of audio data, as processing * of the float samples is generally done in-place. The same * instance of a FloatSampleBuffer may be used from the data source * to the final data sink. *
*

* Simple benchmarks showed that the processing needs * for the conversion to and from float is about the same as * when converting it to shorts or ints without dithering, * and significantly higher with dithering. An own implementation * of a random number generator may improve this. *

* "Lazy" deletion of samples and channels:
*

    *
  • When the sample count is reduced, the arrays are not resized, but * only the member variable sampleCount is reduced. A subsequent * increase of the sample count (which will occur frequently), will check * that and eventually reuse the existing array. *
  • When a channel is deleted, it is not removed from memory but only * hidden. Subsequent insertions of a channel will check whether a hidden channel * can be reused. *
* The lazy mechanism can save many array instantiation (and copy-) operations * for the sake of performance. All relevant methods exist in a second * version which allows explicitely to disable lazy deletion. *

* Use the reset functions to clear the memory and remove * hidden samples and channels. *

* Note that the lazy mechanism implies that the arrays returned * from getChannel(int) may have a greater size * than getSampleCount(). Consequently, be sure to never rely on the * length field of the sample arrays. *

* As an example, consider a chain of converters that all act * on the same instance of FloatSampleBuffer. Some converters * may decrease the sample count (e.g. sample rate converter) and * delete channels (e.g. PCM2PCM converter). So, processing of one * block will decrease both. For the next block, all starts * from the beginning. With the lazy mechanism, all float arrays * are only created once for processing all blocks.
* Having lazy disabled would require for each chunk that is processed *

    *
  1. new instantiation of all channel arrays * at the converter chain beginning as they have been * either deleted or decreased in size during processing of the * previous chunk, and *
  2. re-instantiation of all channel arrays for * the reduction of the sample count. *
*

* Dithering:
* By default, this class uses dithering for reduction * of sample width (e.g. original data was 16bit, target * data is 8bit). As dithering may be needed in other cases * (especially when the float samples are processed using DSP * algorithms), or it is preferred to switch it off, * dithering can be explicitely switched on or off with * the method setDitherMode(int).
* For a discussion about dithering, see * * here and * * here. * * @author Florian Bomers */ public class FloatSampleBuffer { /** Whether the functions without lazy parameter are lazy or not. */ private static final boolean LAZY_DEFAULT=true; private ArrayList channels=new ArrayList(); // contains for each channel a float array private int sampleCount=0; private int channelCount=0; private float sampleRate=0; private int originalFormatType=0; /** Constant for setDitherMode: dithering will be enabled if sample size is decreased */ public static final int DITHER_MODE_AUTOMATIC=0; /** Constant for setDitherMode: dithering will be done */ public static final int DITHER_MODE_ON=1; /** Constant for setDitherMode: dithering will not be done */ public static final int DITHER_MODE_OFF=2; private static Random random=null; private float ditherBits=0.8f; private boolean doDither=false; // set in convertFloatToBytes // e.g. the sample rate converter may want to force dithering private int ditherMode=DITHER_MODE_AUTOMATIC; // sample width (must be in order !) private static final int F_8=1; private static final int F_16=2; private static final int F_24=3; private static final int F_32=4; private static final int F_SAMPLE_WIDTH_MASK=F_8 | F_16 | F_24 | F_32; // format bit-flags private static final int F_SIGNED=8; private static final int F_BIGENDIAN=16; // supported formats private static final int CT_8S=F_8 | F_SIGNED; private static final int CT_8U=F_8; private static final int CT_16SB=F_16 | F_SIGNED | F_BIGENDIAN; private static final int CT_16SL=F_16 | F_SIGNED; private static final int CT_24SB=F_24 | F_SIGNED | F_BIGENDIAN; private static final int CT_24SL=F_24 | F_SIGNED; private static final int CT_32SB=F_32 | F_SIGNED | F_BIGENDIAN; private static final int CT_32SL=F_32 | F_SIGNED; //////////////////////////////// initialization ///////////////////////////////// public FloatSampleBuffer() { this(0,0,1); } public FloatSampleBuffer(int channelCount, int sampleCount, float sampleRate) { init(channelCount, sampleCount, sampleRate, LAZY_DEFAULT); } public FloatSampleBuffer(byte[] buffer, int offset, int byteCount, AudioFormat format) { this(format.getChannels(), byteCount/(format.getSampleSizeInBits()/8*format.getChannels()), format.getSampleRate()); initFromByteArray(buffer, offset, byteCount, format); } protected void init(int channelCount, int sampleCount, float sampleRate) { init(channelCount, sampleCount, sampleRate, LAZY_DEFAULT); } protected void init(int channelCount, int sampleCount, float sampleRate, boolean lazy) { if (channelCount<0 || sampleCount<0) { throw new IllegalArgumentException( "Invalid parameters in initialization of FloatSampleBuffer."); } setSampleRate(sampleRate); if (getSampleCount()!=sampleCount || getChannelCount()!=channelCount) { createChannels(channelCount, sampleCount, lazy); } } private void createChannels(int channelCount, int sampleCount, boolean lazy) { this.sampleCount=sampleCount; // lazy delete of all channels. Intentionally lazy ! this.channelCount=0; for (int ch=0; ch

If silent is true, the new channel will be silent. * Otherwise it will contain random data. *

If lazy is true, hidden channels which have at least getSampleCount() * elements will be examined for reusage as inserted channel.
* If lazy is false, still hidden channels are reused, * but it is assured that the inserted channel has exactly getSampleCount() elements, * thus not wasting memory. */ public void insertChannel(int index, boolean silent, boolean lazy) { int physSize=channels.size(); int virtSize=getChannelCount(); float[] newChannel=null; if (physSize>virtSize) { // there are hidden channels. Try to use one. for (int ch=virtSize; ch=getSampleCount()) || (!lazy && thisChannel.length==getSampleCount())) { // we found a matching channel. Use it ! newChannel=thisChannel; channels.remove(ch); break; } } } if (newChannel==null) { newChannel=new float[getSampleCount()]; } channels.add(index, newChannel); this.channelCount++; if (silent) { makeSilence(index); } } /** performs a lazy remove of the channel */ public void removeChannel(int channel) { removeChannel(channel, LAZY_DEFAULT); } /** * Removes a channel. * If lazy is true, the channel is not physically removed, but only hidden. * These hidden channels are reused by subsequent calls to addChannel * or insertChannel. */ public void removeChannel(int channel, boolean lazy) { if (!lazy) { channels.remove(channel); } else if (channelbufferCount || destIndex+length>bufferCount || sourceIndex<0 || destIndex<0 || length<0) { throw new IndexOutOfBoundsException("parameters exceed buffer size"); } System.arraycopy(data, sourceIndex, data, destIndex, length); } /** * Mix up of 1 channel to n channels.
* It copies the first channel to all newly created channels. * @param targetChannelCount the number of channels that this sample buffer * will have after expanding. NOT the number of * channels to add ! * @exception IllegalArgumentException if this buffer does not have one * channel before calling this method. */ public void expandChannel(int targetChannelCount) { // even more sanity... if (getChannelCount()!=1) { throw new IllegalArgumentException( "FloatSampleBuffer: can only expand channels for mono signals."); } for (int ch=1; ch * It uses a simple mixdown: all other channels are added to first channel.
* The volume is NOT lowered ! * Be aware, this might cause clipping when converting back * to integer samples. */ public void mixDownChannels() { float[] firstChannel=getChannel(0); int sampleCount=getSampleCount(); int channelCount=getChannelCount(); for (int ch=channelCount-1; ch>0; ch--) { float[] thisChannel=getChannel(ch); for (int i=0; i srcBuffer.length) { throw new IllegalArgumentException ("FloatSampleBuffer.setSamplesFromBytes: srcBuffer too small."); } if (destOffset + lengthInSamples > getSampleCount()) { throw new IllegalArgumentException ("FloatSampleBuffer.setSamplesFromBytes: destBuffer too small."); } boolean signed = format.getEncoding().equals(AudioFormat.Encoding.PCM_SIGNED); boolean unsigned = format.getEncoding().equals(AudioFormat.Encoding.PCM_UNSIGNED); if (!signed && !unsigned) { throw new IllegalArgumentException ("FloatSampleBuffer: only PCM samples are possible."); } int formatType = getFormatType(format.getSampleSizeInBits(), signed, format.isBigEndian()); for (int ch = 0; ch < format.getChannels(); ch++) { convertByteToFloat(srcBuffer, srcOffset, bytesPerFrame, formatType, getChannel(ch), destOffset, lengthInSamples); srcOffset += bytesPerSample; // next channel } } //////////////////////////////// properties ///////////////////////////////// public int getChannelCount() { return channelCount; } public int getSampleCount() { return sampleCount; } public float getSampleRate() { return sampleRate; } /** * Sets the sample rate of this buffer. * NOTE: no conversion is done. The samples are only re-interpreted. */ public void setSampleRate(float sampleRate) { if (sampleRate<=0) { throw new IllegalArgumentException ("Invalid samplerate for FloatSampleBuffer."); } this.sampleRate=sampleRate; } /** * NOTE: the returned array may be larger than sampleCount. So in any case, * sampleCount is to be respected. */ public float[] getChannel(int channel) { if (channel<0 || channel>=getChannelCount()) { throw new IllegalArgumentException( "FloatSampleBuffer: invalid channel number."); } return (float[]) channels.get(channel); } public Object[] getAllChannels() { Object[] res=new Object[getChannelCount()]; for (int ch=0; chNote: this value is only used, when dithering is actually performed. */ public void setDitherBits(float ditherBits) { if (ditherBits<=0) { throw new IllegalArgumentException("DitherBits must be greater than 0"); } this.ditherBits=ditherBits; } public float getDitherBits() { return ditherBits; } /** * Sets the mode for dithering. * This can be one of: *

  • DITHER_MODE_AUTOMATIC: it is decided automatically, * whether dithering is necessary - in general when sample size is * decreased. *
  • DITHER_MODE_ON: dithering will be forced *
  • DITHER_MODE_OFF: dithering will not be done. *
*/ public void setDitherMode(int mode) { if (mode!=DITHER_MODE_AUTOMATIC && mode!=DITHER_MODE_ON && mode!=DITHER_MODE_OFF) { throw new IllegalArgumentException("Illegal DitherMode"); } this.ditherMode=mode; } public int getDitherMode() { return ditherMode; } /////////////////////////////// "low level" conversion functions //////////////////////////////// public int getFormatType(int ssib, boolean signed, boolean bigEndian) { int bytesPerSample=ssib/8; int res=0; if (ssib==8) { res=F_8; } else if (ssib==16) { res=F_16; } else if (ssib==24) { res=F_24; } else if (ssib==32) { res=F_32; } if (res==0) { throw new IllegalArgumentException ("FloatSampleBuffer: unsupported sample size of " +ssib+" bits per sample."); } if (!signed && bytesPerSample>1) { throw new IllegalArgumentException ("FloatSampleBuffer: unsigned samples larger than " +"8 bit are not supported"); } if (signed) { res|=F_SIGNED; } if (bigEndian && (ssib!=8)) { res|=F_BIGENDIAN; } return res; } private static final float twoPower7=128.0f; private static final float twoPower15=32768.0f; private static final float twoPower23=8388608.0f; private static final float twoPower31=2147483648.0f; private static final float invTwoPower7=1/twoPower7; private static final float invTwoPower15=1/twoPower15; private static final float invTwoPower23=1/twoPower23; private static final float invTwoPower31=1/twoPower31; /*public*/ private static void convertByteToFloat(byte[] input, int inputOffset, int bytesPerFrame, int formatType, float[] output, int outputOffset, int sampleCount) { //if (TDebug.TraceAudioConverter) { // TDebug.out("FloatSampleBuffer.convertByteToFloat, formatType=" // +formatType2Str(formatType)); //} int sample; int endCount = outputOffset + sampleCount; for (sample = outputOffset; sample < endCount; sample++) { // do conversion switch (formatType) { case CT_8S: output[sample]= ((float) input[inputOffset])*invTwoPower7; break; case CT_8U: output[sample]= ((float) ((input[inputOffset] & 0xFF)-128))*invTwoPower7; break; case CT_16SB: output[sample]= ((float) ((input[inputOffset]<<8) | (input[inputOffset+1] & 0xFF)))*invTwoPower15; break; case CT_16SL: output[sample]= ((float) ((input[inputOffset+1]<<8) | (input[inputOffset] & 0xFF)))*invTwoPower15; break; case CT_24SB: output[sample]= ((float) ((input[inputOffset]<<16) | ((input[inputOffset+1] & 0xFF)<<8) | (input[inputOffset+2] & 0xFF)))*invTwoPower23; break; case CT_24SL: output[sample]= ((float) ((input[inputOffset+2]<<16) | ((input[inputOffset+1] & 0xFF)<<8) | (input[inputOffset] & 0xFF)))*invTwoPower23; break; case CT_32SB: output[sample]= ((float) ((input[inputOffset]<<24) | ((input[inputOffset+1] & 0xFF)<<16) | ((input[inputOffset+2] & 0xFF)<<8) | (input[inputOffset+3] & 0xFF)))*invTwoPower31; break; case CT_32SL: output[sample]= ((float) ((input[inputOffset+3]<<24) | ((input[inputOffset+2] & 0xFF)<<16) | ((input[inputOffset+1] & 0xFF)<<8) | (input[inputOffset] & 0xFF)))*invTwoPower31; break; default: throw new IllegalArgumentException ("Unsupported formatType="+formatType); } inputOffset += bytesPerFrame; } } protected byte quantize8(float sample) { if (doDither) { sample+=random.nextFloat()*ditherBits; } if (sample>=127.0f) { return (byte) 127; } else if (sample<=-128) { return (byte) -128; } else { return (byte) (sample<0?(sample-0.5f):(sample+0.5f)); } } protected int quantize16(float sample) { if (doDither) { sample+=random.nextFloat()*ditherBits; } if (sample>=32767.0f) { return 32767; } else if (sample<=-32768.0f) { return -32768; } else { return (int) (sample<0?(sample-0.5f):(sample+0.5f)); } } protected int quantize24(float sample) { if (doDither) { sample+=random.nextFloat()*ditherBits; } if (sample>=8388607.0f) { return 8388607; } else if (sample<=-8388608.0f) { return -8388608; } else { return (int) (sample<0?(sample-0.5f):(sample+0.5f)); } } protected int quantize32(float sample) { if (doDither) { sample+=random.nextFloat()*ditherBits; } if (sample>=2147483647.0f) { return 2147483647; } else if (sample<=-2147483648.0f) { return -2147483648; } else { return (int) (sample<0?(sample-0.5f):(sample+0.5f)); } } // should be static and public, but dithering needs class members private void convertFloatToByte(float[] input, int sampleCount, byte[] output, int offset, int bytesPerFrame, int formatType) { //if (TDebug.TraceAudioConverter) { // TDebug.out("FloatSampleBuffer.convertFloatToByte, formatType=" // +"formatType2Str(formatType)); //} // let's see whether dithering is necessary switch (ditherMode) { case DITHER_MODE_AUTOMATIC: doDither=(originalFormatType & F_SAMPLE_WIDTH_MASK)> (formatType & F_SAMPLE_WIDTH_MASK); break; case DITHER_MODE_ON: doDither=true; break; case DITHER_MODE_OFF: doDither=false; break; } if (doDither && random==null) { // create the random number generator for dithering random=new Random(); } int inIndex; int iSample; for (inIndex=0; inIndex> 8); output[offset+1]=(byte) (iSample & 0xFF); break; case CT_16SL: iSample=quantize16(input[inIndex]*twoPower15); output[offset+1]=(byte) (iSample >> 8); output[offset]=(byte) (iSample & 0xFF); break; case CT_24SB: iSample=quantize24(input[inIndex]*twoPower23); output[offset]=(byte) (iSample >> 16); output[offset+1]=(byte) ((iSample >>> 8) & 0xFF); output[offset+2]=(byte) (iSample & 0xFF); break; case CT_24SL: iSample=quantize24(input[inIndex]*twoPower23); output[offset+2]=(byte) (iSample >> 16); output[offset+1]=(byte) ((iSample >>> 8) & 0xFF); output[offset]=(byte) (iSample & 0xFF); break; case CT_32SB: iSample=quantize32(input[inIndex]*twoPower31); output[offset]=(byte) (iSample >> 24); output[offset+1]=(byte) ((iSample >>> 16) & 0xFF); output[offset+2]=(byte) ((iSample >>> 8) & 0xFF); output[offset+3]=(byte) (iSample & 0xFF); break; case CT_32SL: iSample=quantize32(input[inIndex]*twoPower31); output[offset+3]=(byte) (iSample >> 24); output[offset+2]=(byte) ((iSample >>> 16) & 0xFF); output[offset+1]=(byte) ((iSample >>> 8) & 0xFF); output[offset]=(byte) (iSample & 0xFF); break; default: throw new IllegalArgumentException ("Unsupported formatType="+formatType); } offset+=bytesPerFrame; } } /** * Debugging function */ private static String formatType2Str(int formatType) { String res=""+formatType+": "; switch (formatType & F_SAMPLE_WIDTH_MASK) { case F_8: res+="8bit"; break; case F_16: res+="16bit"; break; case F_24: res+="24bit"; break; case F_32: res+="32bit"; break; } res+=((formatType & F_SIGNED)==F_SIGNED)?" signed":" unsigned"; if ((formatType & F_SAMPLE_WIDTH_MASK)!=F_8) { res+=((formatType & F_BIGENDIAN)==F_BIGENDIAN)? " big endian":" little endian"; } return res; } } /*** FloatSampleBuffer.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/TVolumeUtils.java0000644000175000017500000000236711377161311030031 0ustar /* * TVolumeUtils.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled; public class TVolumeUtils { private static final double FACTOR1 = 20.0 / Math.log(10.0); private static final double FACTOR2 = 1 / 20.0; public static double lin2log(double dLinear) { return FACTOR1 * Math.log(dLinear); } public static double log2lin(double dLogarithmic) { return Math.pow(10.0, dLogarithmic * FACTOR2); } } /*** TVolumeUtils.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/0000755000175000017500000000000011377161311026222 5ustar ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TFormatConver0000644000175000017500000001237311377161311030704 0ustar /* * TFormatConversionProvider.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.convert; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.spi.FormatConversionProvider; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.AudioFormats; /** Base class for all conversion providers of Tritonus. * * @author Matthias Pfisterer */ public abstract class TFormatConversionProvider extends FormatConversionProvider { protected static final AudioFormat.Encoding[] EMPTY_ENCODING_ARRAY = new AudioFormat.Encoding[0]; protected static final AudioFormat[] EMPTY_FORMAT_ARRAY = new AudioFormat[0]; // $$fb2000-10-04: use AudioSystem.NOT_SPECIFIED for all fields. public AudioInputStream getAudioInputStream(AudioFormat.Encoding targetEncoding, AudioInputStream audioInputStream) { AudioFormat sourceFormat = audioInputStream.getFormat(); AudioFormat targetFormat = new AudioFormat( targetEncoding, AudioSystem.NOT_SPECIFIED, // sample rate AudioSystem.NOT_SPECIFIED, // sample size in bits AudioSystem.NOT_SPECIFIED, // channels AudioSystem.NOT_SPECIFIED, // frame size AudioSystem.NOT_SPECIFIED, // frame rate sourceFormat.isBigEndian()); // big endian if (TDebug.TraceAudioConverter) { TDebug.out("TFormatConversionProvider.getAudioInputStream(AudioFormat.Encoding, AudioInputStream):"); TDebug.out("trying to convert to " + targetFormat); } return getAudioInputStream(targetFormat, audioInputStream); } /** * WARNING: this method uses getTargetFormats(AudioFormat.Encoding, AudioFormat) * which may create infinite loops if the latter is overwritten. *

* This method is overwritten here to make use of org.tritonus.share.sampled.AudioFormats.matches * and is considered temporary until AudioFormat.matches is corrected in the JavaSound API. */ /* $$mp: if we decide to use getMatchingFormat(), this method should be implemented by simply calling getMatchingFormat() and comparing the result against null. */ public boolean isConversionSupported( AudioFormat targetFormat, AudioFormat sourceFormat) { if (TDebug.TraceAudioConverter) { TDebug.out(">TFormatConversionProvider.isConversionSupported(AudioFormat, AudioFormat):"); TDebug.out("class: "+getClass().getName()); TDebug.out("checking if conversion possible"); TDebug.out("from: " + sourceFormat); TDebug.out("to: " + targetFormat); } AudioFormat[] aTargetFormats = getTargetFormats(targetFormat.getEncoding(), sourceFormat); for (int i = 0; i < aTargetFormats.length; i++) { if (TDebug.TraceAudioConverter) { TDebug.out("checking against possible target format: " + aTargetFormats[i]); } if (aTargetFormats[i] != null && AudioFormats.matches(aTargetFormats[i], targetFormat)) { if (TDebug.TraceAudioConverter) { TDebug.out("getTargetFormats(AudioFormat.Encoding, AudioFormat) * which may create infinite loops if the latter is overwritten. *

* This method is overwritten here to make use of org.tritonus.share.sampled.AudioFormats.matches * and is considered temporary until AudioFormat.matches is corrected in the JavaSound API. */ public AudioFormat getMatchingFormat( AudioFormat targetFormat, AudioFormat sourceFormat) { if (TDebug.TraceAudioConverter) { TDebug.out(">TFormatConversionProvider.isConversionSupported(AudioFormat, AudioFormat):"); TDebug.out("class: "+getClass().getName()); TDebug.out("checking if conversion possible"); TDebug.out("from: " + sourceFormat); TDebug.out("to: " + targetFormat); } AudioFormat[] aTargetFormats = getTargetFormats(targetFormat.getEncoding(), sourceFormat); for (int i = 0; i < aTargetFormats.length; i++) { if (TDebug.TraceAudioConverter) { TDebug.out("checking against possible target format: " + aTargetFormats[i]); } if (aTargetFormats[i] != null && AudioFormats.matches(aTargetFormats[i], targetFormat)) { if (TDebug.TraceAudioConverter) { TDebug.out(" * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.convert; import java.io.ByteArrayInputStream; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import org.tritonus.share.TDebug; import org.tritonus.share.TCircularBuffer; /** Base class for asynchronus converters. This class serves as base class for converters that do not have a fixed ratio between the size of a block of input data and the size of a block of output data. These types of converters therefore need an internal buffer, which is realized in this class. @author Matthias Pfisterer */ public abstract class TAsynchronousFilteredAudioInputStream extends TAudioInputStream implements TCircularBuffer.Trigger { private static final int DEFAULT_BUFFER_SIZE = 327670; private static final int DEFAULT_MIN_AVAILABLE = 4096; private static final byte[] EMPTY_BYTE_ARRAY = new byte[0]; private TCircularBuffer m_circularBuffer; private int m_nMinAvailable; private byte[] m_abSingleByte; /** Constructor. This constructor uses the default buffer size and the default min available amount. @param lLength length of this stream in frames. May be AudioSystem.NOT_SPECIFIED. */ public TAsynchronousFilteredAudioInputStream(AudioFormat outputFormat, long lLength) { this(outputFormat, lLength, DEFAULT_BUFFER_SIZE, DEFAULT_MIN_AVAILABLE); } /** Constructor. With this constructor, the buffer size and the minimum available amount can be specified as parameters. @param lLength length of this stream in frames. May be AudioSystem.NOT_SPECIFIED. @param nBufferSize size of the circular buffer in bytes. */ public TAsynchronousFilteredAudioInputStream( AudioFormat outputFormat, long lLength, int nBufferSize, int nMinAvailable) { /* The usage of a ByteArrayInputStream is a hack. * (the infamous "JavaOne hack", because I did it on June * 6th 2000 in San Francisco, only hours before a * JavaOne session where I wanted to show mp3 playback * with Java Sound.) It is necessary because in the FCS * version of the Sun jdk1.3, the constructor of * AudioInputStream throws an exception if its first * argument is null. So we have to pass a dummy non-null * value. */ super(new ByteArrayInputStream(EMPTY_BYTE_ARRAY), outputFormat, lLength); if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.(): begin"); } m_circularBuffer = new TCircularBuffer( nBufferSize, false, // blocking read true, // blocking write this); // trigger m_nMinAvailable = nMinAvailable; if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.(): end"); } } /** Returns the circular buffer. */ protected TCircularBuffer getCircularBuffer() { return m_circularBuffer; } /** Check if writing more data to the circular buffer is recommanded. This checks the available write space in the circular buffer against the minimum available property. If the available write space is greater than th minimum available property, more writing is encouraged, so this method returns true. Note that this is only a hint to subclasses. However, it is an important hint. @return true if more writing to the circular buffer is recommanden. Otherwise, false is returned. */ protected boolean writeMore() { return getCircularBuffer().availableWrite() > m_nMinAvailable; } public int read() throws IOException { // if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.read(): begin"); } int nByte = -1; if (m_abSingleByte == null) { m_abSingleByte = new byte[1]; } int nReturn = read(m_abSingleByte); if (nReturn == -1) { nByte = -1; } else { //$$fb 2001-04-14 nobody really knows that... nByte = m_abSingleByte[0] & 0xFF; } // if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.read(): end"); } return nByte; } public int read(byte[] abData) throws IOException { if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.read(byte[]): begin"); } int nRead = read(abData, 0, abData.length); if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.read(byte[]): end"); } return nRead; } public int read(byte[] abData, int nOffset, int nLength) throws IOException { if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.read(byte[], int, int): begin"); } //$$fb 2001-04-22: this returns at maximum circular buffer // length. This is not very efficient... //$$fb 2001-04-25: we should check that we do not exceed getFrameLength() ! int nRead = m_circularBuffer.read(abData, nOffset, nLength); if (TDebug.TraceAudioConverter) { TDebug.out("TAsynchronousFilteredAudioInputStream.read(byte[], int, int): end"); } return nRead; } public long skip(long lSkip) throws IOException { // TODO: this is quite inefficient for (long lSkipped = 0; lSkipped < lSkip; lSkipped++) { int nReturn = read(); if (nReturn == -1) { return lSkipped; } } return lSkip; } public int available() throws IOException { return m_circularBuffer.availableRead(); } public void close() throws IOException { m_circularBuffer.close(); } public boolean markSupported() { return false; } public void mark(int nReadLimit) { } public void reset() throws IOException { throw new IOException("mark not supported"); } } /*** TAsynchronousFilteredAudioInputStream.java ***/ ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TSimpleFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TSimpleFormat0000644000175000017500000002514411377161311030701 0ustar /* * TSimpleFormatConversionProvider.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.convert; import java.util.Collection; import java.util.Iterator; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import org.tritonus.share.sampled.AudioFormats; import org.tritonus.share.ArraySet; import org.tritonus.share.TDebug; /** * This is a base class for FormatConversionProviders that can convert * from each source encoding/format to each target encoding/format. * If this is not the case, use TEncodingFormatConversionProvider or * TMatrixFormatConversionProvider. * *

Overriding classes must * provide a constructor that calls the protected constructor of this class and override * AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream). * The latter method should be able to handle the case that all fields are NOT_SPECIFIED * and provide appropriate default values. * * @author Matthias Pfisterer */ // todo: // - declare a constant ALL_BUT_SAME_VALUE (==-2) or so that can be used in format lists // - consistent implementation of replacing NOT_SPECIFIED when not given in conversion public abstract class TSimpleFormatConversionProvider extends TFormatConversionProvider { private Collection m_sourceEncodings; private Collection m_targetEncodings; private Collection m_sourceFormats; private Collection m_targetFormats; protected TSimpleFormatConversionProvider( Collection sourceFormats, Collection targetFormats) { m_sourceEncodings = new ArraySet(); m_targetEncodings = new ArraySet(); m_sourceFormats = sourceFormats; m_targetFormats = targetFormats; collectEncodings(m_sourceFormats, m_sourceEncodings); collectEncodings(m_targetFormats, m_targetEncodings); } /** Disables this FormatConversionProvider. This may be useful when e.g. native libraries are not present. TODO: enable method, better implementation */ protected void disable() { if (TDebug.TraceAudioConverter) { TDebug.out("TSimpleFormatConversionProvider.disable(): disabling " + getClass().getName()); } m_sourceEncodings = new ArraySet(); m_targetEncodings = new ArraySet(); m_sourceFormats = new ArraySet(); m_targetFormats = new ArraySet(); } private static void collectEncodings(Collection formats, Collection encodings) { Iterator iterator = formats.iterator(); while (iterator.hasNext()) { AudioFormat format = (AudioFormat) iterator.next(); encodings.add(format.getEncoding()); } } public AudioFormat.Encoding[] getSourceEncodings() { return (AudioFormat.Encoding[]) m_sourceEncodings.toArray(EMPTY_ENCODING_ARRAY); } public AudioFormat.Encoding[] getTargetEncodings() { return (AudioFormat.Encoding[]) m_targetEncodings.toArray(EMPTY_ENCODING_ARRAY); } // overwritten of FormatConversionProvider public boolean isSourceEncodingSupported(AudioFormat.Encoding sourceEncoding) { return m_sourceEncodings.contains(sourceEncoding); } // overwritten of FormatConversionProvider public boolean isTargetEncodingSupported(AudioFormat.Encoding targetEncoding) { return m_targetEncodings.contains(targetEncoding); } /** * This implementation assumes that the converter can convert * from each of its source encodings to each of its target * encodings. If this is not the case, the converter has to * override this method. */ public AudioFormat.Encoding[] getTargetEncodings(AudioFormat sourceFormat) { if (isAllowedSourceFormat(sourceFormat)) { return getTargetEncodings(); } else { return EMPTY_ENCODING_ARRAY; } } /** * This implementation assumes that the converter can convert * from each of its source formats to each of its target * formats. If this is not the case, the converter has to * override this method. */ public AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) { if (isConversionSupported(targetEncoding, sourceFormat)) { return (AudioFormat[]) m_targetFormats.toArray(EMPTY_FORMAT_ARRAY); } else { return EMPTY_FORMAT_ARRAY; } } // TODO: check if necessary protected boolean isAllowedSourceEncoding(AudioFormat.Encoding sourceEncoding) { return m_sourceEncodings.contains(sourceEncoding); } protected boolean isAllowedTargetEncoding(AudioFormat.Encoding targetEncoding) { return m_targetEncodings.contains(targetEncoding); } protected boolean isAllowedSourceFormat(AudioFormat sourceFormat) { Iterator iterator = m_sourceFormats.iterator(); while (iterator.hasNext()) { AudioFormat format = (AudioFormat) iterator.next(); if (AudioFormats.matches(format, sourceFormat)) { return true; } } return false; } protected boolean isAllowedTargetFormat(AudioFormat targetFormat) { Iterator iterator = m_targetFormats.iterator(); while (iterator.hasNext()) { AudioFormat format = (AudioFormat) iterator.next(); if (AudioFormats.matches(format, targetFormat)) { return true; } } return false; } // $$fb 2000-04-02 added some convenience methods for overriding classes protected Collection getCollectionSourceEncodings() { return m_sourceEncodings; } protected Collection getCollectionTargetEncodings() { return m_targetEncodings; } protected Collection getCollectionSourceFormats() { return m_sourceFormats; } protected Collection getCollectionTargetFormats() { return m_targetFormats; } /** * Utility method to check whether these values match, * taking into account AudioSystem.NOT_SPECIFIED. * @return true if any of the values is AudioSystem.NOT_SPECIFIED * or both values have the same value. */ //$$fb 2000-08-16: moved from TEncodingFormatConversionProvider protected static boolean doMatch(int i1, int i2) { return i1==AudioSystem.NOT_SPECIFIED || i2==AudioSystem.NOT_SPECIFIED || i1==i2; } /** * @see #doMatch(int,int) */ //$$fb 2000-08-16: moved from TEncodingFormatConversionProvider protected static boolean doMatch(float f1, float f2) { return f1==AudioSystem.NOT_SPECIFIED || f2==AudioSystem.NOT_SPECIFIED || Math.abs(f1 - f2) < 1.0e-9; } /** * Utility method, replaces all occurences of AudioSystem.NOT_SPECIFIED * in targetFormat with the corresponding value in sourceFormat. * If targetFormat does not contain any fields with AudioSystem.NOT_SPECIFIED, * it is returned unmodified. The endian-ness and encoding remain the same in all cases. *

* If any of the fields is AudioSystem.NOT_SPECIFIED in both sourceFormat and * targetFormat, it will remain not specified. *

* This method uses getFrameSize(...) (see below) to set the new frameSize, * if a new AudioFormat instance is created. *

* This method isn't used in TSimpleFormatConversionProvider - it is solely there * for inheriting classes. */ //$$fb 2000-08-16: moved from TEncodingFormatConversionProvider protected AudioFormat replaceNotSpecified(AudioFormat sourceFormat, AudioFormat targetFormat) { boolean bSetSampleSize=false; boolean bSetChannels=false; boolean bSetSampleRate=false; boolean bSetFrameRate=false; if (targetFormat.getSampleSizeInBits()==AudioSystem.NOT_SPECIFIED && sourceFormat.getSampleSizeInBits()!=AudioSystem.NOT_SPECIFIED) { bSetSampleSize=true; } if (targetFormat.getChannels()==AudioSystem.NOT_SPECIFIED && sourceFormat.getChannels()!=AudioSystem.NOT_SPECIFIED) { bSetChannels=true; } if (targetFormat.getSampleRate()==AudioSystem.NOT_SPECIFIED && sourceFormat.getSampleRate()!=AudioSystem.NOT_SPECIFIED) { bSetSampleRate=true; } if (targetFormat.getFrameRate()==AudioSystem.NOT_SPECIFIED && sourceFormat.getFrameRate()!=AudioSystem.NOT_SPECIFIED) { bSetFrameRate=true; } if (bSetSampleSize || bSetChannels || bSetSampleRate || bSetFrameRate || (targetFormat.getFrameSize()==AudioSystem.NOT_SPECIFIED && sourceFormat.getFrameSize()!=AudioSystem.NOT_SPECIFIED)) { // create new format in place of the original target format float sampleRate=bSetSampleRate? sourceFormat.getSampleRate():targetFormat.getSampleRate(); float frameRate=bSetFrameRate? sourceFormat.getFrameRate():targetFormat.getFrameRate(); int sampleSize=bSetSampleSize? sourceFormat.getSampleSizeInBits():targetFormat.getSampleSizeInBits(); int channels=bSetChannels? sourceFormat.getChannels():targetFormat.getChannels(); int frameSize=getFrameSize( targetFormat.getEncoding(), sampleRate, sampleSize, channels, frameRate, targetFormat.isBigEndian(), targetFormat.getFrameSize()); targetFormat= new AudioFormat( targetFormat.getEncoding(), sampleRate, sampleSize, channels, frameSize, frameRate, targetFormat.isBigEndian()); } return targetFormat; } /** * Calculates the frame size for the given format description. * The default implementation returns AudioSystem.NOT_SPECIFIED * if either sampleSize or channels is AudioSystem.NOT_SPECIFIED, * otherwise sampleSize*channels/8 is returned. *

* If this does not reflect the way to calculate the right frame size, * inheriting classes should overwrite this method if they use * replaceNotSpecified(...). It is not used elsewhere in this class. */ //$$fb 2000-08-16: added protected int getFrameSize( AudioFormat.Encoding encoding, float sampleRate, int sampleSize, int channels, float frameRate, boolean bigEndian, int oldFrameSize) { if (sampleSize==AudioSystem.NOT_SPECIFIED || channels==AudioSystem.NOT_SPECIFIED) { return AudioSystem.NOT_SPECIFIED; } return sampleSize*channels/8; } } /*** TSimpleFormatConversionProvider.java ***/ ././@LongLink0000000000000000000000000000015600000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TAudioInputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TAudioInputSt0000644000175000017500000000642611377161311030671 0ustar /* * TAudioInputStream.java */ /* * Copyright (c) 2003 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled.convert; import java.io.InputStream; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; /** AudioInputStream base class. This class implements "dynamic" properties. "Dynamic" properties are properties that may change during the life time of the objects. This is typically used to pass information like the current frame number, volume of subbands and similar values. "Dynamic" properties are different from properties in AudioFormat and AudioFileFormat, which are considered "static", as they aren't allowed to change after creating of the object, thereby maintaining the immutable character of these classes. */ public class TAudioInputStream extends AudioInputStream { private Map m_properties; private Map m_unmodifiableProperties; /** Constructor without properties. Creates an empty properties map. */ public TAudioInputStream(InputStream inputStream, AudioFormat audioFormat, long lLengthInFrames) { super(inputStream, audioFormat, lLengthInFrames); initMaps(new HashMap()); } /** Constructor with properties. The passed properties map is not copied. This allows subclasses to change values in the map after creation, and the changes are reflected in the map the application program can obtain. */ public TAudioInputStream(InputStream inputStream, AudioFormat audioFormat, long lLengthInFrames, Map properties) { super(inputStream, audioFormat, lLengthInFrames); initMaps(properties); } private void initMaps(Map properties) { /* Here, we make a shallow copy of the map. It's unclear if this is sufficient (of if a deep copy should be made). */ m_properties = properties; m_unmodifiableProperties = Collections.unmodifiableMap(m_properties); } /** Obtain a Map containing the properties. This method returns a Map that cannot be modified by the application program, but reflects changes to the map made by the implementation. @return a map containing the properties. */ public Map properties() { return m_unmodifiableProperties; } /** Set a property. Unlike in AudioFormat and AudioFileFormat, this method may be used anywhere by subclasses - it is not restricted to be used in the constructor. */ protected void setProperty(String key, Object value) { m_properties.put(key, value); } } /*** TAudioInputStream.java ***/ ././@LongLink0000000000000000000000000000017400000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TMatrixFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TMatrixFormat0000644000175000017500000001240211377161311030705 0ustar /* * TMatrixFormatConversionProvider.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.convert; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Set; import java.util.HashMap; import java.util.ArrayList; import java.util.Iterator; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.spi.FormatConversionProvider; import org.tritonus.share.sampled.AudioFormats; import org.tritonus.share.ArraySet; /** * Base class for arbitrary formatConversionProviders. * * @author Matthias Pfisterer */ public abstract class TMatrixFormatConversionProvider extends TSimpleFormatConversionProvider { /* * keys: source AudioFormat * values: collection of possible target encodings * * Note that accessing values with get() is not appropriate, * since the equals() method in AudioFormat is not overloaded. * The hashtable is just used as a convenient storage * organization. */ private Map m_targetEncodingsFromSourceFormat; /* * keys: source AudioFormat * values: a Map that contains a mapping from target encodings * (keys) to a collection of target formats (values). * * Note that accessing values with get() is not appropriate, * since the equals() method in AudioFormat is not overloaded. * The hashtable is just used as a convenient storage * organization. */ private Map m_targetFormatsFromSourceFormat; protected TMatrixFormatConversionProvider( List sourceFormats, List targetFormats, boolean[][] abConversionPossible) { super(sourceFormats, targetFormats); m_targetEncodingsFromSourceFormat = new HashMap(); m_targetFormatsFromSourceFormat = new HashMap(); for (int nSourceFormat = 0; nSourceFormat < sourceFormats.size(); nSourceFormat++) { AudioFormat sourceFormat = (AudioFormat) sourceFormats.get(nSourceFormat); List supportedTargetEncodings = new ArraySet(); m_targetEncodingsFromSourceFormat.put(sourceFormat, supportedTargetEncodings); Map targetFormatsFromTargetEncodings = new HashMap(); m_targetFormatsFromSourceFormat.put(sourceFormat, targetFormatsFromTargetEncodings); for (int nTargetFormat = 0; nTargetFormat < targetFormats.size(); nTargetFormat++) { AudioFormat targetFormat = (AudioFormat) targetFormats.get(nTargetFormat); if (abConversionPossible[nSourceFormat][nTargetFormat]) { AudioFormat.Encoding targetEncoding = targetFormat.getEncoding(); supportedTargetEncodings.add(targetEncoding); Collection supportedTargetFormats = (Collection) targetFormatsFromTargetEncodings.get(targetEncoding); if (supportedTargetFormats == null) { supportedTargetFormats = new ArraySet(); targetFormatsFromTargetEncodings.put(targetEncoding, supportedTargetFormats); } supportedTargetFormats.add(targetFormat); } } } } public AudioFormat.Encoding[] getTargetEncodings(AudioFormat sourceFormat) { Iterator iterator = m_targetEncodingsFromSourceFormat.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); AudioFormat format = (AudioFormat) entry.getKey(); if (AudioFormats.matches(format, sourceFormat)) { Collection targetEncodings = (Collection) entry.getValue(); return (AudioFormat.Encoding[]) targetEncodings.toArray(EMPTY_ENCODING_ARRAY); } } return EMPTY_ENCODING_ARRAY; } // TODO: this should work on the array returned by getTargetEncodings(AudioFormat) /* public boolean isConversionSupported(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) { return isAllowedSourceFormat(sourceFormat) && isTargetEncodingSupported(targetEncoding); } */ public AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) { Iterator iterator = m_targetFormatsFromSourceFormat.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry entry = (Map.Entry) iterator.next(); AudioFormat format = (AudioFormat) entry.getKey(); if (AudioFormats.matches(format, sourceFormat)) { Map targetEncodings = (Map) entry.getValue(); Collection targetFormats = (Collection) targetEncodings.get(targetEncoding); if (targetFormats != null) { return (AudioFormat[]) targetFormats.toArray(EMPTY_FORMAT_ARRAY); } else { return EMPTY_FORMAT_ARRAY; } } } return EMPTY_FORMAT_ARRAY; } } /*** TMatrixFormatConversionProvider.java ***/ ././@LongLink0000000000000000000000000000017600000000000011571 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TEncodingFormatConversionProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TEncodingForm0000644000175000017500000001141211377161311030642 0ustar /* * TEncodingFormatConversionProvider.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.convert; import java.util.Collection; import java.util.Iterator; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import org.tritonus.share.TDebug; import org.tritonus.share.ArraySet; // this class depends on handling of AudioSystem.NOT_SPECIFIED in AudioFormat.matches() /** * This is a base class for FormatConversionProviders that only * change the encoding, i.e. they never *

    *
  • change the sample size in bits without changing the encoding *
  • change the sample rate *
  • change the number of channels *
*

It is assumed that each source format can be encoded to all * target formats. *

In the sourceFormats and targetFormats collections that are passed to * the constructor of this class, fields may be set to AudioSystem.NOT_SPECIFIED. * This means that it handles all values of that field, but cannot change it. *

This class prevents that a conversion is done (e.g. for sample rates), * because the overriding class specified AudioSystem.NOT_SPECIFIED as sample rate, * meaning it handles all sample rates. *

Overriding classes must implement at least * AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream) * and provide a constructor that calls the protected constructor of this class. * * @author Florian Bomers */ public abstract class TEncodingFormatConversionProvider extends TSimpleFormatConversionProvider { protected TEncodingFormatConversionProvider( Collection sourceFormats, Collection targetFormats) { super(sourceFormats, targetFormats); } /** * This implementation assumes that the converter can convert * from each of its source formats to each of its target * formats. If this is not the case, the converter has to * override this method. *

When conversion is supported, for every target encoding, * the fields sample size in bits, channels and sample rate are checked: *

    *
  • When a field in both the source and target format is AudioSystem.NOT_SPECIFIED, * one instance of that targetFormat is returned with this field set to AudioSystem.NOT_SPECIFIED. *
  • When a field in sourceFormat is set and it is AudioSystem.NOT_SPECIFIED in the target format, * the value of the field of source format is set in the returned format. *
  • The same applies for the other way round. *
* For this, replaceNotSpecified(sourceFormat, targetFormat) in the base * class TSimpleFormatConversionProvider is used - and accordingly, the frameSize * is recalculated with getFrameSize(...) if a field with AudioSystem.NOT_SPECIFIED * is replaced. Inheriting classes may wish to override this method if the * default mode of calculating the frame size is not appropriate. */ public AudioFormat[] getTargetFormats(AudioFormat.Encoding targetEncoding, AudioFormat sourceFormat) { if (TDebug.TraceAudioConverter) { TDebug.out(">TEncodingFormatConversionProvider.getTargetFormats(AudioFormat.Encoding, AudioFormat):"); TDebug.out("checking if conversion possible"); TDebug.out("from: " + sourceFormat); TDebug.out("to: " + targetEncoding); } if (isConversionSupported(targetEncoding, sourceFormat)) { // TODO: check that no duplicates may occur... ArraySet result=new ArraySet(); Iterator iterator = getCollectionTargetFormats().iterator(); while (iterator.hasNext()) { AudioFormat targetFormat = (AudioFormat) iterator.next(); targetFormat=replaceNotSpecified(sourceFormat, targetFormat); result.add(targetFormat); } if (TDebug.TraceAudioConverter) { TDebug.out("< returning "+result.size()+" elements."); } return (AudioFormat[]) result.toArray(EMPTY_FORMAT_ARRAY); } else { if (TDebug.TraceAudioConverter) { TDebug.out("< returning empty array."); } return EMPTY_FORMAT_ARRAY; } } } /*** TEncodingFormatConversionProvider.java ***/ ././@LongLink0000000000000000000000000000020100000000000011556 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TSynchronousFilteredAudioInputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/convert/TSynchronousF0000644000175000017500000001733311377161311030740 0ustar /* * TSynchronousFilteredAudioInputStream.java */ /* * Copyright (c) 1999,2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.convert; import java.io.IOException; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.spi.FormatConversionProvider; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.AudioUtils; /** * Base class for types of audio filter/converter that translate one frame to another frame.
* It provides all the transformation of frame sizes.
* It does NOT handle different sample rates of original stream and this stream ! * * @author Florian Bomers */ public abstract class TSynchronousFilteredAudioInputStream extends TAudioInputStream { private AudioInputStream originalStream; private AudioFormat originalFormat; /** 1 if original format's frame size is NOT_SPECIFIED */ private int originalFrameSize; /** 1 if original format's frame size is NOT_SPECIFIED */ private int newFrameSize; /** * The intermediate buffer used during convert actions * (if not convertInPlace is used). * It remains until this audioStream is closed or destroyed * and grows with the time - it always has the size of the * largest intermediate buffer ever needed. */ protected byte[] buffer=null; /** * For use of the more efficient method convertInPlace. * it will be set to true when (frameSizeFactor==1) */ private boolean m_bConvertInPlace = false; public TSynchronousFilteredAudioInputStream(AudioInputStream audioInputStream, AudioFormat newFormat) { // the super class will do nothing... we override everything super(audioInputStream, newFormat, audioInputStream.getFrameLength()); originalStream=audioInputStream; originalFormat=audioInputStream.getFormat(); originalFrameSize=(originalFormat.getFrameSize()<=0) ? 1 : originalFormat.getFrameSize(); newFrameSize=(getFormat().getFrameSize()<=0) ? 1 : getFormat().getFrameSize(); if (TDebug.TraceAudioConverter) { TDebug.out("TSynchronousFilteredAudioInputStream: original format =" +AudioUtils.format2ShortStr(originalFormat)); TDebug.out("TSynchronousFilteredAudioInputStream: converted format=" +AudioUtils.format2ShortStr(getFormat())); } //$$fb 2000-07-17: convert in place has to be enabled explicitly with "enableConvertInPlace" //if (getFormat().getFrameSize() == originalFormat.getFrameSize()) { // m_bConvertInPlace = true; //} m_bConvertInPlace = false; } protected boolean enableConvertInPlace() { if (newFrameSize >= originalFrameSize) { m_bConvertInPlace = true; } return m_bConvertInPlace; } /** * Override this method to do the actual conversion. * inBuffer starts always at index 0 (it is an internal buffer) * You should always override this. * inFrameCount is the number of frames in inBuffer. These * frames are of the format originalFormat. * @return the resulting number of frames converted and put into * outBuffer. The return value is in the format of this stream. */ protected abstract int convert(byte[] inBuffer, byte[] outBuffer, int outByteOffset, int inFrameCount); /** * Override this method to provide in-place conversion of samples. * To use it, call "enableConvertInPlace()". It will only be used when * input bytes per frame >= output bytes per frame. * This method must always convert frameCount frames, so no return value is necessary. */ protected void convertInPlace(byte[] buffer, int byteOffset, int frameCount) { throw new RuntimeException("Illegal call to convertInPlace"); } public int read() throws IOException { if (newFrameSize != 1) { throw new IOException("frame size must be 1 to read a single byte"); } // very ugly, but efficient. Who uses this method anyway ? // TODO: use an instance variable byte[] temp = new byte[1]; int result = read(temp); if (result == -1) { return -1; } if (result == 0) { // what in this case ??? Let's hope it never occurs. return -1; } return temp[0] & 0xFF; } private void clearBuffer() { buffer = null; } public AudioInputStream getOriginalStream() { return originalStream; } public AudioFormat getOriginalFormat() { return originalFormat; } /** * Read nLength bytes that will be the converted samples * of the original InputStream. * When nLength is not an integral number of frames, * this method may read less than nLength bytes. */ public int read(byte[] abData, int nOffset, int nLength) throws IOException { // number of frames that we have to read from the underlying stream. int nFrameLength = nLength/newFrameSize; // number of bytes that we need to read from underlying stream. int originalBytes = nFrameLength * originalFrameSize; if (TDebug.TraceAudioConverter) { TDebug.out("> TSynchronousFilteredAIS.read(buffer["+abData.length+"], " +nOffset+" ,"+nLength+" bytes ^="+nFrameLength+" frames)"); } int nFramesConverted = 0; // set up buffer to read byte readBuffer[]; int readOffset; if (m_bConvertInPlace) { readBuffer=abData; readOffset=nOffset; } else { // assert that the buffer fits if (buffer == null || buffer.length < originalBytes) { buffer = new byte[originalBytes]; } readBuffer=buffer; readOffset=0; } int nBytesRead = originalStream.read(readBuffer, readOffset, originalBytes); if (nBytesRead == -1) { // end of stream clearBuffer(); return -1; } int nFramesRead = nBytesRead / originalFrameSize; if (TDebug.TraceAudioConverter) { TDebug.out("original.read returned " +nBytesRead+" bytes ^="+nFramesRead+" frames"); } if (m_bConvertInPlace) { convertInPlace(abData, nOffset, nFramesRead); nFramesConverted=nFramesRead; } else { nFramesConverted = convert(buffer, abData, nOffset, nFramesRead); } if (TDebug.TraceAudioConverter) { TDebug.out("< converted "+nFramesConverted+" frames"); } return nFramesConverted*newFrameSize; } public long skip(long nSkip) throws IOException { // only returns integral frames long skipFrames = nSkip / newFrameSize; long originalSkippedBytes = originalStream.skip(skipFrames*originalFrameSize); long skippedFrames = originalSkippedBytes/originalFrameSize; return skippedFrames * newFrameSize; } public int available() throws IOException { int origAvailFrames = originalStream.available()/originalFrameSize; return origAvailFrames*newFrameSize; } public void close() throws IOException { originalStream.close(); clearBuffer(); } public void mark(int readlimit) { int readLimitFrames=readlimit/newFrameSize; originalStream.mark(readLimitFrames*originalFrameSize); } public void reset() throws IOException { originalStream.reset(); } public boolean markSupported() { return originalStream.markSupported(); } private int getFrameSize() { return getFormat().getFrameSize(); } } /*** TSynchronousFilteredAudioInputStream.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/0000755000175000017500000000000011377161311025666 5ustar ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TMixerProvider.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TMixerProvider.0000644000175000017500000001351411377161311030616 0ustar /* * TMixerProvider.java */ /* * Copyright (c) 1999 - 2001 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled.mixer; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import javax.sound.sampled.Mixer; import javax.sound.sampled.spi.MixerProvider; import org.tritonus.share.TDebug; public abstract class TMixerProvider extends MixerProvider { private static final Mixer.Info[] EMPTY_MIXER_INFO_ARRAY = new Mixer.Info[0]; private static Map sm_mixerProviderStructs = new HashMap(); private boolean m_bDisabled = false; public TMixerProvider() { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.(): begin"); } // currently does nothing if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.(): end"); } } /* Override this method if you want a thread-safe static initializaiton. */ protected void staticInit() { } private MixerProviderStruct getMixerProviderStruct() { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixerProviderStruct(): begin"); } Class cls = this.getClass(); if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixerProviderStruct(): called from " + cls); } // Thread.dumpStack(); synchronized (TMixerProvider.class) { MixerProviderStruct struct = (MixerProviderStruct) sm_mixerProviderStructs.get(cls); if (struct == null) { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixerProviderStruct(): creating new MixerProviderStruct for " + cls); } struct = new MixerProviderStruct(); sm_mixerProviderStructs.put(cls, struct); } if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixerProviderStruct(): end"); } return struct; } } protected void disable() { if (TDebug.TraceMixerProvider) { TDebug.out("disabling " + getClass().getName()); } m_bDisabled = true; } protected boolean isDisabled() { return m_bDisabled; } protected void addMixer(Mixer mixer) { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.addMixer(): begin"); } MixerProviderStruct struct = getMixerProviderStruct(); synchronized (struct) { struct.m_mixers.add(mixer); if (struct.m_defaultMixer == null) { struct.m_defaultMixer = mixer; } } if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.addMixer(): end"); } } protected void removeMixer(Mixer mixer) { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.removeMixer(): begin"); } MixerProviderStruct struct = getMixerProviderStruct(); synchronized (struct) { struct.m_mixers.remove(mixer); // TODO: should search for another mixer if (struct.m_defaultMixer == mixer) { struct.m_defaultMixer = null; } } if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.removeMixer(): end"); } } // $$mp 2003/01/11: TODO: this implementation may become obsolete once the overridden method in spi.MixerProvider is implemented in a way documented officially. public boolean isMixerSupported(Mixer.Info info) { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.isMixerSupported(): begin"); } boolean bIsSupported = false; Mixer.Info[] infos = getMixerInfo(); for (int i = 0; i < infos.length; i++) { if (infos[i].equals(info)) { bIsSupported = true; break; } } if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.isMixerSupported(): end"); } return bIsSupported; } /** */ public Mixer getMixer(Mixer.Info info) { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixer(): begin"); } MixerProviderStruct struct = getMixerProviderStruct(); Mixer mixerResult = null; synchronized (struct) { if (info == null) { mixerResult = struct.m_defaultMixer; } else { Iterator mixers = struct.m_mixers.iterator(); while (mixers.hasNext()) { Mixer mixer = (Mixer) mixers.next(); if (mixer.getMixerInfo().equals(info)) { mixerResult = mixer; break; } } } } if (mixerResult == null) { throw new IllegalArgumentException("no mixer available for " + info); } if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixer(): end"); } return mixerResult; } public Mixer.Info[] getMixerInfo() { if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixerInfo(): begin"); } Set mixerInfos = new HashSet(); MixerProviderStruct struct = getMixerProviderStruct(); synchronized (struct) { Iterator mixers = struct.m_mixers.iterator(); while (mixers.hasNext()) { Mixer mixer = (Mixer) mixers.next(); mixerInfos.add(mixer.getMixerInfo()); } } if (TDebug.TraceMixerProvider) { TDebug.out("TMixerProvider.getMixerInfo(): end"); } return (Mixer.Info[]) mixerInfos.toArray(EMPTY_MIXER_INFO_ARRAY); } private class MixerProviderStruct { public List m_mixers; public Mixer m_defaultMixer; public MixerProviderStruct() { m_mixers = new ArrayList(); m_defaultMixer = null; } } } /*** TMixerProvider.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TMixer.java0000644000175000017500000003173011377161311027745 0ustar /* * TMixer.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.Set; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.Clip; import javax.sound.sampled.DataLine; import javax.sound.sampled.Line; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; import javax.sound.sampled.Port; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.TargetDataLine; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.AudioFormats; import org.tritonus.share.ArraySet; // TODO: global controls (that use the system mixer) public abstract class TMixer extends TLine implements Mixer { private static Line.Info[] EMPTY_LINE_INFO_ARRAY = new Line.Info[0]; private static Line[] EMPTY_LINE_ARRAY = new Line[0]; private Mixer.Info m_mixerInfo; private Collection m_supportedSourceFormats; private Collection m_supportedTargetFormats; private Collection m_supportedSourceLineInfos; private Collection m_supportedTargetLineInfos; private Set m_openSourceDataLines; private Set m_openTargetDataLines; /** Constructor for mixers that use setSupportInformation(). */ protected TMixer(Mixer.Info mixerInfo, Line.Info lineInfo) { this(mixerInfo, lineInfo, new ArrayList(), new ArrayList(), new ArrayList(), new ArrayList()); } /** Constructor for mixers. */ protected TMixer(Mixer.Info mixerInfo, Line.Info lineInfo, Collection supportedSourceFormats, Collection supportedTargetFormats, Collection supportedSourceLineInfos, Collection supportedTargetLineInfos) { super(null, // TMixer lineInfo); if (TDebug.TraceMixer) { TDebug.out("TMixer.(): begin"); } m_mixerInfo = mixerInfo; setSupportInformation( supportedSourceFormats, supportedTargetFormats, supportedSourceLineInfos, supportedTargetLineInfos); m_openSourceDataLines = new ArraySet(); m_openTargetDataLines = new ArraySet(); if (TDebug.TraceMixer) { TDebug.out("TMixer.(): end"); } } protected void setSupportInformation( Collection supportedSourceFormats, Collection supportedTargetFormats, Collection supportedSourceLineInfos, Collection supportedTargetLineInfos) { if (TDebug.TraceMixer) { TDebug.out("TMixer.setSupportInformation(): begin"); } m_supportedSourceFormats = supportedSourceFormats; m_supportedTargetFormats = supportedTargetFormats; m_supportedSourceLineInfos = supportedSourceLineInfos; m_supportedTargetLineInfos = supportedTargetLineInfos; if (TDebug.TraceMixer) { TDebug.out("TMixer.setSupportInformation(): end"); } } public Mixer.Info getMixerInfo() { if (TDebug.TraceMixer) { TDebug.out("TMixer.getMixerInfo(): begin"); } if (TDebug.TraceMixer) { TDebug.out("TMixer.getMixerInfo(): end"); } return m_mixerInfo; } public Line.Info[] getSourceLineInfo() { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSourceLineInfo(): begin"); } Line.Info[] infos = (Line.Info[]) m_supportedSourceLineInfos.toArray(EMPTY_LINE_INFO_ARRAY); if (TDebug.TraceMixer) { TDebug.out("TMixer.getSourceLineInfo(): end"); } return infos; } public Line.Info[] getTargetLineInfo() { if (TDebug.TraceMixer) { TDebug.out("TMixer.getTargetLineInfo(): begin"); } Line.Info[] infos = (Line.Info[]) m_supportedTargetLineInfos.toArray(EMPTY_LINE_INFO_ARRAY); if (TDebug.TraceMixer) { TDebug.out("TMixer.getTargetLineInfo(): end"); } return infos; } public Line.Info[] getSourceLineInfo(Line.Info info) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSourceLineInfo(Line.Info): info to test: " + info); } // TODO: return EMPTY_LINE_INFO_ARRAY; } public Line.Info[] getTargetLineInfo(Line.Info info) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getTargetLineInfo(Line.Info): info to test: " + info); } // TODO: return EMPTY_LINE_INFO_ARRAY; } public boolean isLineSupported(Line.Info info) { if (TDebug.TraceMixer) { TDebug.out("TMixer.isLineSupported(): info to test: " + info); } Class lineClass = info.getLineClass(); if (lineClass.equals(SourceDataLine.class)) { return isLineSupportedImpl(info, m_supportedSourceLineInfos); } else if (lineClass.equals(TargetDataLine.class)) { return isLineSupportedImpl(info, m_supportedTargetLineInfos); } else if (lineClass.equals(Port.class)) { return isLineSupportedImpl(info, m_supportedSourceLineInfos) || isLineSupportedImpl(info, m_supportedTargetLineInfos); } else { return false; } } private static boolean isLineSupportedImpl(Line.Info info, Collection supportedLineInfos) { Iterator iterator = supportedLineInfos.iterator(); while (iterator.hasNext()) { Line.Info info2 = (Line.Info) iterator.next(); if (info2.matches(info)) { return true; } } return false; } public Line getLine(Line.Info info) throws LineUnavailableException { if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): begin"); } Class lineClass = info.getLineClass(); DataLine.Info dataLineInfo = null; Port.Info portInfo = null; AudioFormat[] aFormats = null; if (info instanceof DataLine.Info) { dataLineInfo = (DataLine.Info) info; aFormats = dataLineInfo.getFormats(); } else if (info instanceof Port.Info) { portInfo = (Port.Info) info; } AudioFormat format = null; Line line = null; if (lineClass == SourceDataLine.class) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): type: SourceDataLine"); } if (dataLineInfo == null) { throw new IllegalArgumentException("need DataLine.Info for SourceDataLine"); } format = getSupportedSourceFormat(aFormats); line = getSourceDataLine(format, dataLineInfo.getMaxBufferSize()); } else if (lineClass == Clip.class) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): type: Clip"); } if (dataLineInfo == null) { throw new IllegalArgumentException("need DataLine.Info for Clip"); } format = getSupportedSourceFormat(aFormats); line = getClip(format); } else if (lineClass == TargetDataLine.class) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): type: TargetDataLine"); } if (dataLineInfo == null) { throw new IllegalArgumentException("need DataLine.Info for TargetDataLine"); } format = getSupportedTargetFormat(aFormats); line = getTargetDataLine(format, dataLineInfo.getMaxBufferSize()); } else if (lineClass == Port.class) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): type: TargetDataLine"); } if (portInfo == null) { throw new IllegalArgumentException("need Port.Info for Port"); } line = getPort(portInfo); } else { if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): unknown line type, will throw exception"); } throw new LineUnavailableException("unknown line class: " + lineClass); } if (TDebug.TraceMixer) { TDebug.out("TMixer.getLine(): end"); } return line; } protected SourceDataLine getSourceDataLine(AudioFormat format, int nBufferSize) throws LineUnavailableException { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSourceDataLine(): begin"); } throw new IllegalArgumentException("this mixer does not support SourceDataLines"); } protected Clip getClip(AudioFormat format) throws LineUnavailableException { if (TDebug.TraceMixer) { TDebug.out("TMixer.getClip(): begin"); } throw new IllegalArgumentException("this mixer does not support Clips"); } protected TargetDataLine getTargetDataLine(AudioFormat format, int nBufferSize) throws LineUnavailableException { if (TDebug.TraceMixer) { TDebug.out("TMixer.getTargetDataLine(): begin"); } throw new IllegalArgumentException("this mixer does not support TargetDataLines"); } protected Port getPort(Port.Info info) throws LineUnavailableException { if (TDebug.TraceMixer) { TDebug.out("TMixer.getTargetDataLine(): begin"); } throw new IllegalArgumentException("this mixer does not support Ports"); } private AudioFormat getSupportedSourceFormat(AudioFormat[] aFormats) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedSourceFormat(): begin"); } AudioFormat format = null; for (int i = 0; i < aFormats.length; i++) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedSourceFormat(): checking " + aFormats[i] + "..."); } if (isSourceFormatSupported(aFormats[i])) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedSourceFormat(): ...supported"); } format = aFormats[i]; break; } else { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedSourceFormat(): ...no luck"); } } } if (format == null) { throw new IllegalArgumentException("no line matchine one of the passed formats"); } if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedSourceFormat(): end"); } return format; } private AudioFormat getSupportedTargetFormat(AudioFormat[] aFormats) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedTargetFormat(): begin"); } AudioFormat format = null; for (int i = 0; i < aFormats.length; i++) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedTargetFormat(): checking " + aFormats[i] + " ..."); } if (isTargetFormatSupported(aFormats[i])) { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedTargetFormat(): ...supported"); } format = aFormats[i]; break; } else { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedTargetFormat(): ...no luck"); } } } if (format == null) { throw new IllegalArgumentException("no line matchine one of the passed formats"); } if (TDebug.TraceMixer) { TDebug.out("TMixer.getSupportedTargetFormat(): end"); } return format; } /* not implemented here: getMaxLines(Line.Info) */ public Line[] getSourceLines() { if (TDebug.TraceMixer) { TDebug.out("TMixer.getSourceLines(): called"); } return (Line[]) m_openSourceDataLines.toArray(EMPTY_LINE_ARRAY); } public Line[] getTargetLines() { if (TDebug.TraceMixer) { TDebug.out("TMixer.getTargetLines(): called"); } return (Line[]) m_openTargetDataLines.toArray(EMPTY_LINE_ARRAY); } public void synchronize(Line[] aLines, boolean bMaintainSync) { throw new IllegalArgumentException("synchronization not supported"); } public void unsynchronize(Line[] aLines) { throw new IllegalArgumentException("synchronization not supported"); } public boolean isSynchronizationSupported(Line[] aLines, boolean bMaintainSync) { return false; } protected boolean isSourceFormatSupported(AudioFormat format) { if (TDebug.TraceMixer) { TDebug.out("TMixer.isSourceFormatSupported(): format to test: " + format); } Iterator iterator = m_supportedSourceFormats.iterator(); while (iterator.hasNext()) { AudioFormat supportedFormat = (AudioFormat) iterator.next(); if (AudioFormats.matches(supportedFormat, format)) { return true; } } return false; } protected boolean isTargetFormatSupported(AudioFormat format) { if (TDebug.TraceMixer) { TDebug.out("TMixer.isTargetFormatSupported(): format to test: " + format); } Iterator iterator = m_supportedTargetFormats.iterator(); while (iterator.hasNext()) { AudioFormat supportedFormat = (AudioFormat) iterator.next(); if (AudioFormats.matches(supportedFormat, format)) { return true; } } return false; } /*package*/ void registerOpenLine(Line line) { if (TDebug.TraceMixer) { TDebug.out("TMixer.registerOpenLine(): line to register: " + line); } if (line instanceof SourceDataLine) { synchronized (m_openSourceDataLines) { m_openSourceDataLines.add(line); } } else if (line instanceof TargetDataLine) { synchronized (m_openSourceDataLines) { m_openTargetDataLines.add(line); } } } /*package*/ void unregisterOpenLine(Line line) { if (TDebug.TraceMixer) { TDebug.out("TMixer.unregisterOpenLine(): line to unregister: " + line); } if (line instanceof SourceDataLine) { synchronized (m_openSourceDataLines) { m_openSourceDataLines.remove(line); } } else if (line instanceof TargetDataLine) { synchronized (m_openTargetDataLines) { m_openTargetDataLines.remove(line); } } } } /*** TMixer.java ***/ ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TControlController.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TControlControl0000644000175000017500000000433311377161311030721 0ustar /* * TControlController.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.util.Collection; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Control; import javax.sound.sampled.Line; import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Port; import org.tritonus.share.TDebug; /** Base class for classes implementing Line. */ public class TControlController implements TControllable { /** The parent (compound) control. In case this control is part of a compound control, the parentControl property is set to a value other than null. */ private TCompoundControl m_parentControl; public TControlController() { } public void setParentControl(TCompoundControl compoundControl) { m_parentControl = compoundControl; } public TCompoundControl getParentControl() { return m_parentControl; } public void commit() { if (TDebug.TraceControl) { TDebug.out("TControlController.commit(): called [" + this.getClass().getName() + "]"); } if (getParentControl() != null) { getParentControl().commit(); } } } /*** TControlController.java ***/ ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TFloatControl.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TFloatControl.j0000644000175000017500000000534611377161311030603 0ustar /* * TFloatControl.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import javax.sound.sampled.FloatControl; import org.tritonus.share.TDebug; /** Base class for classes implementing Line. */ public class TFloatControl extends FloatControl implements TControllable { private TControlController m_controller; public TFloatControl(FloatControl.Type type, float fMinimum, float fMaximum, float fPrecision, int nUpdatePeriod, float fInitialValue, String strUnits) { super(type, fMinimum, fMaximum, fPrecision, nUpdatePeriod, fInitialValue, strUnits); if (TDebug.TraceControl) { TDebug.out("TFloatControl.: begin"); } m_controller = new TControlController(); if (TDebug.TraceControl) { TDebug.out("TFloatControl.: end"); } } public TFloatControl(FloatControl.Type type, float fMinimum, float fMaximum, float fPrecision, int nUpdatePeriod, float fInitialValue, String strUnits, String strMinLabel, String strMidLabel, String strMaxLabel) { super(type, fMinimum, fMaximum, fPrecision, nUpdatePeriod, fInitialValue, strUnits, strMinLabel, strMidLabel, strMaxLabel); if (TDebug.TraceControl) { TDebug.out("TFloatControl.: begin"); } m_controller = new TControlController(); if (TDebug.TraceControl) { TDebug.out("TFloatControl.: end"); } } public void setParentControl(TCompoundControl compoundControl) { m_controller.setParentControl(compoundControl); } public TCompoundControl getParentControl() { return m_controller.getParentControl(); } public void commit() { m_controller.commit(); } } /*** TFloatControl.java ***/ ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TMixerInfo.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TMixerInfo.java0000644000175000017500000000234011377161311030554 0ustar /* * TMixerInfo.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import javax.sound.sampled.Mixer; import org.tritonus.share.TDebug; /* * This is needed only because Mixer.Info's constructor * is protected (in the Sun jdk1.3). */ public class TMixerInfo extends Mixer.Info { public TMixerInfo(String a, String b, String c, String d) { super(a, b, c, d); } } /*** TMixerInfo.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TLine.java0000644000175000017500000001411311377161311027544 0ustar /* * TLine.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.util.Collection; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Control; import javax.sound.sampled.Line; import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import org.tritonus.share.TDebug; import org.tritonus.share.TNotifier; /** Base class for classes implementing Line. */ public abstract class TLine implements Line { private static final Control[] EMPTY_CONTROL_ARRAY = new Control[0]; private Line.Info m_info; private boolean m_bOpen; private List m_controls; private Set m_lineListeners; private TMixer m_mixer; protected TLine(TMixer mixer, Line.Info info) { setLineInfo(info); setOpen(false); m_controls = new ArrayList(); m_lineListeners = new HashSet(); m_mixer = mixer; } protected TLine(TMixer mixer, Line.Info info, Collection controls) { this (mixer, info); m_controls.addAll(controls); } protected TMixer getMixer() { return m_mixer; } public Line.Info getLineInfo() { return m_info; } protected void setLineInfo(Line.Info info) { if (TDebug.TraceLine) { TDebug.out("TLine.setLineInfo(): setting: " + info); } synchronized (this) { m_info = info; } } public void open() throws LineUnavailableException { if (TDebug.TraceLine) { TDebug.out("TLine.open(): called"); } if (! isOpen()) { if (TDebug.TraceLine) { TDebug.out("TLine.open(): opening"); } openImpl(); if (getMixer() != null) { getMixer().registerOpenLine(this); } setOpen(true); } else { if (TDebug.TraceLine) { TDebug.out("TLine.open(): already open"); } } } /** * Subclasses should override this method. */ protected void openImpl() throws LineUnavailableException { if (TDebug.TraceLine) { TDebug.out("TLine.openImpl(): called"); } } public void close() { if (TDebug.TraceLine) { TDebug.out("TLine.close(): called"); } if (isOpen()) { if (TDebug.TraceLine) { TDebug.out("TLine.close(): closing"); } if (getMixer() != null) { getMixer().unregisterOpenLine(this); } closeImpl(); setOpen(false); } else { if (TDebug.TraceLine) { TDebug.out("TLine.close(): not open"); } } } /** * Subclasses should override this method. */ protected void closeImpl() { if (TDebug.TraceLine) { TDebug.out("TLine.closeImpl(): called"); } } public boolean isOpen() { return m_bOpen; } protected void setOpen(boolean bOpen) { if (TDebug.TraceLine) { TDebug.out("TLine.setOpen(): called, value: " + bOpen); } boolean bOldValue = isOpen(); m_bOpen = bOpen; if (bOldValue != isOpen()) { if (isOpen()) { if (TDebug.TraceLine) { TDebug.out("TLine.setOpen(): opened"); } notifyLineEvent(LineEvent.Type.OPEN); } else { if (TDebug.TraceLine) { TDebug.out("TLine.setOpen(): closed"); } notifyLineEvent(LineEvent.Type.CLOSE); } } } protected void addControl(Control control) { synchronized (m_controls) { m_controls.add(control); } } protected void removeControl(Control control) { synchronized (m_controls) { m_controls.remove(control); } } public Control[] getControls() { synchronized (m_controls) { return (Control[]) m_controls.toArray(EMPTY_CONTROL_ARRAY); } } public Control getControl(Control.Type controlType) { synchronized (m_controls) { Iterator it = m_controls.iterator(); while (it.hasNext()) { Control control = (Control) it.next(); if (control.getType().equals(controlType)) { return control; } } throw new IllegalArgumentException("no control of type " + controlType); } } public boolean isControlSupported(Control.Type controlType) { // TDebug.out("TLine.isSupportedControl(): called"); try { return getControl(controlType) != null; } catch (IllegalArgumentException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } // TDebug.out("TLine.isSupportedControl(): returning false"); return false; } } public void addLineListener(LineListener listener) { // TDebug.out("%% TChannel.addListener(): called"); synchronized (m_lineListeners) { m_lineListeners.add(listener); } } public void removeLineListener(LineListener listener) { synchronized (m_lineListeners) { m_lineListeners.remove(listener); } } private Set getLineListeners() { synchronized (m_lineListeners) { return new HashSet(m_lineListeners); } } // is overridden in TDataLine to provide a position protected void notifyLineEvent(LineEvent.Type type) { notifyLineEvent(new LineEvent(this, type, AudioSystem.NOT_SPECIFIED)); } protected void notifyLineEvent(LineEvent event) { // TDebug.out("%% TChannel.notifyChannelEvent(): called"); // Channel.Event event = new Channel.Event(this, type, getPosition()); TNotifier.notifier.addEntry(event, getLineListeners()); } } /*** TLine.java ***/ ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TEnumControl.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TEnumControl.ja0000644000175000017500000000354111377161311030576 0ustar /* * TEnumControl.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import javax.sound.sampled.EnumControl; import org.tritonus.share.TDebug; /** Base class for classes implementing Line. */ public class TEnumControl extends EnumControl implements TControllable { private TControlController m_controller; public TEnumControl(EnumControl.Type type, Object[] aValues, Object value) { super(type, aValues, value); if (TDebug.TraceControl) { TDebug.out("TEnumControl.: begin"); } m_controller = new TControlController(); if (TDebug.TraceControl) { TDebug.out("TEnumControl.: end"); } } public void setParentControl(TCompoundControl compoundControl) { m_controller.setParentControl(compoundControl); } public TCompoundControl getParentControl() { return m_controller.getParentControl(); } public void commit() { m_controller.commit(); } } /*** TEnumControl.java ***/ ././@LongLink0000000000000000000000000000015700000000000011570 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TCompoundControlType.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TCompoundContro0000644000175000017500000000262711377161311030715 0ustar /* * TCompoundControlType.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled.mixer; import javax.sound.sampled.CompoundControl; /** CompoundControl.Type class. This class is only needed to provide a public constructor. */ public class TCompoundControlType extends CompoundControl.Type { /** Constructor. Constructs a CompoundControl.Type with the name given. @param strName The name of the control. */ public TCompoundControlType(String strName) { super(strName); } } /*** TCompoundControlType.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TDataLine.java0000644000175000017500000001121611377161311030337 0ustar /* * TDataLine.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.util.Collection; import java.util.EventListener; import java.util.EventObject; import java.util.HashSet; import java.util.Set; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineEvent; import javax.sound.sampled.Line; import org.tritonus.share.TDebug; /** Base class for classes implementing DataLine. */ public abstract class TDataLine extends TLine implements DataLine { private static final int DEFAULT_BUFFER_SIZE = 128000; private AudioFormat m_format; private int m_nBufferSize; private boolean m_bRunning; // private boolean m_bActive; public TDataLine(TMixer mixer, DataLine.Info info) { super(mixer, info); init(info); } public TDataLine(TMixer mixer, DataLine.Info info, Collection controls) { super(mixer, info, controls); init(info); } // IDEA: extract format and bufsize from info? private void init(DataLine.Info info) { m_format = null; m_nBufferSize = AudioSystem.NOT_SPECIFIED; setRunning(false); // setActive(false); } // not defined here: // public void drain() // public void flush() public void start() { if (TDebug.TraceSourceDataLine) { TDebug.out("TDataLine.start(): called"); } setRunning(true); } public void stop() { if (TDebug.TraceSourceDataLine) { TDebug.out("TDataLine.stop(): called"); } setRunning(false); } public boolean isRunning() { return m_bRunning; } // TODO: recheck protected void setRunning(boolean bRunning) { boolean bOldValue = isRunning(); m_bRunning = bRunning; if (bOldValue != isRunning()) { if (isRunning()) { startImpl(); notifyLineEvent(LineEvent.Type.START); } else { stopImpl(); notifyLineEvent(LineEvent.Type.STOP); } } } protected void startImpl() { } protected void stopImpl() { } /** * This implementation returns the status of isRunning(). * Subclasses should overwrite this method if there is more * precise information about the status of the line available. */ public boolean isActive() { return isRunning(); } /* public boolean isStarted() { return m_bStarted; } */ // TODO: should only ALLOW engaging in data I/O. // actual START event should only be sent when line really becomes active /* protected void setStarted(boolean bStarted) { m_bStarted = bStarted; if (!isRunning()) { setActive(false); } } */ public AudioFormat getFormat() { return m_format; } protected void setFormat(AudioFormat format) { if (TDebug.TraceDataLine) { TDebug.out("TDataLine.setFormat(): setting: " + format); } m_format = format; } public int getBufferSize() { return m_nBufferSize; } protected void setBufferSize(int nBufferSize) { if (TDebug.TraceDataLine) { TDebug.out("TDataLine.setBufferSize(): setting: " + nBufferSize); } m_nBufferSize = nBufferSize; } // not defined here: // public int available() public int getFramePosition() { // TODO: return -1; } public long getMicrosecondPosition() { return (long) (getFramePosition() * getFormat().getFrameRate() * 1000000); } /* * Has to be overridden to be useful. */ public float getLevel() { return AudioSystem.NOT_SPECIFIED; } protected void checkOpen() { if (getFormat() == null) { throw new IllegalStateException("format must be specified"); } if (getBufferSize() == AudioSystem.NOT_SPECIFIED) { setBufferSize(getDefaultBufferSize()); } } protected int getDefaultBufferSize() { return DEFAULT_BUFFER_SIZE; } protected void notifyLineEvent(LineEvent.Type type) { notifyLineEvent(new LineEvent(this, type, getFramePosition())); } } /*** TDataLine.java ***/ ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TBooleanControl.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TBooleanControl0000644000175000017500000000533111377161311030657 0ustar /* * TBooleanControl.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import javax.sound.sampled.BooleanControl; import org.tritonus.share.TDebug; /** Base class for classes implementing Line. */ public class TBooleanControl extends BooleanControl implements TControllable { private TControlController m_controller; public TBooleanControl(BooleanControl.Type type, boolean bInitialValue) { this(type, bInitialValue, null); } public TBooleanControl(BooleanControl.Type type, boolean bInitialValue, TCompoundControl parentControl) { super(type, bInitialValue); if (TDebug.TraceControl) { TDebug.out("TBooleanControl.: begin"); } m_controller = new TControlController(); if (TDebug.TraceControl) { TDebug.out("TBooleanControl.: end"); } } public TBooleanControl(BooleanControl.Type type, boolean bInitialValue, String strTrueStateLabel, String strFalseStateLabel) { this(type, bInitialValue, strTrueStateLabel, strFalseStateLabel, null); } public TBooleanControl(BooleanControl.Type type, boolean bInitialValue, String strTrueStateLabel, String strFalseStateLabel, TCompoundControl parentControl) { super(type, bInitialValue, strTrueStateLabel, strFalseStateLabel); if (TDebug.TraceControl) { TDebug.out("TBooleanControl.: begin"); } m_controller = new TControlController(); if (TDebug.TraceControl) { TDebug.out("TBooleanControl.: end"); } } public void setParentControl(TCompoundControl compoundControl) { m_controller.setParentControl(compoundControl); } public TCompoundControl getParentControl() { return m_controller.getParentControl(); } public void commit() { m_controller.commit(); } } /*** TBooleanControl.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TClip.java0000644000175000017500000001430511377161311027547 0ustar /* * TClip.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.io.IOException; import java.io.ByteArrayInputStream; import java.util.Collection; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.mixer.TDataLine; public class TClip extends TDataLine implements Clip { private static final Class[] CONTROL_CLASSES = {/*GainControl.class*/}; private static final int BUFFER_FRAMES = 16384; // private Mixer m_mixer; // private SourceDataLine m_line; public TClip(DataLine.Info info) { super(null, // TMixer info); } public TClip(DataLine.Info info, Collection controls) { super(null, // TMixer info, controls); } public void open(AudioFormat audioFormat, byte[] abData, int nOffset, int nLength) throws LineUnavailableException { // int nBufferLength = nNumFrames * audioFormat.getFrameSize(); // TODO: check if nOffset + nBufferLength <= abData.length // perhaps truncate automatically ByteArrayInputStream bais = new ByteArrayInputStream(abData, nOffset, nLength); AudioInputStream audioInputStream = new AudioInputStream(bais, audioFormat, AudioSystem.NOT_SPECIFIED); try { open(audioInputStream); } catch (IOException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } throw new LineUnavailableException("IOException occured"); } } public void open(AudioInputStream audioInputStream) throws LineUnavailableException, IOException { AudioFormat audioFormat = audioInputStream.getFormat(); // TOOD: DataLine.Info info = new DataLine.Info(Clip.class, audioFormat, -1/*nBufferSize*/); /* setLineInfo(info); int nFrameSize = audioFormat.getFrameSize(); long lTotalLength = audioInputStream.getFrameLength() * nFrameSize; int nFormat = Esd.ESD_STREAM | Esd.ESD_PLAY | EsdUtils.getEsdFormat(audioFormat); if (TDebug.TraceClip) { TDebug.out("format: " + nFormat); TDebug.out("sample rate: " + audioFormat.getSampleRate()); } // m_esdSample.open(nFormat, (int) audioFormat.getSampleRate(), (int) lTotalLength); if (TDebug.TraceClip) { TDebug.out("size in esd: " + audioInputStream.getFrameLength() * nFrameSize); } int nBufferLength = BUFFER_FRAMES * nFrameSize; byte[] abData = new byte[nBufferLength]; int nBytesRead = 0; int nTotalBytes = 0; while (nBytesRead != -1) { try { nBytesRead = audioInputStream.read(abData, 0, abData.length); } catch (IOException e) { if (TDebug.TraceClip || TDebug.TraceAllExceptions) { TDebug.out(e); } } if (nBytesRead >= 0) { nTotalBytes += nBytesRead; if (TDebug.TraceClip) { TDebug.out("TClip.open(): total bytes: " + nTotalBytes); TDebug.out("TClip.open(): Trying to write: " + nBytesRead); } int nBytesWritten = 0; //m_esdSample.write(abData, 0, nBytesRead); if (TDebug.TraceClip) { TDebug.out("TClip.open(): Written: " + nBytesWritten); } } } // to trigger the events // open(); */ } public int getFrameLength() { // TODO: return -1; } public long getMicrosecondLength() { // TODO: return -1; } public void setFramePosition(int nPosition) { // TOOD: } public void setMicrosecondPosition(long lPosition) { // TOOD: } public int getFramePosition() { // TOOD: return -1; } public long getMicrosecondPosition() { // TOOD: return -1; } public void setLoopPoints(int nStart, int nEnd) { // TOOD: } public void loop(int nCount) { if (TDebug.TraceClip) { TDebug.out("TClip.loop(int): called; count = " + nCount); } if (false/*isStarted()*/) { /* * only allow zero count to stop the looping * at the end of an iteration. */ if (nCount == 0) { if (TDebug.TraceClip) { TDebug.out("TClip.loop(int): stopping sample"); } // m_esdSample.stop(); } } else { if (nCount == 0) { if (TDebug.TraceClip) { TDebug.out("TClip.loop(int): starting sample (once)"); } // m_esdSample.play(); } else { /* * we're ignoring the count, because esd * cannot loop for a fixed number of * times. */ // TDebug.out("hallo"); if (TDebug.TraceClip) { TDebug.out("TClip.loop(int): starting sample (forever)"); } // m_esdSample.loop(); } } // TOOD: } public void flush() { // TOOD: } public void drain() { // TOOD: } public void close() { // m_esdSample.free(); // m_esdSample.close(); // TOOD: } public void open() { // TODO: } public void start() { if (TDebug.TraceClip) { TDebug.out("TClip.start(): called"); } /* * This is a hack. What start() really should do is * start playing at the position playback was stopped. */ if (TDebug.TraceClip) { TDebug.out("TClip.start(): calling 'loop(0)' [hack]"); } loop(0); } public void stop() { // TODO: // m_esdSample.kill(); } /* * This method is enforced by DataLine, but doesn't make any * sense for Clips. */ public int available() { return -1; } public long getLongFramePosition() { return -1; } } /*** TClip.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TPort.java0000644000175000017500000000333011377161311027600 0ustar /* * TPort.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.util.Collection; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Control; import javax.sound.sampled.Line; import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Port; import org.tritonus.share.TDebug; /** Base class for Ports. */ public class TPort extends TLine implements Port { public TPort(TMixer mixer, Line.Info info) { super(mixer, info); } public TPort(TMixer mixer, Line.Info info, Collection controls) { super(mixer, info, controls); } } /*** TPort.java ***/ ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TBaseDataLine.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TBaseDataLine.j0000644000175000017500000000445111377161311030445 0ustar /* * TBaseDataLine.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled.mixer; import java.util.Collection; import java.util.EventListener; import java.util.EventObject; import java.util.HashSet; import java.util.Set; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.LineEvent; import javax.sound.sampled.Line; import javax.sound.sampled.LineUnavailableException; import org.tritonus.share.TDebug; /** Base class for implementing SourceDataLine or TargetDataLine. */ public abstract class TBaseDataLine extends TDataLine { public TBaseDataLine(TMixer mixer, DataLine.Info info) { super(mixer, info); } public TBaseDataLine(TMixer mixer, DataLine.Info info, Collection controls) { super(mixer, info, controls); } public void open(AudioFormat format, int nBufferSize) throws LineUnavailableException { if (TDebug.TraceDataLine) { TDebug.out("TBaseDataLine.open(AudioFormat, int): called with buffer size: " + nBufferSize); } setBufferSize(nBufferSize); open(format); } public void open(AudioFormat format) throws LineUnavailableException { if (TDebug.TraceDataLine) { TDebug.out("TBaseDataLine.open(AudioFormat): called"); } setFormat(format); open(); } // IDEA: move to TDataLine or TLine? // necessary and wise at all? protected void finalize() { if (isOpen()) { close(); } } } /*** TBaseDataLine.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TSoftClip.java0000644000175000017500000001301011377161311030373 0ustar /* * TSoftClip.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.io.IOException; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.DataLine; import javax.sound.sampled.SourceDataLine; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Mixer; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.mixer.TDataLine; public class TSoftClip extends TClip implements Runnable { private static final Class[] CONTROL_CLASSES = {/*GainControl.class*/}; private static final int BUFFER_SIZE = 16384; private Mixer m_mixer; private SourceDataLine m_line; private byte[] m_abClip; private int m_nRepeatCount; private Thread m_thread; public TSoftClip(Mixer mixer, AudioFormat format) throws LineUnavailableException { // TODO: info object /* DataLine.Info info = new DataLine.Info(Clip.class, audioFormat, -1); */ super(null); m_mixer = mixer; DataLine.Info info = new DataLine.Info( SourceDataLine.class, // TODO: should pass a real AudioFormat object that isn't too restrictive format); m_line = (SourceDataLine) AudioSystem.getLine(info); } public void open(AudioInputStream audioInputStream) throws LineUnavailableException, IOException { AudioFormat audioFormat = audioInputStream.getFormat(); setFormat(audioFormat); int nFrameSize = audioFormat.getFrameSize(); if (nFrameSize < 1) { throw new IllegalArgumentException("frame size must be positive"); } if (TDebug.TraceClip) { TDebug.out("TSoftClip.open(): format: " + audioFormat); // TDebug.out("sample rate: " + audioFormat.getSampleRate()); } byte[] abData = new byte[BUFFER_SIZE]; ByteArrayOutputStream baos = new ByteArrayOutputStream(); int nBytesRead = 0; while (nBytesRead != -1) { try { nBytesRead = audioInputStream.read(abData, 0, abData.length); } catch (IOException e) { if (TDebug.TraceClip || TDebug.TraceAllExceptions) { TDebug.out(e); } } if (nBytesRead >= 0) { if (TDebug.TraceClip) { TDebug.out("TSoftClip.open(): Trying to write: " + nBytesRead); } baos.write(abData, 0, nBytesRead); if (TDebug.TraceClip) { TDebug.out("TSoftClip.open(): Written: " + nBytesRead); } } } m_abClip = baos.toByteArray(); setBufferSize(m_abClip.length); // open the line m_line.open(getFormat()); // to trigger the events // open(); } public int getFrameLength() { if (isOpen()) { return getBufferSize() / getFormat().getFrameSize(); } else { return AudioSystem.NOT_SPECIFIED; } } public long getMicrosecondLength() { if (isOpen()) { return (long) (getFrameLength() * getFormat().getFrameRate() * 1000000); } else { return AudioSystem.NOT_SPECIFIED; } } public void setFramePosition(int nPosition) { // TOOD: } public void setMicrosecondPosition(long lPosition) { // TOOD: } public int getFramePosition() { // TOOD: return -1; } public long getMicrosecondPosition() { // TOOD: return -1; } public void setLoopPoints(int nStart, int nEnd) { // TOOD: } public void loop(int nCount) { if (TDebug.TraceClip) { TDebug.out("TSoftClip.loop(int): called; count = " + nCount); } if (false/*isStarted()*/) { /* * only allow zero count to stop the looping * at the end of an iteration. */ if (nCount == 0) { if (TDebug.TraceClip) { TDebug.out("TSoftClip.loop(int): stopping sample"); } // m_esdSample.stop(); } } else { m_nRepeatCount = nCount; m_thread = new Thread(this); m_thread.start(); } // TOOD: } public void flush() { // TOOD: } public void drain() { // TOOD: } public void close() { // m_esdSample.free(); // m_esdSample.close(); // TOOD: } public void open() { // TODO: } public void start() { if (TDebug.TraceClip) { TDebug.out("TSoftClip.start(): called"); } /* * This is a hack. What start() really should do is * start playing at the position playback was stopped. */ if (TDebug.TraceClip) { TDebug.out("TSoftClip.start(): calling 'loop(0)' [hack]"); } loop(0); } public void stop() { // TODO: // m_esdSample.kill(); } /* * This method is enforced by DataLine, but doesn't make any * sense for Clips. */ public int available() { return -1; } public void run() { while (m_nRepeatCount >= 0) { m_line.write(m_abClip, 0, m_abClip.length); m_nRepeatCount--; } } } /*** TSoftClip.java ***/ ././@LongLink0000000000000000000000000000015000000000000011561 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TControllable.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TControllable.j0000644000175000017500000000317211377161311030610 0ustar /* * TControllable.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; import java.util.Collection; import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Control; import javax.sound.sampled.Line; import javax.sound.sampled.LineEvent; import javax.sound.sampled.LineListener; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.Port; import org.tritonus.share.TDebug; public interface TControllable { public void setParentControl(TCompoundControl compoundControl); public TCompoundControl getParentControl(); public void commit(); } /*** TControllable.java ***/ ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TCompoundControl.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TCompoundContro0000644000175000017500000000447011377161311030713 0ustar /* * TCompoundControl.java * * This file is part of Tritonus, * an implementation of the Java Sound API. */ /* * Copyright (c) 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.mixer; // import java.util.Collection; // import java.util.ArrayList; // import java.util.HashSet; // import java.util.Iterator; // import java.util.List; // import java.util.Set; // import javax.sound.sampled.AudioSystem; import javax.sound.sampled.CompoundControl; import javax.sound.sampled.Control; // import javax.sound.sampled.Line; // import javax.sound.sampled.LineEvent; // import javax.sound.sampled.LineListener; // import javax.sound.sampled.LineUnavailableException; // import javax.sound.sampled.Port; import org.tritonus.share.TDebug; /** Base class for classes implementing Line. */ public class TCompoundControl extends CompoundControl implements TControllable { private TControlController m_controller; public TCompoundControl(CompoundControl.Type type, Control[] aMemberControls) { super(type, aMemberControls); if (TDebug.TraceControl) { TDebug.out("TCompoundControl.: begin"); } m_controller = new TControlController(); if (TDebug.TraceControl) { TDebug.out("TCompoundControl.: end"); } } public void setParentControl(TCompoundControl compoundControl) { m_controller.setParentControl(compoundControl); } public TCompoundControl getParentControl() { return m_controller.getParentControl(); } public void commit() { m_controller.commit(); } } /*** TCompoundControl.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/TConversionTool.java0000644000175000017500000012136411377161311030523 0ustar /* * TConversionTool.java */ /* * Copyright (c) 1999,2000 by Florian Bomers * Copyright (c) 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled; /** * Useful methods for converting audio data. * * @author Florian Bomers * @author Matthias Pfisterer */ /* For convenience, a list of available methods is maintained here. Some hints: - buffers: always byte arrays - offsets: always in bytes - sampleCount: number of SAMPLES to read/write, as opposed to FRAMES or BYTES! - when in buffer and out buffer are given, the data is copied, otherwise it is replaced in the same buffer (buffer size is not checked!) - a number (except "2") gives the number of bits in which format the samples have to be. - >8 bits per sample is always treated signed. - all functions are tried to be optimized - hints welcome ! ** "high level" methods ** changeOrderOrSign(buffer, nOffset, nByteLength, nBytesPerSample) changeOrderOrSign(inBuffer, nInOffset, outBuffer, nOutOffset, nByteLength, nBytesPerSample) ** PCM byte order and sign conversion ** void convertSign8(buffer, byteOffset, sampleCount) void swapOrder16(buffer, byteOffset, sampleCount) void swapOrder24(buffer, byteOffset, sampleCount) void swapOrder32(buffer, byteOffset, sampleCount) void convertSign8(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount) void swapOrder16(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount) void swapOrder24(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount) void swapOrder32(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount) ** conversion functions for byte arrays ** ** these are for reference to see how to implement these conversions ** short bytesToShort16(highByte, lowByte) short bytesToShort16(buffer, byteOffset, bigEndian) short bytesToInt16(highByte, lowByte) short bytesToInt16(buffer, byteOffset, bigEndian) short bytesToInt24(buffer, byteOffset, bigEndian) short bytesToInt32(buffer, byteOffset, bigEndian) void shortToBytes16(sample, buffer, byteOffset, bigEndian) void intToBytes24(sample, buffer, byteOffset, bigEndian) void intToBytes32(sample, buffer, byteOffset, bigEndian) ** ULAW <-> PCM ** byte linear2ulaw(int sample) short ulaw2linear(int ulawbyte) void pcm162ulaw(buffer, byteOffset, sampleCount, bigEndian) void pcm162ulaw(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, bigEndian) void pcm82ulaw(buffer, byteOffset, sampleCount, signed) void pcm82ulaw(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, signed) void ulaw2pcm16(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, bigEndian) void ulaw2pcm8(buffer, byteOffset, sampleCount, signed) void ulaw2pcm8(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, signed) ** ALAW <-> PCM ** byte linear2alaw(short pcm_val) short alaw2linear(byte ulawbyte) void pcm162alaw(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, bigEndian) void pcm162alaw(buffer, byteOffset, sampleCount, bigEndian) void pcm82alaw(buffer, byteOffset, sampleCount, signed) void pcm82alaw(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, signed) void alaw2pcm16(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, bigEndian) void alaw2pcm8(buffer, byteOffset, sampleCount, signed) void alaw2pcm8(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount, signed) ** ULAW <-> ALAW ** byte ulaw2alaw(byte sample) void ulaw2alaw(buffer, byteOffset, sampleCount) void ulaw2alaw(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount) byte alaw2ulaw(byte sample) void alaw2ulaw(buffer, byteOffset, sampleCount) void alaw2ulaw(inBuffer, inByteOffset, outBuffer, outByteOffset, sampleCount) */ public class TConversionTool { ///////////////// sign/byte-order conversion /////////////////////////////////// public static void convertSign8(byte[] buffer, int byteOffset, int sampleCount) { sampleCount+=byteOffset; for (int i=byteOffset; i0) { outBuffer[outByteOffset++]=(byte)(inBuffer[inByteOffset++]+128); sampleCount--; } } public static void swapOrder16(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount) { while (sampleCount>0) { outBuffer[outByteOffset++]=inBuffer[inByteOffset+1]; outBuffer[outByteOffset++]=inBuffer[inByteOffset++]; inByteOffset++; sampleCount--; } } public static void swapOrder24(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount) { while (sampleCount>0) { outBuffer[outByteOffset++]=inBuffer[inByteOffset+2]; outByteOffset++; outBuffer[outByteOffset++]=inBuffer[inByteOffset++]; inByteOffset++; inByteOffset++; sampleCount--; } } public static void swapOrder32(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount) { while (sampleCount>0) { outBuffer[outByteOffset++]=inBuffer[inByteOffset+3]; outBuffer[outByteOffset++]=inBuffer[inByteOffset+2]; outBuffer[outByteOffset++]=inBuffer[inByteOffset+1]; outBuffer[outByteOffset++]=inBuffer[inByteOffset++]; inByteOffset++; inByteOffset++; inByteOffset++; sampleCount--; } } ///////////////// conversion functions for byte arrays //////////////////////////// /** * Converts 2 bytes to a signed sample of type short. *

This is a reference function. */ public static short bytesToShort16(byte highByte, byte lowByte) { return (short) ((highByte<<8) | (lowByte & 0xFF)); } /** * Converts 2 successive bytes starting at byteOffset in * buffer to a signed sample of type short. *

* For little endian, buffer[byteOffset] is interpreted as low byte, * whereas it is interpreted as high byte in big endian. *

This is a reference function. */ public static short bytesToShort16(byte[] buffer, int byteOffset, boolean bigEndian) { return bigEndian? ((short) ((buffer[byteOffset]<<8) | (buffer[byteOffset+1] & 0xFF))): ((short) ((buffer[byteOffset+1]<<8) | (buffer[byteOffset] & 0xFF))); } /** * Converts 2 bytes to a signed integer sample with 16bit range. *

This is a reference function. */ public static int bytesToInt16(byte highByte, byte lowByte) { return (highByte<<8) | (lowByte & 0xFF); } /** * Converts 2 successive bytes starting at byteOffset in * buffer to a signed integer sample with 16bit range. *

* For little endian, buffer[byteOffset] is interpreted as low byte, * whereas it is interpreted as high byte in big endian. *

This is a reference function. */ public static int bytesToInt16(byte[] buffer, int byteOffset, boolean bigEndian) { return bigEndian? ((buffer[byteOffset]<<8) | (buffer[byteOffset+1] & 0xFF)): ((buffer[byteOffset+1]<<8) | (buffer[byteOffset] & 0xFF)); } /** * Converts 3 successive bytes starting at byteOffset in * buffer to a signed integer sample with 24bit range. *

* For little endian, buffer[byteOffset] is interpreted as lowest byte, * whereas it is interpreted as highest byte in big endian. *

This is a reference function. */ public static int bytesToInt24(byte[] buffer, int byteOffset, boolean bigEndian) { return bigEndian? ((buffer[byteOffset]<<16) // let Java handle sign-bit | ((buffer[byteOffset+1] & 0xFF)<<8) // inhibit sign-bit handling | (buffer[byteOffset+2] & 0xFF)): ((buffer[byteOffset+2]<<16) // let Java handle sign-bit | ((buffer[byteOffset+1] & 0xFF)<<8) // inhibit sign-bit handling | (buffer[byteOffset] & 0xFF)); } /** * Converts a 4 successive bytes starting at byteOffset in * buffer to a signed 32bit integer sample. *

* For little endian, buffer[byteOffset] is interpreted as lowest byte, * whereas it is interpreted as highest byte in big endian. *

This is a reference function. */ public static int bytesToInt32(byte[] buffer, int byteOffset, boolean bigEndian) { return bigEndian? ((buffer[byteOffset]<<24) // let Java handle sign-bit | ((buffer[byteOffset+1] & 0xFF)<<16) // inhibit sign-bit handling | ((buffer[byteOffset+2] & 0xFF)<<8) // inhibit sign-bit handling | (buffer[byteOffset+3] & 0xFF)): ((buffer[byteOffset+3]<<24) // let Java handle sign-bit | ((buffer[byteOffset+2] & 0xFF)<<16) // inhibit sign-bit handling | ((buffer[byteOffset+1] & 0xFF)<<8) // inhibit sign-bit handling | (buffer[byteOffset] & 0xFF)); } /** * Converts a sample of type short to 2 bytes in an array. * sample is interpreted as signed (as Java does). *

* For little endian, buffer[byteOffset] is filled with low byte of sample, * and buffer[byteOffset+1] is filled with high byte of sample. *

For big endian, this is reversed. *

This is a reference function. */ public static void shortToBytes16(short sample, byte[] buffer, int byteOffset, boolean bigEndian) { intToBytes16(sample, buffer, byteOffset, bigEndian); } /** * Converts a 16 bit sample of type int to 2 bytes in an array. * sample is interpreted as signed (as Java does). *

* For little endian, buffer[byteOffset] is filled with low byte of sample, * and buffer[byteOffset+1] is filled with high byte of sample + sign bit. *

For big endian, this is reversed. *

Before calling this function, it should be assured that sample * is in the 16bit range - it will not be clipped. *

This is a reference function. */ public static void intToBytes16(int sample, byte[] buffer, int byteOffset, boolean bigEndian) { if (bigEndian) { buffer[byteOffset++]=(byte) (sample >> 8); buffer[byteOffset]=(byte) (sample & 0xFF); } else { buffer[byteOffset++]=(byte) (sample & 0xFF); buffer[byteOffset]=(byte) (sample >> 8); } } /** * Converts a 24 bit sample of type int to 3 bytes in an array. * sample is interpreted as signed (as Java does). *

* For little endian, buffer[byteOffset] is filled with low byte of sample, * and buffer[byteOffset+2] is filled with the high byte of sample + sign bit. *

For big endian, this is reversed. *

Before calling this function, it should be assured that sample * is in the 24bit range - it will not be clipped. *

This is a reference function. */ public static void intToBytes24(int sample, byte[] buffer, int byteOffset, boolean bigEndian) { if (bigEndian) { buffer[byteOffset++]=(byte) (sample >> 16); buffer[byteOffset++]=(byte) ((sample >>> 8) & 0xFF); buffer[byteOffset]=(byte) (sample & 0xFF); } else { buffer[byteOffset++]=(byte) (sample & 0xFF); buffer[byteOffset++]=(byte) ((sample >>> 8) & 0xFF); buffer[byteOffset]=(byte) (sample >> 16); } } /** * Converts a 32 bit sample of type int to 4 bytes in an array. * sample is interpreted as signed (as Java does). *

* For little endian, buffer[byteOffset] is filled with lowest byte of sample, * and buffer[byteOffset+3] is filled with the high byte of sample + sign bit. *

For big endian, this is reversed. *

This is a reference function. */ public static void intToBytes32(int sample, byte[] buffer, int byteOffset, boolean bigEndian) { if (bigEndian) { buffer[byteOffset++]=(byte) (sample >> 24); buffer[byteOffset++]=(byte) ((sample >>> 16) & 0xFF); buffer[byteOffset++]=(byte) ((sample >>> 8) & 0xFF); buffer[byteOffset]=(byte) (sample & 0xFF); } else { buffer[byteOffset++]=(byte) (sample & 0xFF); buffer[byteOffset++]=(byte) ((sample >>> 8) & 0xFF); buffer[byteOffset++]=(byte) ((sample >>> 16) & 0xFF); buffer[byteOffset]=(byte) (sample >> 24); } } /////////////////////// ULAW /////////////////////////////////////////// private static final boolean ZEROTRAP=true; private static final short BIAS=0x84; private static final int CLIP=32635; private static final int exp_lut1[] ={ 0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 }; /** * Converts a linear signed 16bit sample to a uLaw byte. * Ported to Java by fb. *
Originally by:
* Craig Reese: IDA/Supercomputing Research Center
* Joe Campbell: Department of Defense
* 29 September 1989
*/ public static byte linear2ulaw(int sample) { int sign, exponent, mantissa, ulawbyte; if (sample>32767) sample=32767; else if (sample<-32768) sample=-32768; /* Get the sample into sign-magnitude. */ sign = (sample >> 8) & 0x80; /* set aside the sign */ if (sign != 0) sample = -sample; /* get magnitude */ if (sample > CLIP) sample = CLIP; /* clip the magnitude */ /* Convert from 16 bit linear to ulaw. */ sample = sample + BIAS; exponent = exp_lut1[(sample >> 7) & 0xFF]; mantissa = (sample >> (exponent + 3)) & 0x0F; ulawbyte = ~(sign | (exponent << 4) | mantissa); if (ZEROTRAP) if (ulawbyte == 0) ulawbyte = 0x02; /* optional CCITT trap */ return((byte) ulawbyte); } /* u-law to linear conversion table */ private static short[] u2l = { -32124, -31100, -30076, -29052, -28028, -27004, -25980, -24956, -23932, -22908, -21884, -20860, -19836, -18812, -17788, -16764, -15996, -15484, -14972, -14460, -13948, -13436, -12924, -12412, -11900, -11388, -10876, -10364, -9852, -9340, -8828, -8316, -7932, -7676, -7420, -7164, -6908, -6652, -6396, -6140, -5884, -5628, -5372, -5116, -4860, -4604, -4348, -4092, -3900, -3772, -3644, -3516, -3388, -3260, -3132, -3004, -2876, -2748, -2620, -2492, -2364, -2236, -2108, -1980, -1884, -1820, -1756, -1692, -1628, -1564, -1500, -1436, -1372, -1308, -1244, -1180, -1116, -1052, -988, -924, -876, -844, -812, -780, -748, -716, -684, -652, -620, -588, -556, -524, -492, -460, -428, -396, -372, -356, -340, -324, -308, -292, -276, -260, -244, -228, -212, -196, -180, -164, -148, -132, -120, -112, -104, -96, -88, -80, -72, -64, -56, -48, -40, -32, -24, -16, -8, 0, 32124, 31100, 30076, 29052, 28028, 27004, 25980, 24956, 23932, 22908, 21884, 20860, 19836, 18812, 17788, 16764, 15996, 15484, 14972, 14460, 13948, 13436, 12924, 12412, 11900, 11388, 10876, 10364, 9852, 9340, 8828, 8316, 7932, 7676, 7420, 7164, 6908, 6652, 6396, 6140, 5884, 5628, 5372, 5116, 4860, 4604, 4348, 4092, 3900, 3772, 3644, 3516, 3388, 3260, 3132, 3004, 2876, 2748, 2620, 2492, 2364, 2236, 2108, 1980, 1884, 1820, 1756, 1692, 1628, 1564, 1500, 1436, 1372, 1308, 1244, 1180, 1116, 1052, 988, 924, 876, 844, 812, 780, 748, 716, 684, 652, 620, 588, 556, 524, 492, 460, 428, 396, 372, 356, 340, 324, 308, 292, 276, 260, 244, 228, 212, 196, 180, 164, 148, 132, 120, 112, 104, 96, 88, 80, 72, 64, 56, 48, 40, 32, 24, 16, 8, 0 }; public static short ulaw2linear(byte ulawbyte) { return u2l[ulawbyte & 0xFF]; } /** * Converts a buffer of signed 16bit big endian samples to uLaw. * The uLaw bytes overwrite the original 16 bit values. * The first byte-offset of the uLaw bytes is byteOffset. * It will be written sampleCount/2 bytes. */ public static void pcm162ulaw(byte[] buffer, int byteOffset, int sampleCount, boolean bigEndian) { int shortIndex=byteOffset; int ulawIndex=shortIndex; if (bigEndian) { while (sampleCount>0) { buffer[ulawIndex++]=linear2ulaw (bytesToInt16(buffer[shortIndex], buffer[shortIndex+1])); shortIndex++; shortIndex++; sampleCount--; } } else { while (sampleCount>0) { buffer[ulawIndex++]=linear2ulaw (bytesToInt16(buffer[shortIndex+1], buffer[shortIndex])); shortIndex++; shortIndex++; sampleCount--; } } } /** * Fills outBuffer with ulaw samples. * reading starts from inBuffer[inByteOffset]. * writing starts at outBuffer[outByteOffset]. * There will be sampleCount*2 bytes read from inBuffer; * There will be sampleCount bytes written to outBuffer. */ public static void pcm162ulaw(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean bigEndian) { int shortIndex=inByteOffset; int ulawIndex=outByteOffset; if (bigEndian) { while (sampleCount>0) { outBuffer[ulawIndex++]=linear2ulaw (bytesToInt16(inBuffer[shortIndex], inBuffer[shortIndex+1])); shortIndex++; shortIndex++; sampleCount--; } } else { while (sampleCount>0) { outBuffer[ulawIndex++]=linear2ulaw (bytesToInt16(inBuffer[shortIndex+1], inBuffer[shortIndex])); shortIndex++; shortIndex++; sampleCount--; } } } // TODO: either direct 8bit pcm to ulaw, or better conversion from 8bit to 16bit /** * Converts a buffer of 8bit samples to uLaw. * The uLaw bytes overwrite the original 8 bit values. * The first byte-offset of the uLaw bytes is byteOffset. * It will be written sampleCount bytes. */ public static void pcm82ulaw(byte[] buffer, int byteOffset, int sampleCount, boolean signed) { sampleCount+=byteOffset; if (signed) { for (int i=byteOffset; ibytes
written to outBuffer. */ public static void pcm82ulaw(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean signed) { int ulawIndex=outByteOffset; int pcmIndex=inByteOffset; if (signed) { while (sampleCount>0) { outBuffer[ulawIndex++]=linear2ulaw(inBuffer[pcmIndex++] << 8); sampleCount--; } } else { while (sampleCount>0) { outBuffer[ulawIndex++]=linear2ulaw(((byte) (inBuffer[pcmIndex++]+128)) << 8); sampleCount--; } } } /** * Fills outBuffer with pcm signed 16 bit samples. * reading starts from inBuffer[inByteOffset]. * writing starts at outBuffer[outByteOffset]. * There will be sampleCount bytes read from inBuffer; * There will be sampleCount*2 bytes written to outBuffer. */ public static void ulaw2pcm16(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean bigEndian) { int shortIndex=outByteOffset; int ulawIndex=inByteOffset; while (sampleCount>0) { intToBytes16 (u2l[inBuffer[ulawIndex++] & 0xFF], outBuffer, shortIndex++, bigEndian); shortIndex++; sampleCount--; } } // TODO: either direct 8bit pcm to ulaw, or better conversion from 8bit to 16bit /** * Inplace-conversion of a ulaw buffer to 8bit samples. * The 8bit bytes overwrite the original ulaw values. * The first byte-offset of the uLaw bytes is byteOffset. * It will be written sampleCount bytes. */ public static void ulaw2pcm8(byte[] buffer, int byteOffset, int sampleCount, boolean signed) { sampleCount+=byteOffset; if (signed) { for (int i=byteOffset; i> 8) & 0xFF); } } else { for (int i=byteOffset; i>8)+128); } } } /** * Fills outBuffer with ulaw samples. * reading starts from inBuffer[inByteOffset]. * writing starts at outBuffer[outByteOffset]. * There will be sampleCount bytes written to outBuffer. */ public static void ulaw2pcm8(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean signed) { int ulawIndex=inByteOffset; int pcmIndex=outByteOffset; if (signed) { while (sampleCount>0) { outBuffer[pcmIndex++]= (byte) ((u2l[inBuffer[ulawIndex++] & 0xFF] >> 8) & 0xFF); sampleCount--; } } else { while (sampleCount>0) { outBuffer[pcmIndex++]= (byte) ((u2l[inBuffer[ulawIndex++] & 0xFF]>>8)+128); sampleCount--; } } } //////////////////// ALAW //////////////////////////// /* * This source code is a product of Sun Microsystems, Inc. and is provided * for unrestricted use. Users may copy or modify this source code without * charge. * * linear2alaw() - Convert a 16-bit linear PCM value to 8-bit A-law * * linear2alaw() accepts an 16-bit integer and encodes it as A-law data. * * Linear Input Code Compressed Code * ------------------------ --------------- * 0000000wxyza 000wxyz * 0000001wxyza 001wxyz * 000001wxyzab 010wxyz * 00001wxyzabc 011wxyz * 0001wxyzabcd 100wxyz * 001wxyzabcde 101wxyz * 01wxyzabcdef 110wxyz * 1wxyzabcdefg 111wxyz * * For further information see John C. Bellamy's Digital Telephony, 1982, * John Wiley & Sons, pps 98-111 and 472-476. */ private static final byte QUANT_MASK = 0xf; /* Quantization field mask. */ private static final byte SEG_SHIFT = 4; /* Left shift for segment number. */ private static final short[] seg_end = { 0xFF, 0x1FF, 0x3FF, 0x7FF, 0xFFF, 0x1FFF, 0x3FFF, 0x7FFF }; public static byte linear2alaw(short pcm_val) /* 2's complement (16-bit range) */ { byte mask; byte seg=8; byte aval; if (pcm_val >= 0) { mask = (byte) 0xD5; /* sign (7th) bit = 1 */ } else { mask = 0x55; /* sign bit = 0 */ pcm_val = (short) (-pcm_val - 8); } /* Convert the scaled magnitude to segment number. */ for (int i = 0; i < 8; i++) { if (pcm_val <= seg_end[i]) { seg=(byte) i; break; } } /* Combine the sign, segment, and quantization bits. */ if (seg >= 8) /* out of range, return maximum value. */ return (byte) ((0x7F ^ mask) & 0xFF); else { aval = (byte) (seg << SEG_SHIFT); if (seg < 2) aval |= (pcm_val >> 4) & QUANT_MASK; else aval |= (pcm_val >> (seg + 3)) & QUANT_MASK; return (byte) ((aval ^ mask) & 0xFF); } } private static short[] a2l = { -5504, -5248, -6016, -5760, -4480, -4224, -4992, -4736, -7552, -7296, -8064, -7808, -6528, -6272, -7040, -6784, -2752, -2624, -3008, -2880, -2240, -2112, -2496, -2368, -3776, -3648, -4032, -3904, -3264, -3136, -3520, -3392, -22016, -20992, -24064, -23040, -17920, -16896, -19968, -18944, -30208, -29184, -32256, -31232, -26112, -25088, -28160, -27136, -11008, -10496, -12032, -11520, -8960, -8448, -9984, -9472, -15104, -14592, -16128, -15616, -13056, -12544, -14080, -13568, -344, -328, -376, -360, -280, -264, -312, -296, -472, -456, -504, -488, -408, -392, -440, -424, -88, -72, -120, -104, -24, -8, -56, -40, -216, -200, -248, -232, -152, -136, -184, -168, -1376, -1312, -1504, -1440, -1120, -1056, -1248, -1184, -1888, -1824, -2016, -1952, -1632, -1568, -1760, -1696, -688, -656, -752, -720, -560, -528, -624, -592, -944, -912, -1008, -976, -816, -784, -880, -848, 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736, 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784, 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368, 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392, 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944, 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136, 11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472, 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568, 344, 328, 376, 360, 280, 264, 312, 296, 472, 456, 504, 488, 408, 392, 440, 424, 88, 72, 120, 104, 24, 8, 56, 40, 216, 200, 248, 232, 152, 136, 184, 168, 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184, 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696, 688, 656, 752, 720, 560, 528, 624, 592, 944, 912, 1008, 976, 816, 784, 880, 848 }; public static short alaw2linear(byte ulawbyte) { return a2l[ulawbyte & 0xFF]; } /** * Converts a buffer of signed 16bit big endian samples to uLaw. * The uLaw bytes overwrite the original 16 bit values. * The first byte-offset of the uLaw bytes is byteOffset. * It will be written sampleCount/2 bytes. */ public static void pcm162alaw(byte[] buffer, int byteOffset, int sampleCount, boolean bigEndian) { int shortIndex=byteOffset; int alawIndex=shortIndex; if (bigEndian) { while (sampleCount>0) { buffer[alawIndex++]= linear2alaw(bytesToShort16 (buffer[shortIndex], buffer[shortIndex+1])); shortIndex++; shortIndex++; sampleCount--; } } else { while (sampleCount>0) { buffer[alawIndex++]= linear2alaw(bytesToShort16 (buffer[shortIndex+1], buffer[shortIndex])); shortIndex++; shortIndex++; sampleCount--; } } } /** * Fills outBuffer with alaw samples. * reading starts from inBuffer[inByteOffset]. * writing starts at outBuffer[outByteOffset]. * There will be sampleCount*2 bytes read from inBuffer; * There will be sampleCount bytes written to outBuffer. */ public static void pcm162alaw(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean bigEndian) { int shortIndex=inByteOffset; int alawIndex=outByteOffset; if (bigEndian) { while (sampleCount>0) { outBuffer[alawIndex++]=linear2alaw (bytesToShort16(inBuffer[shortIndex], inBuffer[shortIndex+1])); shortIndex++; shortIndex++; sampleCount--; } } else { while (sampleCount>0) { outBuffer[alawIndex++]=linear2alaw (bytesToShort16(inBuffer[shortIndex+1], inBuffer[shortIndex])); shortIndex++; shortIndex++; sampleCount--; } } } /** * Converts a buffer of 8bit samples to alaw. * The alaw bytes overwrite the original 8 bit values. * The first byte-offset of the aLaw bytes is byteOffset. * It will be written sampleCount bytes. */ public static void pcm82alaw(byte[] buffer, int byteOffset, int sampleCount, boolean signed) { sampleCount+=byteOffset; if (signed) { for (int i=byteOffset; ibytes
written to outBuffer. */ public static void pcm82alaw(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean signed) { int alawIndex=outByteOffset; int pcmIndex=inByteOffset; if (signed) { while (sampleCount>0) { outBuffer[alawIndex++]= linear2alaw((short) (inBuffer[pcmIndex++] << 8)); sampleCount--; } } else { while (sampleCount>0) { outBuffer[alawIndex++]= linear2alaw((short) (((byte) (inBuffer[pcmIndex++]+128)) << 8)); sampleCount--; } } } /** * Converts an alaw buffer to 8bit pcm samples * The 8bit bytes overwrite the original alaw values. * The first byte-offset of the aLaw bytes is byteOffset. * It will be written sampleCount bytes. */ public static void alaw2pcm8(byte[] buffer, int byteOffset, int sampleCount, boolean signed) { sampleCount+=byteOffset; if (signed) { for (int i=byteOffset; i> 8) & 0xFF); } } else { for (int i=byteOffset; i>8)+128); } } } /** * Fills outBuffer with alaw samples. * reading starts from inBuffer[inByteOffset]. * writing starts at outBuffer[outByteOffset]. * There will be sampleCount bytes written to outBuffer. */ public static void alaw2pcm8(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean signed) { int alawIndex=inByteOffset; int pcmIndex=outByteOffset; if (signed) { while (sampleCount>0) { outBuffer[pcmIndex++]= (byte) ((a2l[inBuffer[alawIndex++] & 0xFF] >> 8) & 0xFF); sampleCount--; } } else { while (sampleCount>0) { outBuffer[pcmIndex++]= (byte) ((a2l[inBuffer[alawIndex++] & 0xFF]>>8)+128); sampleCount--; } } } /** * Fills outBuffer with pcm signed 16 bit samples. * reading starts from inBuffer[inByteOffset]. * writing starts at outBuffer[outByteOffset]. * There will be sampleCount bytes read from inBuffer; * There will be sampleCount*2 bytes written to outBuffer. */ public static void alaw2pcm16(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount, boolean bigEndian) { int shortIndex=outByteOffset; int alawIndex=inByteOffset; while (sampleCount>0) { intToBytes16 (a2l[inBuffer[alawIndex++] & 0xFF], outBuffer, shortIndex++, bigEndian); shortIndex++; sampleCount--; } } //////////////////////// cross conversion alaw <-> ulaw //////////////////////////////////////// private static byte[] u2a = { -86, -85, -88, -87, -82, -81, -84, -83, -94, -93, -96, -95, -90, -89, -92, -91, -70, -69, -72, -71, -66, -65, -68, -67, -78, -77, -80, -79, -74, -73, -76, -75, -118, -117, -120, -119, -114, -113, -116, -115, -126, -125, -128, -127, -122, -121, -124, -123, -101, -104, -103, -98, -97, -100, -99, -110, -109, -112, -111, -106, -105, -108, -107, -22, -24, -23, -18, -17, -20, -19, -30, -29, -32, -31, -26, -25, -28, -27, -6, -8, -2, -1, -4, -3, -14, -13, -16, -15, -10, -9, -12, -11, -53, -55, -49, -51, -62, -61, -64, -63, -58, -57, -60, -59, -38, -37, -40, -39, -34, -33, -36, -35, -46, -46, -45, -45, -48, -48, -47, -47, -42, -42, -41, -41, -44, -44, -43, -43, 42, 43, 40, 41, 46, 47, 44, 45, 34, 35, 32, 33, 38, 39, 36, 37, 58, 59, 56, 57, 62, 63, 60, 61, 50, 51, 48, 49, 54, 55, 52, 53, 10, 11, 8, 9, 14, 15, 12, 13, 2, 3, 0, 1, 6, 7, 4, 5, 27, 24, 25, 30, 31, 28, 29, 18, 19, 16, 17, 22, 23, 20, 21, 106, 104, 105, 110, 111, 108, 109, 98, 99, 96, 97, 102, 103, 100, 101, 122, 120, 126, 127, 124, 125, 114, 115, 112, 113, 118, 119, 116, 117, 75, 73, 79, 77, 66, 67, 64, 65, 70, 71, 68, 69, 90, 91, 88, 89, 94, 95, 92, 93, 82, 82, 83, 83, 80, 80, 81, 81, 86, 86, 87, 87, 84, 84, 85, 85, }; public static byte ulaw2alaw(byte sample) { return u2a[sample & 0xFF]; } /** * Converts a buffer of uLaw samples to aLaw. */ public static void ulaw2alaw(byte[] buffer, int byteOffset, int sampleCount) { sampleCount+=byteOffset; for (int i=byteOffset; i0) { outBuffer[alawIndex++]=u2a[inBuffer[ulawIndex++] & 0xFF]; sampleCount--; } } private static byte[] a2u = { -86, -85, -88, -87, -82, -81, -84, -83, -94, -93, -96, -95, -90, -89, -92, -91, -71, -70, -73, -72, -67, -66, -69, -68, -79, -78, -80, -80, -75, -74, -77, -76, -118, -117, -120, -119, -114, -113, -116, -115, -126, -125, -128, -127, -122, -121, -124, -123, -102, -101, -104, -103, -98, -97, -100, -99, -110, -109, -112, -111, -106, -105, -108, -107, -30, -29, -32, -31, -26, -25, -28, -27, -35, -35, -36, -36, -33, -33, -34, -34, -12, -10, -16, -14, -4, -2, -8, -6, -22, -21, -24, -23, -18, -17, -20, -19, -56, -55, -58, -57, -52, -51, -54, -53, -64, -63, -65, -65, -60, -59, -62, -61, -42, -41, -44, -43, -38, -37, -40, -39, -49, -49, -50, -50, -46, -45, -48, -47, 42, 43, 40, 41, 46, 47, 44, 45, 34, 35, 32, 33, 38, 39, 36, 37, 57, 58, 55, 56, 61, 62, 59, 60, 49, 50, 48, 48, 53, 54, 51, 52, 10, 11, 8, 9, 14, 15, 12, 13, 2, 3, 0, 1, 6, 7, 4, 5, 26, 27, 24, 25, 30, 31, 28, 29, 18, 19, 16, 17, 22, 23, 20, 21, 98, 99, 96, 97, 102, 103, 100, 101, 93, 93, 92, 92, 95, 95, 94, 94, 116, 118, 112, 114, 124, 126, 120, 122, 106, 107, 104, 105, 110, 111, 108, 109, 72, 73, 70, 71, 76, 77, 74, 75, 64, 65, 63, 63, 68, 69, 66, 67, 86, 87, 84, 85, 90, 91, 88, 89, 79, 79, 78, 78, 82, 83, 80, 81, }; public static byte alaw2ulaw(byte sample) { return a2u[sample & 0xFF]; } /** * Converts a buffer of aLaw samples to uLaw. * The uLaw bytes overwrite the original aLaw values. * The first byte-offset of the uLaw bytes is byteOffset. * It will be written sampleCount bytes. */ public static void alaw2ulaw(byte[] buffer, int byteOffset, int sampleCount) { sampleCount+=byteOffset; for (int i=byteOffset; ibytes written to outBuffer. */ public static void alaw2ulaw(byte[] inBuffer, int inByteOffset, byte[] outBuffer, int outByteOffset, int sampleCount) { int ulawIndex=outByteOffset; int alawIndex=inByteOffset; while (sampleCount>0) { outBuffer[ulawIndex++]=a2u[inBuffer[alawIndex++] & 0xFF]; sampleCount--; } } //////////////////////// high level methods ///////////////////////////////////////////////// /* * !! Here, unlike other functions in this class, the length is * in bytes rather than samples !! */ public static void changeOrderOrSign(byte[] buffer, int nOffset, int nByteLength, int nBytesPerSample) { switch (nBytesPerSample) { case 1: convertSign8(buffer, nOffset, nByteLength); break; case 2: swapOrder16(buffer, nOffset, nByteLength / 2); break; case 3: swapOrder24(buffer, nOffset, nByteLength / 3); break; case 4: swapOrder32(buffer, nOffset, nByteLength / 4); break; } } /* * !! Here, unlike other functions in this class, the length is * in bytes rather than samples !! */ public static void changeOrderOrSign( byte[] inBuffer, int nInOffset, byte[] outBuffer, int nOutOffset, int nByteLength, int nBytesPerSample) { switch (nBytesPerSample) { case 1: convertSign8( inBuffer, nInOffset, outBuffer, nOutOffset, nByteLength); break; case 2: swapOrder16( inBuffer, nInOffset, outBuffer, nOutOffset, nByteLength / 2); break; case 3: swapOrder24( inBuffer, nInOffset, outBuffer, nOutOffset, nByteLength / 3); break; case 4: swapOrder32( inBuffer, nInOffset, outBuffer, nOutOffset, nByteLength / 4); break; } } ///////////////// Annexe: how the arrays were created. ////////////////////////////////// /* * Converts a uLaw byte to a linear signed 16bit sample. * Ported to Java by fb. *
Originally by:
* * Craig Reese: IDA/Supercomputing Research Center
* 29 September 1989
* * References:
*

    *
  1. CCITT Recommendation G.711 (very difficult to follow)
  2. *
  3. MIL-STD-188-113,"Interoperability and Performance Standards * for Analog-to_Digital Conversion Techniques," * 17 February 1987
  4. *
*/ /* private static final int exp_lut2[] = { 0,132,396,924,1980,4092,8316,16764 }; public static short _ulaw2linear(int ulawbyte) { int sign, exponent, mantissa, sample; ulawbyte = ~ulawbyte; sign = (ulawbyte & 0x80); exponent = (ulawbyte >> 4) & 0x07; mantissa = ulawbyte & 0x0F; sample = exp_lut2[exponent] + (mantissa << (exponent + 3)); if (sign != 0) sample = -sample; return((short) sample); }*/ /* u- to A-law conversions: copied from CCITT G.711 specifications */ /* private static byte[] _u2a = { 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 27, 29, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, (byte) 128}; */ /* u-law to A-law conversion */ /* * This source code is a product of Sun Microsystems, Inc. and is provided * for unrestricted use. Users may copy or modify this source code without * charge. */ /* public static byte _ulaw2alaw(byte sample) { sample &= 0xff; return (byte) (((sample & 0x80)!=0) ? (0xD5 ^ (_u2a[(0x7F ^ sample) & 0x7F] - 1)) : (0x55 ^ (_u2a[(0x7F ^ sample) & 0x7F] - 1))); }*/ /* A- to u-law conversions */ /* private static byte[] _a2u = { 1, 3, 5, 7, 9, 11, 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 48, 49, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127}; */ /* * This source code is a product of Sun Microsystems, Inc. and is provided * for unrestricted use. Users may copy or modify this source code without * charge. */ /* public static byte _alaw2ulaw(byte sample) { sample &= 0xff; return (byte) (((sample & 0x80)!=0) ? (0xFF ^ _a2u[(sample ^ 0xD5) & 0x7F]) : (0x7F ^ _a2u[(sample ^ 0x55) & 0x7F])); } public static void print_a2u() { System.out.println("\tprivate static byte[] a2u = {"); for (int i=-128; i<128; i++) { if (((i+128) % 16)==0) { System.out.print("\t\t"); } byte b=(byte) i; System.out.print(_alaw2ulaw(b)+", "); if (((i+128) % 16)==15) { System.out.println(""); } } System.out.println("\t};"); } public static void print_u2a() { System.out.println("\tprivate static byte[] u2a = {"); for (int i=-128; i<128; i++) { if (((i+128) % 16)==0) { System.out.print("\t\t"); } byte b=(byte) i; System.out.print(_ulaw2alaw(b)+", "); if (((i+128) % 16)==15) { System.out.println(""); } } System.out.println("\t};"); } */ } /*** TConversionTool.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/TAudioFormat.java0000644000175000017500000000432111377161311027743 0ustar /* * TAudioFormat.java */ /* * Copyright (c) 2003 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.sound.sampled.AudioFormat; public class TAudioFormat extends AudioFormat { private Map m_properties; private Map m_unmodifiableProperties; public TAudioFormat(AudioFormat.Encoding encoding, float sampleRate, int sampleSizeInBits, int channels, int frameSize, float frameRate, boolean bigEndian, Map properties) { super(encoding, sampleRate, sampleSizeInBits, channels, frameSize, frameRate, bigEndian); initMaps(properties); } public TAudioFormat(float sampleRate, int sampleSizeInBits, int channels, boolean signed, boolean bigEndian, Map properties) { super(sampleRate, sampleSizeInBits, channels, signed, bigEndian); initMaps(properties); } private void initMaps(Map properties) { /* Here, we make a shallow copy of the map. It's unclear if this is sufficient (of if a deep copy should be made). */ m_properties = new HashMap(); m_properties.putAll(properties); m_unmodifiableProperties = Collections.unmodifiableMap(m_properties); } public Map properties() { return m_unmodifiableProperties; } protected void setProperty(String key, Object value) { m_properties.put(key, value); } } /*** TAudioFormat.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/AudioFormatSet.java0000644000175000017500000000750411377161311030301 0ustar /* * AudioFormatSet.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import javax.sound.sampled.AudioFormat; import org.tritonus.share.ArraySet; import org.tritonus.share.sampled.AudioFormats; /** * A set where the elements are uniquely referenced by * AudioFormats.equals rather than their object reference. * No 2 equal AudioFormats can exist in the set. *

* This class provide convenience methods like * getAudioFormat(AudioFormat) and * matches(AudioFormat). *

* The contains(Object elem) and get(Object elem) * fail, if elem is not an instance of AudioFormat. *

* You shouldn't use the ArrayList specific functions * like those that take index parameters. *

* It is not possible to add null elements. *

* Currently, the methods equals(.,.) and matches(.,.) of * class AudioFormats are used. Let's hope that they will * be integrated into AudioFormat. */ public class AudioFormatSet extends ArraySet { protected static final AudioFormat[] EMPTY_FORMAT_ARRAY = new AudioFormat[0]; public AudioFormatSet() { super(); } public AudioFormatSet(Collection c) { super(c); } public boolean add(Object elem) { if (elem==null || !(elem instanceof AudioFormat)) { return false; } return super.add(elem); } public boolean contains(Object elem) { if (elem==null || !(elem instanceof AudioFormat)) { return false; } AudioFormat comp=(AudioFormat) elem; Iterator it=iterator(); while (it.hasNext()) { if (AudioFormats.equals(comp, (AudioFormat) it.next())) { return true; } } return false; } public Object get(Object elem) { if (elem==null || !(elem instanceof AudioFormat)) { return null; } AudioFormat comp=(AudioFormat) elem; Iterator it=iterator(); while (it.hasNext()) { AudioFormat thisElem=(AudioFormat) it.next(); if (AudioFormats.equals(comp, thisElem)) { return thisElem; } } return null; } public AudioFormat getAudioFormat(AudioFormat elem) { return (AudioFormat) get(elem); } /** * Checks whether this Set contains an AudioFormat * that matches elem. * The first matching format is returned. If no element * matches elem, null is returned. *

* @see AudioFormats#matches(AudioFormat, AudioFormat) */ public AudioFormat matches(AudioFormat elem) { if (elem==null) { return null; } Iterator it=iterator(); while (it.hasNext()) { AudioFormat thisElem=(AudioFormat) it.next(); if (AudioFormats.matches(elem, thisElem)) { return thisElem; } } return null; } public AudioFormat[] toAudioFormatArray() { return (AudioFormat[]) toArray(EMPTY_FORMAT_ARRAY); } public void add(int index, Object element) { throw new UnsupportedOperationException("unsupported"); } public Object set(int index, Object element) { throw new UnsupportedOperationException("unsupported"); } } /*** AudioFormatSet.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/Encodings.java0000644000175000017500000001530211377161311027317 0ustar /* * Encodings.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled; import java.util.Iterator; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.AudioFormat; import org.tritonus.share.StringHashedSet; import org.tritonus.share.TDebug; /** * This class is a proposal for generic handling of encodings. * The main purpose is to provide a standardized way of * implementing encoding types. Like this, encodings * are only identified by their String name, and not, as currently, * by their object instance. *

* A registry of standard encoding names will * be maintained by the Tritonus team. *

* In a specification request to JavaSoft, the static method * getEncoding should be integrated into * AudioFormat.Encoding(String name) (possibly * renamed to getInstance(String name).
* The static instances of ULAW, ALAW PCM_UNSIGNED and PCM_SIGNED * encodings in that class should be retrieved using that function, * too (internally).
* At best, the protected constructor of that class * should also be replaced to be a private constructor. * Like this it will be prevented that developers create their own * instances of Encoding, which causes problems with the * equals method. In fact, the equals method should be redefined anyway * so that it compares the names and not the objects. *

* Also, a specification request should be made to integrate * getEncodings() into AudioSystem (this is * especially annoying as the relevant methods already exist * in the provider interfaces of file readers, file writers and * converters). * * @author Florian Bomers */ public class Encodings extends AudioFormat.Encoding { /** contains all known encodings */ private static StringHashedSet encodings = new StringHashedSet(); // initially add the standard encodings static { encodings.add(AudioFormat.Encoding.PCM_SIGNED); encodings.add(AudioFormat.Encoding.PCM_UNSIGNED); encodings.add(AudioFormat.Encoding.ULAW); encodings.add(AudioFormat.Encoding.ALAW); } Encodings(String name) { super(name); } /** * Use this method for retrieving an instance of * AudioFormat.Encoding of the specified * name. A standard registry of encoding names will * be maintained by the Tritonus team. *

* Every file reader, file writer, and format converter * provider should exclusively use this method for * retrieving instances of AudioFormat.Encoding. */ /* MP2000/09/11: perhaps it is not a good idea to allow user programs the creation of new encodings. The problem with it is that a plain typo will produce an encoding object that is not supported. Instead, some indication of an error should be signaled to the user program. And, there should be a second interface for service providers allowing them to register encodings supported by themselves. $$fb2000/09/26: The problem is what you see as second issue: it can never be assured that this class knows all available encodings. So at the moment, there is no choice than to allow users to create any Encoding they wish. The encodings database will simplify things. A problem with an interface to retrieve supported encodings (or API function in spi.FormatConversionProvider) is that this requires loading of all providers very early. Hmmm, maybe this is necessary in any case when the user issues something like AudioSystem.isConversionSupported. */ public static AudioFormat.Encoding getEncoding(String name) { AudioFormat.Encoding res=(AudioFormat.Encoding) encodings.get(name); if (res==null) { // it is not already in the string set. Create a new encoding instance. res=new Encodings(name); // and save it for the future encodings.add(res); } return res; } /** * Tests for equality of 2 encodings. They are equal when their strings match. *

* This function should be AudioFormat.Encoding.equals and must * be considered as a temporary work around until it flows into the * JavaSound API. */ // IDEA: create a special "NOT_SPECIFIED" encoding // and a AudioFormat.Encoding.matches method. public static boolean equals(AudioFormat.Encoding e1, AudioFormat.Encoding e2) { return e2.toString().equals(e1.toString()); } /** * Returns all "supported" encodings. * Supported means that it is possible to read or * write files with this encoding, or that a converter * accepts this encoding as source or target format. *

* Currently, this method returns a best guess and * the search algorithm is far from complete: with standard * methods of AudioSystem, only the target encodings * of the converters can be retrieved - neither * the source encodings of converters nor the encodings * of file readers and file writers cannot be retrieved. */ public static AudioFormat.Encoding[] getEncodings() { StringHashedSet iteratedSources=new StringHashedSet(); StringHashedSet retrievedTargets=new StringHashedSet(); Iterator sourceFormats=encodings.iterator(); while (sourceFormats.hasNext()) { AudioFormat.Encoding source=(AudioFormat.Encoding) sourceFormats.next(); iterateEncodings(source, iteratedSources, retrievedTargets); } return (AudioFormat.Encoding[]) retrievedTargets.toArray( new AudioFormat.Encoding[retrievedTargets.size()]); } private static void iterateEncodings(AudioFormat.Encoding source, StringHashedSet iteratedSources, StringHashedSet retrievedTargets) { if (!iteratedSources.contains(source)) { iteratedSources.add(source); AudioFormat.Encoding[] targets=AudioSystem.getTargetEncodings(source); for (int i=0; i * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.IOException; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import org.tritonus.share.TDebug; /** * Base class for classes implementing AudioOutputStream. * * @author Matthias Pfisterer */ public abstract class TAudioOutputStream implements AudioOutputStream { private AudioFormat m_audioFormat; private long m_lLength; // in bytes private long m_lCalculatedLength; private TDataOutputStream m_dataOutputStream; private boolean m_bDoBackPatching; private boolean m_bHeaderWritten; protected TAudioOutputStream(AudioFormat audioFormat, long lLength, TDataOutputStream dataOutputStream, boolean bDoBackPatching) { m_audioFormat = audioFormat; m_lLength = lLength; m_lCalculatedLength = 0; m_dataOutputStream = dataOutputStream; m_bDoBackPatching = bDoBackPatching; m_bHeaderWritten = false; } public AudioFormat getFormat() { return m_audioFormat; } /** Gives length of the stream. * This value is in bytes. It may be AudioSystem.NOT_SPECIFIED * to express that the length is unknown. */ public long getLength() { return m_lLength; } /** Gives number of bytes already written. */ // IDEA: rename this to BytesWritten or something like that ? public long getCalculatedLength() { return m_lCalculatedLength; } protected TDataOutputStream getDataOutputStream() { return m_dataOutputStream; } /** Writes audio data to the destination (file or output stream). */ // IDEA: use long? public int write(byte[] abData, int nOffset, int nLength) throws IOException { if (TDebug.TraceAudioOutputStream) { TDebug.out("TAudioOutputStream.write(): wanted length: " + nLength); } if (! m_bHeaderWritten) { writeHeader(); m_bHeaderWritten = true; } // $$fb added // check that total writes do not exceed specified length long lTotalLength=getLength(); if (lTotalLength!=AudioSystem.NOT_SPECIFIED && (m_lCalculatedLength+nLength)>lTotalLength) { if (TDebug.TraceAudioOutputStream) { TDebug.out("TAudioOutputStream.write(): requested more bytes to write than possible."); } nLength=(int) (lTotalLength-m_lCalculatedLength); // sanity if (nLength<0) { nLength=0; } } // TODO: throw an exception if nLength==0 ? (to indicate end of file ?) if (nLength>0) { m_dataOutputStream.write(abData, nOffset, nLength); m_lCalculatedLength += nLength; } if (TDebug.TraceAudioOutputStream) { TDebug.out("TAudioOutputStream.write(): calculated (total) length: " + m_lCalculatedLength+" bytes = "+(m_lCalculatedLength/getFormat().getFrameSize())+" frames"); } return nLength; } /** Writes the header of the audio file. */ protected abstract void writeHeader() throws IOException; /** Closes the stream. * This does write remaining buffered data to the destination, * backpatch the header, if necessary, and closes the destination. */ public void close() throws IOException { if (TDebug.TraceAudioOutputStream) { TDebug.out("TAudioOutputStream.close(): called"); } // flush? if (m_bDoBackPatching) { if (TDebug.TraceAudioOutputStream) { TDebug.out("TAudioOutputStream.close(): patching header"); } patchHeader(); } m_dataOutputStream.close(); } protected void patchHeader() throws IOException { TDebug.out("TAudioOutputStream.patchHeader(): called"); // DO NOTHING } protected void setLengthFromCalculatedLength() { m_lLength = m_lCalculatedLength; } } /*** TAudioOutputStream.java ***/ ././@LongLink0000000000000000000000000000016500000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/HeaderlessAudioOutputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/HeaderlessAudioO0000644000175000017500000000277511377161311030577 0ustar /* * HeaderlessAudioOutputStream.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.IOException; import javax.sound.sampled.AudioFormat; /** * AudioOutputStream for files without a header; the input is written as it is * * @author Florian Bomers */ // todo: implement directly AudioOutputStream without using TAudioOutputStream public class HeaderlessAudioOutputStream extends TAudioOutputStream { public HeaderlessAudioOutputStream(AudioFormat audioFormat, long lLength, TDataOutputStream dataOutputStream) { super(audioFormat, lLength, dataOutputStream, false); } protected void writeHeader() throws IOException { } } /*** HeaderlessAudioOutputStream.java ***/ ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/AudioOutputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/AudioOutputStrea0000644000175000017500000000713311377161311030671 0ustar /* * AudioOutputStream.java */ /* * Copyright (c) 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.IOException; import javax.sound.sampled.AudioFormat; /** Represents a one-time writing of audio data to a destination (file or output stream). * * This interface is the lowest abstraction level of writing audio data. * Implementations of this interface should, when write() is called, never * do buffering and they should never do format conversions. However, * this interface is intended to abstract the file format (how the * headers and data chunks look like) and the way of writing to the * destination object. (implementation note [non-normative]: the last * should be done by using TDataOutputStream implementing classes). * * One reasoning behind this interface was to allow direct, unbuffered * writing of recorded data. * In JS API 0.90, there was no obvious way for this. * Data have had to be recorded to a buffer, then written to a file * from that buffer. * This gave problems with long recordings, where the main * memory of the machine is not big enough to hold all data. There are * two ways so solve this: * * a) Having a special AudioInputStream that fetches its data from a * TargetDataLine. This way, the loop inside the AudioFileWriters reads * directely from the recording line via the special AudioInputStream. * This is the solution Sun adopted for JS 1.0. * * b) The other way is to expose a direct interface to the writing of the * audio file with no loop inside it. This is to enable the application * programmer to write the main loop itself, possibly doing some * additional processing inside it. This is the more flexible way. * The drawback is that it requires a new architecture for writing files. * * This interface is the central part of a proposal for the second * solution. * The idea is now to use the new structure inside the old one to gain * experience with it before proposing to make it a public interface * (public in the sense that it is part of the javax.sound.sampled * package). * * @author Matthias Pfisterer */ public interface AudioOutputStream { /** * Retrieves the AufioFormat of this AudioOutputStream. */ public AudioFormat getFormat(); /** Gives length of the stream. * This value is in bytes. It may be AudioSystem.NOT_SPECIFIED * to express that the length is unknown. */ public long getLength(); /** * Writes a chunk of audio data to the destination (file or output stream). */ // IDEA: use long? public int write(byte[] abData, int nOffset, int nLength) throws IOException; /** Closes the stream. * This does write remaining buffered data to the destination, * backpatch the header, if necessary, and closes the destination. */ public void close() throws IOException; } /*** AudioOutputStream.java ***/ ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TAudioFileFormat.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TAudioFileFormat0000644000175000017500000000473411377161311030552 0ustar /* * TAudioFileFormat.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.util.Collections; import java.util.HashMap; import java.util.Map; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; /** * This class is just to have a public constructor taking the * number of bytes of the whole file. The public constructor of * AudioFileFormat doesn't take this parameter, the one who takes * it is protected. * * @author Matthias Pfisterer */ public class TAudioFileFormat extends AudioFileFormat { private Map m_properties; private Map m_unmodifiableProperties; /* * Note that the order of the arguments is different from * the one in AudioFileFormat. */ public TAudioFileFormat(Type type, AudioFormat audioFormat, int nLengthInFrames, int nLengthInBytes) { super(type, nLengthInBytes, audioFormat, nLengthInFrames); } public TAudioFileFormat(Type type, AudioFormat audioFormat, int nLengthInFrames, int nLengthInBytes, Map properties) { super(type, nLengthInBytes, audioFormat, nLengthInFrames); initMaps(properties); } private void initMaps(Map properties) { /* Here, we make a shallow copy of the map. It's unclear if this is sufficient (of if a deep copy should be made). */ m_properties = new HashMap(); m_properties.putAll(properties); m_unmodifiableProperties = Collections.unmodifiableMap(m_properties); } public Map properties() { return m_unmodifiableProperties; } protected void setProperty(String key, Object value) { m_properties.put(key, value); } } /*** TAudioFileFormat.java ***/ ././@LongLink0000000000000000000000000000016300000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TSeekableDataOutputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TSeekableDataOut0000644000175000017500000000343511377161311030532 0ustar /* * TSeekableDataOutputStream.java */ /* * Copyright (c) 1999 by Florian Bomers * Copyright (c) 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.File; import java.io.RandomAccessFile; import java.io.IOException; /** * A TDataOutputStream that allows seeking. * * @author Florian Bomers * @author Matthias Pfisterer */ public class TSeekableDataOutputStream extends RandomAccessFile implements TDataOutputStream { public TSeekableDataOutputStream(File file) throws IOException { super(file, "rw"); } public boolean supportsSeek() { return true; } public void writeLittleEndian32(int value) throws IOException { writeByte(value & 0xFF); writeByte((value >> 8) & 0xFF); writeByte((value >> 16) & 0xFF); writeByte((value >> 24) & 0xFF); } public void writeLittleEndian16(short value) throws IOException { writeByte(value & 0xFF); writeByte((value >> 8) & 0xFF); } } /*** TSeekableDataOutputStream.java ***/ ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TAudioFileWriter.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TAudioFileWriter0000644000175000017500000004043111377161311030570 0ustar /* * TAudioFileWriter.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * Copyright (c) 1999, 2000 by Florian Bomers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Collection; import java.util.Iterator; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.spi.AudioFileWriter; import org.tritonus.share.TDebug; import org.tritonus.share.sampled.AudioFormats; import org.tritonus.share.sampled.AudioUtils; import org.tritonus.share.sampled.TConversionTool; import org.tritonus.share.sampled.Encodings; import org.tritonus.share.ArraySet; /** * Common base class for implementing classes of AudioFileWriter. *

It provides often-used functionality and the new architecture using * an AudioOutputStream. *

There should be only one set of audio formats supported by any given * class of TAudioFileWriter. This class assumes implicitely that all * supported file types have a common set of audio formats they can handle. * * @author Matthias Pfisterer * @author Florian Bomers */ public abstract class TAudioFileWriter extends AudioFileWriter { protected static final int ALL = AudioSystem.NOT_SPECIFIED; public static AudioFormat.Encoding PCM_SIGNED=Encodings.getEncoding("PCM_SIGNED"); public static AudioFormat.Encoding PCM_UNSIGNED=Encodings.getEncoding("PCM_UNSIGNED"); /** Buffer length for the loop in the write() method. * This is in bytes. Perhaps it should be in frames to give an * equal amount of latency. */ private static final int BUFFER_LENGTH = 16384; // only needed for Collection.toArray() protected static final AudioFileFormat.Type[] NULL_TYPE_ARRAY = new AudioFileFormat.Type[0]; /** The audio file types (AudioFileFormat.Type) that can be * handled by the AudioFileWriter. */ private Collection m_audioFileTypes; /** The AudioFormats that can be handled by the * AudioFileWriter. */ // IDEA: implement a special collection that uses matches() to test whether an element is already in private Collection m_audioFormats; /** * Inheriting classes should call this constructor * in order to make use of the functionality of TAudioFileWriter. */ protected TAudioFileWriter(Collection fileTypes, Collection audioFormats) { if (TDebug.TraceAudioFileWriter) { TDebug.out("TAudioFileWriter.(): begin"); } m_audioFileTypes = fileTypes; m_audioFormats = audioFormats; if (TDebug.TraceAudioFileWriter) { TDebug.out("TAudioFileWriter.(): end"); } } // implementing the interface public AudioFileFormat.Type[] getAudioFileTypes() { return (AudioFileFormat.Type[]) m_audioFileTypes.toArray(NULL_TYPE_ARRAY); } // implementing the interface public boolean isFileTypeSupported(AudioFileFormat.Type fileType) { return m_audioFileTypes.contains(fileType); } // implementing the interface public AudioFileFormat.Type[] getAudioFileTypes( AudioInputStream audioInputStream) { //$$fb 2000-08-16: rewrote this method. We need to check for *each* // file type, whether the format is supported ! AudioFormat format = audioInputStream.getFormat(); ArraySet res=new ArraySet(); Iterator it=m_audioFileTypes.iterator(); while (it.hasNext()) { AudioFileFormat.Type thisType=(AudioFileFormat.Type) it.next(); if (isAudioFormatSupportedImpl(format, thisType)) { res.add(thisType); } } return (AudioFileFormat.Type[]) res.toArray(NULL_TYPE_ARRAY); } // implementing the interface public boolean isFileTypeSupported(AudioFileFormat.Type fileType, AudioInputStream audioInputStream) { // $$fb 2000-08-16: finally this method works reliably ! return isFileTypeSupported(fileType) && (isAudioFormatSupportedImpl(audioInputStream.getFormat(), fileType) || findConvertableFormat(audioInputStream.getFormat(), fileType)!=null); // we may soft it up by including the possibility of endian/sign // changing for PCM formats. // I prefer to return false if the format is not exactly supported // but still exectute the write, if only sign/endian changing is necessary. } // implementing the interface public int write(AudioInputStream audioInputStream, AudioFileFormat.Type fileType, File file) throws IOException { if (TDebug.TraceAudioFileWriter) { TDebug.out(">TAudioFileWriter.write(.., File): called"); TDebug.out("class: "+getClass().getName()); } //$$fb added this check if (!isFileTypeSupported(fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("< file type is not supported"); } throw new IllegalArgumentException("file type is not supported."); } AudioFormat inputFormat = audioInputStream.getFormat(); if (TDebug.TraceAudioFileWriter) { TDebug.out("input format: " + inputFormat); } AudioFormat outputFormat = null; boolean bNeedsConversion = false; if (isAudioFormatSupportedImpl(inputFormat, fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("input format is supported directely"); } outputFormat = inputFormat; bNeedsConversion = false; } else { if (TDebug.TraceAudioFileWriter) { TDebug.out("input format is not supported directely; trying to find a convertable format"); } outputFormat = findConvertableFormat(inputFormat, fileType); if (outputFormat != null) { bNeedsConversion = true; // $$fb 2000-08-16 made consistent with new conversion trials // if 8 bit and only endianness changed, don't convert ! if (outputFormat.getSampleSizeInBits()==8 && outputFormat.getEncoding().equals(inputFormat.getEncoding())) { bNeedsConversion = false; } } else { if (TDebug.TraceAudioFileWriter) { TDebug.out("< input format is not supported and not convertable."); } throw new IllegalArgumentException("format not supported and not convertable"); } } long lLengthInBytes = AudioUtils.getLengthInBytes(audioInputStream); TDataOutputStream dataOutputStream = new TSeekableDataOutputStream(file); AudioOutputStream audioOutputStream = getAudioOutputStream( outputFormat, lLengthInBytes, fileType, dataOutputStream); int written=writeImpl(audioInputStream, audioOutputStream, bNeedsConversion); if (TDebug.TraceAudioFileWriter) { TDebug.out("< wrote "+written+" bytes."); } return written; } // implementing the interface public int write(AudioInputStream audioInputStream, AudioFileFormat.Type fileType, OutputStream outputStream) throws IOException { //$$fb added this check if (!isFileTypeSupported(fileType)) { throw new IllegalArgumentException("file type is not supported."); } if (TDebug.TraceAudioFileWriter) { TDebug.out(">TAudioFileWriter.write(.., OutputStream): called"); TDebug.out("class: "+getClass().getName()); } AudioFormat inputFormat = audioInputStream.getFormat(); if (TDebug.TraceAudioFileWriter) { TDebug.out("input format: " + inputFormat); } AudioFormat outputFormat = null; boolean bNeedsConversion = false; if (isAudioFormatSupportedImpl(inputFormat, fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("input format is supported directely"); } outputFormat = inputFormat; bNeedsConversion = false; } else { if (TDebug.TraceAudioFileWriter) { TDebug.out("input format is not supported directely; trying to find a convertable format"); } outputFormat = findConvertableFormat(inputFormat, fileType); if (outputFormat != null) { bNeedsConversion = true; // $$fb 2000-08-16 made consistent with new conversion trials // if 8 bit and only endianness changed, don't convert ! if (outputFormat.getSampleSizeInBits()==8 && outputFormat.getEncoding().equals(inputFormat.getEncoding())) { bNeedsConversion = false; } } else { if (TDebug.TraceAudioFileWriter) { TDebug.out("< format is not supported"); } throw new IllegalArgumentException("format not supported and not convertable"); } } long lLengthInBytes = AudioUtils.getLengthInBytes(audioInputStream); TDataOutputStream dataOutputStream = new TNonSeekableDataOutputStream(outputStream); AudioOutputStream audioOutputStream = getAudioOutputStream( outputFormat, lLengthInBytes, fileType, dataOutputStream); int written=writeImpl(audioInputStream, audioOutputStream, bNeedsConversion); if (TDebug.TraceAudioFileWriter) { TDebug.out("< wrote "+written+" bytes."); } return written; } protected int writeImpl( AudioInputStream audioInputStream, AudioOutputStream audioOutputStream, boolean bNeedsConversion) throws IOException { if (TDebug.TraceAudioFileWriter) { TDebug.out(">TAudioFileWriter.writeImpl(): called"); TDebug.out("class: "+getClass().getName()); } int nTotalWritten = 0; AudioFormat inputFormat = audioInputStream.getFormat(); AudioFormat outputFormat = audioOutputStream.getFormat(); // TODO: handle case when frame size is unknown ? int nBytesPerSample = outputFormat.getFrameSize() / outputFormat.getChannels(); //$$fb 2000-07-18: BUFFER_LENGTH must be a multiple of frame size... int nBufferSize=((int)BUFFER_LENGTH/outputFormat.getFrameSize())*outputFormat.getFrameSize(); byte[] abBuffer = new byte[nBufferSize]; while (true) { if (TDebug.TraceAudioFileWriter) { TDebug.out("trying to read (bytes): " + abBuffer.length); } int nBytesRead = audioInputStream.read(abBuffer); if (TDebug.TraceAudioFileWriter) { TDebug.out("read (bytes): " + nBytesRead); } if (nBytesRead == -1) { break; } if (bNeedsConversion) { TConversionTool.changeOrderOrSign(abBuffer, 0, nBytesRead, nBytesPerSample); } int nWritten = audioOutputStream.write(abBuffer, 0, nBytesRead); nTotalWritten += nWritten; } if (TDebug.TraceAudioFileWriter) { TDebug.out("AudioFormat can be handled. * In this simple implementation, it is only checked if the * passed AudioFormat matches one of the generally handled * formats (i.e. the fileType argument is ignored). If the * handled AudioFormats depend on the file type, this method * or getSupportedAudioFormats() (on which this method relies) * has to be overwritten by subclasses. *

* This is the central method for checking if a FORMAT is supported. * Inheriting classes can overwrite this for performance * or to exclude/include special type/format combinations. *

* This method is only called when the fileType * is in the list of supported file types ! Overriding * classes need not check this. */ //$$fb 2000-08-16 changed name, changed documentation. Semantics ! protected boolean isAudioFormatSupportedImpl( AudioFormat audioFormat, AudioFileFormat.Type fileType) { if (TDebug.TraceAudioFileWriter) { TDebug.out("> TAudioFileWriter.isAudioFormatSupportedImpl(): format to test: " + audioFormat); TDebug.out("class: "+getClass().getName()); } Iterator audioFormats = getSupportedAudioFormats(fileType); while (audioFormats.hasNext()) { AudioFormat handledFormat = (AudioFormat) audioFormats.next(); if (TDebug.TraceAudioFileWriter) { TDebug.out("matching against format : " + handledFormat); } if (AudioFormats.matches(handledFormat, audioFormat)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("<...succeeded."); } return true; } } if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... failed"); } return false; } protected abstract AudioOutputStream getAudioOutputStream( AudioFormat audioFormat, long lLengthInBytes, AudioFileFormat.Type fileType, TDataOutputStream dataOutputStream) throws IOException; private AudioFormat findConvertableFormat( AudioFormat inputFormat, AudioFileFormat.Type fileType) { if (TDebug.TraceAudioFileWriter) { TDebug.out("TAudioFileWriter.findConvertableFormat(): input format: " + inputFormat); } if (!isFileTypeSupported(fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("< input file type is not supported."); } return null; } AudioFormat.Encoding inputEncoding = inputFormat.getEncoding(); if ((inputEncoding.equals(PCM_SIGNED) || inputEncoding.equals(PCM_UNSIGNED)) && inputFormat.getSampleSizeInBits() == 8) { AudioFormat outputFormat = convertFormat(inputFormat, true, false); if (TDebug.TraceAudioFileWriter) { TDebug.out("trying output format: " + outputFormat); } if (isAudioFormatSupportedImpl(outputFormat, fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... succeeded"); } return outputFormat; } //$$fb 2000-08-16: added trial of other endianness for 8bit. We try harder ! outputFormat = convertFormat(inputFormat, false, true); if (TDebug.TraceAudioFileWriter) { TDebug.out("trying output format: " + outputFormat); } if (isAudioFormatSupportedImpl(outputFormat, fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... succeeded"); } return outputFormat; } outputFormat = convertFormat(inputFormat, true, true); if (TDebug.TraceAudioFileWriter) { TDebug.out("trying output format: " + outputFormat); } if (isAudioFormatSupportedImpl(outputFormat, fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... succeeded"); } return outputFormat; } if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... failed"); } return null; } else if (inputEncoding.equals(PCM_SIGNED) && (inputFormat.getSampleSizeInBits() == 16 || inputFormat.getSampleSizeInBits() == 24 || inputFormat.getSampleSizeInBits() == 32) ) { // TODO: possible to allow all sample sized > 8 bit? // $$ fb: don't think that this is necessary. Well, let's talk about that in 5 years :) AudioFormat outputFormat = convertFormat(inputFormat, false, true); if (TDebug.TraceAudioFileWriter) { TDebug.out("trying output format: " + outputFormat); } if (isAudioFormatSupportedImpl(outputFormat, fileType)) { if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... succeeded"); } return outputFormat; } else { if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... failed"); } return null; } } else { if (TDebug.TraceAudioFileWriter) { TDebug.out("< ... failed"); } return null; } } // $$fb 2000-08-16: added convenience method private AudioFormat convertFormat(AudioFormat format, boolean changeSign, boolean changeEndian) { AudioFormat.Encoding enc=PCM_SIGNED; if (format.getEncoding().equals(PCM_UNSIGNED)!=changeSign) { enc=PCM_UNSIGNED; } return new AudioFormat( enc, format.getSampleRate(), format.getSampleSizeInBits(), format.getChannels(), format.getFrameSize(), format.getFrameRate(), format.isBigEndian() ^ changeEndian); } } /*** TAudioFileWriter.java ***/ ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TAudioFileReader.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TAudioFileReader0000644000175000017500000003440211377161311030517 0ustar /* * TAudioFileReader.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * Copyright (c) 2001 by Florian Bomers * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled.file; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.DataInputStream; import java.io.InputStream; import java.io.IOException; import java.io.EOFException; import java.net.URL; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; import javax.sound.sampled.spi.AudioFileReader; import org.tritonus.share.TDebug; /** Base class for audio file readers. This is Tritonus' base class for classes that provide the facility of detecting an audio file type and reading its header. Classes should be derived from this class or one of its subclasses rather than from javax.sound.sampled.spi.AudioFileReader. @author Matthias Pfisterer @author Florian Bomers */ public abstract class TAudioFileReader extends AudioFileReader { private int m_nMarkLimit = -1; private boolean m_bRereading; protected TAudioFileReader(int nMarkLimit) { this(nMarkLimit, false); } protected TAudioFileReader(int nMarkLimit, boolean bRereading) { m_nMarkLimit = nMarkLimit; m_bRereading = bRereading; } private int getMarkLimit() { return m_nMarkLimit; } private boolean isRereading() { return m_bRereading; } /** Get an AudioFileFormat object for a File. This method calls getAudioFileFormat(InputStream, long). Subclasses should not override this method unless there are really severe reasons. Normally, it is sufficient to implement getAudioFileFormat(InputStream, long). @param file the file to read from. @return an AudioFileFormat instance containing information from the header of the file passed in. */ public AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioFileFormat(File): begin"); } long lFileLengthInBytes = file.length(); InputStream inputStream = new FileInputStream(file); AudioFileFormat audioFileFormat = null; try { audioFileFormat = getAudioFileFormat(inputStream, lFileLengthInBytes); } finally { inputStream.close(); } if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioFileFormat(File): end"); } return audioFileFormat; } /** Get an AudioFileFormat object for a URL. This method calls getAudioFileFormat(InputStream, long). Subclasses should not override this method unless there are really severe reasons. Normally, it is sufficient to implement getAudioFileFormat(InputStream, long). @param url the URL to read from. @return an AudioFileFormat instance containing information from the header of the URL passed in. */ public AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioFileFormat(URL): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; InputStream inputStream = url.openStream(); AudioFileFormat audioFileFormat = null; try { audioFileFormat = getAudioFileFormat(inputStream, lFileLengthInBytes); } finally { inputStream.close(); } if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioFileFormat(URL): end"); } return audioFileFormat; } /** Get an AudioFileFormat object for an InputStream. This method calls getAudioFileFormat(InputStream, long). Subclasses should not override this method unless there are really severe reasons. Normally, it is sufficient to implement getAudioFileFormat(InputStream, long). @param inputStream the stream to read from. @return an AudioFileFormat instance containing information from the header of the stream passed in. */ public AudioFileFormat getAudioFileFormat(InputStream inputStream) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioFileFormat(InputStream): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; inputStream.mark(getMarkLimit()); AudioFileFormat audioFileFormat = null; try { audioFileFormat = getAudioFileFormat(inputStream, lFileLengthInBytes); } finally { /* TODO: required semantics is unclear: should reset() be executed only when there is an exception or should it be done always? */ inputStream.reset(); } if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioFileFormat(InputStream): end"); } return audioFileFormat; } /** Get an AudioFileFormat (internal implementation). Subclasses must implement this method in a way specific to the file format they handle. Note that depending on the implementation of this method, you should or should not override getAudioInputStream(InputStream, long), too (see comment there). @param inputStream The InputStream to read from. @param lFileLengthInBytes The size of the originating file, if known. If it isn't known, AudioSystem.NOT_SPECIFIED should be passed. This value may be used for byteLength in AudioFileFormat, if this value can't be derived from the informmation in the file header. @return an AudioFileFormat instance containing information from the header of the stream passed in as inputStream. */ protected abstract AudioFileFormat getAudioFileFormat( InputStream inputStream, long lFileLengthInBytes) throws UnsupportedAudioFileException, IOException; /** Get an AudioInputStream object for a file. This method calls getAudioInputStream(InputStream, long). Subclasses should not override this method unless there are really severe reasons. Normally, it is sufficient to implement getAudioFileFormat(InputStream, long) and perhaps override getAudioInputStream(InputStream, long). @param file the File object to read from. @return an AudioInputStream instance containing the audio data from this file. */ public AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(File): begin"); } long lFileLengthInBytes = file.length(); InputStream inputStream = new FileInputStream(file); AudioInputStream audioInputStream = null; try { audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(File): end"); } return audioInputStream; } /** Get an AudioInputStream object for a URL. This method calls getAudioInputStream(InputStream, long). Subclasses should not override this method unless there are really severe reasons. Normally, it is sufficient to implement getAudioFileFormat(InputStream, long) and perhaps override getAudioInputStream(InputStream, long). @param url the URL to read from. @return an AudioInputStream instance containing the audio data from this URL. */ public AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(URL): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; InputStream inputStream = url.openStream(); AudioInputStream audioInputStream = null; try { audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(URL): end"); } return audioInputStream; } /** Get an AudioInputStream object for an InputStream. This method calls getAudioInputStream(InputStream, long). Subclasses should not override this method unless there are really severe reasons. Normally, it is sufficient to implement getAudioFileFormat(InputStream, long) and perhaps override getAudioInputStream(InputStream, long). @param inputStream the stream to read from. @return an AudioInputStream instance containing the audio data from this stream. */ public AudioInputStream getAudioInputStream(InputStream inputStream) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(InputStream): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; AudioInputStream audioInputStream = null; inputStream.mark(getMarkLimit()); try { audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes); } catch (UnsupportedAudioFileException e) { inputStream.reset(); throw e; } catch (IOException e) { inputStream.reset(); throw e; } if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(InputStream): end"); } return audioInputStream; } /** Get an AudioInputStream (internal implementation). This implementation calls getAudioFileFormat() with the same arguments as passed in here. Then, it constructs an AudioInputStream instance. This instance takes the passed inputStream in the state it is left after getAudioFileFormat() did its work. In other words, the implementation here assumes that getAudioFileFormat() reads the entire header up to a position exactely where the audio data starts. If this can't be realized for a certain format, this method should be overridden. @param inputStream The InputStream to read from. @param lFileLengthInBytes The size of the originating file, if known. If it isn't known, AudioSystem.NOT_SPECIFIED should be passed. This value may be used for byteLength in AudioFileFormat, if this value can't be derived from the informmation in the file header. */ protected AudioInputStream getAudioInputStream(InputStream inputStream, long lFileLengthInBytes) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(InputStream, long): begin"); } if (isRereading()) { inputStream = new BufferedInputStream(inputStream, getMarkLimit()); inputStream.mark(getMarkLimit()); } AudioFileFormat audioFileFormat = getAudioFileFormat(inputStream, lFileLengthInBytes); if (isRereading()) { inputStream.reset(); } AudioInputStream audioInputStream = new AudioInputStream(inputStream, audioFileFormat.getFormat(), audioFileFormat.getFrameLength()); if (TDebug.TraceAudioFileReader) {TDebug.out("TAudioFileReader.getAudioInputStream(InputStream, long): end"); } return audioInputStream; } protected static int calculateFrameSize(int nSampleSize, int nNumChannels) { return ((nSampleSize + 7) / 8) * nNumChannels; } public static int readLittleEndianInt(InputStream is) throws IOException { int b0 = is.read(); int b1 = is.read(); int b2 = is.read(); int b3 = is.read(); if ((b0 | b1 | b2 | b3) < 0) { throw new EOFException(); } return (b3 << 24) + (b2 << 16) + (b1 << 8) + (b0 << 0); } public static short readLittleEndianShort(InputStream is) throws IOException { int b0 = is.read(); int b1 = is.read(); if ((b0 | b1) < 0) { throw new EOFException(); } return (short) ((b1 << 8) + (b0 << 0)); } /* * C O N V E R T F R O M I E E E E X T E N D E D */ /* * Copyright (C) 1988-1991 Apple Computer, Inc. * All rights reserved. * * Machine-independent I/O routines for IEEE floating-point numbers. * * NaN's and infinities are converted to HUGE_VAL or HUGE, which * happens to be infinity on IEEE machines. Unfortunately, it is * impossible to preserve NaN's in a machine-independent way. * Infinities are, however, preserved on IEEE machines. * * These routines have been tested on the following machines: * Apple Macintosh, MPW 3.1 C compiler * Apple Macintosh, THINK C compiler * Silicon Graphics IRIS, MIPS compiler * Cray X/MP and Y/MP * Digital Equipment VAX * * * Implemented by Malcolm Slaney and Ken Turkowski. * * Malcolm Slaney contributions during 1988-1990 include big- and little- * endian file I/O, conversion to and from Motorola's extended 80-bit * floating-point format, and conversions to and from IEEE single- * precision floating-point format. * * In 1991, Ken Turkowski implemented the conversions to and from * IEEE double-precision format, added more precision to the extended * conversions, and accommodated conversions involving +/- infinity, * NaN's, and denormalized numbers. */ public static double readIeeeExtended(DataInputStream dis) throws IOException { double f = 0.0D; int expon = 0; long hiMant = 0L; long loMant = 0L; double HUGE = 3.4028234663852886E+038D; expon = dis.readUnsignedShort(); long t1 = dis.readUnsignedShort(); long t2 = dis.readUnsignedShort(); hiMant = t1 << 16 | t2; t1 = dis.readUnsignedShort(); t2 = dis.readUnsignedShort(); loMant = t1 << 16 | t2; if(expon == 0 && hiMant == 0L && loMant == 0L) { f = 0.0D; } else { if(expon == 32767) { f = HUGE; } else { expon -= 16383; expon -= 31; f = hiMant * Math.pow(2D, expon); expon -= 32; f += loMant * Math.pow(2D, expon); } } return f; } } /*** TAudioFileReader.java ***/ ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TDataOutputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TDataOutputStrea0000644000175000017500000000312511377161311030622 0ustar /* * TDataOutputStream.java */ /* * Copyright (c) 1999 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.DataOutput; import java.io.IOException; import java.io.InputStream; /** * Interface for the file writing classes. *

Like that it is possible to write to a file without knowing * the length before. * * @author Florian Bomers */ public interface TDataOutputStream extends DataOutput { public boolean supportsSeek(); public void seek(long position) throws IOException; public long getFilePointer() throws IOException; public long length() throws IOException; public void writeLittleEndian32(int value) throws IOException; public void writeLittleEndian16(short value) throws IOException; public void close() throws IOException; } /*** TDataOutputStream.java ***/ ././@LongLink0000000000000000000000000000016600000000000011570 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TNonSeekableDataOutputStream.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/TNonSeekableData0000644000175000017500000000442511377161311030515 0ustar /* * TNonSeekableDataOutputStream.java */ /* * Copyright (c) 1999 by Florian Bomers * Copyright (c) 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.sampled.file; import java.io.IOException; import java.io.OutputStream; import java.io.DataOutputStream; /** * A TDataOutputStream that does not allow seeking. * * @author Florian Bomers * @author Matthias Pfisterer */ public class TNonSeekableDataOutputStream extends DataOutputStream implements TDataOutputStream { public TNonSeekableDataOutputStream(OutputStream outputStream) { super(outputStream); } public boolean supportsSeek() { return false; } public void seek(long position) throws IOException { throw new IllegalArgumentException("TNonSeekableDataOutputStream: Call to seek not allowed."); } public long getFilePointer() throws IOException { throw new IllegalArgumentException("TNonSeekableDataOutputStream: Call to getFilePointer not allowed."); } public long length() throws IOException { throw new IllegalArgumentException("TNonSeekableDataOutputStream: Call to length not allowed."); } public void writeLittleEndian32(int value) throws IOException { writeByte(value & 0xFF); writeByte((value >> 8) & 0xFF); writeByte((value >> 16) & 0xFF); writeByte((value >> 24) & 0xFF); } public void writeLittleEndian16(short value) throws IOException { writeByte(value & 0xFF); writeByte((value >> 8) & 0xFF); } } /*** TNonSeekableDataOutputStream.java ***/ ././@LongLink0000000000000000000000000000016400000000000011566 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/THeaderlessAudioFileWriter.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/sampled/file/THeaderlessAudio0000644000175000017500000000470311377161311030575 0ustar /* * THeaderlessAudioFileWriter.java */ /* * Copyright (c) 2000 by Florian Bomers * Copyright (c) 2000 - 2002 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.sampled.file; import java.io.IOException; import java.util.Collection; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import org.tritonus.share.TDebug; /** Base class for formats without extra header. This AudioFileWriter is typically used for compressed formats where the encoder puts a header into the encoded stream. In this case, the AudioFileWriter needs not to add a header. This is why THeaderlessAudioOutputStream is used here. @author Florian Bomers @author Matthias Pfisterer */ public class THeaderlessAudioFileWriter extends TAudioFileWriter { protected THeaderlessAudioFileWriter(Collection fileTypes, Collection audioFormats) { super(fileTypes, audioFormats); if (TDebug.TraceAudioFileWriter) { TDebug.out("THeaderlessAudioFileWriter.(): begin"); } if (TDebug.TraceAudioFileWriter) { TDebug.out("THeaderlessAudioFileWriter.(): end"); } } protected AudioOutputStream getAudioOutputStream( AudioFormat audioFormat, long lLengthInBytes, AudioFileFormat.Type fileType, TDataOutputStream dataOutputStream) throws IOException { if (TDebug.TraceAudioFileWriter) { TDebug.out("THeaderlessAudioFileWriter.getAudioOutputStream(): begin"); } AudioOutputStream aos = new HeaderlessAudioOutputStream( audioFormat, lLengthInBytes, dataOutputStream); if (TDebug.TraceAudioFileWriter) { TDebug.out("THeaderlessAudioFileWriter.getAudioOutputStream(): end"); } return aos; } } /*** THeaderlessAudioFileWriter.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/TNotifier.java0000644000175000017500000000540211377161311025664 0ustar /* * TNotifier.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share; import java.util.EventObject; import java.util.Collection; import java.util.ArrayList; import java.util.List; import java.util.Iterator; public class TNotifier extends Thread { public static class NotifyEntry { private EventObject m_event; private List m_listeners; public NotifyEntry(EventObject event, Collection listeners) { m_event = event; m_listeners = new ArrayList(listeners); } public void deliver() { // TDebug.out("%% TNotifier.NotifyEntry.deliver(): called."); Iterator iterator = m_listeners.iterator(); while (iterator.hasNext()) { Object listener = iterator.next(); if (listener instanceof javax.sound.sampled.LineListener) { ((javax.sound.sampled.LineListener) listener).update((javax.sound.sampled.LineEvent) m_event); } else { // TODO: error message } } } } public static TNotifier notifier = null; static { notifier = new TNotifier(); notifier.setDaemon(true); notifier.start(); } /** The queue of events to deliver. * The entries are of class NotifyEntry. */ private List m_entries; public TNotifier() { super("Tritonus Notifier"); m_entries = new ArrayList(); } public void addEntry(EventObject event, Collection listeners) { // TDebug.out("%% TNotifier.addEntry(): called."); synchronized (m_entries) { m_entries.add(new NotifyEntry(event, listeners)); m_entries.notifyAll(); } // TDebug.out("%% TNotifier.addEntry(): completed."); } public void run() { while (true) { NotifyEntry entry = null; synchronized (m_entries) { while (m_entries.size() == 0) { try { m_entries.wait(); } catch (InterruptedException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } } } entry = (NotifyEntry) m_entries.remove(0); } entry.deliver(); } } } /*** TNotifier.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/StringHashedSet.java0000644000175000017500000000506711377161311027027 0ustar /* * StringHashedSet.java */ /* * Copyright (c) 2000 by Florian Bomers * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import org.tritonus.share.ArraySet; /** * A set where the elements are uniquely referenced by their * string representation as given by the objects toString() * method. No 2 objects with the same toString() can * be in the set. *

* The contains(Object elem) and get(Object elem) * methods can be called with Strings as elem parameter. * For get(Object elem), the object that has been added * is returned, and not its String representation. *

* Though it's possible to store * Strings as objects in this class, it doesn't make sense * as you could use ArraySet for that equally well. *

* You shouldn't use the ArrayList specific functions * like those that take index parameters. *

* It is not possible to add null elements. */ public class StringHashedSet extends ArraySet { public StringHashedSet() { super(); } public StringHashedSet(Collection c) { super(c); } public boolean add(Object elem) { if (elem==null) { return false; } return super.add(elem); } public boolean contains(Object elem) { if (elem==null) { return false; } String comp=elem.toString(); Iterator it=iterator(); while (it.hasNext()) { if (comp.equals(it.next().toString())) { return true; } } return false; } public Object get(Object elem) { if (elem==null) { return null; } String comp=elem.toString(); Iterator it=iterator(); while (it.hasNext()) { Object thisElem=it.next(); if (comp.equals(thisElem.toString())) { return thisElem; } } return null; } } /*** StringHashedSet.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/0000755000175000017500000000000011377161311024037 5ustar jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/TMidiDevice.java0000644000175000017500000002613111377161311027033 0ustar /* * TMidiDevice.java */ /* * Copyright (c) 1999, 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.midi; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MetaMessage; import javax.sound.midi.MidiDevice; import javax.sound.midi.MidiMessage; import javax.sound.midi.MidiUnavailableException; import javax.sound.midi.Receiver; import javax.sound.midi.Transmitter; import org.tritonus.share.TDebug; /** Base class for MidiDevice implementations. * The goal of this class is to supply the common functionality for * classes that implement the interface MidiDevice. */ public abstract class TMidiDevice implements MidiDevice { /** The Info object for a certain instance of MidiDevice. */ private MidiDevice.Info m_info; /** A flag to store whether the device is "open". */ private boolean m_bOpen; // TODO: rename to UseReceiver/UseTransmitter /** Whether to handle input from the physical port and to allow Transmitters. */ private boolean m_bUseIn; /** Whether to handle output to the physical port and to allow Receivers. */ private boolean m_bUseOut; /** The number of Receivers that refer to this MidiDevice. * This is currently only maintained for information purposes. * * @see #addReceiver * @see #removeReceiver */ private int m_nNumReceivers; /** The collection of Transmitter that refer to this MidiDevice. */ private List m_transmitters; /** Initialize this class. * This sets the info from the passed one, sets the open status * to false, the number of Receivers to zero and the collection * of Transmitters to be empty. * * @param info The info object that describes this instance. */ public TMidiDevice(MidiDevice.Info info) { this(info, true, true); } /** Initialize this class. * This sets the info from the passed one, sets the open status * to false, the number of Receivers to zero and the collection * of Transmitters to be empty. * * @param info The info object that describes this instance. */ public TMidiDevice(MidiDevice.Info info, boolean bUseIn, boolean bUseOut) { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.(): begin"); } m_info = info; m_bUseIn = bUseIn; m_bUseOut = bUseOut; m_bOpen = false; m_nNumReceivers = 0; m_transmitters = new ArrayList(); if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.(): end"); } } /** Retrieves a description of this instance. * This returns the info object passed to the constructor. * * @return the description * * @see #TMidiDevice */ public MidiDevice.Info getDeviceInfo() { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.getDeviceInfo(): begin"); } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.getDeviceInfo(): end"); } return m_info; } public void open() throws MidiUnavailableException { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.open(): begin"); } if (! isOpen()) { m_bOpen = true; openImpl(); } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.open(): end"); } } /** * Subclasses have to override this method to be notified of * opening. */ protected void openImpl() throws MidiUnavailableException { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.openImpl(): begin"); } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.openImpl(): end"); } } public void close() { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.close(): begin"); } if (isOpen()) { closeImpl(); // TODO: close all Receivers and Transmitters m_bOpen = false; } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.close(): end"); } } /** * Subclasses have to override this method to be notified of * closeing. */ protected void closeImpl() { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.closeImpl(): begin"); } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.closeImpl(): end"); } } public boolean isOpen() { return m_bOpen; } /** Returns whether to handle input. If this is true, retrieving Transmitters is possible and input from the physical port is passed to them. @see #getUseOut */ protected boolean getUseIn() { return m_bUseIn; } /** Returns whether to handle output. If this is true, retrieving Receivers is possible and output to them is passed to the physical port. @see #getUseIn */ protected boolean getUseOut() { return m_bUseOut; } /** Returns the device time in microseconds. This is a default implementation, telling the application program that the device doesn't track time. If a device wants to give timing information, it has to override this method. */ public long getMicrosecondPosition() { return -1; } public int getMaxReceivers() { int nMaxReceivers = 0; if (getUseOut()) { /* * The value -1 means unlimited. */ nMaxReceivers = -1; } return nMaxReceivers; } public int getMaxTransmitters() { int nMaxTransmitters = 0; if (getUseIn()) { /* * The value -1 means unlimited. */ nMaxTransmitters = -1; } return nMaxTransmitters; } /** Creates a new Receiver object associated with this instance. * In this implementation, an unlimited number of Receivers * per MidiDevice can be created. */ public Receiver getReceiver() throws MidiUnavailableException { if (! getUseOut()) { throw new MidiUnavailableException("Receivers are not supported by this device"); } return new TReceiver(); } /** Creates a new Transmitter object associated with this instance. * In this implementation, an unlimited number of Transmitters * per MidiDevice can be created. */ public Transmitter getTransmitter() throws MidiUnavailableException { if (! getUseIn()) { throw new MidiUnavailableException("Transmitters are not supported by this device"); } return new TTransmitter(); } /* * Intended for overriding by subclasses to receive messages. * This method is called by TMidiDevice.Receiver object on * receipt of a MidiMessage. */ protected void receive(MidiMessage message, long lTimeStamp) { if (TDebug.TraceMidiDevice) { TDebug.out("### [should be overridden] TMidiDevice.receive(): message " + message); } } private void addReceiver() { m_nNumReceivers++; } private void removeReceiver() { m_nNumReceivers--; } private void addTransmitter(Transmitter transmitter) { synchronized (m_transmitters) { m_transmitters.add(transmitter); } } private void removeTransmitter(Transmitter transmitter) { synchronized (m_transmitters) { m_transmitters.remove(transmitter); } } /** Send a MidiMessage to all Transmitters. * This method should be called by subclasses when they get a * message from a physical MIDI port. */ protected void sendImpl(MidiMessage message, long lTimeStamp) { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.sendImpl(): begin"); } Iterator transmitters = m_transmitters.iterator(); while (transmitters.hasNext()) { TTransmitter transmitter = (TTransmitter) transmitters.next(); /* due to a bug in the Sun jdk1.3, we cannot use clone() for MetaMessages. So we have to do the equivalent ourselves. */ // MidiMessage copiedMessage = (MidiMessage) message.clone(); MidiMessage copiedMessage = null; if (message instanceof MetaMessage) { MetaMessage origMessage = (MetaMessage) message; MetaMessage metaMessage = new MetaMessage(); try { metaMessage.setMessage(origMessage.getType(), origMessage.getData(), origMessage.getData().length); } catch (InvalidMidiDataException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } } copiedMessage = metaMessage; } else { copiedMessage = (MidiMessage) message.clone(); } if (message instanceof MetaMessage) { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.sendImpl(): MetaMessage.getData().length (original): " + ((MetaMessage) message).getData().length); } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.sendImpl(): MetaMessage.getData().length (cloned): " + ((MetaMessage) copiedMessage).getData().length); } } transmitter.send(copiedMessage, lTimeStamp); } if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.sendImpl(): end"); } } /////////////////// INNER CLASSES ////////////////////////////////////// /** Receiver proxy class. * This class' objects are handed out on calls to * TMidiDevice.getReceiver(). */ public class TReceiver implements Receiver { private boolean m_bOpen; public TReceiver() { TMidiDevice.this.addReceiver(); m_bOpen = true; } protected boolean isOpen() { return m_bOpen; } /** Receive a MidiMessage. * */ public void send(MidiMessage message, long lTimeStamp) { if (TDebug.TraceMidiDevice) { TDebug.out("TMidiDevice.TReceiver.send(): message " + message); } if (m_bOpen) { TMidiDevice.this.receive(message, lTimeStamp); } else { throw new IllegalStateException("receiver is not open"); } } /** Closes the receiver. * After a receiver has been closed, it does no longer * propagate MidiMessages to its associated MidiDevice. */ public void close() { TMidiDevice.this.removeReceiver(); m_bOpen = false; } } public class TTransmitter implements Transmitter { private Receiver m_receiver; public TTransmitter() { TMidiDevice.this.addTransmitter(this); } public void setReceiver(Receiver receiver) { synchronized (this) { m_receiver = receiver; } } public Receiver getReceiver() { return m_receiver; } public void send(MidiMessage message, long lTimeStamp) { if (getReceiver() != null) { getReceiver().send(message, lTimeStamp); } } /** Closes the transmitter. * After a transmitter has been closed, it no longer * passes MidiMessages to a Receiver previously set for * it. */ public void close() { TMidiDevice.this.removeTransmitter(this); synchronized (this) { m_receiver = null; } } } /* * This is needed only because MidiDevice.Info's * constructor is protected (in the Sun jdk1.3). */ public static class Info extends MidiDevice.Info { public Info(String a, String b, String c, String d) { super(a, b, c, d); } } } /*** TMidiDevice.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/MidiUtils.java0000644000175000017500000000521011377161311026603 0ustar /* * MidiUtils.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.midi; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import org.tritonus.share.TDebug; /** Helper methods for reading and writing MIDI files. */ public class MidiUtils { public static int getUnsignedInteger(byte b) { return (b < 0) ? (int) b + 256 : b; } public static int get14bitValue(int nLSB, int nMSB) { return (nLSB & 0x7F) | ((nMSB & 0x7F) << 7); } public static int get14bitMSB(int nValue) { return (nValue >> 7) & 0x7F; } public static int get14bitLSB(int nValue) { return nValue & 0x7F; } public static byte[] getVariableLengthQuantity(long lValue) { ByteArrayOutputStream data = new ByteArrayOutputStream(); try { writeVariableLengthQuantity(lValue, data); } catch (IOException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } } return data.toByteArray(); } public static int writeVariableLengthQuantity(long lValue, OutputStream outputStream) throws IOException { int nLength = 0; // IDEA: use a loop boolean bWritingStarted = false; int nByte = (int) ((lValue >> 21) & 0x7f); if (nByte != 0) { if (outputStream != null) { outputStream.write(nByte | 0x80); } nLength++; bWritingStarted = true; } nByte = (int) ((lValue >> 14) & 0x7f); if (nByte != 0 || bWritingStarted) { if (outputStream != null) { outputStream.write(nByte | 0x80); } nLength++; bWritingStarted = true; } nByte = (int) ((lValue >> 7) & 0x7f); if (nByte != 0 || bWritingStarted) { if (outputStream != null) { outputStream.write(nByte | 0x80); } nLength++; } nByte = (int) (lValue & 0x7f); if (outputStream != null) { outputStream.write(nByte); } nLength++; return nLength; } } /*** MidiUtils.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/TSequencer.java0000644000175000017500000004716311377161311026773 0ustar /* * TSequencer.java */ /* * Copyright (c) 1999 - 2003 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.midi; import java.io.InputStream; import java.io.IOException; import java.util.BitSet; import java.util.Collection; import java.util.Iterator; import java.util.Set; import javax.sound.midi.MidiSystem; import javax.sound.midi.Sequencer; import javax.sound.midi.Sequence; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MetaMessage; import javax.sound.midi.MetaEventListener; import javax.sound.midi.MidiMessage; import javax.sound.midi.ShortMessage; import javax.sound.midi.ControllerEventListener; import javax.sound.midi.MidiDevice; import org.tritonus.share.TDebug; import org.tritonus.share.ArraySet; public abstract class TSequencer extends TMidiDevice implements Sequencer { private static final float MPQ_BPM_FACTOR = 6.0E7F; // This is for use in Collection.toArray(Object[]). private static final SyncMode[] EMPTY_SYNCMODE_ARRAY = new SyncMode[0]; private boolean m_bRunning; /** The Sequence to play or to record to. */ private Sequence m_sequence; /** The listeners that want to be notified of MetaMessages. */ private Set m_metaListeners; /** The listeners that want to be notified of control change events. * They are organized as follows: this array is indexed with * the number of the controller change events listeners are * interested in. If there is any interest, the array element * contains a reference to a Set containing the listeners. * These sets are allocated on demand. */ private Set[] m_aControllerListeners; private float m_fNominalTempoInMPQ; private float m_fTempoFactor; private Collection m_masterSyncModes; private Collection m_slaveSyncModes; private SyncMode m_masterSyncMode; private SyncMode m_slaveSyncMode; private BitSet m_muteBitSet; private BitSet m_soloBitSet; /** Contains the enabled state of the tracks. This BitSet holds the pre-calculated effect of mute and solo status. */ private BitSet m_enabledBitSet; protected TSequencer(MidiDevice.Info info, Collection masterSyncModes, Collection slaveSyncModes) { super(info); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.(): begin"); } m_bRunning = false; m_sequence = null; m_metaListeners = new ArraySet(); m_aControllerListeners = new Set[128]; setTempoInMPQ(500000); setTempoFactor(1.0F); m_masterSyncModes = masterSyncModes; m_slaveSyncModes = slaveSyncModes; if (getMasterSyncModes().length > 0) { m_masterSyncMode = getMasterSyncModes()[0]; } if (getSlaveSyncModes().length > 0) { m_slaveSyncMode = getSlaveSyncModes()[0]; } m_muteBitSet = new BitSet(); m_soloBitSet = new BitSet(); m_enabledBitSet = new BitSet(); updateEnabled(); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.(): end"); } } public void setSequence(Sequence sequence) throws InvalidMidiDataException { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSequence(Sequence): begin"); } // TODO: what if playing is in progress? m_sequence = sequence; // yes, this is required by the specification setTempoFactor(1.0F); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSequence(Sequence): end"); } } public void setSequence(InputStream inputStream) throws InvalidMidiDataException, IOException { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSequence(InputStream): begin"); } Sequence sequence = MidiSystem.getSequence(inputStream); setSequence(sequence); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSequence(InputStream): end"); } } public Sequence getSequence() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getSequence(): begin"); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getSequence(): end"); } return m_sequence; } public synchronized void start() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.start(): begin"); } checkOpen(); if (! isRunning()) { m_bRunning = true; // TODO: perhaps check if sequence present startImpl(); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.start(): end"); } } /** * Subclasses have to override this method to be notified of * starting. */ protected void startImpl() { if (TDebug.TraceMidiDevice) { TDebug.out("TSequencer.startImpl(): begin"); } if (TDebug.TraceMidiDevice) { TDebug.out("TSequencer.startImpl(): end"); } } public synchronized void stop() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.stop(): begin"); } checkOpen(); if (isRunning()) { stopImpl(); m_bRunning = false; } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.stop(): end"); } } /** * Subclasses have to override this method to be notified of * stopping. */ protected void stopImpl() { if (TDebug.TraceMidiDevice) { TDebug.out("TSequencer.stopImpl(): begin"); } if (TDebug.TraceMidiDevice) { TDebug.out("TSequencer.stopImpl(): end"); } } public synchronized boolean isRunning() { return m_bRunning; } /** Checks if the Sequencer is open. This method is intended to be called by {@link javax.sound.midi.Sequencer#start start}, {@link javax.sound.midi.Sequencer#stop stop}, {@link javax.sound.midi.Sequencer#startRecording startRecording} and {@link javax.sound.midi.Sequencer#stop stopRecording}. @throws IllegalStateException if the Sequencer is not open */ protected void checkOpen() { if (! isOpen()) { throw new IllegalStateException("Sequencer is not open"); } } /** Returns the resolution (ticks per quarter) of the current sequence. If no sequence is set, a bogus default value != 0 is returned. */ protected int getResolution() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getResolution(): begin"); } Sequence sequence = getSequence(); int nResolution; if (sequence != null) { nResolution = sequence.getResolution(); } else { nResolution = 1; } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getResolution(): end"); } return nResolution; } protected void setRealTempo() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setRealTempo(): begin"); } float fRealTempo = getTempoInMPQ() / getTempoFactor(); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setRealTempo(): real tempo: " + fRealTempo); } setTempoImpl(fRealTempo); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setRealTempo(): end"); } } public float getTempoInBPM() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTempoInBPM(): begin"); } float fBPM = MPQ_BPM_FACTOR / getTempoInMPQ(); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTempoInBPM(): end"); } return fBPM; } public void setTempoInBPM(float fBPM) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setTempoInBPM(): begin"); } float fMPQ = MPQ_BPM_FACTOR / fBPM; setTempoInMPQ(fMPQ); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setTempoInBPM(): end"); } } public float getTempoInMPQ() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTempoInMPQ(): begin"); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTempoInMPQ(): end"); } return m_fNominalTempoInMPQ; } /** Sets the tempo. Implementation classes are required to call this method for changing the tempo in reaction to a tempo change event. */ public void setTempoInMPQ(float fMPQ) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setTempoInMPQ(): begin"); } m_fNominalTempoInMPQ = fMPQ; setRealTempo(); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setTempoInMPQ(): end"); } } public void setTempoFactor(float fFactor) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setTempoFactor(): begin"); } m_fTempoFactor = fFactor; setRealTempo(); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setTempoFactor(): end"); } } public float getTempoFactor() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTempoFactor(): begin"); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTempoFactor(): end"); } return m_fTempoFactor; } /** Change the tempo of the native sequencer part. * This method has to be defined by subclasses according * to the native facilities they use for sequenceing. * The implementation should not take into account the * tempo factor. This is handled elsewhere. */ protected abstract void setTempoImpl(float fMPQ); // NOTE: has to be redefined if recording is done natively public long getTickLength() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTickLength(): begin"); } long lLength = 0; if (getSequence() != null) { lLength = getSequence().getTickLength(); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getTickLength(): end"); } return lLength; } // NOTE: has to be redefined if recording is done natively public long getMicrosecondLength() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getMicrosecondLength(): begin"); } long lLength = 0; if (getSequence() != null) { lLength = getSequence().getMicrosecondLength(); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getMicrosecondLength(): end"); } return lLength; } public boolean addMetaEventListener(MetaEventListener listener) { synchronized (m_metaListeners) { return m_metaListeners.add(listener); } } public void removeMetaEventListener(MetaEventListener listener) { synchronized (m_metaListeners) { m_metaListeners.remove(listener); } } protected Iterator getMetaEventListeners() { synchronized (m_metaListeners) { return m_metaListeners.iterator(); } } protected void sendMetaMessage(MetaMessage message) { Iterator iterator = getMetaEventListeners(); while (iterator.hasNext()) { MetaEventListener metaEventListener = (MetaEventListener) iterator.next(); MetaMessage copiedMessage = (MetaMessage) message.clone(); metaEventListener.meta(copiedMessage); } } public int[] addControllerEventListener(ControllerEventListener listener, int[] anControllers) { synchronized (m_aControllerListeners) { if (anControllers == null) { /* * Add to all controllers. NOTE: this * is an implementation-specific * semantic! */ for (int i = 0; i < 128; i++) { addControllerListener(i, listener); } } else { for (int i = 0; i < anControllers.length; i++) { addControllerListener(anControllers[i], listener); } } } return getListenedControllers(listener); } private void addControllerListener(int i, ControllerEventListener listener) { if (m_aControllerListeners[i] == null) { m_aControllerListeners[i] = new ArraySet(); } m_aControllerListeners[i].add(listener); } public int[] removeControllerEventListener(ControllerEventListener listener, int[] anControllers) { synchronized (m_aControllerListeners) { if (anControllers == null) { /* * Remove from all controllers. Unlike * above, this is specified semantics. */ for (int i = 0; i < 128; i++) { removeControllerListener(i, listener); } } else { for (int i = 0; i < anControllers.length; i++) { removeControllerListener(anControllers[i], listener); } } } return getListenedControllers(listener); } private void removeControllerListener(int i, ControllerEventListener listener) { if (m_aControllerListeners[i] != null) { m_aControllerListeners[i].add(listener); } } private int[] getListenedControllers(ControllerEventListener listener) { int[] anControllers = new int[128]; int nIndex = 0; // points to the next position to use. for (int nController = 0; nController < 128; nController++) { if (m_aControllerListeners[nController] != null && m_aControllerListeners[nController].contains(listener)) { anControllers[nIndex] = nController; nIndex++; } } int[] anResultControllers = new int[nIndex]; System.arraycopy(anControllers, 0, anResultControllers, 0, nIndex); return anResultControllers; } protected void sendControllerEvent(ShortMessage message) { // TDebug.out("TSequencer.sendControllerEvent(): called"); int nController = message.getData1(); if (m_aControllerListeners[nController] != null) { Iterator iterator = m_aControllerListeners[nController].iterator(); while (iterator.hasNext()) { ControllerEventListener controllerEventListener = (ControllerEventListener) iterator.next(); ShortMessage copiedMessage = (ShortMessage) message.clone(); controllerEventListener.controlChange(copiedMessage); } } } protected void notifyListeners(MidiMessage message) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.sendToListeners(): begin"); } if (message instanceof MetaMessage) { // IDEA: use extra thread for event delivery sendMetaMessage((MetaMessage) message); } else if (message instanceof ShortMessage && ((ShortMessage) message).getCommand() == ShortMessage.CONTROL_CHANGE) { sendControllerEvent((ShortMessage) message); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.sendToListeners(): end"); } } public SyncMode getMasterSyncMode() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getMasterSyncMode(): begin"); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getMasterSyncMode(): end"); } return m_masterSyncMode; } public void setMasterSyncMode(SyncMode syncMode) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setMasterSyncMode(): begin"); } if (m_masterSyncModes.contains(syncMode)) { if (! getMasterSyncMode().equals(syncMode)) { m_masterSyncMode = syncMode; setMasterSyncModeImpl(syncMode); } } else { throw new IllegalArgumentException("sync mode not allowed: " + syncMode); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setMasterSyncMode(): end"); } } /* This method is guaranteed only to be called if the sync mode really changes. */ protected void setMasterSyncModeImpl(SyncMode syncMode) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setMasterSyncModeImpl(): begin"); } // DO NOTHING if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setMasterSyncModeImpl(): end"); } } public SyncMode[] getMasterSyncModes() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getMasterSyncModes(): begin"); } SyncMode[] syncModes = (SyncMode[]) m_masterSyncModes.toArray(EMPTY_SYNCMODE_ARRAY); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getMasterSyncModes(): end"); } return syncModes; } public SyncMode getSlaveSyncMode() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getSlaveSyncMode(): begin"); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getSlaveSyncMode(): end"); } return m_slaveSyncMode; } public void setSlaveSyncMode(SyncMode syncMode) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSlaveSyncMode(): begin"); } if (m_slaveSyncModes.contains(syncMode)) { if (! getSlaveSyncMode().equals(syncMode)) { m_slaveSyncMode = syncMode; setSlaveSyncModeImpl(syncMode); } } else { throw new IllegalArgumentException("sync mode not allowed: " + syncMode); } if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSlaveSyncMode(): end"); } } /* This method is guaranteed only to be called if the sync mode really changes. */ protected void setSlaveSyncModeImpl(SyncMode syncMode) { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSlaveSyncModeImpl(): begin"); } // DO NOTHING if (TDebug.TraceSequencer) { TDebug.out("TSequencer.setSlaveSyncModeImpl(): end"); } } public SyncMode[] getSlaveSyncModes() { if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getSlaveSyncModes(): begin"); } SyncMode[] syncModes = (SyncMode[]) m_slaveSyncModes.toArray(EMPTY_SYNCMODE_ARRAY); if (TDebug.TraceSequencer) { TDebug.out("TSequencer.getSlaveSyncModes(): end"); } return syncModes; } public boolean getTrackSolo(int nTrack) { boolean bSoloed = false; if (getSequence() != null) { if (nTrack < getSequence().getTracks().length) { bSoloed = m_soloBitSet.get(nTrack); } } return bSoloed; } public void setTrackSolo(int nTrack, boolean bSolo) { if (getSequence() != null) { if (nTrack < getSequence().getTracks().length) { boolean bOldState = m_soloBitSet.get(nTrack); if (bSolo != bOldState) { if (bSolo) { m_soloBitSet.set(nTrack); } else { m_soloBitSet.clear(nTrack); } updateEnabled(); setTrackSoloImpl(nTrack, bSolo); } } } } protected void setTrackSoloImpl(int nTrack, boolean bSolo) { } public boolean getTrackMute(int nTrack) { boolean bMuted = false; if (getSequence() != null) { if (nTrack < getSequence().getTracks().length) { bMuted = m_muteBitSet.get(nTrack); } } return bMuted; } public void setTrackMute(int nTrack, boolean bMute) { if (getSequence() != null) { if (nTrack < getSequence().getTracks().length) { boolean bOldState = m_muteBitSet.get(nTrack); if (bMute != bOldState) { if (bMute) { m_muteBitSet.set(nTrack); } else { m_muteBitSet.clear(nTrack); } updateEnabled(); setTrackMuteImpl(nTrack, bMute); } } } } protected void setTrackMuteImpl(int nTrack, boolean bMute) { } private void updateEnabled() { BitSet oldEnabledBitSet = (BitSet) m_enabledBitSet.clone(); boolean bSoloExists = m_soloBitSet.length() > 0; if (bSoloExists) { m_enabledBitSet = (BitSet) m_soloBitSet.clone(); } else { for (int i = 0; i < m_muteBitSet.size(); i++) { if (m_muteBitSet.get(i)) { m_enabledBitSet.clear(i); } else { m_enabledBitSet.set(i); } } } oldEnabledBitSet.xor(m_enabledBitSet); /* oldEnabledBitSet now has a bit set if the status for this bit changed. */ for (int i = 0; i < oldEnabledBitSet.size(); i++) { if (oldEnabledBitSet.get(i)) { setTrackEnabledImpl(i, m_enabledBitSet.get(i)); } } } /** Shows that a track state has changed. This method is called for each track where the enabled state (calculated from mute and solo) has changed. The boolean value passed represents the new state. @param nTrack The track number for which the enabled status has changed. @param bEnabled The new enabled state for this track. */ protected void setTrackEnabledImpl(int nTrack, boolean bEnabled) { } protected boolean isTrackEnabled(int nTrack) { return m_enabledBitSet.get(nTrack); } /** Sets the preloading intervall. This is the time span between preloading events to an internal queue and playing them. This intervall should be kept constant by the implementation. However, this cannot be guaranteed. */ public void setLatency(int nMilliseconds) { } /** Get the preloading intervall. @return the preloading intervall in milliseconds, or -1 if the sequencer doesn't repond to changes in the Sequence at all. */ public int getLatency() { return -1; } } /*** TSequencer.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/TMidiFileFormat.java0000644000175000017500000000323411377161311027663 0ustar /* * TMidiFileFormat.java */ /* * Copyright (c) 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share.midi; import javax.sound.midi.MidiFileFormat; /** A MidiFileFormat that has information about the number of tracks. * This class is used by org.tritonus.midi.file.StandardMidiFileReader. * Its purpose is to carry the number of tracks from * getMidiFileFormat() to getSequence(). */ public class TMidiFileFormat extends MidiFileFormat { private int m_nTrackCount; public TMidiFileFormat(int nType, float fDivisionType, int nResolution, int nByteLength, long lMicrosecondLength, int nTrackCount) { super(nType, fDivisionType, nResolution, nByteLength, lMicrosecondLength); m_nTrackCount = nTrackCount; } public int getTrackCount() { return m_nTrackCount; } } /*** TMidiFileFormat.java ***/ ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/TPreloadingSequencer.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/midi/TPreloadingSequencer.jav0000644000175000017500000001011111377161311030616 0ustar /* * TPreloadingSequencer.java */ /* * Copyright (c) 2003 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share.midi; import java.io.InputStream; import java.io.IOException; import java.util.BitSet; import java.util.Collection; import java.util.Iterator; import java.util.Set; import javax.sound.midi.MidiSystem; import javax.sound.midi.Sequencer; import javax.sound.midi.Sequence; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MetaMessage; import javax.sound.midi.MetaEventListener; import javax.sound.midi.MidiMessage; import javax.sound.midi.ShortMessage; import javax.sound.midi.ControllerEventListener; import javax.sound.midi.MidiDevice; import org.tritonus.share.TDebug; import org.tritonus.share.ArraySet; /** Base class for sequencers that work with an internal queue. To be more precise, this is the base class for sequencers that do not load the complete Sequence to internal data structures before start, but take single events from the Sequence and put them to the sequencing queue while running. */ public abstract class TPreloadingSequencer extends TSequencer { /** The default value for {@link m_nLatency}. This default value is set in the constructor. */ private static final int DEFAULT_LATENCY = 100; /** */ private int m_nLatency; private Thread m_loaderThread; /** Sets the latency to the default value. */ protected TPreloadingSequencer(MidiDevice.Info info, Collection masterSyncModes, Collection slaveSyncModes) { super(info, masterSyncModes, slaveSyncModes); if (TDebug.TraceSequencer) { TDebug.out("TPreloadingSequencer.(): begin"); } m_nLatency = DEFAULT_LATENCY; if (TDebug.TraceSequencer) { TDebug.out("TPreloadingSequencer.(): end"); } } /** Sets the preloading intervall. This is the time span between preloading events to an internal queue and playing them. This intervall should be kept constant by the implementation. However, this cannot be guaranteed. */ public void setLatency(int nLatency) { // TODO: preload if latency becomes shorter m_nLatency = nLatency; } /** Get the preloading intervall. @return the preloading intervall in milliseconds, or -1 if the sequencer doesn't repond to changes in the Sequence at all. */ public int getLatency() { return m_nLatency; } // currently not called by subclasses. order has to be assured (subclass first) protected void openImpl() { if (TDebug.TraceSequencer) { TDebug.out("AlsaSequencer.openImpl(): begin"); } // m_loaderThread = new LoaderThread(); // m_loaderThread.start(); } /** Put a message into the queue. This is Claus-Dieter's special method: it puts the message to the ALSA queue for delivery at the specified time. The time has to be given in ticks according to the resolution of the currently active Sequence. For this method to work, the Sequencer has to be started. The message is delivered the same way as messages from a Sequence, i.e. to all registered Transmitters. If the current queue position (as returned by getTickPosition()) is already behind the desired schedule time, the message is ignored. @param message the MidiMessage to put into the queue. @param lTick the desired schedule time in ticks. */ public abstract void sendMessageTick(MidiMessage message, long lTick); } /*** TPreloadingSequencer.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/TSettings.java0000644000175000017500000000343011377161311025704 0ustar /* * TSettings.java */ /* * Copyright (c) 1999 - 2001 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share; import java.io.PrintStream; import java.util.StringTokenizer; import java.security.AccessControlException; import org.tritonus.share.TDebug; public class TSettings { public static boolean SHOW_ACCESS_CONTROL_EXCEPTIONS = false; private static final String PROPERTY_PREFIX = "tritonus."; public static boolean AlsaUsePlughw = getBooleanProperty("AlsaUsePlughw"); private static boolean getBooleanProperty(String strName) { String strPropertyName = PROPERTY_PREFIX + strName; String strValue = "false"; try { strValue = System.getProperty(strPropertyName, "false"); } catch (AccessControlException e) { if (SHOW_ACCESS_CONTROL_EXCEPTIONS) { TDebug.out(e); } } // TDebug.out("property: " + strPropertyName + "=" + strValue); boolean bValue = strValue.toLowerCase().equals("true"); // TDebug.out("bValue: " + bValue); return bValue; } } /*** TSettings.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/GlobalInfo.java0000644000175000017500000000234511377161311026000 0ustar /* * GlobalInfo.java */ /* * Copyright (c) 2000 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share; import org.tritonus.share.TDebug; public class GlobalInfo { private static final String VENDOR = "Tritonus is free software. See http://www.tritonus.org/"; private static final String VERSION = "0.3.1"; public static String getVendor() { return VENDOR; } public static String getVersion() { return VERSION; } } /*** GlobalInfo.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/TDebug.java0000644000175000017500000001507511377161311025142 0ustar /* * TDebug.java */ /* * Copyright (c) 1999 - 2002 by Matthias Pfisterer * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.tritonus.share; import java.io.PrintStream; import java.util.StringTokenizer; import java.security.AccessControlException; public class TDebug { public static boolean SHOW_ACCESS_CONTROL_EXCEPTIONS = false; private static final String PROPERTY_PREFIX = "tritonus."; // The stream we output to public static PrintStream m_printStream = System.out; private static String indent=""; // meta-general public static boolean TraceAllExceptions = getBooleanProperty("TraceAllExceptions"); public static boolean TraceAllWarnings = getBooleanProperty("TraceAllWarnings"); // general public static boolean TraceInit = getBooleanProperty("TraceInit"); public static boolean TraceCircularBuffer = getBooleanProperty("TraceCircularBuffer"); public static boolean TraceService = getBooleanProperty("TraceService"); // sampled common implementation public static boolean TraceAudioSystem = getBooleanProperty("TraceAudioSystem"); public static boolean TraceAudioConfig = getBooleanProperty("TraceAudioConfig"); public static boolean TraceAudioInputStream = getBooleanProperty("TraceAudioInputStream"); public static boolean TraceMixerProvider = getBooleanProperty("TraceMixerProvider"); public static boolean TraceControl = getBooleanProperty("TraceControl"); public static boolean TraceLine = getBooleanProperty("TraceLine"); public static boolean TraceDataLine = getBooleanProperty("TraceDataLine"); public static boolean TraceMixer = getBooleanProperty("TraceMixer"); public static boolean TraceSourceDataLine = getBooleanProperty("TraceSourceDataLine"); public static boolean TraceTargetDataLine = getBooleanProperty("TraceTargetDataLine"); public static boolean TraceClip = getBooleanProperty("TraceClip"); public static boolean TraceAudioFileReader = getBooleanProperty("TraceAudioFileReader"); public static boolean TraceAudioFileWriter = getBooleanProperty("TraceAudioFileWriter"); public static boolean TraceAudioConverter = getBooleanProperty("TraceAudioConverter"); public static boolean TraceAudioOutputStream = getBooleanProperty("TraceAudioOutputStream"); // sampled specific implementation public static boolean TraceEsdNative = getBooleanProperty("TraceEsdNative"); public static boolean TraceEsdStreamNative = getBooleanProperty("TraceEsdStreamNative"); public static boolean TraceEsdRecordingStreamNative = getBooleanProperty("TraceEsdRecordingStreamNative"); public static boolean TraceAlsaNative = getBooleanProperty("TraceAlsaNative"); public static boolean TraceAlsaMixerNative = getBooleanProperty("TraceAlsaMixerNative"); public static boolean TraceAlsaPcmNative = getBooleanProperty("TraceAlsaPcmNative"); public static boolean TraceMixingAudioInputStream = getBooleanProperty("TraceMixingAudioInputStream"); public static boolean TraceOggNative = getBooleanProperty("TraceOggNative"); public static boolean TraceVorbisNative = getBooleanProperty("TraceVorbisNative"); // midi common implementation public static boolean TraceMidiSystem = getBooleanProperty("TraceMidiSystem"); public static boolean TraceMidiConfig = getBooleanProperty("TraceMidiConfig"); public static boolean TraceMidiDeviceProvider = getBooleanProperty("TraceMidiDeviceProvider"); public static boolean TraceSequencer = getBooleanProperty("TraceSequencer"); public static boolean TraceMidiDevice = getBooleanProperty("TraceMidiDevice"); // midi specific implementation public static boolean TraceAlsaSeq = getBooleanProperty("TraceAlsaSeq"); public static boolean TraceAlsaSeqDetails = getBooleanProperty("TraceAlsaSeqDetails"); public static boolean TraceAlsaSeqNative = getBooleanProperty("TraceAlsaSeqNative"); public static boolean TracePortScan = getBooleanProperty("TracePortScan"); public static boolean TraceAlsaMidiIn = getBooleanProperty("TraceAlsaMidiIn"); public static boolean TraceAlsaMidiOut = getBooleanProperty("TraceAlsaMidiOut"); public static boolean TraceAlsaMidiChannel = getBooleanProperty("TraceAlsaMidiChannel"); // misc public static boolean TraceAlsaCtlNative = getBooleanProperty("TraceAlsaCtlNative"); public static boolean TraceCdda = getBooleanProperty("TraceCdda"); public static boolean TraceCddaNative = getBooleanProperty("TraceCddaNative"); // make this method configurable to write to file, write to stderr,... public static void out(String strMessage) { if (strMessage.length()>0 && strMessage.charAt(0)=='<') { if (indent.length()>2) { indent=indent.substring(2); } else { indent=""; } } String newMsg=null; if (indent!="" && strMessage.indexOf("\n")>=0) { newMsg=""; StringTokenizer tokenizer=new StringTokenizer(strMessage, "\n"); while (tokenizer.hasMoreTokens()) { newMsg+=indent+tokenizer.nextToken()+"\n"; } } else { newMsg=indent+strMessage; } m_printStream.println(newMsg); if (strMessage.length()>0 && strMessage.charAt(0)=='>') { indent+=" "; } } public static void out(Throwable throwable) { throwable.printStackTrace(m_printStream); } public static void assertion(boolean bAssertion) { if (!bAssertion) { throw new AssertException(); } } public static class AssertException extends RuntimeException { public AssertException() { } public AssertException(String sMessage) { super(sMessage); } } private static boolean getBooleanProperty(String strName) { String strPropertyName = PROPERTY_PREFIX + strName; String strValue = "false"; try { strValue = System.getProperty(strPropertyName, "false"); } catch (AccessControlException e) { if (SHOW_ACCESS_CONTROL_EXCEPTIONS) { out(e); } } // TDebug.out("property: " + strPropertyName + "=" + strValue); boolean bValue = strValue.toLowerCase().equals("true"); // TDebug.out("bValue: " + bValue); return bValue; } } /*** TDebug.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/share/TCircularBuffer.java0000644000175000017500000001262311377161311027006 0ustar /* * TCircularBuffer.java */ /* * Copyright (c) 1999 by Matthias Pfisterer * * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * */ package org.tritonus.share; import org.tritonus.share.TDebug; public class TCircularBuffer { private boolean m_bBlockingRead; private boolean m_bBlockingWrite; private byte[] m_abData; private int m_nSize; private int m_nReadPos; private int m_nWritePos; private Trigger m_trigger; private boolean m_bOpen; public TCircularBuffer(int nSize, boolean bBlockingRead, boolean bBlockingWrite, Trigger trigger) { m_bBlockingRead = bBlockingRead; m_bBlockingWrite = bBlockingWrite; m_nSize = nSize; m_abData = new byte[m_nSize]; m_nReadPos = 0; m_nWritePos = 0; m_trigger = trigger; m_bOpen = true; } public void close() { m_bOpen = false; // TODO: call notify() ? } private boolean isOpen() { return m_bOpen; } public int availableRead() { return m_nWritePos - m_nReadPos; } public int availableWrite() { return m_nSize - availableRead(); } private int getReadPos() { return m_nReadPos % m_nSize; } private int getWritePos() { return m_nWritePos % m_nSize; } public int read(byte[] abData) { return read(abData, 0, abData.length); } public int read(byte[] abData, int nOffset, int nLength) { if (TDebug.TraceCircularBuffer) { TDebug.out(">TCircularBuffer.read(): called."); dumpInternalState(); } if (! isOpen()) { if (availableRead() > 0) { nLength = Math.min(nLength, availableRead()); if (TDebug.TraceCircularBuffer) { TDebug.out("reading rest in closed buffer, length: " + nLength); } } else { if (TDebug.TraceCircularBuffer) { TDebug.out("< not open. returning -1."); } return -1; } } synchronized (this) { if (m_trigger != null && availableRead() < nLength) { if (TDebug.TraceCircularBuffer) { TDebug.out("executing trigger."); } m_trigger.execute(); } if (!m_bBlockingRead) { nLength = Math.min(availableRead(), nLength); } int nRemainingBytes = nLength; while (nRemainingBytes > 0) { while (availableRead() == 0) { try { wait(); } catch (InterruptedException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } } } int nAvailable = Math.min(availableRead(), nRemainingBytes); while (nAvailable > 0) { int nToRead = Math.min(nAvailable, m_nSize - getReadPos()); System.arraycopy(m_abData, getReadPos(), abData, nOffset, nToRead); m_nReadPos += nToRead; nOffset += nToRead; nAvailable -= nToRead; nRemainingBytes -= nToRead; } notifyAll(); } if (TDebug.TraceCircularBuffer) { TDebug.out("After read:"); dumpInternalState(); TDebug.out("< completed. Read " + nLength + " bytes"); } return nLength; } } public int write(byte[] abData) { return write(abData, 0, abData.length); } public int write(byte[] abData, int nOffset, int nLength) { if (TDebug.TraceCircularBuffer) { TDebug.out(">TCircularBuffer.write(): called; nLength: " + nLength); dumpInternalState(); } synchronized (this) { if (TDebug.TraceCircularBuffer) { TDebug.out("entered synchronized block."); } if (!m_bBlockingWrite) { nLength = Math.min(availableWrite(), nLength); } int nRemainingBytes = nLength; while (nRemainingBytes > 0) { while (availableWrite() == 0) { try { wait(); } catch (InterruptedException e) { if (TDebug.TraceAllExceptions) { TDebug.out(e); } } } int nAvailable = Math.min(availableWrite(), nRemainingBytes); while (nAvailable > 0) { int nToWrite = Math.min(nAvailable, m_nSize - getWritePos()); //TDebug.out("src buf size= " + abData.length + ", offset = " + nOffset + ", dst buf size=" + m_abData.length + " write pos=" + getWritePos() + " len=" + nToWrite); System.arraycopy(abData, nOffset, m_abData, getWritePos(), nToWrite); m_nWritePos += nToWrite; nOffset += nToWrite; nAvailable -= nToWrite; nRemainingBytes -= nToWrite; } notifyAll(); } if (TDebug.TraceCircularBuffer) { TDebug.out("After write:"); dumpInternalState(); TDebug.out("< completed. Wrote "+nLength+" bytes"); } return nLength; } } private void dumpInternalState() { TDebug.out("m_nReadPos = " + m_nReadPos + " ^= "+getReadPos()); TDebug.out("m_nWritePos = " + m_nWritePos + " ^= "+getWritePos()); TDebug.out("availableRead() = " + availableRead()); TDebug.out("availableWrite() = " + availableWrite()); } public static interface Trigger { public void execute(); } } /*** TCircularBuffer.java ***/ jclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/0000755000175000017500000000000011377161311023300 5ustar ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/AppletMpegSPIWorkaround.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/AppletMpegSPIWorkaround.java0000644000175000017500000002026511377161311030636 0ustar /* * AppletMpegSPIWorkaround. * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package org.tritonus.applet; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; /** * From JRE/JDK 1.3.0_01 on, applets can not use provided service * providers. Obviously, in these later releases of the Java 2 platform * the service providers are only searched on the system/boot classloader * and NOT on the classloader of the applet. * Workaround found by Tritonus Team. */ public class AppletMpegSPIWorkaround { public static boolean DEBUG = false; public static String useragent = null; public static AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream) { try { return AudioSystem.getAudioInputStream(targetFormat, sourceStream); } catch (IllegalArgumentException iae) { if (DEBUG == true) { System.err.println("Using AppletMpegSPIWorkaround to get codec"); } try { Class.forName( "javazoom.spi.mpeg.sampled.convert.MpegFormatConversionProvider"); //"org.tritonus.sampled.convert.javalayer.MpegFormatConversionProvider"); return new javazoom.spi.mpeg.sampled.convert.MpegFormatConversionProvider(). //return new org.tritonus.sampled.convert.javalayer.MpegFormatConversionProvider(). getAudioInputStream(targetFormat, sourceStream); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException("Mpeg codec not properly installed"); } } } public static AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException { InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); try { if (DEBUG == true) { System.err.println( "Using AppletMpegSPIWorkaround to get codec (AudioInputStream:file)"); } return getAudioInputStream(inputStream); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } } public static AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException { //alexey fix: we use MpegAudioFileReaderWorkaround with URL and user agent try { Class.forName("javazoom.spi.mpeg.sampled.file.MpegAudioFileReader"); //Class.forName("org.tritonus.sampled.file.mpeg.MpegAudioFileReader"); return new MpegAudioFileReaderWorkaround().getAudioInputStream(url, useragent); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException("Mpeg codec not properly installed"); } //InputStream inputStream = new BufferedInputStream(url.openStream()); //try //{ // if (DEBUG == true) // { // System.err.println( // "Using AppletMpegSPIWorkaround to get codec (AudioInputStream:url)"); // } // return getAudioInputStream(inputStream); //} //catch (UnsupportedAudioFileException e) //{ // inputStream.close(); // throw e; //} //catch (IOException e) //{ // inputStream.close(); // throw e; //} } public static AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException { InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); try { if (DEBUG == true) { System.err.println( "Using AppletMpegSPIWorkaround to get codec (AudioFileFormat:file)"); } return getAudioFileFormat(inputStream); } finally { inputStream.close(); } } public static AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException { InputStream inputStream = null; if (useragent != null) { URLConnection myCon = url.openConnection(); myCon.setUseCaches(false); myCon.setDoInput(true); myCon.setDoOutput(true); myCon.setAllowUserInteraction(false); myCon.setRequestProperty("User-Agent", useragent); myCon.setRequestProperty("Accept", "*/*"); myCon.setRequestProperty("Icy-Metadata", "1"); myCon.setRequestProperty("Connection", "close"); inputStream = new BufferedInputStream(myCon.getInputStream()); } else { inputStream = new BufferedInputStream(url.openStream()); } try { if (DEBUG == true) { System.err.println( "Using AppletMpegSPIWorkaround to get codec (AudioFileFormat:url)"); } //alexey fix: use another version of method return getAudioFileFormatForUrl(inputStream); //return getAudioFileFormat(inputStream); } finally { inputStream.close(); } } //alexey fix: we use MpegAudioFileReader's getAudioFileFormat public static AudioFileFormat getAudioFileFormatForUrl(InputStream is) throws UnsupportedAudioFileException, IOException { try { //return AudioSystem.getAudioFileFormat(is); throw new Exception(); } catch (Exception iae) { if (DEBUG == true) { System.err.println( "Using AppletMpegSPIWorkaround to get codec (AudioFileFormat)"); } try { Class.forName("javazoom.spi.mpeg.sampled.file.MpegAudioFileReader"); //Class.forName("org.tritonus.sampled.file.mpeg.MpegAudioFileReader"); // 2.2 Fix. //is.mark(4096); return new javazoom.spi.mpeg.sampled.file.MpegAudioFileReader(). //return new org.tritonus.sampled.file.mpeg.MpegAudioFileReader(). getAudioFileFormat(is, AudioSystem.NOT_SPECIFIED); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException("Mpeg codec not properly installed"); } } // 2.2 Fix. finally { //is.reset(); } } public static AudioFileFormat getAudioFileFormat(InputStream is) throws UnsupportedAudioFileException, IOException { try { //return AudioSystem.getAudioFileFormat(is); throw new Exception(); } catch (Exception iae) { if (DEBUG == true) { System.err.println( "Using AppletMpegSPIWorkaround to get codec (AudioFileFormat)"); } try { Class.forName("javazoom.spi.mpeg.sampled.file.MpegAudioFileReader"); //Class.forName("org.tritonus.sampled.file.mpeg.MpegAudioFileReader"); // 2.2 Fix. is.mark(4096); return new javazoom.spi.mpeg.sampled.file.MpegAudioFileReader(). //return new org.tritonus.sampled.file.mpeg.MpegAudioFileReader(). getAudioFileFormat(is); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException("Mpeg codec not properly installed"); } } // 2.2 Fix. finally { is.reset(); } } public static AudioInputStream getAudioInputStream(InputStream is) throws UnsupportedAudioFileException, IOException { try { //return AudioSystem.getAudioInputStream(is); throw new Exception(); } catch (Exception iae) { if (DEBUG == true) { System.err.println("Using AppletMpegSPIWorkaround to get codec"); } try { Class.forName("javazoom.spi.mpeg.sampled.file.MpegAudioFileReader"); //Class.forName("org.tritonus.sampled.file.mpeg.MpegAudioFileReader"); return new javazoom.spi.mpeg.sampled.file.MpegAudioFileReader().getAudioInputStream(is); //return new org.tritonus.sampled.file.mpeg.MpegAudioFileReader().getAudioInputStream(is); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException("Mpeg codec not properly installed"); } } } }././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/MpegAudioFileReaderWorkaround.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/MpegAudioFileReaderWorkaroun0000644000175000017500000000727511377161311030743 0ustar /* * MpegAudioFileReaderWorkaround. * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package org.tritonus.applet; import javazoom.spi.mpeg.sampled.file.IcyListener; import javazoom.spi.mpeg.sampled.file.MpegAudioFileReader; import javazoom.spi.mpeg.sampled.file.tag.IcyInputStream; import org.tritonus.share.TDebug; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; import java.io.BufferedInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class MpegAudioFileReaderWorkaround extends MpegAudioFileReader { /** * Returns AudioInputStream from url and userAgent */ public AudioInputStream getAudioInputStream(URL url, String userAgent) throws UnsupportedAudioFileException, IOException { if (TDebug.TraceAudioFileReader) { TDebug.out("MpegAudioFileReaderWorkaround.getAudioInputStream(URL,String): begin"); } long lFileLengthInBytes = AudioSystem.NOT_SPECIFIED; URLConnection conn = url.openConnection(); // Tell shoucast server (if any) that SPI support shoutcast stream. boolean isShout = false; int toRead = 4; byte[] head = new byte[toRead]; if (userAgent != null) conn.setRequestProperty("User-Agent", userAgent); conn.setRequestProperty("Accept", "*/*"); conn.setRequestProperty("Icy-Metadata", "1"); conn.setRequestProperty("Connection", "close"); BufferedInputStream bInputStream = new BufferedInputStream(conn.getInputStream()); bInputStream.mark(toRead); int read = bInputStream.read(head, 0, toRead); if ((read > 2) && (((head[0] == 'I') | (head[0] == 'i')) && ((head[1] == 'C') | (head[1] == 'c')) && ((head[2] == 'Y') | (head[2] == 'y')))) { isShout = true; } bInputStream.reset(); InputStream inputStream = null; // Is is a shoutcast server ? if (isShout == true) { // Yes IcyInputStream icyStream = new IcyInputStream(bInputStream); icyStream.addTagParseListener(IcyListener.getInstance()); inputStream = icyStream; } else { // No, is Icecast 2 ? String metaint = conn.getHeaderField("icy-metaint"); if (metaint != null) { // Yes, it might be icecast 2 mp3 stream. IcyInputStream icyStream = new IcyInputStream(bInputStream, metaint); icyStream.addTagParseListener(IcyListener.getInstance()); inputStream = icyStream; } else { // No inputStream = bInputStream; } } AudioInputStream audioInputStream = null; try { audioInputStream = getAudioInputStream(inputStream, lFileLengthInBytes); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } if (TDebug.TraceAudioFileReader) { TDebug.out("MpegAudioFileReaderWorkaround.getAudioInputStream(URL,String): end"); } return audioInputStream; } }././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/AppletVorbisSPIWorkaround.javajclic-0.2.1.0.orig/extensions/soundspi/tritonus/src/org/tritonus/applet/AppletVorbisSPIWorkaround.ja0000644000175000017500000001641311377161311030663 0ustar /* * AppletVorbisSPIWorkaround. * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package org.tritonus.applet; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import javax.sound.sampled.AudioFileFormat; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.UnsupportedAudioFileException; /** * From JRE/JDK 1.3.0_01 on, applets can not use provided service * providers. Obviously, in these later releases of the Java 2 platform * the service providers are only searched on the system/boot classloader * and NOT on the classloader of the applet. * Workaround found by Tritonus Team. */ public class AppletVorbisSPIWorkaround { public static boolean DEBUG = false; public static String useragent = null; public static AudioInputStream getAudioInputStream(AudioFormat targetFormat, AudioInputStream sourceStream) { try { return AudioSystem.getAudioInputStream(targetFormat, sourceStream); } catch (IllegalArgumentException iae) { if (DEBUG == true) { System.err.println("Using AppletVorbisSPIWorkaround to get codec"); } try { Class.forName( //"javazoom.spi.vorbis.sampled.convert.VorbisFormatConversionProvider" "org.tritonus.sampled.convert.jorbis.JorbisFormatConversionProvider"); //return new javazoom.spi.vorbis.sampled.convert.VorbisFormatConversionProvider(). return new org.tritonus.sampled.convert.jorbis.JorbisFormatConversionProvider(). getAudioInputStream(targetFormat, sourceStream); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException( "Vorbis codec not properly installed"); } } } public static AudioFileFormat getAudioFileFormat(File file) throws UnsupportedAudioFileException, IOException { InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); try { if (DEBUG == true) { System.err.println( "Using AppletVorbisSPIWorkaround to get codec (AudioFileFormat:file)"); } return getAudioFileFormat(inputStream); } finally { inputStream.close(); } } public static AudioInputStream getAudioInputStream(File file) throws UnsupportedAudioFileException, IOException { InputStream inputStream = new BufferedInputStream(new FileInputStream(file)); try { if (DEBUG == true) { System.err.println( "Using AppletVorbisSPIWorkaround to get codec (AudioInputStream:file)"); } return getAudioInputStream(inputStream); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } } public static AudioInputStream getAudioInputStream(URL url) throws UnsupportedAudioFileException, IOException { InputStream inputStream = new BufferedInputStream(url.openStream()); try { if (DEBUG == true) { System.err.println( "Using AppletVorbisSPIWorkaround to get codec (AudioInputStream:url)"); } return getAudioInputStream(inputStream); } catch (UnsupportedAudioFileException e) { inputStream.close(); throw e; } catch (IOException e) { inputStream.close(); throw e; } } public static AudioFileFormat getAudioFileFormat(URL url) throws UnsupportedAudioFileException, IOException { InputStream inputStream = null; if (useragent != null) { URLConnection myCon = url.openConnection(); myCon.setUseCaches(false); myCon.setDoInput(true); myCon.setDoOutput(true); myCon.setAllowUserInteraction(false); myCon.setRequestProperty("User-Agent", useragent); myCon.setRequestProperty("Accept", "*/*"); myCon.setRequestProperty("Icy-Metadata", "1"); myCon.setRequestProperty("Connection", "close"); inputStream = new BufferedInputStream(myCon.getInputStream()); } else { inputStream = new BufferedInputStream(url.openStream()); } try { if (DEBUG == true) { System.err.println( "Using AppletVorbisSPIWorkaround to get codec AudioFileFormat(url)"); } return getAudioFileFormat(inputStream); } finally { inputStream.close(); } } public static AudioFileFormat getAudioFileFormat(InputStream is) throws UnsupportedAudioFileException, IOException { try { //return AudioSystem.getAudioFileFormat(is); throw new Exception(); } catch (Exception iae) { if (DEBUG == true) { System.err.println("Using AppletVorbisSPIWorkaround to get codec"); } try { // 2.2 Fix. is.mark(4096); //Class.forName("javazoom.spi.vorbis.sampled.file.VorbisAudioFileReader"); Class.forName("org.tritonus.sampled.file.jorbis.JorbisAudioFileReader"); //return new javazoom.spi.vorbis.sampled.file.VorbisAudioFileReader(). return new org.tritonus.sampled.file.jorbis.JorbisAudioFileReader(). getAudioFileFormat(is); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException( "Vorbis codec not properly installed"); } } // 2.2 Fix. finally { is.reset(); } } public static AudioInputStream getAudioInputStream(InputStream is) throws UnsupportedAudioFileException, IOException { try { //return AudioSystem.getAudioInputStream(is); throw new Exception(); } catch (Exception iae) { if (DEBUG == true) { System.err.println("Using AppleVorbisSPIWorkaround to get codec"); } try { //Class.forName("javazoom.spi.vorbis.sampled.file.VorbisAudioFileReader"); Class.forName("org.tritonus.sampled.file.jorbis.JorbisAudioFileReader"); //return new javazoom.spi.vorbis.sampled.file.VorbisAudioFileReader(). return new org.tritonus.sampled.file.jorbis.JorbisAudioFileReader(). getAudioInputStream(is); } catch (ClassNotFoundException cnfe) { throw new IllegalArgumentException( "Vorbis codec not properly installed:" + cnfe.getMessage()); } } } }jclic-0.2.1.0.orig/extensions/soundspi/tritonus/README_mp30000644000175000017500000000650111377161311020207 0ustar README.mp3 ---------- MP3 DECODING ------------ This version of Tritonus includes mp3 decoding support. This is due to using javalayer 0.0.8, a pure-java mp3 decoder developed by the javalayer project. The big credit for this goes to Eric B. who wrote the decoder. The javalayer code is no longer duplicated in Tritonus. To compile from scratch, you need to check out javalayer from its own cvs (see http://sourceforge.net/projects/javalayer/). Make sure javalayer is in a directory 'javalayer' that is in the same directory as 'tritonus'. In this case, if you issue ant int Tritonus, it will build javalayer, too. Alternatively, if you want a different location, change the path to javalayer in build.xml. For a runnable program, see DecodingAudioPlayer.java or AudioPlayer.java from the Java Sound Examples. The decoder can also be used as plug-in for any Java Sound implementation (like the Sun jdk1.3). Precompiled jar files are at http://www.tritonus.org/plugins.html JavaLayer project: http://www.javazoom.net/javalayer/javalayer.html MP3 ENCODING ------------ MP3 file creation is supported with native access to the LAME library. A pure Java MP3 encoder does not exist in our knowledge and would probably be too slow - nowadays. LAME is acknowledged to provide high quality mp3 encoding. Additionally, it is completely open source (LGPL) and does not use 3rd party source code. As LAME is accessed via JNI, the current implementation in Tritonus can only be used under Linux. In future, a port to Windows and other systems is possible. Capabilities in Tritonus: The encoder creates MPEG1 layer III, MPEG2 layer III or MPEG2.5 layer III files and chooses automatically the right encoding. Bit rates may vary from 8 to 320KBit/s, VBR (variable bit rate) is supported, too. Different quality levels may be choosen which affect - encoding speed for CBR (constant bit rate) - mp3 file size for VBR. Downloading LAME: LAME has to be installed on your system. You need at least LAME V3.88beta or later. You can get LAME from http://sourceforge.net/projects/lame/ To get the latest CVS version of lame, issue these 2 commands: cvs -d:pserver:anonymous@cvs.lame.sourceforge.net:/cvsroot/lame login (Password empty) cvs -z3 -d:pserver:anonymous@cvs.lame.sourceforge.net:/cvsroot/lame co lame Installation of LAME: In the main directory of lame, issue "./configure --enable-shared" and "make". As root, invoke "make install". This copies the library to /usr/local/lib. You may need to include /usr/local/lib to /etc/ld.so.conf and then run "ldconfig" Integration in Tritonus: You must re-run "configure" after installation of LAME. Be sure to remove "config.cache" before. "configure" outputs a line like "Will build stuff for LAME encoder" when everything is fine. Call "make" and as root "make install" (or make install-link). Testing: A simple command line tool for converting any audio file to mp3 is included in the directory test: Mp3Encoder.java. Run it without parameters to see brief usage instructions. Looking at its source code will show you how it works (and the problems...). Please send problems or bugs to florian@tritonus.org or submit them to the bug database on sourceforge. Thanks: Many thanks to Mark Taylor, who leads development of LAME. He was open to my (Florians) proposals and let me work on LAME to make the integration into Tritonus possible. jclic-0.2.1.0.orig/extensions/soundspi/jorbis/0000755000175000017500000000000011377161311016147 5ustar jclic-0.2.1.0.orig/extensions/soundspi/jorbis/COPYING.LIB0000644000175000017500000006364411377161311017624 0ustar GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. ^L Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ^L GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. ^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. ^L 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. ^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. ^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. ^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ^L How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! jclic-0.2.1.0.orig/extensions/soundspi/jorbis/README0000644000175000017500000001036011377161311017027 0ustar JOrbis a pure Java(TM) Ogg Vorbis decoder by ymnk, JCraft,Inc. http://www.jcraft.com/jorbis/ Last modified: Mon May 7 14:31:03 UTC 2001 Description =========== JOrbis is a pure Java Ogg Vorbis decoder. JOrbis accepts Ogg Vorbis bitstreams and decodes them to raw PCMs. Documentation ============= Read before asking. * README files all over the source tree have info related to the stuff in the directories. Directories & Files in the Source Tree ====================================== * com/ has source trees of JOrbis. * player/ has source and binaries of pure Java Ogg Vorbis player. Copyrights & Disclaimers ======================== JOrbis is copyrighted by JCraft Inc. and is licensed through the GNU Lesser General Public License. Read the COPYING.LIB file for the complete license. Credits ======= All credits goes to authors, Moty,The XIPHOPHORUS Company and contributers of Ogg Vorbis. What is Ogg Vorbis? =================== Here is a quote from README of Ogg Vorbis CODEC from the Developer site for Ogg Vorbis(http://xiph.org/ogg/vorbis/). "Vorbis is a general purpose audio and music encoding format contemporary to MPEG-4's AAC and TwinVQ, the next generation beyond MPEG audio layer 3. Unlike the MPEG sponsored formats (and other proprietary formats such as RealAudio G2 and Windows' flavor of the month), the Vorbis CODEC specification belongs to the public domain. All the technical details are published and documented, and any software entity may make full use of the format without royalty or patent concerns." Why JOrbis? =========== We sympathize the aim of Ogg project. JOrbis is our contribution to the Ogg project in our style. We think the ubiquity of Vorbis decoder will leverage the popularity of Ogg Vorbis. We hope JOrbis will run on any platform, any devices and any web browsers, which support Java and every people will enjoy streamed musics without without royalty or patent concerns. Features ======== * JOrbis is in pure JavaTM. JOrbis will run on JDK1.0.* or higher and may run on J2METM. * JOrbis is under LGPL. Current Status ============== The sound quality of outputs from JOrbis has been improved. If you had tried last version(0.0.1) and been disappointed with its quality, try current version. It will be worth trying. However, in current implementation, the efficiency has not been cared and many CPU resources are required. Much work must be done to solve this problem. How To Try JOrbis ================= A sample program DecodeExample.java has been included in an archive.
If you are on RedHat's GNU/Linux box, just try, $ cat foo.ogg | java com.jcraft.jorbis.DecodeExample | esdcat If outputs are noisy, save outputs in a file then cat it to esdcat. Ogg files are available at http://vorbis.com/listen.html and if you have Ogg Vorbis CODEC from xiph.org, you can make ogg files by your self. How To Play JOrbisPlayer ======================== The Ogg Voribs player, 'JOrbisPlayer', is available at the 'player' directory. It is a pure Java program, but it uses Java Sound APIs. If you have J2SE V.1.3 Java VM, you can enjoy it. *step1: Copy contents in the 'player' directory to some directory, which is accessible via the http server. *step2: Copy some ogg files to that directory. *step3: Change directory to that directory, make 'playlist' file. For example, 'ls *.ogg > playlist' *step4: Open 'JOrbisPlayer.html' file by a web browser via http server. JOrbisPlayer will run on a web browser automatically. 'JOrbisPlayer' also works as an application, so just try 'java JOrbisPlayer' in the 'player' directory. For example, on GNU/Linux, $ cd player $ export CLASSPATH=.:.. $ java JOrbisPlayer foo.ogg bar.ogg http://shomewahre/goo.ogg If you don't have the direct connections to the Internet and you have the http proxy server at 192.168.0.1:80, try as follows, $ java -Dhttp.proxyHost=192.168.0.1 -Dhttp.proxyPort=80 JOrbisPlayer http://shomewahre/goo.ogg In our experiences, if your machine has a Cerelon, you will be able to enjoy JOrbisPlayer. If you have any comments, suggestions and questions, write us at jorbis@jcraft.com jclic-0.2.1.0.orig/extensions/soundspi/jorbis/ChangeLog0000644000175000017500000000546711377161311017735 0ustar ChangeLog of JOrbis ==================================================================== Last modified: Wed Oct 13 01:53:26 JST 2004 Changes since version 0.0.13: - added com.jcraft.jogg.Buffer.readB method for Fluendo's theora decoder. - added com.jcraft.jogg.Page.copy methods for handling grouped ogg streams. Changes since version 0.0.12: - fixed resorce leaks in com.jcraft.jorbis.VorbisFile class. Changes since version 0.0.11: ............................ - updated VorbisFile class for calculating total length in seconds of a Vorbis file. - some improvements on JOrbisPlayer. For example, songs on play-list will be played sequentially. Changes since version 0.0.10: ............................ - fixed bugs and incompleteness in the 'residue back-end type 2', which is required for decoding stereo coupling streams generated by RC3 encoder. - fixed minor bugs in JOrbisPlayer. Changes since version 0.0.9: ............................ - modified JOrbisPlayer for playing Ogg Vorbis live streams on UDP broadcast packets from JRoar 0.0.2. Changes since version 0.0.8: ............................ - improved the performance. In this improvement, the frequency of GC invocations has been suppressed by refraining from object allocations. - modified JOrbisPlayer for accepting *.m3u file. Changes since version 0.0.7: ............................ - added a 'simple' comment editor in pure Java. It has been located at 'comment_editor' directory. - improved for decoding Ogg Vorbis streams generated by 1.0 RC2 encoder. - modified JOrbisPlayer for accepting *.pls file. Changes since version 0.0.6: ............................ - fixed bugs in playing the chained ogg bit stream. Changes since version 0.0.5: ............................ - added the support for odd-sized LSP filters. Now, JOribPlayer can correctly decode/play low bitrate ogg bit streams, which are encoded by Vorbis 1.0beta4. Many thanks to smoerk, who reported me a glitch in playing low bitrate ogg bit streams on previous releases. - tuned up the performance a little bit. Changes since version 0.0.4: ............................ - fixed a bug in the LSP conversion routines. Now, JOribPlayer can decode/play 24khz/mono ogg bit streams. - fixed a bug in handling comments. Changes since version 0.0.3: ............................ - modified to use the data type 'float' instead of 'double' for handling internal data. - added the LSP conversion routines. - moved chunk of code for handling the ogg bit stream to the 'com.jcraft.jogg' package. Changes since version 0.0.2: ............................ - added a pure Java Ogg Vorbis player. Changes since version 0.0.1: ............................ - fixed bugs in the synthesis engine. By this bug fix, the sound quality of output from JOrbis has been improved. jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/0000755000175000017500000000000011377161311016736 5ustar jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/0000755000175000017500000000000011377161311017514 5ustar jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/0000755000175000017500000000000011377161311020765 5ustar jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/0000755000175000017500000000000011377161311022255 5ustar jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/StaticCodeBook.java0000644000175000017500000003734011377161311025764 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class StaticCodeBook{ int dim; // codebook dimensions (elements per vector) int entries; // codebook entries int[] lengthlist; // codeword lengths in bits // mapping int maptype; // 0=none // 1=implicitly populated values from map column // 2=listed arbitrary values // The below does a linear, single monotonic sequence mapping. int q_min; // packed 32 bit float; quant value 0 maps to minval int q_delta; // packed 32 bit float; val 1 - val 0 == delta int q_quant; // bits: 0 < quant <= 16 int q_sequencep; // bitflag // additional information for log (dB) mapping; the linear mapping // is assumed to actually be values in dB. encodebias is used to // assign an error weight to 0 dB. We have two additional flags: // zeroflag indicates if entry zero is to represent -Inf dB; negflag // indicates if we're to represent negative linear values in a // mirror of the positive mapping. int[] quantlist; // map == 1: (int)(entries/dim) element column map // map == 2: list of dim*entries quantized entry vals // encode helpers EncodeAuxNearestMatch nearest_tree; EncodeAuxThreshMatch thresh_tree; StaticCodeBook(){} StaticCodeBook(int dim, int entries, int[] lengthlist, int maptype, int q_min, int q_delta, int q_quant, int q_sequencep, int[] quantlist, //EncodeAuxNearestmatch nearest_tree, Object nearest_tree, // EncodeAuxThreshmatch thresh_tree, Object thresh_tree ){ this(); this.dim=dim; this.entries=entries; this.lengthlist=lengthlist; this.maptype=maptype; this.q_min=q_min; this.q_delta=q_delta; this.q_quant=q_quant; this.q_sequencep=q_sequencep; this.quantlist=quantlist; } int pack(Buffer opb){ int i; boolean ordered=false; opb.write(0x564342,24); opb.write(dim, 16); opb.write(entries, 24); // pack the codewords. There are two packings; length ordered and // length random. Decide between the two now. for(i=1;i_last){ for(int j=_last;j<_this;j++){ opb.write(i-count,ilog(entries-count)); count=i; } } } opb.write(i-count,ilog(entries-count)); } else{ // length random. Again, we don't code the codeword itself, just // the length. This time, though, we have to encode each length opb.write(0,1); // unordered // algortihmic mapping has use for 'unused entries', which we tag // here. The algorithmic mapping happens as usual, but the unused // entry has no codeword. for(i=0;ientries/c->dim) quantized values for // building a full value list algorithmically (square lattice) quantvals=maptype1_quantvals(); break; case 2: // every value (c->entries*c->dim total) specified explicitly quantvals=entries*dim; break; } // quantized values for(i=0;ibim <= b->entries // treat the above as an initial guess while(true){ int acc=1; int acc1=1; for(int i=0;ientries){ return(vals); } else{ if(acc>entries){ vals--; } else{ vals++; } } } } void clear(){ // if(quantlist!=null)free(b->quantlist); // if(lengthlist!=null)free(b->lengthlist); // if(nearest_tree!=null){ // free(b->nearest_tree->ptr0); // free(b->nearest_tree->ptr1); // free(b->nearest_tree->p); // free(b->nearest_tree->q); // memset(b->nearest_tree,0,sizeof(encode_aux_nearestmatch)); // free(b->nearest_tree); // } // if(thresh_tree!=null){ // free(b->thresh_tree->quantthresh); // free(b->thresh_tree->quantmap); // memset(b->thresh_tree,0,sizeof(encode_aux_threshmatch)); // free(b->thresh_tree); // } // memset(b,0,sizeof(static_codebook)); } // unpack the quantized list of values for encode/decode // we need to deal with two map types: in map type 1, the values are // generated algorithmically (each column of the vector counts through // the values in the quant vector). in map type 2, all the values came // in in an explicit list. Both value lists must be unpacked float[] unquantize(){ if(maptype==1 || maptype==2){ int quantvals; float mindel=float32_unpack(q_min); float delta=float32_unpack(q_delta); float[] r=new float[entries*dim]; //System.err.println("q_min="+q_min+", mindel="+mindel); // maptype 1 and 2 both use a quantized value vector, but // different sizes switch(maptype){ case 1: // most of the time, entries%dimensions == 0, but we need to be // well defined. We define that the possible vales at each // scalar is values == entries/dim. If entries%dim != 0, we'll // have 'too few' values (values*dim "+val+" | ");} val=Math.abs(val)*delta+mindel+last; if(q_sequencep!=0)last=val; r[j*dim+k]=val; //if((j*dim+k)==0){System.err.println(" $ r[0] -> "+r[0]+" | ");} } } //System.err.println("\nr[0]="+r[0]); } return(r); } return(null); } private static int ilog(int v){ int ret=0; while(v!=0){ ret++; v>>>=1; } return(ret); } // 32 bit float (not IEEE; nonnormalized mantissa + // biased exponent) : neeeeeee eeemmmmm mmmmmmmm mmmmmmmm // Why not IEEE? It's just not that important here. static final int VQ_FEXP=10; static final int VQ_FMAN=21; static final int VQ_FEXP_BIAS=768; // bias toward values smaller than 1. // doesn't currently guard under/overflow static long float32_pack(float val){ int sign=0; int exp; int mant; if(val<0){ sign=0x80000000; val= -val; } exp=(int)Math.floor(Math.log(val)/Math.log(2)); mant=(int)Math.rint(Math.pow(val,(VQ_FMAN-1)-exp)); exp=(exp+VQ_FEXP_BIAS)<>>VQ_FMAN; //System.err.println("mant="+mant+", sign="+sign+", exp="+exp); //if(sign!=0.0)mant= -mant; if((val&0x80000000)!=0)mant= -mant; //System.err.println("mant="+mant); return(ldexp(mant,((int)exp)-(VQ_FMAN-1)-VQ_FEXP_BIAS)); } static float ldexp(float foo, int e){ return (float)(foo*Math.pow(2, e)); } /* // TEST // Unit tests of the dequantizer; this stuff will be OK // cross-platform, I simply want to be sure that special mapping cases // actually work properly; a bug could go unnoticed for a while // cases: // // no mapping // full, explicit mapping // algorithmic mapping // // nonsequential // sequential static int[] full_quantlist1={0,1,2,3, 4,5,6,7, 8,3,6,1}; static int[] partial_quantlist1={0,7,2}; // no mapping static StaticCodeBook test1=new StaticCodeBook(4,16,null, 0,0,0,0,0, null,null,null); static float[] test1_result=null; // linear, full mapping, nonsequential static StaticCodeBook test2=new StaticCodeBook(4,3,null, 2,-533200896,1611661312,4,0, full_quantlist1, null, null); static float[] test2_result={-3,-2,-1,0, 1,2,3,4, 5,0,3,-2}; // linear, full mapping, sequential static StaticCodeBook test3=new StaticCodeBook(4,3,null, 2, -533200896,1611661312,4,1, full_quantlist1,null, null); static float[] test3_result={-3,-5,-6,-6, 1,3,6,10, 5,5,8,6}; // linear, algorithmic mapping, nonsequential static StaticCodeBook test4=new StaticCodeBook(3,27,null, 1,-533200896,1611661312,4,0, partial_quantlist1,null,null); static float[] test4_result={-3,-3,-3, 4,-3,-3, -1,-3,-3, -3, 4,-3, 4, 4,-3, -1, 4,-3, -3,-1,-3, 4,-1,-3, -1,-1,-3, -3,-3, 4, 4,-3, 4, -1,-3, 4, -3, 4, 4, 4, 4, 4, -1, 4, 4, -3,-1, 4, 4,-1, 4, -1,-1, 4, -3,-3,-1, 4,-3,-1, -1,-3,-1, -3, 4,-1, 4, 4,-1, -1, 4,-1, -3,-1,-1, 4,-1,-1, -1,-1,-1}; // linear, algorithmic mapping, sequential static StaticCodeBook test5=new StaticCodeBook(3,27,null, 1,-533200896,1611661312,4,1, partial_quantlist1,null,null); static float[] test5_result={-3,-6,-9, 4, 1,-2, -1,-4,-7, -3, 1,-2, 4, 8, 5, -1, 3, 0, -3,-4,-7, 4, 3, 0, -1,-2,-5, -3,-6,-2, 4, 1, 5, -1,-4, 0, -3, 1, 5, 4, 8,12, -1, 3, 7, -3,-4, 0, 4, 3, 7, -1,-2, 2, -3,-6,-7, 4, 1, 0, -1,-4,-5, -3, 1, 0, 4, 8, 7, -1, 3, 2, -3,-4,-5, 4, 3, 2, -1,-2,-3}; void run_test(float[] comp){ float[] out=unquantize(); if(comp!=null){ if(out==null){ System.err.println("_book_unquantize incorrectly returned NULL"); System.exit(1); } for(int i=0;i.0001){ System.err.println("disagreement in unquantized and reference data:\nposition "+i+": "+out[i]+" != "+comp[i]); System.exit(1); } } } else{ if(out!=null){ System.err.println("_book_unquantize returned a value array:\n correct result should have been NULL"); System.exit(1); } } } public static void main(String[] arg){ // run the nine dequant tests, and compare to the hand-rolled results System.err.print("Dequant test 1... "); test1.run_test(test1_result); System.err.print("OK\nDequant test 2... "); test2.run_test(test2_result); System.err.print("OK\nDequant test 3... "); test3.run_test(test3_result); System.err.print("OK\nDequant test 4... "); test4.run_test(test4_result); System.err.print("OK\nDequant test 5... "); test5.run_test(test5_result); System.err.print("OK\n\n"); } */ } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/FuncResidue.java0000644000175000017500000000314111377161311025333 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; abstract class FuncResidue{ public static FuncResidue[] residue_P={new Residue0(), new Residue1(), new Residue2()}; abstract void pack(Object vr, Buffer opb); abstract Object unpack(Info vi, Buffer opb); abstract Object look(DspState vd, InfoMode vm, Object vr); abstract void free_info(Object i); abstract void free_look(Object i); abstract int forward(Block vb,Object vl, float[][] in, int ch); // abstract int inverse(Block vb, Object vl, float[][] in, int ch); abstract int inverse(Block vb, Object vl, float[][] in, int[] nonzero,int ch); } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/JOrbisException.java0000644000175000017500000000225611377161311026174 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; public class JOrbisException extends Exception { public JOrbisException () { super(); } public JOrbisException (String s) { super ("JOrbis: "+s); } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/FuncFloor.java0000644000175000017500000000336311377161311025022 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; abstract class FuncFloor{ // public static FuncFloor[] floor_P={new Floor0()}; public static FuncFloor[] floor_P={new Floor0(),new Floor1()}; abstract void pack(Object i, Buffer opb); abstract Object unpack(Info vi, Buffer opb); abstract Object look(DspState vd, InfoMode mi, Object i); // abstract Object state(Object i); abstract void free_info(Object i); abstract void free_look(Object i); abstract void free_state(Object vs); abstract int forward(Block vb, Object i, float[] in, float[] out, Object vs); // abstract int inverse(Block vb, Object i, float[] out); abstract Object inverse1(Block vb, Object i, Object memo); abstract int inverse2(Block vb, Object i, Object memo, float[] out); } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Info.java0000644000175000017500000003215111377161311024015 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; public class Info{ private static final int OV_EBADPACKET=-136; private static final int OV_ENOTAUDIO=-135; private static byte[] _vorbis="vorbis".getBytes(); private static final int VI_TIMEB=1; // private static final int VI_FLOORB=1; private static final int VI_FLOORB=2; // private static final int VI_RESB=1; private static final int VI_RESB=3; private static final int VI_MAPB=1; private static final int VI_WINDOWB=1; public int version; public int channels; public int rate; // The below bitrate declarations are *hints*. // Combinations of the three values carry the following implications: // // all three set to the same value: // implies a fixed rate bitstream // only nominal set: // implies a VBR stream that averages the nominal bitrate. No hard // upper/lower limit // upper and or lower set: // implies a VBR bitstream that obeys the bitrate limits. nominal // may also be set to give a nominal rate. // none set: // the coder does not care to speculate. int bitrate_upper; int bitrate_nominal; int bitrate_lower; // Vorbis supports only short and long blocks, but allows the // encoder to choose the sizes int[] blocksizes=new int[2]; // modes are the primary means of supporting on-the-fly different // blocksizes, different channel mappings (LR or mid-side), // different residue backends, etc. Each mode consists of a // blocksize flag and a mapping (along with the mapping setup int modes; int maps; int times; int floors; int residues; int books; int psys; // encode only InfoMode[] mode_param=null; int[] map_type=null; Object[] map_param=null; int[] time_type=null; Object[] time_param=null; int[] floor_type=null; Object[] floor_param=null; int[] residue_type=null; Object[] residue_param=null; StaticCodeBook[] book_param=null; PsyInfo[] psy_param=new PsyInfo[64]; // encode only // for block long/sort tuning; encode only int envelopesa; float preecho_thresh; float preecho_clamp; // used by synthesis, which has a full, alloced vi public void init(){ rate=0; //memset(vi,0,sizeof(vorbis_info)); } public void clear(){ for(int i=0;ibook_param)free(vi->book_param); book_param=null; for(int i=0;ipsy_param)free(vi->psy_param); //memset(vi,0,sizeof(vorbis_info)); } // Header packing/unpacking int unpack_info(Buffer opb){ version=opb.read(32); if(version!=0)return(-1); channels=opb.read(8); rate=opb.read(32); bitrate_upper=opb.read(32); bitrate_nominal=opb.read(32); bitrate_lower=opb.read(32); blocksizes[0]=1<=VI_TIMEB){ //goto err_out; clear(); return(-1); } time_param[i]=FuncTime.time_P[time_type[i]].unpack(this, opb); if(time_param[i]==null){ //goto err_out; clear(); return(-1); } } // floor backend settings floors=opb.read(6)+1; if(floor_type==null || floor_type.length!=floors) floor_type=new int[floors]; if(floor_param==null || floor_param.length!=floors) floor_param=new Object[floors]; for(int i=0;i=VI_FLOORB){ //goto err_out; clear(); return(-1); } floor_param[i]=FuncFloor.floor_P[floor_type[i]].unpack(this,opb); if(floor_param[i]==null){ //goto err_out; clear(); return(-1); } } // residue backend settings residues=opb.read(6)+1; if(residue_type==null || residue_type.length!=residues) residue_type=new int[residues]; if(residue_param==null || residue_param.length!=residues) residue_param=new Object[residues]; for(int i=0;i=VI_RESB){ // goto err_out; clear(); return(-1); } residue_param[i]=FuncResidue.residue_P[residue_type[i]].unpack(this,opb); if(residue_param[i]==null){ // goto err_out; clear(); return(-1); } } // map backend settings maps=opb.read(6)+1; if(map_type==null || map_type.length!=maps) map_type=new int[maps]; if(map_param==null || map_param.length!=maps) map_param=new Object[maps]; for(int i=0;i=VI_MAPB){ // goto err_out; clear(); return(-1); } map_param[i]=FuncMapping.mapping_P[map_type[i]].unpack(this,opb); if(map_param[i]==null){ // goto err_out; clear(); return(-1); } } // mode settings modes=opb.read(6)+1; if(mode_param==null || mode_param.length!=modes) mode_param=new InfoMode[modes]; for(int i=0;i=VI_WINDOWB)|| (mode_param[i].transformtype>=VI_WINDOWB)|| (mode_param[i].mapping>=maps)){ // goto err_out; clear(); return(-1); } } if(opb.read(1)!=1){ //goto err_out; // top level EOP check clear(); return(-1); } return(0); // err_out: // vorbis_info_clear(vi); // return(-1); } // The Vorbis header is in three packets; the initial small packet in // the first page that identifies basic parameters, a second packet // with bitstream comments and a third packet that holds the // codebook. public int synthesis_headerin(Comment vc, Packet op){ Buffer opb=new Buffer(); if(op!=null){ opb.readinit(op.packet_base, op.packet, op.bytes); // Which of the three types of header is this? // Also verify header-ness, vorbis { byte[] buffer=new byte[6]; int packtype=opb.read(8); //memset(buffer,0,6); opb.read(buffer,6); if(buffer[0]!='v' || buffer[1]!='o' || buffer[2]!='r' || buffer[3]!='b' || buffer[4]!='i' || buffer[5]!='s'){ // not a vorbis header return(-1); } switch(packtype){ case 0x01: // least significant *bit* is read first if(op.b_o_s==0){ // Not the initial packet return(-1); } if(rate!=0){ // previously initialized info header return(-1); } return(unpack_info(opb)); case 0x03: // least significant *bit* is read first if(rate==0){ // um... we didn't get the initial header return(-1); } return(vc.unpack(opb)); case 0x05: // least significant *bit* is read first if(rate==0 || vc.vendor==null){ // um... we didn;t get the initial header or comments yet return(-1); } return(unpack_books(opb)); default: // Not a valid vorbis header type //return(-1); break; } } } return(-1); } // pack side int pack_info(Buffer opb){ // preamble opb.write(0x01,8); opb.write(_vorbis); // basic information about the stream opb.write(0x00,32); opb.write(channels,8); opb.write(rate,32); opb.write(bitrate_upper,32); opb.write(bitrate_nominal,32); opb.write(bitrate_lower,32); opb.write(ilog2(blocksizes[0]),4); opb.write(ilog2(blocksizes[1]),4); opb.write(1,1); return(0); } int pack_books(Buffer opb){ opb.write(0x05,8); opb.write(_vorbis); // books opb.write(books-1,8); for(int i=0;icodec_setup; Buffer opb=new Buffer(); // synchronized(opb_blocksize){ int mode; opb.readinit(op.packet_base, op.packet, op.bytes); /* Check the packet type */ if(opb.read(1)!=0){ /* Oops. This is not an audio data packet */ return(OV_ENOTAUDIO); } { int modebits=0; int v=modes; while(v>1){ modebits++; v>>>=1; } /* read our mode and pre/post windowsize */ mode=opb.read(modebits); } if(mode==-1)return(OV_EBADPACKET); return(blocksizes[mode_param[mode].blockflag]); // } } private static int ilog2(int v){ int ret=0; while(v>1){ ret++; v>>>=1; } return(ret); } public String toString(){ return "version:"+new Integer(version)+ ", channels:"+new Integer(channels)+ ", rate:"+new Integer(rate)+ ", bitrate:"+new Integer(bitrate_upper)+","+ new Integer(bitrate_nominal)+","+ new Integer(bitrate_lower); } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/FuncTime.java0000644000175000017500000000270311377161311024634 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; abstract class FuncTime{ public static FuncTime[] time_P={new Time0()}; abstract void pack(Object i, Buffer opb); abstract Object unpack(Info vi , Buffer opb); abstract Object look(DspState vd, InfoMode vm, Object i); abstract void free_info(Object i); abstract void free_look(Object i); abstract int forward(Block vb, Object i); abstract int inverse(Block vb, Object i, float[] in, float[] out); } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Lookup.java0000644000175000017500000001727011377161311024400 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class Lookup{ static final int COS_LOOKUP_SZ=128; static final float[] COS_LOOKUP={ +1.0000000000000f,+0.9996988186962f,+0.9987954562052f,+0.9972904566787f, +0.9951847266722f,+0.9924795345987f,+0.9891765099648f,+0.9852776423889f, +0.9807852804032f,+0.9757021300385f,+0.9700312531945f,+0.9637760657954f, +0.9569403357322f,+0.9495281805930f,+0.9415440651830f,+0.9329927988347f, +0.9238795325113f,+0.9142097557035f,+0.9039892931234f,+0.8932243011955f, +0.8819212643484f,+0.8700869911087f,+0.8577286100003f,+0.8448535652497f, +0.8314696123025f,+0.8175848131516f,+0.8032075314806f,+0.7883464276266f, +0.7730104533627f,+0.7572088465065f,+0.7409511253550f,+0.7242470829515f, +0.7071067811865f,+0.6895405447371f,+0.6715589548470f,+0.6531728429538f, +0.6343932841636f,+0.6152315905806f,+0.5956993044924f,+0.5758081914178f, +0.5555702330196f,+0.5349976198871f,+0.5141027441932f,+0.4928981922298f, +0.4713967368260f,+0.4496113296546f,+0.4275550934303f,+0.4052413140050f, +0.3826834323651f,+0.3598950365350f,+0.3368898533922f,+0.3136817403989f, +0.2902846772545f,+0.2667127574749f,+0.2429801799033f,+0.2191012401569f, +0.1950903220161f,+0.1709618887603f,+0.1467304744554f,+0.1224106751992f, +0.0980171403296f,+0.0735645635997f,+0.0490676743274f,+0.0245412285229f, +0.0000000000000f,-0.0245412285229f,-0.0490676743274f,-0.0735645635997f, -0.0980171403296f,-0.1224106751992f,-0.1467304744554f,-0.1709618887603f, -0.1950903220161f,-0.2191012401569f,-0.2429801799033f,-0.2667127574749f, -0.2902846772545f,-0.3136817403989f,-0.3368898533922f,-0.3598950365350f, -0.3826834323651f,-0.4052413140050f,-0.4275550934303f,-0.4496113296546f, -0.4713967368260f,-0.4928981922298f,-0.5141027441932f,-0.5349976198871f, -0.5555702330196f,-0.5758081914178f,-0.5956993044924f,-0.6152315905806f, -0.6343932841636f,-0.6531728429538f,-0.6715589548470f,-0.6895405447371f, -0.7071067811865f,-0.7242470829515f,-0.7409511253550f,-0.7572088465065f, -0.7730104533627f,-0.7883464276266f,-0.8032075314806f,-0.8175848131516f, -0.8314696123025f,-0.8448535652497f,-0.8577286100003f,-0.8700869911087f, -0.8819212643484f,-0.8932243011955f,-0.9039892931234f,-0.9142097557035f, -0.9238795325113f,-0.9329927988347f,-0.9415440651830f,-0.9495281805930f, -0.9569403357322f,-0.9637760657954f,-0.9700312531945f,-0.9757021300385f, -0.9807852804032f,-0.9852776423889f,-0.9891765099648f,-0.9924795345987f, -0.9951847266722f,-0.9972904566787f,-0.9987954562052f,-0.9996988186962f, -1.0000000000000f, }; /* interpolated lookup based cos function, domain 0 to PI only */ static float coslook(float a){ double d=a*(.31830989*(float)COS_LOOKUP_SZ); int i=(int)d; return COS_LOOKUP[i]+ ((float)(d-i))*(COS_LOOKUP[i+1]-COS_LOOKUP[i]); } static final int INVSQ_LOOKUP_SZ=32; static final float[] INVSQ_LOOKUP={ 1.414213562373f,1.392621247646f,1.371988681140f,1.352246807566f, 1.333333333333f,1.315191898443f,1.297771369046f,1.281025230441f, 1.264911064067f,1.249390095109f,1.234426799697f,1.219988562661f, 1.206045378311f,1.192569588000f,1.179535649239f,1.166919931983f, 1.154700538379f,1.142857142857f,1.131370849898f,1.120224067222f, 1.109400392450f,1.098884511590f,1.088662107904f,1.078719779941f, 1.069044967650f,1.059625885652f,1.050451462878f,1.041511287847f, 1.032795558989f,1.024295039463f,1.016001016002f,1.007905261358f, 1.000000000000f, }; /* interpolated 1./sqrt(p) where .5 <= p < 1. */ static float invsqlook(float a){ // System.out.println(a); double d=a*(2.f*(float)INVSQ_LOOKUP_SZ)-(float)INVSQ_LOOKUP_SZ; int i=(int)d; return INVSQ_LOOKUP[i]+ ((float)(d-i))*(INVSQ_LOOKUP[i+1]-INVSQ_LOOKUP[i]); } static final int INVSQ2EXP_LOOKUP_MIN=-32; static final int INVSQ2EXP_LOOKUP_MAX=32; static final float[] INVSQ2EXP_LOOKUP={ 65536.f, 46340.95001f, 32768.f, 23170.47501f, 16384.f, 11585.2375f, 8192.f, 5792.618751f, 4096.f, 2896.309376f, 2048.f, 1448.154688f, 1024.f, 724.0773439f, 512.f, 362.038672f, 256.f, 181.019336f, 128.f, 90.50966799f, 64.f, 45.254834f, 32.f, 22.627417f, 16.f, 11.3137085f, 8.f, 5.656854249f, 4.f, 2.828427125f, 2.f, 1.414213562f, 1.f, 0.7071067812f, 0.5f, 0.3535533906f, 0.25f, 0.1767766953f, 0.125f, 0.08838834765f, 0.0625f, 0.04419417382f, 0.03125f, 0.02209708691f, 0.015625f, 0.01104854346f, 0.0078125f, 0.005524271728f, 0.00390625f, 0.002762135864f, 0.001953125f, 0.001381067932f, 0.0009765625f, 0.000690533966f, 0.00048828125f, 0.000345266983f, 0.000244140625f,0.0001726334915f,0.0001220703125f,8.631674575e-05f, 6.103515625e-05f,4.315837288e-05f,3.051757812e-05f,2.157918644e-05f, 1.525878906e-05f, }; /* interpolated 1./sqrt(p) where .5 <= p < 1. */ static float invsq2explook(int a){ return INVSQ2EXP_LOOKUP[a-INVSQ2EXP_LOOKUP_MIN]; } static final int FROMdB_LOOKUP_SZ=35; static final int FROMdB2_LOOKUP_SZ=32; static final int FROMdB_SHIFT=5; static final int FROMdB2_SHIFT=3; static final int FROMdB2_MASK=31; static final float[] FROMdB_LOOKUP={ 1.f, 0.6309573445f, 0.3981071706f, 0.2511886432f, 0.1584893192f, 0.1f, 0.06309573445f, 0.03981071706f, 0.02511886432f, 0.01584893192f, 0.01f, 0.006309573445f, 0.003981071706f, 0.002511886432f, 0.001584893192f, 0.001f, 0.0006309573445f,0.0003981071706f,0.0002511886432f,0.0001584893192f, 0.0001f,6.309573445e-05f,3.981071706e-05f,2.511886432e-05f, 1.584893192e-05f, 1e-05f,6.309573445e-06f,3.981071706e-06f, 2.511886432e-06f,1.584893192e-06f, 1e-06f,6.309573445e-07f, 3.981071706e-07f,2.511886432e-07f,1.584893192e-07f, }; static final float[] FROMdB2_LOOKUP={ 0.9928302478f, 0.9786445908f, 0.9646616199f, 0.9508784391f, 0.9372921937f, 0.92390007f, 0.9106992942f, 0.8976871324f, 0.8848608897f, 0.8722179097f, 0.8597555737f, 0.8474713009f, 0.835362547f, 0.8234268041f, 0.8116616003f, 0.8000644989f, 0.7886330981f, 0.7773650302f, 0.7662579617f, 0.755309592f, 0.7445176537f, 0.7338799116f, 0.7233941627f, 0.7130582353f, 0.7028699885f, 0.6928273125f, 0.6829281272f, 0.6731703824f, 0.6635520573f, 0.6540711597f, 0.6447257262f, 0.6355138211f, }; /* interpolated lookup based fromdB function, domain -140dB to 0dB only */ static float fromdBlook(float a){ int i=(int)(a*((float)(-(1<=(FROMdB_LOOKUP_SZ<>>FROMdB_SHIFT]*FROMdB2_LOOKUP[i&FROMdB2_MASK]); } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Mdct.java0000644000175000017500000001175111377161311024014 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class Mdct{ static private final float cPI3_8=0.38268343236508977175f; static private final float cPI2_8=0.70710678118654752441f; static private final float cPI1_8=0.92387953251128675613f; int n; int log2n; float[] trig; int[] bitrev; float scale; void init(int n){ bitrev=new int[n/4]; trig=new float[n+n/4]; int n2=n>>>1; log2n=(int)Math.rint(Math.log(n)/Math.log(2)); this.n=n; int AE=0; int AO=1; int BE=AE+n/2; int BO=BE+1; int CE=BE+n/2; int CO=CE+1; // trig lookups... for(int i=0;i>>j!=0;j++) if(((msb>>>j)&i)!=0)acc|=1<>>1; int n4=n>>>2; int n8=n>>>3; // rotate + step 1 { int inO=1; int xO=0; int A=n2; int i; for(i=0;i>>(i+2); int k1=1<<(i+3); int wbase=n2-2; A=0; float[] temp; for(int r=0;r<(k0>>>2);r++){ int w1=wbase; w2=w1-(k0>>1); float AEv= trig[A],wA; float AOv= trig[A+1],wB; wbase-=2; k0++; for(int s=0;s<(2< * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class Floor1 extends FuncFloor{ static final int floor1_rangedb=140; static final int VIF_POSIT=63; void pack(Object i, Buffer opb){ InfoFloor1 info=(InfoFloor1)i; int count=0; int rangebits; int maxposit=info.postlist[1]; int maxclass=-1; /* save out partitions */ opb.write(info.partitions,5); /* only 0 to 31 legal */ for(int j=0;j=vi.books){ //goto err_out; info.free(); return(null); } for(int k=0;k<(1<=vi.books){ //goto err_out; info.free(); return(null); } } } /* read the post list */ info.mult=opb.read(2)+1; /* only 1,2,3,4 legal now */ rangebits=opb.read(4); for(int j=0,k=0;j=(1<info.postlist[sortpointer[k]]){ foo=sortpointer[k]; sortpointer[k]=sortpointer[j]; sortpointer[j]=foo; } } } /* points from sort order back to range number */ for(int j=0;j<_n;j++){ look.forward_index[j]=sortpointer[j]; } /* points from range order to sorted position */ for(int j=0;j<_n;j++){ look.reverse_index[look.forward_index[j]]=j; } /* we actually need the post values too */ for(int j=0;j<_n;j++){ look.sorted_index[j]=info.postlist[look.forward_index[j]]; } /* quantize values to multiplier spec */ switch(info.mult){ case 1: /* 1024 -> 256 */ look.quant_q=256; break; case 2: /* 1024 -> 128 */ look.quant_q=128; break; case 3: /* 1024 -> 86 */ look.quant_q=86; break; case 4: /* 1024 -> 64 */ look.quant_q=64; break; default: look.quant_q=-1; } /* discover our neighbors for decode where we don't use fit flags (that would push the neighbors outward) */ for(int j=0;j<_n-2;j++){ int lo=0; int hi=1; int lx=0; int hx=look.n; int currentx=info.postlist[j+2]; for(int k=0;klx && xcurrentx){ hi=k; hx=x; } } look.loneighbor[j]=lo; look.hineighbor[j]=hi; } return look; } void free_info(Object i){} void free_look(Object i){} void free_state(Object vs){} int forward(Block vb, Object i, float[] in, float[] out, Object vs){return 0;} Object inverse1(Block vb, Object ii, Object memo){ //System.err.println("Floor1.inverse "+i.getClass()+"]"); LookFloor1 look=(LookFloor1)ii; InfoFloor1 info=look.vi; CodeBook[] books=vb.vd.fullbooks; /* unpack wrapped/predicted values from stream */ if(vb.opb.read(1)==1){ int[] fit_value=null; if(memo instanceof int[]){ fit_value=(int[])memo; } if(fit_value==null || fit_value.length>>=csubbits; if(book>=0){ if((fit_value[j+k]=books[book].decode(vb.opb))==-1){ //goto eop; return(null); } } else{ fit_value[j+k]=0; } } j+=cdim; } /* unwrap positive values and reconsitute via linear interpolation */ for(int i=2;i=room){ if(hiroom>loroom){ val = val-loroom; } else{ val = -1-(val-hiroom); } } else{ if((val&1)!=0){ val= -((val+1)>>>1); } else{ val>>=1; } } fit_value[i]=val+predicted; fit_value[look.loneighbor[i-2]]&=0x7fff; fit_value[look.hineighbor[i-2]]&=0x7fff; } else{ fit_value[i]=predicted|0x8000; } } return(fit_value); } // eop: // return(NULL); return(null); } private static int render_point(int x0,int x1,int y0,int y1,int x){ y0&=0x7fff; /* mask off flag */ y1&=0x7fff; { int dy=y1-y0; int adx=x1-x0; int ady=Math.abs(dy); int err=ady*(x-x0); int off=(int)(err/adx); if(dy<0)return(y0-off); return(y0+off); } } int inverse2(Block vb, Object i, Object memo, float[] out){ LookFloor1 look=(LookFloor1)i; InfoFloor1 info=look.vi; int n=vb.vd.vi.blocksizes[vb.mode]/2; if(memo!=null){ /* render the lines */ int[] fit_value=(int[] )memo; int hx=0; int lx=0; int ly=fit_value[0]*info.mult; for(int j=1;j=adx){ err-=adx; y+=sy; } else{ y+=base; } d[x]*=FLOOR_fromdB_LOOKUP[y]; } } static int ilog(int v){ int ret=0; while(v!=0){ ret++; v>>>=1; } return(ret); } private static int ilog2(int v){ int ret=0; while(v>1){ ret++; v>>>=1; } return(ret); } } class InfoFloor1{ static final int VIF_POSIT=63; static final int VIF_CLASS=16; static final int VIF_PARTS=31; int partitions; /* 0 to 31 */ int[] partitionclass=new int[VIF_PARTS]; /* 0 to 15 */ int[] class_dim=new int[VIF_CLASS]; /* 1 to 8 */ int[] class_subs=new int[VIF_CLASS]; /* 0,1,2,3 (bits: 1< * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class AllocChain{ Object ptr; AllocChain next; }; jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Residue2.java0000644000175000017500000000272711377161311024612 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class Residue2 extends Residue0{ int forward(Block vb,Object vl, float[][] in, int ch){ System.err.println("Residue0.forward: not implemented"); return 0; } int inverse(Block vb, Object vl, float[][] in, int[] nonzero, int ch){ //System.err.println("Residue0.inverse"); int i=0; for(i=0;i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class Floor0 extends FuncFloor{ void pack(Object i, Buffer opb){ InfoFloor0 info=(InfoFloor0)i; opb.write(info.order,8); opb.write(info.rate,16); opb.write(info.barkmap,16); opb.write(info.ampbits,6); opb.write(info.ampdB,8); opb.write(info.numbooks-1,4); for(int j=0;j=vi.books){ //free_info(info); return(null); } } return(info); // err_out: // free_info(info); // return(NULL); } Object look(DspState vd, InfoMode mi, Object i){ float scale; Info vi=vd.vi; InfoFloor0 info=(InfoFloor0)i; LookFloor0 look=new LookFloor0(); look.m=info.order; look.n=vi.blocksizes[mi.blockflag]/2; look.ln=info.barkmap; look.vi=info; look.lpclook.init(look.ln,look.m); // we choose a scaling constant so that: // floor(bark(rate/2-1)*C)=mapped-1 // floor(bark(rate/2)*C)=mapped scale=look.ln/toBARK((float)(info.rate/2.)); // the mapping from a linear scale to a smaller bark scale is // straightforward. We do *not* make sure that the linear mapping // does not skip bark-scale bins; the decoder simply skips them and // the encoder may do what it wishes in filling them. They're // necessary in some mapping combinations to keep the scale spacing // accurate look.linearmap=new int[look.n]; for(int j=0;j=look.ln)val=look.ln; // guard against the approximation look.linearmap[j]=val; } return look; } static float toBARK(float f){ return (float)(13.1*Math.atan(.00074*(f))+2.24*Math.atan((f)*(f)*1.85e-8)+1e-4*(f)); } Object state(Object i){ EchstateFloor0 state=new EchstateFloor0(); InfoFloor0 info=(InfoFloor0)i; // a safe size if usually too big (dim==1) state.codewords=new int[info.order]; state.curve=new float[info.barkmap]; state.frameno=-1; return(state); } void free_info(Object i){} void free_look(Object i){} void free_state(Object vs){} int forward(Block vb, Object i, float[] in, float[] out, Object vs){return 0;} float[] lsp=null; int inverse(Block vb, Object i, float[] out){ //System.err.println("Floor0.inverse "+i.getClass()+"]"); LookFloor0 look=(LookFloor0)i; InfoFloor0 info=look.vi; int ampraw=vb.opb.read(info.ampbits); if(ampraw>0){ // also handles the -1 out of data case int maxval=(1<m); for(int j=0; jn); for(int k=0; kn); return(0); } Object inverse1(Block vb, Object i, Object memo){ //System.err.println("Floor0.inverse "+i.getClass()+"]"); LookFloor0 look=(LookFloor0)i; InfoFloor0 info=look.vi; float[] lsp=null; if(memo instanceof float[]){ lsp=(float[])memo; } int ampraw=vb.opb.read(info.ampbits); if(ampraw>0){ // also handles the -1 out of data case int maxval=(1<n); for(int j=0; j>>=1; } return(ret); } static void lsp_to_lpc(float[] lsp, float[] lpc, int m){ int i,j,m2=m/2; float[] O=new float[m2]; float[] E=new float[m2]; float A; float[] Ae=new float[m2+1]; float[] Ao=new float[m2+1]; float B; float[] Be=new float[m2]; float[] Bo=new float[m2]; float temp; // even/odd roots setup for(i=0;im+1 must be less than l->ln, but guard in case we get a bad stream float[] lcurve=new float[Math.max(l.ln*2,l.m*2+2)]; if(amp==0){ //memset(curve,0,sizeof(float)*l->n); for(int j=0; j * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class Mapping0 extends FuncMapping{ static int seq=0; void free_info(Object imap){}; void free_look(Object imap){ /* LookMapping0 l=(LookMapping0)imap; InfoMapping0 info=l.map; if(l!=null){ for(int i=0;idecay[i]); l.decay[i]=null; } //free(l->decay); l.decay=null; } //free(l->time_func); //free(l->floor_func); //free(l->residue_func); //free(l->time_look); //free(l->floor_look); //free(l->residue_look); //f(l->psy_look)free(l->psy_look); l.time_func=null; l.floor_func=null; l.residue_func=null; l.time_look=null; l.floor_look=null; l.residue_look=null; //memset(l,0,sizeof(vorbis_look_mapping0)); //free(l); */ } Object look(DspState vd, InfoMode vm, Object m){ //System.err.println("Mapping0.look"); Info vi=vd.vi; LookMapping0 look=new LookMapping0(); InfoMapping0 info=look.map=(InfoMapping0)m; look.mode=vm; look.time_look=new Object[info.submaps]; look.floor_look=new Object[info.submaps]; look.residue_look=new Object[info.submaps]; /* if(vd.analysisp!=0){ look.floor_state=new Object[vi.channels]; } if(vi.psys!=0){ look.psy_look=new PsyLook[info.submaps]; for(int i=0; ipsy[0] != info->psy[1]){ int psynum=info->psy[0]; look->psy_look[0]=_ogg_calloc(1,sizeof(vorbis_look_psy)); _vp_psy_init(look->psy_look[0],ci->psy_param[psynum], ci->psy_g_param, ci->blocksizes[vm->blockflag]/2,vi->rate); psynum=info->psy[1]; look->psy_look[1]=_ogg_calloc(1,sizeof(vorbis_look_psy)); _vp_psy_init(look->psy_look[1],ci->psy_param[psynum], ci->psy_g_param, ci->blocksizes[vm->blockflag]/2,vi->rate); }else{ int psynum=info->psy[0]; look->psy_look[0]=_ogg_calloc(1,sizeof(vorbis_look_psy)); look->psy_look[1]=look->psy_look[0]; _vp_psy_init(look->psy_look[0],ci->psy_param[psynum], ci->psy_g_param, ci->blocksizes[vm->blockflag]/2,vi->rate); } */ } look.ch=vi.channels; // if(vd->analysisp)drft_init(&look->fft_look,ci->blocksizes[vm->blockflag]); return(look); //return null; } void pack(Info vi, Object imap, Buffer opb){ InfoMapping0 info=(InfoMapping0)imap; /* another 'we meant to do it this way' hack... up to beta 4, we packed 4 binary zeros here to signify one submapping in use. We now redefine that to mean four bitflags that indicate use of deeper features; bit0:submappings, bit1:coupling, bit2,3:reserved. This is backward compatable with all actual uses of the beta code. */ if(info.submaps>1){ opb.write(1,1); opb.write(info.submaps-1,4); } else{ opb.write(0,1); } if(info.coupling_steps>0){ opb.write(1,1); opb.write(info.coupling_steps-1,8); for(int i=0;i1){ for(int i=0;i=vi.channels || testA>=vi.channels){ //goto err_out; info.free(); return(null); } } } if(opb.read(2)>0){ /* 2,3:reserved */ //goto err_out; info.free(); return(null); } if(info.submaps>1){ for(int i=0;i=info.submaps){ //goto err_out; info.free(); return(null); } } } for(int i=0;i=vi.times){ //goto err_out; info.free(); return(null); } info.floorsubmap[i]=opb.read(8); if(info.floorsubmap[i]>=vi.floors){ //goto err_out; info.free(); return(null); } info.residuesubmap[i]=opb.read(8); if(info.residuesubmap[i]>=vi.residues){ //goto err_out; info.free(); return(null); } } return info; //err_out: //free_info(info); //return(NULL); } /* // no time mapping implementation for now static int seq=0; int forward(Block vb, Object l){ DspState vd=vb.vd; Info vi=vd.vi; LookMapping0 look=(LookMapping0)l; InfoMapping0 info=look.map; InfoMode mode=look.mode; int n=vb.pcmend; float[] window=vd.window[vb.W][vb.lW][vb.nW][mode.windowtype]; float[][] pcmbundle=new float[vi.channles][]; int[] nonzero=new int[vi.channels]; // time domain pre-window: NONE IMPLEMENTED // window the PCM data: takes PCM vector, vb; modifies PCM vector for(int i=0;isequence) // memset(decay,0,n*sizeof(float)/2); // perform psychoacoustics; do masking _vp_compute_mask(look.psy_look[submap],pcm,floor,decay); _analysis_output("mdct",seq,pcm,n/2,0,1); _analysis_output("lmdct",seq,pcm,n/2,0,0); _analysis_output("prefloor",seq,floor,n/2,0,1); // perform floor encoding nonzero[i]=look.floor_func[submap]. forward(vb,look.floor_look[submap],floor,floor,look.floor_state[i]); _analysis_output("floor",seq,floor,n/2,0,1); // apply the floor, do optional noise levelling _vp_apply_floor(look->psy_look+submap,pcm,floor); _analysis_output("res",seq++,pcm,n/2,0,0); } // perform residue encoding with residue mapping; this is // multiplexed. All the channels belonging to one submap are // encoded (values interleaved), then the next submap, etc for(int i=0;i=0;i--){ float[] pcmM=vb.pcm[info.coupling_mag[i]]; float[] pcmA=vb.pcm[info.coupling_ang[i]]; for(int j=0;j0){ if(ang>0){ pcmM[j]=mag; pcmA[j]=mag-ang; } else{ pcmA[j]=mag; pcmM[j]=mag+ang; } } else{ if(ang>0){ pcmM[j]=mag; pcmA[j]=mag+ang; } else{ pcmA[j]=mag; pcmM[j]=mag-ang; } } } } // /* compute and apply spectral envelope */ for(int i=0;i1){ ret++; v>>>=1; } return(ret); } } class InfoMapping0{ int submaps; // <= 16 int[] chmuxlist=new int[256]; // up to 256 channels in a Vorbis stream int[] timesubmap=new int[16]; // [mux] int[] floorsubmap=new int[16]; // [mux] submap to floors int[] residuesubmap=new int[16];// [mux] submap to residue int[] psysubmap=new int[16]; // [mux]; encode only int coupling_steps; int[] coupling_mag=new int[256]; int[] coupling_ang=new int[256]; void free(){ chmuxlist=null; timesubmap=null; floorsubmap=null; residuesubmap=null; psysubmap=null; coupling_mag=null; coupling_ang=null; } } class LookMapping0{ InfoMode mode; InfoMapping0 map; Object[] time_look; Object[] floor_look; Object[] floor_state; Object[] residue_look; PsyLook[] psy_look; FuncTime[] time_func; FuncFloor[] floor_func; FuncResidue[] residue_func; int ch; float[][] decay; int lastframe; // if a different mode is called, we need to // invalidate decay and floor state } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/ChainingExample.java0000644000175000017500000000417711377161311026165 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class ChainingExample{ public static void main(String[] arg){ VorbisFile ov=null; try{ ov=new VorbisFile(System.in, null, -1); } catch(Exception e){ System.err.println(e); return; } if(ov.seekable()){ System.out.println("Input bitstream contained "+ov.streams()+" logical bitstream section(s)."); System.out.println("Total bitstream playing time: "+ov.time_total(-1)+" seconds\n"); } else{ System.out.println("Standard input was not seekable."); System.out.println("First logical bitstream information:\n"); } for(int i=0;i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; /* function: LSP (also called LSF) conversion routines The LSP generation code is taken (with minimal modification) from "On the Computation of the LSP Frequencies" by Joseph Rothweiler , available at: http://www2.xtdl.com/~rothwlr/lsfpaper/lsfpage.html ********************************************************************/ class Lsp{ static final float M_PI=(float)(3.1415926539); static void lsp_to_curve(float[] curve, int[] map, int n, int ln, float[] lsp, int m, float amp, float ampoffset){ int i; float wdel=M_PI/ln; for(i=0;i>>1; for(int j=0;j=0x7f800000||(ix==0)){ // 0,inf,nan } else{ if(ix<0x00800000){ // subnormal q*=3.3554432000e+07; // 0x4c000000 hx=Float.floatToIntBits(q); ix=0x7fffffff&hx; qexp=-25; } qexp += ((ix>>>23)-126); hx=(hx&0x807fffff)|0x3f000000; q=Float.intBitsToFloat(hx); } q=Lookup.fromdBlook(amp* Lookup.invsqlook(q)* Lookup.invsq2explook(qexp+m)-ampoffset); do{curve[i++]*=q;} // do{curve[i++]=q;} while(i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class CodeBook{ int dim; // codebook dimensions (elements per vector) int entries; // codebook entries StaticCodeBook c=new StaticCodeBook(); float[] valuelist; // list of dim*entries actual entry values int[] codelist; // list of bitstream codewords for each entry DecodeAux decode_tree; // returns the number of bits int encode(int a, Buffer b){ b.write(codelist[a], c.lengthlist[a]); return(c.lengthlist[a]); } // One the encode side, our vector writers are each designed for a // specific purpose, and the encoder is not flexible without modification: // // The LSP vector coder uses a single stage nearest-match with no // interleave, so no step and no error return. This is specced by floor0 // and doesn't change. // // Residue0 encoding interleaves, uses multiple stages, and each stage // peels of a specific amount of resolution from a lattice (thus we want // to match by threshhold, not nearest match). Residue doesn't *have* to // be encoded that way, but to change it, one will need to add more // infrastructure on the encode side (decode side is specced and simpler) // floor0 LSP (single stage, non interleaved, nearest match) // returns entry number and *modifies a* to the quantization value int errorv(float[] a){ int best=best(a,1); for(int k=0;k8){ for(i=0;i.000001){ System.err.print("read ("+iv[i]+") != written ("+qv[i]+") at position ("+i+")\n"); System.exit(1); } } System.err.print("OK\n"); ptr++; } // The above is the trivial stuff; // now try unquantizing a log scale codebook } */ } class DecodeAux{ int[] tab; int[] tabl; int tabn; int[] ptr0; int[] ptr1; int aux; // number of tree entries } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/PsyLook.java0000644000175000017500000001710311377161311024522 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class PsyLook { int n; PsyInfo vi; float[][][] tonecurves; float[][] peakatt; float[][][] noisecurves; float[] ath; int[] octave; void init(PsyInfo vi, int n, int rate){ /* float rate2=rate/2.; //memset(p,0,sizeof(vorbis_look_psy)); ath=new float[n]; octave=new int[n]; this.vi=vi; this.n=n; // set up the lookups for a given blocksize and sample rate // Vorbis max sample rate is limited by 26 Bark (54kHz) set_curve(ATH_Bark_dB, ath,n,rate); for(int i=0;i12)oc=12; octave[i]=oc; } tonecurves=malloc(13*sizeof(float **)); noisecurves=malloc(13*sizeof(float **)); peakatt=malloc(7*sizeof(float *)); for(int i=0;i<13;i++){ tonecurves[i]=malloc(9*sizeof(float *)); noisecurves[i]=malloc(9*sizeof(float *)); } for(i=0;i<7;i++) peakatt[i]=malloc(5*sizeof(float)); for(i=0;i<13;i++){ for(j=0;j<9;j++){ tonecurves[i][j]=malloc(EHMER_MAX*sizeof(float)); noisecurves[i][j]=malloc(EHMER_MAX*sizeof(float)); } } // OK, yeah, this was a silly way to do it memcpy(tonecurves[0][2],tone_125_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[0][4],tone_125_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[0][6],tone_125_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[0][8],tone_125_100dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[2][2],tone_250_40dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[2][4],tone_250_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[2][6],tone_250_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[2][8],tone_250_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[4][2],tone_500_40dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[4][4],tone_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[4][6],tone_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[4][8],tone_500_100dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[6][2],tone_1000_40dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[6][4],tone_1000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[6][6],tone_1000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[6][8],tone_1000_100dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[8][2],tone_2000_40dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[8][4],tone_2000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[8][6],tone_2000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[8][8],tone_2000_100dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[10][2],tone_4000_40dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[10][4],tone_4000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[10][6],tone_4000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[10][8],tone_4000_100dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[12][2],tone_4000_40dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[12][4],tone_4000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[12][6],tone_8000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(tonecurves[12][8],tone_8000_100dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[0][2],noise_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[0][4],noise_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[0][6],noise_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[0][8],noise_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[2][2],noise_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[2][4],noise_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[2][6],noise_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[2][8],noise_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[4][2],noise_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[4][4],noise_500_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[4][6],noise_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[4][8],noise_500_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[6][2],noise_1000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[6][4],noise_1000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[6][6],noise_1000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[6][8],noise_1000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[8][2],noise_2000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[8][4],noise_2000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[8][6],noise_2000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[8][8],noise_2000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[10][2],noise_4000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[10][4],noise_4000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[10][6],noise_4000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[10][8],noise_4000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[12][2],noise_4000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[12][4],noise_4000_60dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[12][6],noise_4000_80dB_SL,sizeof(float)*EHMER_MAX); memcpy(noisecurves[12][8],noise_4000_80dB_SL,sizeof(float)*EHMER_MAX); setup_curve(tonecurves[0],0,vi.toneatt_125Hz); setup_curve(tonecurves[2],2,vi.toneatt_250Hz); setup_curve(tonecurves[4],4,vi.toneatt_500Hz); setup_curve(tonecurves[6],6,vi.toneatt_1000Hz); setup_curve(tonecurves[8],8,vi.toneatt_2000Hz); setup_curve(tonecurves[10],10,vi.toneatt_4000Hz); setup_curve(tonecurves[12],12,vi.toneatt_8000Hz); setup_curve(noisecurves[0],0,vi.noiseatt_125Hz); setup_curve(noisecurves[2],2,vi.noiseatt_250Hz); setup_curve(noisecurves[4],4,vi.noiseatt_500Hz); setup_curve(noisecurves[6],6,vi.noiseatt_1000Hz); setup_curve(noisecurves[8],8,vi.noiseatt_2000Hz); setup_curve(noisecurves[10],10,vi.noiseatt_4000Hz); setup_curve(noisecurves[12],12,vi.noiseatt_8000Hz); for(i=1;i<13;i+=2){ for(j=0;j<9;j++){ interp_curve_dB(tonecurves[i][j], tonecurves[i-1][j], tonecurves[i+1][j],.5); interp_curve_dB(noisecurves[i][j], noisecurves[i-1][j], noisecurves[i+1][j],.5); } } for(i=0;i<5;i++){ peakatt[0][i]=fromdB(vi.peakatt_125Hz[i]); peakatt[1][i]=fromdB(vi.peakatt_250Hz[i]); peakatt[2][i]=fromdB(vi.peakatt_500Hz[i]); peakatt[3][i]=fromdB(vi.peakatt_1000Hz[i]); peakatt[4][i]=fromdB(vi.peakatt_2000Hz[i]); peakatt[5][i]=fromdB(vi.peakatt_4000Hz[i]); peakatt[6][i]=fromdB(vi.peakatt_8000Hz[i]); } */ } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Block.java0000644000175000017500000001110411377161311024147 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; public class Block{ ///necessary stream state for linking to the framing abstraction float[][] pcm=new float[0][]; // this is a pointer into local storage Buffer opb=new Buffer(); int lW; int W; int nW; int pcmend; int mode; int eofflag; long granulepos; long sequence; DspState vd; // For read-only access of configuration // local storage to avoid remallocing; it's up to the mapping to // structure it //byte[] localstore; //int localtop; //int localalloc; //int totaluse; //AllocChain reap; // bitmetrics for the frame int glue_bits; int time_bits; int floor_bits; int res_bits; public Block(DspState vd){ this.vd=vd; // localalloc=0; // localstore=null; if(vd.analysisp!=0){ opb.writeinit(); } } public void init(DspState vd){ this.vd=vd; } // int alloc(int bytes){ // bytes=(bytes+(8-1))&(~(8-1)); // if(bytes+localtop>localalloc){ // if(localstore!=null){ // AllocChain link=new AllocChain(); // totaluse+=localtop; // link.next=reap; // link.ptr=localstore; // reap=link; // } // // highly conservative // localalloc=bytes; // localstore=new byte[localalloc]; // localtop=0; // } // { // int foo=localtop; // //void *ret=(void *)(((char *)vb->localstore)+vb->localtop); // localtop+=bytes; // return foo; // } // } // reap the chain, pull the ripcord // void ripcord(){ // // reap the chain // while(reap!=null){ // AllocChain next=reap.next; // //free(reap->ptr); // reap.ptr=null; // //memset(reap,0,sizeof(struct alloc_chain)); // //free(reap); // reap=next; // } // // consolidate storage // if(totaluse!=0){ // //vb->localstore=realloc(vb->localstore,vb->totaluse+vb->localalloc); // byte[] foo=new byte[totaluse+localalloc]; // System.arraycopy(localstore, 0, foo, 0, localstore.length); // localstore=foo; // localalloc+=totaluse; // totaluse=0; // } // // pull the ripcord // localtop=0; // reap=null; // } public int clear(){ if(vd!=null){ if(vd.analysisp!=0){ opb.writeclear(); } } //ripcord(); //if(localstore!=null) // localstore=null; //memset(vb,0,sizeof(vorbis_block)); return(0); } public int synthesis(Packet op){ Info vi=vd.vi; // first things first. Make sure decode is ready // ripcord(); opb.readinit(op.packet_base, op.packet, op.bytes); // Check the packet type if(opb.read(1)!=0){ // Oops. This is not an audio data packet return(-1); } // read our mode and pre/post windowsize int _mode=opb.read(vd.modebits); if(_mode==-1)return(-1); mode=_mode; W=vi.mode_param[mode].blockflag; if(W!=0){ lW=opb.read(1); nW=opb.read(1); if(nW==-1) return(-1); } else{ lW=0; nW=0; } // more setup granulepos=op.granulepos; sequence=op.packetno-3; // first block is third packet eofflag=op.e_o_s; // alloc pcm passback storage pcmend=vi.blocksizes[W]; //pcm=alloc(vi.channels); if(pcm.length * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class EncodeAuxNearestMatch{ int[] ptr0; int[] ptr1; int[] p; // decision points (each is an entry) int[] q; // decision points (each is an entry) int aux; // number of tree entries int alloc; } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Residue1.java0000644000175000017500000000302611377161311024602 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class Residue1 extends Residue0{ int forward(Block vb,Object vl, float[][] in, int ch){ System.err.println("Residue0.forward: not implemented"); return 0; } int inverse(Block vb, Object vl, float[][] in, int[] nonzero, int ch){ //System.err.println("Residue0.inverse"); int used=0; for(int i=0; i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; public class DspState{ static final float M_PI=3.1415926539f; static final int VI_TRANSFORMB=1; static final int VI_WINDOWB=1; int analysisp; Info vi; int modebits; float[][] pcm; //float[][] pcmret; int pcm_storage; int pcm_current; int pcm_returned; float[] multipliers; int envelope_storage; int envelope_current; int eofflag; int lW; int W; int nW; int centerW; long granulepos; long sequence; long glue_bits; long time_bits; long floor_bits; long res_bits; // local lookup storage //!! Envelope ve=new Envelope(); // envelope //float **window[2][2][2]; // block, leadin, leadout, type float[][][][][] window; // block, leadin, leadout, type //vorbis_look_transform **transform[2]; // block, type Object[][] transform; CodeBook[] fullbooks; // backend lookups are tied to the mode, not the backend or naked mapping Object[] mode; // local storage, only used on the encoding side. This way the // application does not need to worry about freeing some packets' // memory and not others'; packet storage is always tracked. // Cleared next call to a _dsp_ function byte[] header; byte[] header1; byte[] header2; public DspState(){ transform=new Object[2][]; window=new float[2][][][][]; window[0]=new float[2][][][]; window[0][0]=new float[2][][]; window[0][1]=new float[2][][]; window[0][0][0]=new float[2][]; window[0][0][1]=new float[2][]; window[0][1][0]=new float[2][]; window[0][1][1]=new float[2][]; window[1]=new float[2][][][]; window[1][0]=new float[2][][]; window[1][1]=new float[2][][]; window[1][0][0]=new float[2][]; window[1][0][1]=new float[2][]; window[1][1][0]=new float[2][]; window[1][1][1]=new float[2][]; } private static int ilog2(int v){ int ret=0; while(v>1){ ret++; v>>>=1; } return(ret); } static float[] window(int type, int window, int left, int right){ float[] ret=new float[window]; switch(type){ case 0: // The 'vorbis window' (window 0) is sin(sin(x)*sin(x)*2pi) { int leftbegin=window/4-left/2; int rightbegin=window-window/4-right/2; for(int i=0;i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class InfoMode{ int blockflag; int windowtype; int transformtype; int mapping; } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/VorbisFile.java0000644000175000017500000011000111377161311025155 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; import java.io.InputStream; import java.io.IOException; public class VorbisFile{ static final int CHUNKSIZE=8500; static final int SEEK_SET=0; static final int SEEK_CUR=1; static final int SEEK_END=2; static final int OV_FALSE=-1; static final int OV_EOF=-2; static final int OV_HOLE=-3; static final int OV_EREAD=-128; static final int OV_EFAULT=-129; static final int OV_EIMPL=-130; static final int OV_EINVAL=-131; static final int OV_ENOTVORBIS=-132; static final int OV_EBADHEADER=-133; static final int OV_EVERSION=-134; static final int OV_ENOTAUDIO=-135; static final int OV_EBADPACKET=-136; static final int OV_EBADLINK=-137; static final int OV_ENOSEEK=-138; InputStream datasource; boolean seekable=false; long offset; long end; SyncState oy=new SyncState(); int links; long[] offsets; long[] dataoffsets; int[] serialnos; long[] pcmlengths; Info[] vi; Comment[] vc; // Decoding working state local storage long pcm_offset; boolean decode_ready=false; int current_serialno; int current_link; float bittrack; float samptrack; StreamState os=new StreamState(); // take physical pages, weld into a logical // stream of packets DspState vd=new DspState(); // central working state for // the packet->PCM decoder Block vb=new Block(vd); // local working space for packet->PCM decode //ov_callbacks callbacks; public VorbisFile(String file) throws JOrbisException { super(); InputStream is=null; try{ is=new SeekableInputStream(file); int ret=open(is, null, 0); if(ret==-1){ throw new JOrbisException("VorbisFile: open return -1"); } } catch(Exception e){ throw new JOrbisException("VorbisFile: "+e.toString()); } finally{ if(is != null){ try { is.close(); } catch (IOException e) { e.printStackTrace(); } } } } public VorbisFile(InputStream is, byte[] initial, int ibytes) throws JOrbisException { super(); int ret=open(is, initial, ibytes); if(ret==-1){ } } private int get_data(){ int index=oy.buffer(CHUNKSIZE); byte[] buffer=oy.data; // int bytes=callbacks.read_func(buffer, index, 1, CHUNKSIZE, datasource); int bytes=0; try{ bytes=datasource.read(buffer, index, CHUNKSIZE); } catch(Exception e){ //System.err.println(e); return OV_EREAD; } oy.wrote(bytes); if(bytes==-1){ // System.out.println("bytes="+bytes); bytes=0; } return bytes; } private void seek_helper(long offst){ //callbacks.seek_func(datasource, offst, SEEK_SET); fseek(datasource, offst, SEEK_SET); this.offset=offst; oy.reset(); } private int get_next_page(Page page, long boundary){ if(boundary>0) boundary+=offset; while(true){ int more; if(boundary>0 && offset>=boundary)return OV_FALSE; more=oy.pageseek(page); if(more<0){offset-=more;} else{ if(more==0){ if(boundary==0)return OV_FALSE; // if(get_data()<=0)return -1; int ret=get_data(); if(ret==0) return OV_EOF; if(ret<0) return OV_EREAD; } else{ int ret=(int)offset; //!!! offset+=more; return ret; } } } } private int get_prev_page(Page page) throws JOrbisException { long begin=offset; //!!! int ret; int offst=-1; while(offst==-1){ begin-=CHUNKSIZE; if(begin<0) begin=0; seek_helper(begin); while(offset=0)next=ret; } else{ searched=ret+page.header_len+page.body_len; } } seek_helper(next); ret=get_next_page(page, -1); if(ret==OV_EREAD) return OV_EREAD; if(searched>=end || ret==-1){ links=m+1; offsets=new long[m+2]; offsets[m+1]=searched; } else{ ret=bisect_forward_serialno(next, offset, end, page.serialno(), m+1); if(ret==OV_EREAD)return OV_EREAD; } offsets[m]=begin; return 0; } // uses the local ogg_stream storage in vf; this is important for // non-streaming input sources int fetch_headers(Info vi, Comment vc, int[] serialno, Page og_ptr){ //System.err.println("fetch_headers"); Page og=new Page(); Packet op=new Packet(); int ret; if(og_ptr==null){ ret=get_next_page(og, CHUNKSIZE); if(ret==OV_EREAD)return OV_EREAD; if(ret<0) return OV_ENOTVORBIS; og_ptr=og; } if(serialno!=null)serialno[0]=og_ptr.serialno(); os.init(og_ptr.serialno()); // extract the initial header from the first page and verify that the // Ogg bitstream is in fact Vorbis data vi.init(); vc.init(); int i=0; while(i<3){ os.pagein(og_ptr); while(i<3){ int result=os.packetout(op); if(result==0)break; if(result==-1){ //System.err.println("Corrupt header in logical bitstream."); //goto bail_header; vi.clear(); vc.clear(); os.clear(); return -1; } if(vi.synthesis_headerin(vc, op)!=0){ //System.err.println("Illegal header in logical bitstream."); //goto bail_header; vi.clear(); vc.clear(); os.clear(); return -1; } i++; } if(i<3) if(get_next_page(og_ptr, 1)<0){ //System.err.println("Missing header in logical bitstream."); //goto bail_header; vi.clear(); vc.clear(); os.clear(); return -1; } } return 0; // bail_header: // vorbis_info_clear(vi); // vorbis_comment_clear(vc); // ogg_stream_clear(&vf->os); // return -1; } // last step of the OggVorbis_File initialization; get all the // vorbis_info structs and PCM positions. Only called by the seekable // initialization (local stream storage is hacked slightly; pay // attention to how that's done) void prefetch_all_headers(Info first_i,Comment first_c, int dataoffset) throws JOrbisException { Page og=new Page(); int ret; vi=new Info[links]; vc=new Comment[links]; dataoffsets=new long[links]; pcmlengths=new long[links]; serialnos=new int[links]; for(int i=0;ivi+i,first_i,sizeof(vorbis_info)); vc[i]=first_c; //memcpy(vf->vc+i,first_c,sizeof(vorbis_comment)); dataoffsets[i]=dataoffset; } else{ // seek to the location of the initial header seek_helper(offsets[i]); //!!! vi[i]=new Info(); vc[i]=new Comment(); if(fetch_headers(vi[i], vc[i], null, null)==-1){ //System.err.println("Error opening logical bitstream #"+(i+1)+"\n"); dataoffsets[i]=-1; } else{ dataoffsets[i]=offset; os.clear(); } } // get the serial number and PCM length of this link. To do this, // get the last page of the stream { long end=offsets[i+1]; //!!! seek_helper(end); while(true){ ret=get_prev_page(og); if(ret==-1){ // this should not be possible //System.err.println("Could not find last page of logical "+ // "bitstream #"+(i)+"\n"); vi[i].clear(); vc[i].clear(); break; } if(og.granulepos()!=-1){ serialnos[i]=og.serialno(); pcmlengths[i]=og.granulepos(); break; } } } } } int make_decode_ready(){ if(decode_ready)System.exit(1); vd.synthesis_init(vi[0]); vb.init(vd); decode_ready=true; return(0); } int open_seekable() throws JOrbisException { Info initial_i=new Info(); Comment initial_c=new Comment(); int serialno; long end; int ret; int dataoffset; Page og=new Page(); // is this even vorbis...? int[] foo=new int[1]; ret=fetch_headers(initial_i, initial_c, foo, null); serialno=foo[0]; dataoffset=(int)offset; //!! os.clear(); if(ret==-1)return(-1); // we can seek, so set out learning all about this file seekable=true; //(callbacks.seek_func)(datasource, 0, SEEK_END); fseek(datasource, 0, SEEK_END); //offset=end=(callbacks.tell_func)(datasource); offset=ftell(datasource); end=offset; // We get the offset for the last page of the physical bitstream. // Most OggVorbis files will contain a single logical bitstream end=get_prev_page(og); // moer than one logical bitstream? if(og.serialno()!=serialno){ // Chained bitstream. Bisect-search each logical bitstream // section. Do so based on serial number only if(bisect_forward_serialno(0,0,end+1,serialno,0)<0){ clear(); return OV_EREAD; } } else{ // Only one logical bitstream if(bisect_forward_serialno(0,end,end+1,serialno,0)<0){ clear(); return OV_EREAD; } } prefetch_all_headers(initial_i, initial_c, dataoffset); return(raw_seek(0)); } int open_nonseekable(){ //System.err.println("open_nonseekable"); // we cannot seek. Set up a 'single' (current) logical bitstream entry links=1; vi=new Info[links]; vi[0]=new Info(); // ?? vc=new Comment[links]; vc[0]=new Comment(); // ?? bug? // Try to fetch the headers, maintaining all the storage int[]foo=new int[1]; if(fetch_headers(vi[0], vc[0], foo, null)==-1)return(-1); current_serialno=foo[0]; make_decode_ready(); return 0; } // clear out the current logical bitstream decoder void decode_clear(){ os.clear(); vd.clear(); vb.clear(); decode_ready=false; bittrack=0.f; samptrack=0.f; } // fetch and process a packet. Handles the case where we're at a // bitstream boundary and dumps the decoding machine. If the decoding // machine is unloaded, it loads it. It also keeps pcm_offset up to // date (seek and read both use this. seek uses a special hack with // readp). // // return: -1) hole in the data (lost packet) // 0) need more date (only if readp==0)/eof // 1) got a packet int process_packet(int readp){ Page og=new Page(); // handle one packet. Try to fetch it from current stream state // extract packets from page while(true){ // process a packet if we can. If the machine isn't loaded, // neither is a page if(decode_ready){ Packet op=new Packet(); int result=os.packetout(op); long granulepos; // if(result==-1)return(-1); // hole in the data. For now, swallow // and go. We'll need to add a real // error code in a bit. if(result>0){ // got a packet. process it granulepos=op.granulepos; if(vb.synthesis(op)==0){ // lazy check for lazy // header handling. The // header packets aren't // audio, so if/when we // submit them, // vorbis_synthesis will // reject them // suck in the synthesis data and track bitrate { int oldsamples=vd.synthesis_pcmout(null, null); vd.synthesis_blockin(vb); samptrack+=vd.synthesis_pcmout(null, null)-oldsamples; bittrack+=op.bytes*8; } // update the pcm offset. if(granulepos!=-1 && op.e_o_s==0){ int link=(seekable?current_link:0); int samples; // this packet has a pcm_offset on it (the last packet // completed on a page carries the offset) After processing // (above), we know the pcm position of the *last* sample // ready to be returned. Find the offset of the *first* // // As an aside, this trick is inaccurate if we begin // reading anew right at the last page; the end-of-stream // granulepos declares the last frame in the stream, and the // last packet of the last page may be a partial frame. // So, we need a previous granulepos from an in-sequence page // to have a reference point. Thus the !op.e_o_s clause above samples=vd.synthesis_pcmout(null, null); granulepos-=samples; for(int i=0;icallbacks.close_func)(vf->datasource); //memset(vf,0,sizeof(OggVorbis_File)); return(0); } static int fseek(InputStream fis, //int64_t off, long off, int whence){ if(fis instanceof SeekableInputStream){ SeekableInputStream sis=(SeekableInputStream)fis; try{ if(whence==SEEK_SET){ sis.seek(off); } else if(whence==SEEK_END){ sis.seek(sis.getLength()-off); } else{ //System.out.println("seek: "+whence+" is not supported"); } } catch(Exception e){ } return 0; } try{ if(whence==0){ fis.reset(); } fis.skip(off); } catch(Exception e){return -1;} return 0; } static long ftell(InputStream fis){ try{ if(fis instanceof SeekableInputStream){ SeekableInputStream sis=(SeekableInputStream)fis; return (sis.tell()); } } catch(Exception e){ } return 0; } // inspects the OggVorbis file and finds/documents all the logical // bitstreams contained in it. Tries to be tolerant of logical // bitstream sections that are truncated/woogie. // // return: -1) error // 0) OK int open(InputStream is, byte[] initial, int ibytes) throws JOrbisException { //callbacks callbacks = { // (size_t (*)(void *, size_t, size_t, void *)) fread, // (int (*)(void *, int64_t, int)) _fseek, // (int (*)(void *)) fclose, // (long (*)(void *)) ftell // }; return open_callbacks(is, initial, ibytes//, callbacks ); } int open_callbacks(InputStream is, byte[] initial, int ibytes//, callbacks callbacks ) throws JOrbisException { int ret; datasource=is; //callbacks = _callbacks; // init the framing state oy.init(); // perhaps some data was previously read into a buffer for testing // against other stream types. Allow initialization from this // previously read data (as we may be reading from a non-seekable // stream) if(initial!=null){ int index=oy.buffer(ibytes); System.arraycopy(initial, 0, oy.data, index, ibytes); oy.wrote(ibytes); } // can we seek? Stevens suggests the seek test was portable if(is instanceof SeekableInputStream){ ret=open_seekable(); } else{ ret=open_nonseekable(); } if(ret!=0){ datasource=null; clear(); } return ret; } // How many logical bitstreams in this physical bitstream? public int streams(){ return links; } // Is the FILE * associated with vf seekable? public boolean seekable(){ return seekable; } // returns the bitrate for a given logical bitstream or the entire // physical bitstream. If the file is open for random access, it will // find the *actual* average bitrate. If the file is streaming, it // returns the nominal bitrate (if set) else the average of the // upper/lower bounds (if set) else -1 (unset). // // If you want the actual bitrate field settings, get them from the // vorbis_info structs public int bitrate(int i){ if(i>=links)return(-1); if(!seekable && i!=0)return(bitrate(0)); if(i<0){ long bits=0; for(int j=0;j0){ return vi[i].bitrate_nominal; } else{ if(vi[i].bitrate_upper>0){ if(vi[i].bitrate_lower>0){ return (vi[i].bitrate_upper+vi[i].bitrate_lower)/2; }else{ return vi[i].bitrate_upper; } } return(-1); } } } } // returns the actual bitrate since last call. returns -1 if no // additional data to offer since last call (or at beginning of stream) public int bitrate_instant(){ int _link=(seekable?current_link:0); if(samptrack==0)return(-1); int ret=(int)(bittrack/samptrack*vi[_link].rate+.5); bittrack=0.f; samptrack=0.f; return(ret); } public int serialnumber(int i){ if(i>=links)return(-1); if(!seekable && i>=0)return(serialnumber(-1)); if(i<0){ return(current_serialno); } else{ return(serialnos[i]); } } // returns: total raw (compressed) length of content if i==-1 // raw (compressed) length of that logical bitstream for i==0 to n // -1 if the stream is not seekable (we can't know the length) public long raw_total(int i){ if(!seekable || i>=links)return(-1); if(i<0){ long acc=0; // bug? for(int j=0;j=links)return(-1); if(i<0){ long acc=0; for(int j=0;j=links)return(-1); if(i<0){ float acc=0; for(int j=0;joffsets[links]){ //goto seek_error; pcm_offset=-1; decode_clear(); return -1; } // clear out decoding machine state pcm_offset=-1; decode_clear(); // seek seek_helper(pos); // we need to make sure the pcm_offset is set. We use the // _fetch_packet helper to process one packet with readp set, then // call it until it returns '0' with readp not set (the last packet // from a page has the 'granulepos' field set, and that's how the // helper updates the offset switch(process_packet(1)){ case 0: // oh, eof. There are no packets remaining. Set the pcm offset to // the end of file pcm_offset=pcm_total(-1); return(0); case -1: // error! missing data or invalid bitstream structure //goto seek_error; pcm_offset=-1; decode_clear(); return -1; default: // all OK break; } while(true){ switch(process_packet(0)){ case 0: // the offset is set. If it's a bogus bitstream with no offset // information, it's not but that's not our fault. We still run // gracefully, we're just missing the offset return(0); case -1: // error! missing data or invalid bitstream structure //goto seek_error; pcm_offset=-1; decode_clear(); return -1; default: // continue processing packets break; } } // seek_error: // dump the machine so we're in a known state //pcm_offset=-1; //decode_clear(); //return -1; } // seek to a sample offset relative to the decompressed pcm stream // returns zero on success, nonzero on failure public int pcm_seek(long pos){ int link=-1; long total=pcm_total(-1); if(!seekable)return(-1); // don't dump machine if we can't seek if(pos<0 || pos>total){ //goto seek_error; pcm_offset=-1; decode_clear(); return -1; } // which bitstream section does this pcm offset occur in? for(link=links-1;link>=0;link--){ total-=pcmlengths[link]; if(pos>=total)break; } // search within the logical bitstream for the page with the highest // pcm_pos preceeding (or equal to) pos. There is a danger here; // missing pages or incorrect frame number information in the // bitstream could make our task impossible. Account for that (it // would be an error condition) { long target=pos-total; long end=offsets[link+1]; long begin=offsets[link]; int best=(int)begin; Page og=new Page(); while(begin=pos){ //goto seek_error; pcm_offset=-1; decode_clear(); return -1; } if(pos>pcm_total(-1)){ //goto seek_error; pcm_offset=-1; decode_clear(); return -1; } // discard samples until we reach the desired position. Crossing a // logical bitstream boundary with abandon is OK. while(pcm_offsettarget)samples=target; vd.synthesis_read(samples); pcm_offset+=samples; if(samplestime_total){ //goto seek_error; pcm_offset=-1; decode_clear(); return -1; } // which bitstream section does this time offset occur in? for(link=links-1;link>=0;link--){ pcm_total-=pcmlengths[link]; time_total-=time_total(link); if(seconds>=time_total)break; } // enough information to convert time offset to pcm offset { long target=(long)(pcm_total+(seconds-time_total)*vi[link].rate); return(pcm_seek(target)); } //seek_error: // dump machine so we're in a known state //pcm_offset=-1; //decode_clear(); //return -1; } // tell the current stream offset cursor. Note that seek followed by // tell will likely not give the set offset due to caching public long raw_tell(){ return(offset); } // return PCM offset (sample) of next PCM sample to be read public long pcm_tell(){ return(pcm_offset); } // return time offset (seconds) of next PCM sample to be read public float time_tell(){ // translate time to PCM position and call pcm_seek int link=-1; long pcm_total=0; float time_total=0.f; if(seekable){ pcm_total=pcm_total(-1); time_total=time_total(-1); // which bitstream section does this time offset occur in? for(link=links-1;link>=0;link--){ pcm_total-=pcmlengths[link]; time_total-=time_total(link); if(pcm_offset>=pcm_total)break; } } return((float)time_total+(float)(pcm_offset-pcm_total)/vi[link].rate); } // link: -1) return the vorbis_info struct for the bitstream section // currently being decoded // 0-n) to request information for a specific bitstream section // // In the case of a non-seekable bitstream, any call returns the // current bitstream. NULL in the case that the machine is not // initialized public Info getInfo(int link){ if(seekable){ if(link<0){ if(decode_ready){ return vi[current_link]; } else{ return null; } } else{ if(link>=links){ return null; } else{ return vi[link]; } } } else{ if(decode_ready){ return vi[0]; } else{ return null; } } } public Comment getComment(int link){ if(seekable){ if(link<0){ if(decode_ready){ return vc[current_link]; } else{ return null; } } else{ if(link>=links){ return null;} else{ return vc[link]; } } } else{ if(decode_ready){ return vc[0]; } else{ return null; } } } int host_is_big_endian() { return 1; // short pattern = 0xbabe; // unsigned char *bytewise = (unsigned char *)&pattern; // if (bytewise[0] == 0xba) return 1; // assert(bytewise[0] == 0xbe); // return 0; } // up to this point, everything could more or less hide the multiple // logical bitstream nature of chaining from the toplevel application // if the toplevel application didn't particularly care. However, at // the point that we actually read audio back, the multiple-section // nature must surface: Multiple bitstream sections do not necessarily // have to have the same number of channels or sampling rate. // // read returns the sequential logical bitstream number currently // being decoded along with the PCM data in order that the toplevel // application can take action on channel/sample rate changes. This // number will be incremented even for streamed (non-seekable) streams // (for seekable streams, it represents the actual logical bitstream // index within the physical bitstream. Note that the accessor // functions above are aware of this dichotomy). // // input values: buffer) a buffer to hold packed PCM data for return // length) the byte length requested to be placed into buffer // bigendianp) should the data be packed LSB first (0) or // MSB first (1) // word) word size for output. currently 1 (byte) or // 2 (16 bit short) // // return values: -1) error/hole in data // 0) EOF // n) number of bytes of PCM actually returned. The // below works on a packet-by-packet basis, so the // return length is not related to the 'length' passed // in, just guaranteed to fit. // // *section) set to the logical bitstream number int read(byte[] buffer,int length, int bigendianp, int word, int sgned, int[] bitstream){ int host_endian = host_is_big_endian(); int index=0; while(true){ if(decode_ready){ float[][] pcm; float[][][] _pcm=new float[1][][]; int[] _index=new int[getInfo(-1).channels]; int samples=vd.synthesis_pcmout(_pcm, _index); pcm=_pcm[0]; if(samples!=0){ // yay! proceed to pack data into the byte buffer int channels=getInfo(-1).channels; int bytespersample=word * channels; if(samples>length/bytespersample)samples=length/bytespersample; // a tight loop to pack each size { int val; if(word==1){ int off=(sgned!=0?0:128); for(int j=0;j127)val=127; else if(val<-128)val=-128; buffer[index++]=(byte)(val+off); } } } else{ int off=(sgned!=0?0:32768); if(host_endian==bigendianp){ if(sgned!=0){ for(int i=0;i32767)val=32767; else if(val<-32768)val=-32768; buffer[dest]=(byte)(val>>>8); buffer[dest+1]=(byte)(val); dest+=channels*2; } } } else{ for(int i=0;i32767)val=32767; else if(val<-32768)val=-32768; buffer[dest]=(byte)((val+off)>>>8); buffer[dest+1]=(byte)(val+off); dest+=channels*2; } } } } else if(bigendianp!=0){ for(int j=0;j32767)val=32767; else if(val<-32768)val=-32768; val+=off; buffer[index++]=(byte)(val>>>8); buffer[index++]=(byte)val; } } } else{ //int val; for(int j=0;j32767)val=32767; else if(val<-32768)val=-32768; val+=off; buffer[index++]=(byte)val; buffer[index++]=(byte)(val>>>8); } } } } } vd.synthesis_read(samples); pcm_offset+=samples; if(bitstream!=null)bitstream[0]=current_link; return(samples*bytespersample); } } // suck in another packet switch(process_packet(1)){ case 0: return(0); case -1: return -1; default: break; } } } public Info[] getInfo(){return vi;} public Comment[] getComment(){return vc;} /* public static void main(String[] arg){ try{ VorbisFile foo=new VorbisFile(arg[0]); int links=foo.streams(); System.out.println("links="+links); Comment[] comment=foo.getComment(); Info[] info=foo.getInfo(); for(int i=0; i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class EncodeAuxThreshMatch{ float[] quantthresh; int[] quantmap; int quantvals; int threshvals; } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Residue0.java0000644000175000017500000002762311377161311024612 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; class Residue0 extends FuncResidue{ void pack(Object vr, Buffer opb){ InfoResidue0 info=(InfoResidue0)vr; int acc=0; opb.write(info.begin,24); opb.write(info.end,24); opb.write(info.grouping-1,24); /* residue vectors to group and code with a partitioned book */ opb.write(info.partitions-1,6); /* possible partition choices */ opb.write(info.groupbook,8); /* group huffman book */ /* secondstages is a bitmask; as encoding progresses pass by pass, a bitmask of one indicates this partition class has bits to write this pass */ for(int j=0;j3){ /* yes, this is a minor hack due to not thinking ahead */ opb.write(info.secondstages[j],3); opb.write(1,1); opb.write(info.secondstages[j]>>>3,5); } else{ opb.write(info.secondstages[j],4); /* trailing zero */ } acc+=icount(info.secondstages[j]); } for(int j=0;j=vi.books){ free_info(info); return(null); } for(int j=0;j=vi.books){ free_info(info); return(null); } } return(info); // errout: // free_info(info); // return(NULL); } Object look(DspState vd, InfoMode vm, Object vr){ InfoResidue0 info=(InfoResidue0)vr; LookResidue0 look=new LookResidue0(); int acc=0; int dim; int maxstage=0; look.info=info; look.map=vm.mapping; look.parts=info.partitions; look.fullbooks=vd.fullbooks; look.phrasebook=vd.fullbooks[info.groupbook]; dim=look.phrasebook.dim; look.partbooks=new int[look.parts][]; for(int j=0;jmaxstage)maxstage=stages; look.partbooks[j]=new int[stages]; for(int k=0; k>>=1; } return(ret); } private static int icount(int v){ int ret=0; while(v!=0){ ret+=(v&1); v>>>=1; } return(ret); } } class LookResidue0 { InfoResidue0 info; int map; int parts; int stages; CodeBook[] fullbooks; CodeBook phrasebook; int[][] partbooks; // CodeBook[][] partbooks; int partvals; int[][] decodemap; int postbits; int phrasebits; // int[][] frames; int frames; } class InfoResidue0{ // block-partitioned VQ coded straight residue int begin; int end; // first stage (lossless partitioning) int grouping; // group n vectors per partition int partitions; // possible codebooks for a partition int groupbook; // huffbook for partitioning int[] secondstages=new int[64]; // expanded out to pointers in lookup int[] booklist=new int[256]; // list of second stage books // encode-only heuristic settings float[] entmax=new float[64]; // book entropy threshholds float[] ampmax=new float[64]; // book amp threshholds int[] subgrp=new int[64]; // book heuristic subgroup size int[] blimit=new int[64]; // subgroup position limits } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/Drft.java0000644000175000017500000005467411377161311024037 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; class Drft{ int n; float[] trigcache; int[] splitcache; void backward(float[] data){ //System.err.println("Drft.backward"); if(n==1)return; drftb1(n,data,trigcache,trigcache,n,splitcache); } void init(int n){ //System.err.println("Drft.init"); this.n=n; trigcache=new float[3*n]; splitcache=new int[32]; fdrffti(n, trigcache, splitcache); } void clear(){ //System.err.println("Drft.clear"); if(trigcache!=null)trigcache=null; if(splitcache!=null)splitcache=null; // memset(l,0,sizeof(drft_lookup)); } static int[] ntryh = { 4,2,3,5 }; static float tpi = 6.28318530717958647692528676655900577f; static float hsqt2 = .70710678118654752440084436210485f; static float taui = .86602540378443864676372317075293618f; static float taur = -.5f; static float sqrt2 = 1.4142135623730950488016887242097f; static void drfti1(int n, float[] wa, int index, int[] ifac){ float arg,argh,argld,fi; int ntry=0,i,j=-1; int k1, l1, l2, ib; int ld, ii, ip, is, nq, nr; int ido, ipm, nfm1; int nl=n; int nf=0; int state=101; loop: while(true){ switch(state){ case 101: j++; if (j < 4) ntry=ntryh[j]; else ntry+=2; case 104: nq=nl/ntry; nr=nl-ntry*nq; if(nr!=0){ state=101; break; } nf++; ifac[nf+1]=ntry; nl=nq; if(ntry!=2){ state=107; break; } if(nf==1){ state=107; break; } for(i=1;i * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; // psychoacoustic setup class PsyInfo{ int athp; int decayp; int smoothp; int noisefitp; int noisefit_subblock; float noisefit_threshdB; float ath_att; int tonemaskp; float[] toneatt_125Hz=new float[5]; float[] toneatt_250Hz=new float[5]; float[] toneatt_500Hz=new float[5]; float[] toneatt_1000Hz=new float[5]; float[] toneatt_2000Hz=new float[5]; float[] toneatt_4000Hz=new float[5]; float[] toneatt_8000Hz=new float[5]; int peakattp; float[] peakatt_125Hz=new float[5]; float[] peakatt_250Hz=new float[5]; float[] peakatt_500Hz=new float[5]; float[] peakatt_1000Hz=new float[5]; float[] peakatt_2000Hz=new float[5]; float[] peakatt_4000Hz=new float[5]; float[] peakatt_8000Hz=new float[5]; int noisemaskp; float[] noiseatt_125Hz=new float[5]; float[] noiseatt_250Hz=new float[5]; float[] noiseatt_500Hz=new float[5]; float[] noiseatt_1000Hz=new float[5]; float[] noiseatt_2000Hz=new float[5]; float[] noiseatt_4000Hz=new float[5]; float[] noiseatt_8000Hz=new float[5]; float max_curve_dB; float attack_coeff; float decay_coeff; void free(){} } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jorbis/DecodeExample.java0000644000175000017500000002436611377161311025632 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jorbis; import com.jcraft.jogg.*; // Takes a vorbis bitstream from stdin and writes raw stereo PCM to // stdout. Decodes simple and chained OggVorbis files from beginning // to end. Vorbisfile.a is somewhat more complex than the code below. class DecodeExample{ static int convsize=4096*2; static byte[] convbuffer=new byte[convsize]; // take 8k out of the data segment, not the stack public static void main(String[] arg){ java.io.InputStream input=System.in; if(arg.length>0){ try{ input=new java.io.FileInputStream(arg[0]); } catch(Exception e){ System.err.println(e); } } SyncState oy=new SyncState(); // sync and verify incoming physical bitstream StreamState os=new StreamState(); // take physical pages, weld into a logical stream of packets Page og=new Page(); // one Ogg bitstream page. Vorbis packets are inside Packet op=new Packet(); // one raw packet of data for decode Info vi=new Info(); // struct that stores all the static vorbis bitstream settings Comment vc=new Comment(); // struct that stores all the bitstream user comments DspState vd=new DspState(); // central working state for the packet->PCM decoder Block vb=new Block(vd); // local working space for packet->PCM decode byte[] buffer; int bytes=0; // Decode setup oy.init(); // Now we can read pages while(true){ // we repeat if the bitstream is chained int eos=0; // grab some data at the head of the stream. We want the first page // (which is guaranteed to be small and only contain the Vorbis // stream initial header) We need the first page to get the stream // serialno. // submit a 4k block to libvorbis' Ogg layer int index=oy.buffer(4096); buffer=oy.data; try{ bytes=input.read(buffer, index, 4096); } catch(Exception e){ System.err.println(e); System.exit(-1); } oy.wrote(bytes); // Get the first page. if(oy.pageout(og)!=1){ // have we simply run out of data? If so, we're done. if(bytes<4096)break; // error case. Must not be Vorbis data System.err.println("Input does not appear to be an Ogg bitstream."); System.exit(1); } // Get the serial number and set up the rest of decode. // serialno first; use it to set up a logical stream os.init(og.serialno()); // extract the initial header from the first page and verify that the // Ogg bitstream is in fact Vorbis data // I handle the initial header first instead of just having the code // read all three Vorbis headers at once because reading the initial // header is an easy way to identify a Vorbis bitstream and it's // useful to see that functionality seperated out. vi.init(); vc.init(); if(os.pagein(og)<0){ // error; stream version mismatch perhaps System.err.println("Error reading first page of Ogg bitstream data."); System.exit(1); } if(os.packetout(op)!=1){ // no page? must not be vorbis System.err.println("Error reading initial header packet."); System.exit(1); } if(vi.synthesis_headerin(vc,op)<0){ // error case; not a vorbis header System.err.println("This Ogg bitstream does not contain Vorbis audio data."); System.exit(1); } // At this point, we're sure we're Vorbis. We've set up the logical // (Ogg) bitstream decoder. Get the comment and codebook headers and // set up the Vorbis decoder // The next two packets in order are the comment and codebook headers. // They're likely large and may span multiple pages. Thus we reead // and submit data until we get our two pacakets, watching that no // pages are missing. If a page is missing, error out; losing a // header page is the only place where missing data is fatal. */ int i=0; while(i<2){ while(i<2){ int result=oy.pageout(og); if(result==0) break; // Need more data // Don't complain about missing or corrupt data yet. We'll // catch it at the packet output phase if(result==1){ os.pagein(og); // we can ignore any errors here // as they'll also become apparent // at packetout while(i<2){ result=os.packetout(op); if(result==0)break; if(result==-1){ // Uh oh; data at some point was corrupted or missing! // We can't tolerate that in a header. Die. System.err.println("Corrupt secondary header. Exiting."); System.exit(1); } vi.synthesis_headerin(vc,op); i++; } } } // no harm in not checking before adding more index=oy.buffer(4096); buffer=oy.data; try{ bytes=input.read(buffer, index, 4096); } catch(Exception e){ System.err.println(e); System.exit(1); } if(bytes==0 && i<2){ System.err.println("End of file before finding all Vorbis headers!"); System.exit(1); } oy.wrote(bytes); } // Throw the comments plus a few lines about the bitstream we're // decoding { byte[][] ptr=vc.user_comments; for(int j=0; jPCM decoder. vd.synthesis_init(vi); // central decode state vb.init(vd); // local state for most of the decode // so multiple block decodes can // proceed in parallel. We could init // multiple vorbis_block structures // for vd here float[][][] _pcm=new float[1][][]; int[] _index=new int[vi.channels]; // The rest is just a straight decode loop until end of stream while(eos==0){ while(eos==0){ int result=oy.pageout(og); if(result==0)break; // need more data if(result==-1){ // missing or corrupt data at this page position System.err.println("Corrupt or missing data in bitstream; continuing..."); } else{ os.pagein(og); // can safely ignore errors at // this point while(true){ result=os.packetout(op); if(result==0)break; // need more data if(result==-1){ // missing or corrupt data at this page position // no reason to complain; already complained above } else{ // we have a packet. Decode it int samples; if(vb.synthesis(op)==0){ // test for success! vd.synthesis_blockin(vb); } // **pcm is a multichannel float vector. In stereo, for // example, pcm[0] is left, and pcm[1] is right. samples is // the size of each channel. Convert the float values // (-1.<=range<=1.) to whatever PCM format and write it out while((samples=vd.synthesis_pcmout(_pcm, _index))>0){ float[][] pcm=_pcm[0]; boolean clipflag=false; int bout=(samples32767){ val=32767; clipflag=true; } if(val<-32768){ val=-32768; clipflag=true; } if(val<0) val=val|0x8000; convbuffer[ptr]=(byte)(val); convbuffer[ptr+1]=(byte)(val>>>8); ptr+=2*(vi.channels); } } //if(clipflag) // System.err.println("Clipping in frame "+vd.sequence); System.out.write(convbuffer, 0, 2*vi.channels*bout); vd.synthesis_read(bout); // tell libvorbis how // many samples we // actually consumed } } } if(og.eos()!=0)eos=1; } } if(eos==0){ index=oy.buffer(4096); buffer=oy.data; try{ bytes=input.read(buffer,index,4096); } catch(Exception e){ System.err.println(e); System.exit(1); } oy.wrote(bytes); if(bytes==0)eos=1; } } // clean up this logical bitstream; before exit we see if we're // followed by another [chained] os.clear(); // ogg_page and ogg_packet structs always point to storage in // libvorbis. They're never freed or manipulated directly vb.clear(); vd.clear(); vi.clear(); // must be called last } // OK, clean up the framer oy.clear(); System.err.println("Done."); } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jogg/0000755000175000017500000000000011377161311021713 5ustar jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jogg/Page.java0000644000175000017500000006543611377161311023450 0ustar /* -*-mode:java; c-basic-offset:2; -*- */ /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jogg; public class Page{ private static int[] crc_lookup=new int[256]; static { for(int i=0; i>>24)&0xff)^(header_base[header+i]&0xff)]; } for(int i=0;i>>24)&0xff)^(body_base[body+i]&0xff)]; } header_base[header+22]=(byte)crc_reg/*&0xff*/; header_base[header+23]=(byte)(crc_reg>>>8)/*&0xff*/; header_base[header+24]=(byte)(crc_reg>>>16)/*&0xff*/; header_base[header+25]=(byte)(crc_reg>>>24)/*&0xff*/; } public Page copy(){ return copy(new Page()); } public Page copy(Page p){ byte[] tmp=new byte[header_len]; System.arraycopy(header_base, header, tmp, 0, header_len); p.header_len=header_len; p.header_base=tmp; p.header=0; tmp=new byte[body_len]; System.arraycopy(body_base, body, tmp, 0, body_len); p.body_len=body_len; p.body_base=tmp; p.body=0; return p; } /* // TEST static StreamState os_en, os_de; static SyncState oy; void check_page(byte[] data_base, int data, int[] _header){ // Test data for(int j=0;j 4k... "); test_pack(packets,headret); } { // continuing packet test int[] packets={0,4345,259,255,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0x34,0x24,0xd5,0x29, 17, 255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255}; int[] head3={0x4f,0x67,0x67,0x53,0,0x05, 0x07,0x0c,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0xc8,0xc3,0xcb,0xed, 5, 10,255,4,255,0}; int[][] headret={head1,head2,head3,null}; System.err.print("testing single packet page span... "); test_pack(packets,headret); } // page with the 255 segment limit { int[] packets={0,10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,50,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0xfc,0x03,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0xed,0x2a,0x2e,0xa7, 255, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10,10, 10,10,10,10,10,10,10}; int[] head3={0x4f,0x67,0x67,0x53,0,0x04, 0x07,0x00,0x04,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0x6c,0x3b,0x82,0x3d, 1, 50}; int[][] headret={head1,head2,head3,null}; System.err.print("testing max packet segments... "); test_pack(packets,headret); } { // packet that overspans over an entire page int[] packets={0,100,9000,259,255,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0x3c,0xd9,0x4d,0x3f, 17, 100,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255}; int[] head3={0x4f,0x67,0x67,0x53,0,0x01, 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0xbd,0xd5,0xb5,0x8b, 17, 255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255,255}; int[] head4={0x4f,0x67,0x67,0x53,0,0x05, 0x07,0x10,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,3,0,0,0, 0xef,0xdd,0x88,0xde, 7, 255,255,75,255,4,255,0}; int[][] headret={head1,head2,head3,head4,null}; System.err.print("testing very large packets... "); test_pack(packets,headret); } { // term only page. why not? int[] packets={0,100,4080,-1}; int[] head1={0x4f,0x67,0x67,0x53,0,0x02, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,0,0,0,0, 0xff,0x7b,0x23,0x17, 1, 0}; int[] head2={0x4f,0x67,0x67,0x53,0,0x00, 0x07,0x04,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,1,0,0,0, 0x3c,0xd9,0x4d,0x3f, 17, 100,255,255,255,255,255,255,255,255, 255,255,255,255,255,255,255,255}; int[] head3={0x4f,0x67,0x67,0x53,0,0x05, 0x07,0x08,0x00,0x00,0x00,0x00,0x00,0x00, 0x01,0x02,0x03,0x04,2,0,0,0, 0xd4,0xe0,0x60,0xe5, 1,0}; int[][] headret={head1,head2,head3,null}; System.err.print("testing zero data page (1 nil packet)... "); test_pack(packets,headret); } { // build a bunch of pages for testing byte[] data=new byte[1024*1024]; int[] pl={0,100,4079,2956,2057,76,34,912,0,234,1000,1000,1000,300,-1}; int inptr=0; Page[] og=new Page[5]; for(int i=0; i<5; i++){ og[i]=new Page(); } os_en.reset(); for(int i=0;pl[i]!=-1;i++){ Packet op=new Packet(); int len=pl[i]; op.packet_base=data; op.packet=inptr; op.bytes=len; op.e_o_s=(pl[i+1]<0?1:0); op.granulepos=(i+1)*1000; for(int j=0;j0)error(); // Test fractional page inputs: incomplete fixed header index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+3, oy.data, index, 20); oy.wrote(20); if(oy.pageout(og_de)>0)error(); // Test fractional page inputs: incomplete header index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+23, oy.data, index, 5); oy.wrote(5); if(oy.pageout(og_de)>0)error(); // Test fractional page inputs: incomplete body index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+28, oy.data, index, og[1].header_len-28); oy.wrote(og[1].header_len-28); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, 1000); oy.wrote(1000); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body+1000, oy.data, index, og[1].body_len-1000); oy.wrote(og[1].body_len-1000); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } // Test fractional page inputs: page + incomplete capture { Page og_de=new Page(); System.err.print("Testing sync on 1+partial inputs... "); oy.reset(); int index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, og[1].header_len); oy.wrote(og[1].header_len); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, 20); oy.wrote(20); if(oy.pageout(og_de)<=0)error(); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header+20, oy.data, index, og[1].header_len-20); oy.wrote(og[1].header_len-20); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } // // // // // // // // // // Test recapture: garbage + page { Page og_de=new Page(); System.err.print("Testing search for capture... "); oy.reset(); // 'garbage' int index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, og[1].header_len); oy.wrote(og[1].header_len); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header, oy.data, index, 20); oy.wrote(20); if(oy.pageout(og_de)>0)error(); if(oy.pageout(og_de)<=0)error(); if(oy.pageout(og_de)>0)error(); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header+20, oy.data, index, og[2].header_len-20); oy.wrote(og[2].header_len-20); index=oy.buffer(og[2].body_len); System.arraycopy(og[2].body_base, og[2].body, oy.data, index, og[2].body_len); oy.wrote(og[2].body_len); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } // Test recapture: page + garbage + page { Page og_de=new Page(); System.err.print("Testing recapture... "); oy.reset(); int index=oy.buffer(og[1].header_len); System.arraycopy(og[1].header_base, og[1].header, oy.data, index, og[1].header_len); oy.wrote(og[1].header_len); index=oy.buffer(og[1].body_len); System.arraycopy(og[1].body_base, og[1].body, oy.data, index, og[1].body_len); oy.wrote(og[1].body_len); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header, oy.data, index, og[2].header_len); oy.wrote(og[2].header_len); index=oy.buffer(og[2].header_len); System.arraycopy(og[2].header_base, og[2].header, oy.data, index, og[2].header_len); oy.wrote(og[2].header_len); if(oy.pageout(og_de)<=0)error(); index=oy.buffer(og[2].body_len); System.arraycopy(og[2].body_base, og[2].body, oy.data, index, og[2].body_len-5); oy.wrote(og[2].body_len-5); index=oy.buffer(og[3].header_len); System.arraycopy(og[3].header_base, og[3].header, oy.data, index, og[3].header_len); oy.wrote(og[3].header_len); index=oy.buffer(og[3].body_len); System.arraycopy(og[3].body_base, og[3].body, oy.data, index, og[3].body_len); oy.wrote(og[3].body_len); if(oy.pageout(og_de)>0)error(); if(oy.pageout(og_de)<=0)error(); System.err.println("ok."); } } //return(0); } */ } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jogg/StreamState.java0000644000175000017500000004367411377161311025030 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jogg; public class StreamState{ byte[] body_data; /* bytes from packet bodies */ int body_storage; /* storage elements allocated */ int body_fill; /* elements stored; fill mark */ private int body_returned; /* elements of fill returned */ int[] lacing_vals; /* The values that will go to the segment table */ long[] granule_vals; /* pcm_pos values for headers. Not compact this way, but it is simple coupled to the lacing fifo */ int lacing_storage; int lacing_fill; int lacing_packet; int lacing_returned; byte[] header=new byte[282]; /* working space for header encode */ int header_fill; public int e_o_s; /* set when we have buffered the last packet in the logical bitstream */ int b_o_s; /* set after we've written the initial page of a logical bitstream */ int serialno; int pageno; long packetno; /* sequence number for decode; the framing knows where there's a hole in the data, but we need coupling so that the codec (which is in a seperate abstraction layer) also knows about the gap */ long granulepos; public StreamState(){ init(); } StreamState(int serialno){ this(); init(serialno); } void init(){ body_storage=16*1024; body_data=new byte[body_storage]; lacing_storage=1024; lacing_vals=new int[lacing_storage]; granule_vals=new long[lacing_storage]; } public void init(int serialno){ if(body_data==null){ init(); } else{ for(int i=0; i255?255:lacing_fill); int bytes=0; int acc=0; long granule_pos=granule_vals[0]; if(maxvals==0)return(0); /* construct a page */ /* decide how many segments to include */ /* If this is the initial header case, the first page must only include the initial header packet */ if(b_o_s==0){ /* 'initial header page' case */ granule_pos=0; for(vals=0;vals4096)break; acc+=(lacing_vals[vals]&0x0ff); granule_pos=granule_vals[vals]; } } /* construct the header in temp storage */ System.arraycopy("OggS".getBytes(), 0, header, 0, 4); /* stream structure version */ header[4]=0x00; /* continued packet flag? */ header[5]=0x00; if((lacing_vals[0]&0x100)==0)header[5]|=0x01; /* first page flag? */ if(b_o_s==0) header[5]|=0x02; /* last page flag? */ if(e_o_s!=0 && lacing_fill==vals) header[5]|=0x04; b_o_s=1; /* 64 bits of PCM position */ for(i=6;i<14;i++){ header[i]=(byte)granule_pos; granule_pos>>>=8; } /* 32 bits of stream serial number */ { int _serialno=serialno; for(i=14;i<18;i++){ header[i]=(byte)_serialno; _serialno>>>=8; } } /* 32 bits of page counter (we have both counter and page header because this val can roll over) */ if(pageno==-1)pageno=0; /* because someone called stream_reset; this would be a strange thing to do in an encode stream, but it has plausible uses */ { int _pageno=pageno++; for(i=18;i<22;i++){ header[i]=(byte)_pageno; _pageno>>>=8; } } /* zero for computation; filled in later */ header[22]=0; header[23]=0; header[24]=0; header[25]=0; /* segment table */ header[26]=(byte)vals; for(i=0;i>>=8; // } // // /* 32 bits of stream serial number */ // { // int serialn=serialno; // for(int i=14;i<18;i++){ // header[i]=(byte)serialn; // serialn>>>=8; // } // } // // ///* 32 bits of page counter (we have both counter and page header // because this val can roll over) */ // if(pageno==-1)pageno=0; /* because someone called // stream_reset; this would be a // strange thing to do in an // encode stream, but it has // plausible uses */ // { // int pagen=pageno++; // for(int i=18;i<22;i++){ // header[i]=(byte)pagen; // pagen>>>=8; // } // } // // /* zero for computation; filled in later */ // header[22]=0; // header[23]=0; // header[24]=0; // header[25]=0; // // /* segment table */ // header[26]=(byte)vals; // for(int i=0;i 4096 || /* 'page nominal size' case */ lacing_fill>=255 || /* 'segment table full' case */ (lacing_fill!=0&&b_o_s==0)){ /* 'initial header page' case */ return flush(og); } return 0; } public int eof(){ return e_o_s; } public int reset(){ body_fill=0; body_returned=0; lacing_fill=0; lacing_packet=0; lacing_returned=0; header_fill=0; e_o_s=0; b_o_s=0; pageno=-1; packetno=0; granulepos=0; return(0); } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jogg/Packet.java0000644000175000017500000000460211377161311023767 0ustar /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jogg; public class Packet{ public byte[] packet_base; public int packet; public int bytes; public int b_o_s; public int e_o_s; public long granulepos; public long packetno; // sequence number for decode; the framing // knows where there's a hole in the data, // but we need coupling so that the codec // (which is in a seperate abstraction // layer) also knows about the gap /* // TEST static int sequence=0; static int lastno=0; void checkpacket(int len, int no, int pos){ if(bytes!=len){ System.err.println("incorrect packet length!"); System.exit(1); } if(granulepos!=pos){ System.err.println("incorrect packet position!"); System.exit(1); } // packet number just follows sequence/gap; adjust the input number // for that if(no==0){ sequence=0; } else{ sequence++; if(no>lastno+1) sequence++; } lastno=no; if(packetno!=sequence){ System.err.println("incorrect packet sequence "+packetno+" != "+sequence); System.exit(1); } // Test data for(int j=0;j * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jogg; // DECODING PRIMITIVES: packet streaming layer // This has two layers to place more of the multi-serialno and paging // control in the application's hands. First, we expose a data buffer // using ogg_decode_buffer(). The app either copies into the // buffer, or passes it directly to read(), etc. We then call // ogg_decode_wrote() to tell how many bytes we just added. // // Pages are returned (pointers into the buffer in ogg_sync_state) // by ogg_decode_stream(). The page is then submitted to // ogg_decode_page() along with the appropriate // ogg_stream_state* (ie, matching serialno). We then get raw // packets out calling ogg_stream_packet() with a // ogg_stream_state. See the 'frame-prog.txt' docs for details and // example code. public class SyncState{ public byte[] data; int storage; int fill; int returned; int unsynced; int headerbytes; int bodybytes; public int clear(){ data=null; return(0); } // !!!!!!!!!!!! // byte[] buffer(int size){ public int buffer(int size){ // first, clear out any space that has been previously returned if(returned!=0){ fill-=returned; if(fill>0){ System.arraycopy(data, returned, data, 0, fill); } returned=0; } if(size>storage-fill){ // We need to extend the internal buffer int newsize=size+fill+4096; // an extra page to be nice if(data!=null){ byte[] foo=new byte[newsize]; System.arraycopy(data, 0, foo, 0, data.length); data=foo; } else{ data=new byte[newsize]; } storage=newsize; } // expose a segment at least as large as requested at the fill mark // return((char *)oy->data+oy->fill); // return(data); return(fill); } public int wrote(int bytes){ if(fill+bytes>storage)return(-1); fill+=bytes; return(0); } // sync the stream. This is meant to be useful for finding page // boundaries. // // return values for this: // -n) skipped n bytes // 0) page not ready; more data (no bytes skipped) // n) page synced at current location; page length n bytes private Page pageseek=new Page(); private byte[] chksum=new byte[4]; public int pageseek(Page og){ int page=returned; int next; int bytes=fill-returned; if(headerbytes==0){ int _headerbytes,i; if(bytes<27)return(0); // not enough for a header /* verify capture pattern */ //!!!!!!!!!!! if(data[page]!='O' || data[page+1]!='g' || data[page+2]!='g' || data[page+3]!='S'){ headerbytes=0; bodybytes=0; // search for possible capture next=0; for(int ii=0; iibytes)return(0); // The whole test page is buffered. Verify the checksum synchronized(chksum){ // Grab the checksum bytes, set the header field to zero System.arraycopy(data, page+22, chksum, 0, 4); data[page+22]=0; data[page+23]=0; data[page+24]=0; data[page+25]=0; // set up a temp page struct and recompute the checksum Page log=pageseek; log.header_base=data; log.header=page; log.header_len=headerbytes; log.body_base=data; log.body=page+headerbytes; log.body_len=bodybytes; log.checksum(); // Compare if(chksum[0]!=data[page+22] || chksum[1]!=data[page+23] || chksum[2]!=data[page+24] || chksum[3]!=data[page+25]){ // D'oh. Mismatch! Corrupt page (or miscapture and not a page at all) // replace the computed checksum with the one actually read in System.arraycopy(chksum, 0, data, page+22, 4); // Bad checksum. Lose sync */ headerbytes=0; bodybytes=0; // search for possible capture next=0; for(int ii=0; ii0){ // have a page return(1); } if(ret==0){ // need more data return(0); } // head did not start a synced page... skipped some bytes if(unsynced==0){ unsynced=1; return(-1); } // loop. keep looking } } // clear things to an initial state. Good to call, eg, before seeking public int reset(){ fill=0; returned=0; unsynced=0; headerbytes=0; bodybytes=0; return(0); } public void init(){} public int getDataOffset(){ return returned; } public int getBufferOffset(){ return fill; } } jclic-0.2.1.0.orig/extensions/soundspi/jorbis/src/com/jcraft/jogg/Buffer.java0000644000175000017500000003347311377161311024001 0ustar /* -*-mode:java; c-basic-offset:2; -*- */ /* JOrbis * Copyright (C) 2000 ymnk, JCraft,Inc. * * Written by: 2000 ymnk * * Many thanks to * Monty and * The XIPHOPHORUS Company http://www.xiph.org/ . * JOrbis has been based on their awesome works, Vorbis codec. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public License * as published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package com.jcraft.jogg; public class Buffer{ private static final int BUFFER_INCREMENT=256; private static final int[] mask={ 0x00000000,0x00000001,0x00000003,0x00000007,0x0000000f, 0x0000001f,0x0000003f,0x0000007f,0x000000ff,0x000001ff, 0x000003ff,0x000007ff,0x00000fff,0x00001fff,0x00003fff, 0x00007fff,0x0000ffff,0x0001ffff,0x0003ffff,0x0007ffff, 0x000fffff,0x001fffff,0x003fffff,0x007fffff,0x00ffffff, 0x01ffffff,0x03ffffff,0x07ffffff,0x0fffffff,0x1fffffff, 0x3fffffff,0x7fffffff,0xffffffff }; int ptr=0; byte[] buffer=null; int endbit=0; int endbyte=0; int storage=0; public void writeinit(){ buffer=new byte[BUFFER_INCREMENT]; ptr=0; buffer[0]=(byte)'\0'; storage=BUFFER_INCREMENT; } public void write(byte[] s){ for(int i=0; iret="+Integer.toHexString(ret)); if(bits>32 && endbit!=0){ ret|=((buffer[ptr+4])&0xff)<<(32-endbit); // ret|=((byte)(buffer[ptr+4]))<<(32-endbit); } } } } return(m&ret); } public int look1(){ if(endbyte>=storage)return(-1); return((buffer[ptr]>>endbit)&1); } public void adv(int bits){ bits+=endbit; ptr+=bits/8; endbyte+=bits/8; endbit=bits&7; } public void adv1(){ ++endbit; if(endbit>7){ endbit=0; ptr++; endbyte++; } } public int read(int bits){ //System.err.println(this+" read: bits="+bits+", storage="+storage+", endbyte="+endbyte); //System.err.println(this+" read: bits="+bits+", storage="+storage+", endbyte="+endbyte+ // ", ptr="+ptr+", endbit="+endbit+", buf[ptr]="+buffer[ptr]); int ret; int m=mask[bits]; bits+=endbit; if(endbyte+4>=storage){ ret=-1; if(endbyte+(bits-1)/8>=storage){ ptr+=bits/8; endbyte+=bits/8; endbit=bits&7; return(ret); } } /* ret=(byte)(buffer[ptr]>>>endbit); if(bits>8){ ret|=(buffer[ptr+1]<<(8-endbit)); if(bits>16){ ret|=(buffer[ptr+2]<<(16-endbit)); if(bits>24){ ret|=(buffer[ptr+3]<<(24-endbit)); if(bits>32 && endbit>0){ ret|=(buffer[ptr+4]<<(32-endbit)); } } } } */ ret=((buffer[ptr])&0xff)>>>endbit; if(bits>8){ ret|=((buffer[ptr+1])&0xff)<<(8-endbit); // ret|=((byte)(buffer[ptr+1]))<<(8-endbit); if(bits>16){ ret|=((buffer[ptr+2])&0xff)<<(16-endbit); // ret|=((byte)(buffer[ptr+2]))<<(16-endbit); if(bits>24){ ret|=((buffer[ptr+3])&0xff)<<(24-endbit); // ret|=((byte)(buffer[ptr+3]))<<(24-endbit); if(bits>32 && endbit!=0){ ret|=((buffer[ptr+4])&0xff)<<(32-endbit); // ret|=((byte)(buffer[ptr+4]))<<(32-endbit); } } } } ret&=m; ptr+=bits/8; // ptr=bits/8; endbyte+=bits/8; // endbyte=bits/8; endbit=bits&7; return(ret); } public int readB(int bits){ //System.err.println(this+" read: bits="+bits+", storage="+storage+", endbyte="+endbyte+ // ", ptr="+ptr+", endbit="+endbit+", buf[ptr]="+buffer[ptr]); int ret; int m=32-bits; bits+=endbit; if(endbyte+4>=storage){ /* not the main path */ ret=-1; if(endbyte*8+bits>storage*8) { ptr+=bits/8; endbyte+=bits/8; endbit=bits&7; return(ret); } } ret=(buffer[ptr]&0xff)<<(24+endbit); if(bits>8){ ret|=(buffer[ptr+1]&0xff)<<(16+endbit); if(bits>16){ ret|=(buffer[ptr+2]&0xff)<<(8+endbit); if(bits>24){ ret|=(buffer[ptr+3]&0xff)<<(endbit); if(bits>32 && (endbit != 0)) ret|=(buffer[ptr+4]&0xff)>>(8-endbit); } } } ret=(ret>>>(m>>1))>>>((m+1)>>1); ptr+=bits/8; endbyte+=bits/8; endbit=bits&7; return(ret); } public int read1(){ int ret; if(endbyte>=storage){ ret=-1; endbit++; if(endbit>7){ endbit=0; ptr++; endbyte++; } return(ret); } ret=(buffer[ptr]>>endbit)&1; endbit++; if(endbit>7){ endbit=0; ptr++; endbyte++; } return(ret); } public int bytes(){ return(endbyte+(endbit+7)/8); } public int bits(){ return(endbyte*8+endbit); } public byte[] buffer(){ return(buffer); } public static int ilog(int v){ int ret=0; while(v>0){ ret++; v>>>=1; } return(ret); } public static void report(String in){ System.err.println(in); System.exit(1); } /* static void cliptest(int[] b, int vals, int bits, int[] comp, int compsize){ int bytes; byte[] buffer; o.reset(); for(int i=0;i Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! jclic-0.2.1.0.orig/extensions/soundspi/javalayer/README.txt0000644000175000017500000000607711377161311020345 0ustar JLayer 1.0 JavaZOOM 1999-2005 Project Homepage : http://www.javazoom.net/javalayer/javalayer.html JAVA and MP3 online Forums : http://www.javazoom.net/services/forums/index.jsp ----------------------------------------------------- DESCRIPTION : ----------- JLayer is a library that decodes/plays/converts MPEG 1/2/2.5 Layer 1/2/3 (i.e. MP3) in real time for the JAVA(tm) platform. This is a non-commercial project and anyone can add his contribution. JLayer is licensed under LGPL (see LICENSE.txt). FAQ : --- - How to install JLayer ? Before running JLayer you must set PATH and CLASSPATH for JAVA and you must add jl1.0.jar to the CLASSPATH. - Do I need JMF to run JLayer player ? No, JMF is not required. You just need a JVM JavaSound 1.0 compliant. (i.e. JVM1.3 or higher). - How to run the MP3TOWAV converter ? java javazoom.jl.converter.jlc -v -p output.wav yourfile.mp3 (Note : MP3TOWAV converter should work under jdk1.1.x or higher) - How to run the simple MP3 player ? java javazoom.jl.player.jlp localfile.mp3 or java javazoom.jl.player.jlp -url http://www.aserver.com/remotefile.mp3 Note : MP3 simple player only works under JVM that supports JavaSound 1.0 (i.e JDK1.3.x+) - How to run the advanced (threaded) MP3 player ? java javazoom.jl.player.advanced.jlap localfile.mp3 - Does simple MP3 player support streaming ? Yes, use the following command to play music from stream : java javazoom.jl.player.jlp -url http://www.shoutcastserver.com:8000 (If JLayer returns without playing SHOUTcast stream then it might mean that the server expect a winamp like "User-Agent" in HTTP request). - Does JLayer support MPEG 2.5 ? Yes, it works fine for all files generated with LAME. - Does JLayer support VBR ? Yes, It supports VBRI and XING VBR header too. - How to get ID3v1 or ID3v2 tags from JLayer API ? The API provides a getRawID3v2() method to get an InputStream on ID3v2 frames. - How to skip frames to have a seek feature ? See javazoom.jl.player.advanced.jlap source to learn how to skip frames. - How much memory/CPU JLayer needs to run ? Here are our benchmark notes : - Heap use range : 1380KB to 1900KB - 370 classes loaded. - Footprint : ~8MB under WinNT4/Win2K + J2SE 1.3 (Hotspot). ~10MB under WinNT4/Win2K + J2SE 1.4.1 (Hotspot). - CPU usage : ~12% under PIII 800Mhz/WinNT4+J2SE 1.3 (Hotspot). ~8% under PIII 1Ghz/Win2K+J2SE 1.3.1 (Hotspot). ~12% under PIII 1Ghz/Win2K+J2SE 1.4.1 (Hotspot). ~1% under PIII 1Ghz/Win2K+J2SE 1.5.0 (Hotspot). - How to contact JLayer developers ? Try to post a thread on Java&MP3 online forums at : http://www.javazoom.net/services/forums/index.jsp You can also contact us at jlayer@javazoom.net for contributions. KNOWN PROBLEMS : -------------- 99% of MP3 plays well with JLayer but some (1%) return an ArrayIndexOutOfBoundsException while playing. It might come from invalid audio frames. Workaround : Just try/catch ArrayIndexOutOfBoundsException in your code to skip non-detected invalid frames.jclic-0.2.1.0.orig/extensions/soundspi/javalayer/CHANGES.txt0000644000175000017500000000745711377161311020463 0ustar JLayer 1.0 JavaZOOM 1999-2005 Project Homepage : http://www.javazoom.net/javalayer/javalayer.html JAVA and MP3 online Forums : http://www.javazoom.net/services/forums/index.jsp ----------------------------------------------------- 11/28/2004: JLayer 1.0 ------------------------- - VBRI frame header (Fraunhofer VBR) support added in Header.java. - Frame controls improved. It fixes the following bugs : + ArrayIndexOutOfBound Exception in t_43[] array. + ArrayIndexOutOfBound Exception in huffman_decode() method. - Licensing moved from GPL to LGPL : It means that you can use JLayer in your own application without being restricted by GPL license issues. It's more business friendly. - JavaLayer renamed into JLayer to be compliant to SUN trademark rules. - Tested under JRE 1.5.0. CPU usage < 1%, RAM usage < 12MB under P4/2Ghz. 01/02/2004: JavaLayer 0.4 ------------------------- - XING VBR header frame support improved in Header.java : + public boolean vbr() added. + public int vbr_scale() added. + public byte[] vbr_toc() added. total_ms(), ms_per_frame(), min_number_of_frames(int), max_number_of_frames(int), bitrate_string(), bitrate() methods check for VBR status. - ID3v2 frames support improved : + public InputStream getRawID3v2() added in Bitstream.java - Misc : Bug fixed in the decoder for some +320kbps stream. Bug fixed : SYNC conflict with some ID3v2 frames. + public int bitrate() added. + public int bitrate_instant() added. jUnit tests added (see srctest/ folder) 08/04/2003: JavaLayer 0.3.0 --------------------------- - Advanced threaded player classes added. 04/01/2002: JavaLayer 0.2.0 --------------------------- - MPEG 2.5 support added. Encoded files with LAME are supported. - Bug fixes for ms time computation with free format. + Bench notes : + Heap use range : 1380KB to 1900KB - 370 classes loaded. + Footprint : ~8MB under WinNT4 + J2SE 1.3 (Hotspot). + CPU usage : ~12% under PIII 800Mhz/WinNT4+J2SE 1.3 (Hotspot). + CPU usage : ~11% under PIII 1Ghz/Win2K+J2SE 1.4 (Hotspot). 03/04/2002: JavaLayer 0.1.2 --------------------------- - API improved to let developers get MP3 bitrate, framelength and total time features. - Additionnal files added (CHANGES.txt and LICENSE.txt). 10/01/2001: JavaLayer 0.1.1 --------------------------- - Bugs fixes in the decoder (Layer III). 07/02/2001: JavaLayer 0.1.0 --------------------------- - Streaming support added to the simple player (jlp). - Bugs fixes in the simple player (too fast playback for low rate files). 06/04/2001: JavaLayer 0.0.9 --------------------------- - Bugs fixes in Layer I and Layer II decoder. - ANT build script added. - HTML page added to play MP3 through PlayerApplet in a JavaSound 1.0 (JDK 1.3) compliant browser. 04/16/2000: JavaLayer 0.0.8 --------------------------- A simple player have been added and you can now play MP3 in real time with JVM that supports JavaSound 1.0 (i.e JDK 1.3). - Bug fixes. - Decoder improvements. - Build Scripts have been added for Win32 and Unix platforms. 12/16/1999: JavaLayer 0.0.7 --------------------------- JavaLayer 0.0.7 contains significant improvements over version 0.0 : - API and documentation added. - The decoder is much more faster. Fast enough for real-time decoding. - Huffman/Layer3 tables serialization added. - New buffers management. - Exceptions + Utils added. - Bugs fixes. 02/28/1999: JavaLayer 0.0 ------------------------- JavaLayer V0.0 does not play any MP3 but it allows the MP3toWAV conversion. This is the first step in this project. We do it thanks to free mp3 ressources available on the net: - MAPlay for the OO MP3 decoder (C++). - WAV format description from Microsoft. The MP3 decoder works now but it is too slow to allow real time implementation. jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/0000755000175000017500000000000011377161311017424 5ustar jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/0000755000175000017500000000000011377161311021252 5ustar jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/0000755000175000017500000000000011377161311021657 5ustar jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/0000755000175000017500000000000011377161311023153 5ustar jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/NullAudioDevice.java0000644000175000017500000000237411377161311027040 0ustar /* * 11/19/04 1.0 moved o LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; /** * The NullAudioDevice implements a silent, no-op * audio device. This is useful for testing purposes. * * @since 0.0.8 * @author Mat McGowan */ public class NullAudioDevice extends AudioDeviceBase { public int getPosition() { return 0; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/PlayerApplet.java0000644000175000017500000001226611377161311026427 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import java.applet.Applet; import java.io.IOException; import java.io.InputStream; import java.net.URL; import javazoom.jl.decoder.JavaLayerException; /** * A simple applet that plays an MPEG audio file. * The URL (relative to the document base) * is passed as the "audioURL" parameter. * * @author Mat McGowan * @since 0.0.8 */ public class PlayerApplet extends Applet implements Runnable { static public final String AUDIO_PARAMETER = "audioURL"; /** * The Player used to play the MPEG audio file. */ private Player player = null; /** * The thread that runs the player. */ private Thread playerThread = null; private String fileName = null; /** * Retrieves the AudioDevice instance that will * be used to sound the audio data. * * @return an audio device instance that will be used to * sound the audio stream. */ protected AudioDevice getAudioDevice() throws JavaLayerException { return FactoryRegistry.systemRegistry().createAudioDevice(); } /** * Retrieves the InputStream that provides the MPEG audio * stream data. * * @return an InputStream from which the MPEG audio data * is read, or null if an error occurs. */ protected InputStream getAudioStream() { InputStream in = null; try { URL url = getAudioURL(); if (url!=null) in = url.openStream(); } catch (IOException ex) { System.err.println(ex); } return in; } protected String getAudioFileName() { String urlString = fileName; if (urlString==null) { urlString = getParameter(AUDIO_PARAMETER); } return urlString; } protected URL getAudioURL() { String urlString = getAudioFileName(); URL url = null; if (urlString!=null) { try { url = new URL(getDocumentBase(), urlString); } catch (Exception ex) { System.err.println(ex); } } return url; } /** * Sets the URL of the audio stream to play. */ public void setFileName(String name) { fileName = name; } public String getFileName() { return fileName; } /** * Stops the audio player. If the player is already stopped * this method is a no-op. */ protected void stopPlayer() throws JavaLayerException { if (player!=null) { player.close(); player = null; playerThread = null; } } /** * Decompresses audio data from an InputStream and plays it * back through an AudioDevice. The playback is run on a newly * created thread. * * @param in The InputStream that provides the MPEG audio data. * @param dev The AudioDevice to use to sound the decompressed data. * * @throws JavaLayerException if there was a problem decoding * or playing the audio data. */ protected void play(InputStream in, AudioDevice dev) throws JavaLayerException { stopPlayer(); if (in!=null && dev!=null) { player = new Player(in, dev); playerThread = createPlayerThread(); playerThread.start(); } } /** * Creates a new thread used to run the audio player. * @return A new Thread that, once started, runs the audio player. */ protected Thread createPlayerThread() { return new Thread(this, "Audio player thread"); } /** * Initializes this applet. */ public void init() { } /** * Starts this applet. An input stream and audio device * are created and passed to the play() method. */ public void start() { String name = getAudioFileName(); try { InputStream in = getAudioStream(); AudioDevice dev = getAudioDevice(); play(in, dev); } catch (JavaLayerException ex) { synchronized (System.err) { System.err.println("Unable to play "+name); ex.printStackTrace(System.err); } } } /** * Stops this applet. If audio is currently playing, it is * stopped. */ public void stop() { try { stopPlayer(); } catch (JavaLayerException ex) { System.err.println(ex); } } public void destroy() { } /** * The run method for the audio player thread. Simply calls * play() on the player to play the entire stream. */ public void run() { if (player!=null) { try { player.play(); } catch (JavaLayerException ex) { System.err.println("Problem playing audio: "+ex); } } } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/FactoryRegistry.java0000644000175000017500000000627511377161311027170 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import java.util.Enumeration; import java.util.Hashtable; import javazoom.jl.decoder.JavaLayerException; /** * The FactoryRegistry class stores the factories * for all the audio device implementations available in the system. *

* Instances of this class are thread-safe. * * @since 0.0.8 * @author Mat McGowan */ public class FactoryRegistry extends AudioDeviceFactory { static private FactoryRegistry instance = null; static synchronized public FactoryRegistry systemRegistry() { if (instance==null) { instance = new FactoryRegistry(); instance.registerDefaultFactories(); } return instance; } protected Hashtable factories = new Hashtable(); /** * Registers an AudioDeviceFactory instance * with this registry. */ public void addFactory(AudioDeviceFactory factory) { factories.put(factory.getClass(), factory); } public void removeFactoryType(Class cls) { factories.remove(cls); } public void removeFactory(AudioDeviceFactory factory) { factories.remove(factory.getClass()); } public AudioDevice createAudioDevice() throws JavaLayerException { AudioDevice device = null; AudioDeviceFactory[] factories = getFactoriesPriority(); if (factories==null) throw new JavaLayerException(this+": no factories registered"); JavaLayerException lastEx = null; for (int i=0; (device==null) && (i"); System.out.println(""); System.out.println(" e.g. : java javazoom.jl.player.advanced.jlap localfile.mp3"); } public static AdvancedPlayer playMp3(File mp3, PlaybackListener listener) throws IOException, JavaLayerException { return playMp3(mp3, 0, Integer.MAX_VALUE, listener); } public static AdvancedPlayer playMp3(File mp3, int start, int end, PlaybackListener listener) throws IOException, JavaLayerException { return playMp3(new BufferedInputStream(new FileInputStream(mp3)), start, end, listener); } public static AdvancedPlayer playMp3(final InputStream is, final int start, final int end, PlaybackListener listener) throws JavaLayerException { final AdvancedPlayer player = new AdvancedPlayer(is); player.setPlayBackListener(listener); // run in new thread new Thread() { public void run() { try { player.play(start, end); } catch (Exception e) { throw new RuntimeException(e.getMessage()); } } }.start(); return player; } public class InfoListener extends PlaybackListener { public void playbackStarted(PlaybackEvent evt) { System.out.println("Play started from frame " + evt.getFrame()); } public void playbackFinished(PlaybackEvent evt) { System.out.println("Play completed at frame " + evt.getFrame()); System.exit(0); } } }jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/advanced/PlaybackEvent.java0000644000175000017500000000324211377161311030314 0ustar /* * 11/19/04 1.0 moved to LGPL. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player.advanced; /** * An event which indicates a Player has performed an 'playback action' * @author Paul Stanton (http://wanto.f2o.org/) */ public class PlaybackEvent { public static int STOPPED = 1; public static int STARTED = 2; private AdvancedPlayer source; private int frame; private int id; public PlaybackEvent(AdvancedPlayer source, int id, int frame) { this.id = id; this.source = source; this.frame = frame; } public int getId(){return id;} public void setId(int id){this.id = id;} public int getFrame(){return frame;} public void setFrame(int frame){this.frame = frame;} public AdvancedPlayer getSource(){return source;} public void setSource(AdvancedPlayer source){this.source = source;} } ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/advanced/PlaybackListener.javajclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/advanced/PlaybackListener.ja0000644000175000017500000000227311377161311030474 0ustar /* * 11/19/04 1.0 moved to LGPL. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player.advanced; /** * Listener for javalayer Player playback * @author Paul Stanton (http://wanto.f2o.org/) */ public abstract class PlaybackListener { public void playbackStarted(PlaybackEvent evt){} public void playbackFinished(PlaybackEvent evt){} } ././@LongLink0000000000000000000000000000014500000000000011565 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/advanced/AdvancedPlayer.javajclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/advanced/AdvancedPlayer.java0000644000175000017500000001371011377161311030447 0ustar /* * 11/19/04 1.0 moved to LGPL. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player.advanced; import java.io.InputStream; import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.BitstreamException; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.Header; import javazoom.jl.decoder.JavaLayerException; import javazoom.jl.decoder.SampleBuffer; import javazoom.jl.player.AudioDevice; import javazoom.jl.player.FactoryRegistry; /** * a hybrid of javazoom.jl.player.Player tweeked to include play(startFrame, endFrame) * hopefully this will be included in the api */ public class AdvancedPlayer { /** The MPEG audio bitstream.*/ private Bitstream bitstream; /** The MPEG audio decoder. */ private Decoder decoder; /** The AudioDevice the audio samples are written to. */ private AudioDevice audio; /** Has the player been closed? */ private boolean closed = false; /** Has the player played back all frames from the stream? */ private boolean complete = false; private int lastPosition = 0; /** Listener for the playback process */ private PlaybackListener listener; /** * Creates a new Player instance. */ public AdvancedPlayer(InputStream stream) throws JavaLayerException { this(stream, null); } public AdvancedPlayer(InputStream stream, AudioDevice device) throws JavaLayerException { bitstream = new Bitstream(stream); if (device!=null) audio = device; else audio = FactoryRegistry.systemRegistry().createAudioDevice(); audio.open(decoder = new Decoder()); } public void play() throws JavaLayerException { play(Integer.MAX_VALUE); } /** * Plays a number of MPEG audio frames. * * @param frames The number of frames to play. * @return true if the last frame was played, or false if there are * more frames. */ public boolean play(int frames) throws JavaLayerException { boolean ret = true; // report to listener if(listener != null) listener.playbackStarted(createEvent(PlaybackEvent.STARTED)); while (frames-- > 0 && ret) { ret = decodeFrame(); } // if (!ret) { // last frame, ensure all data flushed to the audio device. AudioDevice out = audio; if (out != null) { // System.out.println(audio.getPosition()); out.flush(); // System.out.println(audio.getPosition()); synchronized (this) { complete = (!closed); close(); } // report to listener if(listener != null) listener.playbackFinished(createEvent(out, PlaybackEvent.STOPPED)); } } return ret; } /** * Cloases this player. Any audio currently playing is stopped * immediately. */ public synchronized void close() { AudioDevice out = audio; if (out != null) { closed = true; audio = null; // this may fail, so ensure object state is set up before // calling this method. out.close(); lastPosition = out.getPosition(); try { bitstream.close(); } catch (BitstreamException ex) {} } } /** * Decodes a single frame. * * @return true if there are no more frames to decode, false otherwise. */ protected boolean decodeFrame() throws JavaLayerException { try { AudioDevice out = audio; if (out == null) return false; Header h = bitstream.readFrame(); if (h == null) return false; // sample buffer set when decoder constructed SampleBuffer output = (SampleBuffer) decoder.decodeFrame(h, bitstream); synchronized (this) { out = audio; if(out != null) { out.write(output.getBuffer(), 0, output.getBufferLength()); } } bitstream.closeFrame(); } catch (RuntimeException ex) { throw new JavaLayerException("Exception decoding audio frame", ex); } return true; } /** * skips over a single frame * @return false if there are no more frames to decode, true otherwise. */ protected boolean skipFrame() throws JavaLayerException { Header h = bitstream.readFrame(); if (h == null) return false; bitstream.closeFrame(); return true; } /** * Plays a range of MPEG audio frames * @param start The first frame to play * @param end The last frame to play * @return true if the last frame was played, or false if there are more frames. */ public boolean play(final int start, final int end) throws JavaLayerException { boolean ret = true; int offset = start; while (offset-- > 0 && ret) ret = skipFrame(); return play(end - start); } /** * Constructs a PlaybackEvent */ private PlaybackEvent createEvent(int id) { return createEvent(audio, id); } /** * Constructs a PlaybackEvent */ private PlaybackEvent createEvent(AudioDevice dev, int id) { return new PlaybackEvent(this, id, dev.getPosition()); } /** * sets the PlaybackListener */ public void setPlayBackListener(PlaybackListener listener) { this.listener = listener; } /** * gets the PlaybackListener */ public PlaybackListener getPlayBackListener() { return listener; } /** * closes the player and notifies PlaybackListener */ public void stop() { listener.playbackFinished(createEvent(PlaybackEvent.STOPPED)); close(); } }././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/JavaSoundAudioDeviceFactory.javajclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/JavaSoundAudioDeviceFactory.0000644000175000017500000000475311377161311030511 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import javazoom.jl.decoder.JavaLayerException; /** * This class is responsible for creating instances of the * JavaSoundAudioDevice. The audio device implementation is loaded * and tested dynamically as not all systems will have support * for JavaSound, or they may have the incorrect version. */ public class JavaSoundAudioDeviceFactory extends AudioDeviceFactory { private boolean tested = false; static private final String DEVICE_CLASS_NAME = "javazoom.jl.player.JavaSoundAudioDevice"; public synchronized AudioDevice createAudioDevice() throws JavaLayerException { if (!tested) { testAudioDevice(); tested = true; } try { return createAudioDeviceImpl(); } catch (Exception ex) { throw new JavaLayerException("unable to create JavaSound device: "+ex); } catch (LinkageError ex) { throw new JavaLayerException("unable to create JavaSound device: "+ex); } } protected JavaSoundAudioDevice createAudioDeviceImpl() throws JavaLayerException { ClassLoader loader = getClass().getClassLoader(); try { JavaSoundAudioDevice dev = (JavaSoundAudioDevice)instantiate(loader, DEVICE_CLASS_NAME); return dev; } catch (Exception ex) { throw new JavaLayerException("Cannot create JavaSound device", ex); } catch (LinkageError ex) { throw new JavaLayerException("Cannot create JavaSound device", ex); } } public void testAudioDevice() throws JavaLayerException { JavaSoundAudioDevice dev = createAudioDeviceImpl(); dev.test(); } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/AudioDeviceFactory.java0000644000175000017500000000572111377161311027534 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import javazoom.jl.decoder.JavaLayerException; /** * An AudioDeviceFactory class is responsible for creating * a specific AudioDevice implementation. A factory implementation * can be as simple or complex as desired and may support just one implementation * or may return several implementations depending upon the execution * environment. *

* When implementing a factory that provides an AudioDevice that uses * class that may not be present, the factory should dynamically link to any * specific implementation classes required to instantiate or test the audio * implementation. This is so that the application as a whole * can run without these classes being present. The audio * device implementation, however, will usually statically link to the classes * required. (See the JavaSound deivce and factory for an example * of this.) * * @see FactoryRegistry * * @since 0.0.8 * @author Mat McGowan */ public abstract class AudioDeviceFactory { /** * Creates a new AudioDevice. * * @return a new instance of a specific class of AudioDevice. * @throws JavaLayerException if an instance of AudioDevice could not * be created. */ public abstract AudioDevice createAudioDevice() throws JavaLayerException; /** * Creates an instance of an AudioDevice implementation. * @param loader The ClassLoader to use to * load the named class, or null to use the * system class loader. * @param name The name of the class to load. * @return A newly-created instance of the audio device class. */ protected AudioDevice instantiate(ClassLoader loader, String name) throws ClassNotFoundException, IllegalAccessException, InstantiationException { AudioDevice dev = null; Class cls = null; if (loader==null) { cls = Class.forName(name); } else { cls = loader.loadClass(name); } Object o = cls.newInstance(); dev = (AudioDevice)o; return dev; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/Player.java0000644000175000017500000001276511377161311025265 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import java.io.InputStream; import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.BitstreamException; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.Header; import javazoom.jl.decoder.JavaLayerException; import javazoom.jl.decoder.SampleBuffer; /** * The Player class implements a simple player for playback * of an MPEG audio stream. * * @author Mat McGowan * @since 0.0.8 */ // REVIEW: the audio device should not be opened until the // first MPEG audio frame has been decoded. public class Player { /** * The current frame number. */ private int frame = 0; /** * The MPEG audio bitstream. */ // javac blank final bug. /*final*/ private Bitstream bitstream; /** * The MPEG audio decoder. */ /*final*/ private Decoder decoder; /** * The AudioDevice the audio samples are written to. */ private AudioDevice audio; /** * Has the player been closed? */ private boolean closed = false; /** * Has the player played back all frames from the stream? */ private boolean complete = false; private int lastPosition = 0; /** * Creates a new Player instance. */ public Player(InputStream stream) throws JavaLayerException { this(stream, null); } public Player(InputStream stream, AudioDevice device) throws JavaLayerException { bitstream = new Bitstream(stream); decoder = new Decoder(); if (device!=null) { audio = device; } else { FactoryRegistry r = FactoryRegistry.systemRegistry(); audio = r.createAudioDevice(); } audio.open(decoder); } public void play() throws JavaLayerException { play(Integer.MAX_VALUE); } /** * Plays a number of MPEG audio frames. * * @param frames The number of frames to play. * @return true if the last frame was played, or false if there are * more frames. */ public boolean play(int frames) throws JavaLayerException { boolean ret = true; while (frames-- > 0 && ret) { ret = decodeFrame(); } if (!ret) { // last frame, ensure all data flushed to the audio device. AudioDevice out = audio; if (out!=null) { out.flush(); synchronized (this) { complete = (!closed); close(); } } } return ret; } /** * Cloases this player. Any audio currently playing is stopped * immediately. */ public synchronized void close() { AudioDevice out = audio; if (out!=null) { closed = true; audio = null; // this may fail, so ensure object state is set up before // calling this method. out.close(); lastPosition = out.getPosition(); try { bitstream.close(); } catch (BitstreamException ex) { } } } /** * Returns the completed status of this player. * * @return true if all available MPEG audio frames have been * decoded, or false otherwise. */ public synchronized boolean isComplete() { return complete; } /** * Retrieves the position in milliseconds of the current audio * sample being played. This method delegates to the * AudioDevice that is used by this player to sound * the decoded audio samples. */ public int getPosition() { int position = lastPosition; AudioDevice out = audio; if (out!=null) { position = out.getPosition(); } return position; } /** * Decodes a single frame. * * @return true if there are no more frames to decode, false otherwise. */ protected boolean decodeFrame() throws JavaLayerException { try { AudioDevice out = audio; if (out==null) return false; Header h = bitstream.readFrame(); if (h==null) return false; // sample buffer set when decoder constructed SampleBuffer output = (SampleBuffer)decoder.decodeFrame(h, bitstream); synchronized (this) { out = audio; if (out!=null) { out.write(output.getBuffer(), 0, output.getBufferLength()); } } bitstream.closeFrame(); } catch (RuntimeException ex) { throw new JavaLayerException("Exception decoding audio frame", ex); } /* catch (IOException ex) { System.out.println("exception decoding audio frame: "+ex); return false; } catch (BitstreamException bitex) { System.out.println("exception decoding audio frame: "+bitex); return false; } catch (DecoderException decex) { System.out.println("exception decoding audio frame: "+decex); return false; } */ return true; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/JavaSoundAudioDevice.java0000644000175000017500000001207111377161311030013 0ustar /* * 11/26/04 Buffer size modified to support JRE 1.5 optimizations. * (CPU usage < 1% under P4/2Ghz, RAM < 12MB). * jlayer@javazoom.net * 11/19/04 1.0 moved to LGPL. * 06/04/01 Too fast playback fixed. mdm@techie.com * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import javax.sound.sampled.AudioFormat; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine; import javax.sound.sampled.Line; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.SourceDataLine; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.JavaLayerException; /** * The JavaSoundAudioDevice implements an audio * device by using the JavaSound API. * * @since 0.0.8 * @author Mat McGowan */ public class JavaSoundAudioDevice extends AudioDeviceBase { private SourceDataLine source = null; private AudioFormat fmt = null; private byte[] byteBuf = new byte[4096]; protected void setAudioFormat(AudioFormat fmt0) { fmt = fmt0; } protected AudioFormat getAudioFormat() { if (fmt==null) { Decoder decoder = getDecoder(); fmt = new AudioFormat(decoder.getOutputFrequency(), 16, decoder.getOutputChannels(), true, false); } return fmt; } protected DataLine.Info getSourceLineInfo() { AudioFormat fmt = getAudioFormat(); //DataLine.Info info = new DataLine.Info(SourceDataLine.class, fmt, 4000); DataLine.Info info = new DataLine.Info(SourceDataLine.class, fmt); return info; } public void open(AudioFormat fmt) throws JavaLayerException { if (!isOpen()) { setAudioFormat(fmt); openImpl(); setOpen(true); } } protected void openImpl() throws JavaLayerException { } // createSource fix. protected void createSource() throws JavaLayerException { Throwable t = null; try { Line line = AudioSystem.getLine(getSourceLineInfo()); if (line instanceof SourceDataLine) { source = (SourceDataLine)line; //source.open(fmt, millisecondsToBytes(fmt, 2000)); source.open(fmt); /* if (source.isControlSupported(FloatControl.Type.MASTER_GAIN)) { FloatControl c = (FloatControl)source.getControl(FloatControl.Type.MASTER_GAIN); c.setValue(c.getMaximum()); }*/ source.start(); } } catch (RuntimeException ex) { t = ex; } catch (LinkageError ex) { t = ex; } catch (LineUnavailableException ex) { t = ex; } if (source==null) throw new JavaLayerException("cannot obtain source audio line", t); } public int millisecondsToBytes(AudioFormat fmt, int time) { return (int)(time*(fmt.getSampleRate()*fmt.getChannels()*fmt.getSampleSizeInBits())/8000.0); } protected void closeImpl() { if (source!=null) { source.close(); } } protected void writeImpl(short[] samples, int offs, int len) throws JavaLayerException { if (source==null) createSource(); byte[] b = toByteArray(samples, offs, len); source.write(b, 0, len*2); } protected byte[] getByteArray(int length) { if (byteBuf.length < length) { byteBuf = new byte[length+1024]; } return byteBuf; } protected byte[] toByteArray(short[] samples, int offs, int len) { byte[] b = getByteArray(len*2); int idx = 0; short s; while (len-- > 0) { s = samples[offs++]; b[idx++] = (byte)s; b[idx++] = (byte)(s>>>8); } return b; } protected void flushImpl() { if (source!=null) { source.drain(); } } public int getPosition() { int pos = 0; if (source!=null) { pos = (int)(source.getMicrosecondPosition()/1000); } return pos; } /** * Runs a short test by playing a short silent sound. */ public void test() throws JavaLayerException { try { open(new AudioFormat(22050, 16, 1, true, false)); short[] data = new short[22050/10]; write(data, 0, data.length); flush(); close(); } catch (RuntimeException ex) { throw new JavaLayerException("Device test failed: "+ex); } } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/AudioDevice.java0000644000175000017500000000674111377161311026207 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.JavaLayerException; /** * The AudioDevice interface provides an abstraction for * a device capable of sounding audio samples. Samples are written to * the device wia the write() method. The device assumes * that these samples are signed 16-bit samples taken at the output frequency * of the decoder. If the decoder outputs more than one channel, the samples for * each channel are assumed to appear consecutively, with the lower numbered * channels preceeding higher-numbered channels. E.g. if there are two * channels, the samples will appear in this order: *


 * 
 *		l0, r0, l1, r1, l2, r2...
 * 
 * where 
 *	lx indicates the xth sample on channel 0
 *  rx indicates the xth sample on channel 1
 * 
* * @since 0.0.8 * @author Mat McGowan */ public interface AudioDevice { /** * Prepares the AudioDevice for playback of audio samples. * @param decoder The decoder that will be providing the audio * samples. * * If the audio device is already open, this method returns silently. * */ public void open(Decoder decoder) throws JavaLayerException; /** * Retrieves the open state of this audio device. * * @return true if this audio device is open and playing * audio samples, or false otherwise. */ public boolean isOpen(); /** * Writes a number of samples to this AudioDevice. * * @param samples The array of signed 16-bit samples to write * to the audio device. * @param offs The offset of the first sample. * @param len The number of samples to write. * * This method may return prior to the samples actually being played * by the audio device. */ public void write(short[] samples, int offs, int len) throws JavaLayerException; /** * Closes this audio device. Any currently playing audio is stopped * as soon as possible. Any previously written audio data that has not been heard * is discarded. * * The implementation should ensure that any threads currently blocking * on the device (e.g. during a write or flush * operation should be unblocked by this method. */ public void close(); /** * Blocks until all audio samples previously written to this audio device have * been heard. */ public void flush(); /** * Retrieves the current playback position in milliseconds. */ public int getPosition(); } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/AudioDeviceBase.java0000644000175000017500000001100511377161311026767 0ustar /* * 11/19/04 1.0 moved to LGPL. * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.JavaLayerException; /** * The AudioDeviceBase class provides a simple thread-safe * implementation of the AudioDevice interface. * Template methods are provided for subclasses to override and * in doing so provide the implementation for the main operations * of the AudioDevice interface. * * @since 0.0.8 * @author Mat McGowan */ /* * REVIEW: It is desirable to be able to use the decoder whe * in the implementation of open(), but the decoder * has not yet read a frame, and so much of the * desired information (sample rate, channels etc.) * are not available. */ public abstract class AudioDeviceBase implements AudioDevice { private boolean open = false; private Decoder decoder = null; /** * Opens this audio device. * * @param decoder The decoder that will provide audio data * to this audio device. */ public synchronized void open(Decoder decoder) throws JavaLayerException { if (!isOpen()) { this.decoder = decoder; openImpl(); setOpen(true); } } /** * Template method to provide the * implementation for the opening of the audio device. */ protected void openImpl() throws JavaLayerException { } /** * Sets the open state for this audio device. */ protected void setOpen(boolean open) { this.open = open; } /** * Determines if this audio device is open or not. * * @return true if the audio device is open, * false if it is not. */ public synchronized boolean isOpen() { return open; } /** * Closes this audio device. If the device is currently playing * audio, playback is stopped immediately without flushing * any buffered audio data. */ public synchronized void close() { if (isOpen()) { closeImpl(); setOpen(false); decoder = null; } } /** * Template method to provide the implementation for * closing the audio device. */ protected void closeImpl() { } /** * Writes audio data to this audio device. Audio data is * assumed to be in the output format of the decoder. This * method may return before the data has actually been sounded * by the device if the device buffers audio samples. * * @param samples The samples to write to the audio device. * @param offs The offset into the array of the first sample to write. * @param len The number of samples from the array to write. * @throws JavaLayerException if the audio data could not be * written to the audio device. * If the audio device is not open, this method does nthing. */ public void write(short[] samples, int offs, int len) throws JavaLayerException { if (isOpen()) { writeImpl(samples, offs, len); } } /** * Template method to provide the implementation for * writing audio samples to the audio device. */ protected void writeImpl(short[] samples, int offs, int len) throws JavaLayerException { } /** * Waits for any buffered audio samples to be played by the * audio device. This method should only be called prior * to closing the device. */ public void flush() { if (isOpen()) { flushImpl(); } } /** * Template method to provide the implementation for * flushing any buffered audio data. */ protected void flushImpl() { } /** * Retrieves the decoder that provides audio data to this * audio device. * * @return The associated decoder. */ protected Decoder getDecoder() { return decoder; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/player/jlp.java0000644000175000017500000000770311377161311024612 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 06/04/01 Streaming support added. javalayer@javazoom.net * * 29/01/00 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.player; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import javazoom.jl.decoder.JavaLayerException; /** * The jlp class implements a simple command-line * player for MPEG audio files. * * @author Mat McGowan (mdm@techie.com) */ public class jlp { private String fFilename = null; private boolean remote = false; public static void main(String[] args) { int retval = 0; try { jlp player = createInstance(args); if (player!=null) player.play(); } catch (Exception ex) { System.err.println(ex); ex.printStackTrace(System.err); retval = 1; } System.exit(retval); } static public jlp createInstance(String[] args) { jlp player = new jlp(); if (!player.parseArgs(args)) player = null; return player; } private jlp() { } public jlp(String filename) { init(filename); } protected void init(String filename) { fFilename = filename; } protected boolean parseArgs(String[] args) { boolean parsed = false; if (args.length == 1) { init(args[0]); parsed = true; remote = false; } else if (args.length == 2) { if (!(args[0].equals("-url"))) { showUsage(); } else { init(args[1]); parsed = true; remote = true; } } else { showUsage(); } return parsed; } public void showUsage() { System.out.println("Usage: jlp [-url] "); System.out.println(""); System.out.println(" e.g. : java javazoom.jl.player.jlp localfile.mp3"); System.out.println(" java javazoom.jl.player.jlp -url http://www.server.com/remotefile.mp3"); System.out.println(" java javazoom.jl.player.jlp -url http://www.shoutcastserver.com:8000"); } public void play() throws JavaLayerException { try { System.out.println("playing "+fFilename+"..."); InputStream in = null; if (remote == true) in = getURLInputStream(); else in = getInputStream(); AudioDevice dev = getAudioDevice(); Player player = new Player(in, dev); player.play(); } catch (IOException ex) { throw new JavaLayerException("Problem playing file "+fFilename, ex); } catch (Exception ex) { throw new JavaLayerException("Problem playing file "+fFilename, ex); } } /** * Playing file from URL (Streaming). */ protected InputStream getURLInputStream() throws Exception { URL url = new URL(fFilename); InputStream fin = url.openStream(); BufferedInputStream bin = new BufferedInputStream(fin); return bin; } /** * Playing file from FileInputStream. */ protected InputStream getInputStream() throws IOException { FileInputStream fin = new FileInputStream(fFilename); BufferedInputStream bin = new BufferedInputStream(fin); return bin; } protected AudioDevice getAudioDevice() throws JavaLayerException { return FactoryRegistry.systemRegistry().createAudioDevice(); } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/converter/0000755000175000017500000000000011377161311023666 5ustar jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/converter/WaveFileObuffer.java0000644000175000017500000000722311377161311027550 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 12/12/99 0.0.7 Renamed class, additional constructor arguments * and larger write buffers. mdm@techie.com. * * 15/02/99 Java Conversion by E.B ,javalayer@javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.converter; import javazoom.jl.decoder.Obuffer; /** * Implements an Obuffer by writing the data to * a file in RIFF WAVE format. * * @since 0.0 */ public class WaveFileObuffer extends Obuffer { private short[] buffer; private short[] bufferp; private int channels; private WaveFile outWave; /** * Creates a new WareFileObuffer instance. * * @param number_of_channels * The number of channels of audio data * this buffer will receive. * * @param freq The sample frequency of the samples in the buffer. * * @param fileName The filename to write the data to. */ public WaveFileObuffer(int number_of_channels, int freq, String FileName) { if (FileName==null) throw new NullPointerException("FileName"); buffer = new short[OBUFFERSIZE]; bufferp = new short[MAXCHANNELS]; channels = number_of_channels; for (int i = 0; i < number_of_channels; ++i) bufferp[i] = (short)i; outWave = new WaveFile(); int rc = outWave.OpenForWrite (FileName,freq,(short)16,(short)channels); } /** * Takes a 16 Bit PCM sample. */ public void append(int channel, short value) { buffer[bufferp[channel]] = value; bufferp[channel] += channels; } /** * Write the samples to the file (Random Acces). */ short[] myBuffer = new short[2]; public void write_buffer(int val) { int k = 0; int rc = 0; rc = outWave.WriteData(buffer, bufferp[0]); // REVIEW: handle RiffFile errors. /* for (int j=0;j>8)&0x000000FF) | ((buffer[j]<<8)&0x0000FF00)); //myBuffer[1] = (short) (((buffer[j+1]>>8)&0x000000FF) | ((buffer[j+1]<<8)&0x0000FF00)); myBuffer[0] = buffer[j]; myBuffer[1] = buffer[j+1]; rc = outWave.WriteData (myBuffer,2); } */ for (int i = 0; i < channels; ++i) bufferp[i] = (short)i; } public void close() { outWave.Close(); } /** * */ public void clear_buffer() {} /** * */ public void set_stop_flag() {} /* * Create STDOUT buffer * * public static Obuffer create_stdout_obuffer(MPEG_Args maplay_args) { Obuffer thebuffer = null; int mode = maplay_args.MPEGheader.mode(); int which_channels = maplay_args.which_c; if (mode == Header.single_channel || which_channels != MPEG_Args.both) thebuffer = new FileObuffer(1,maplay_args.output_filename); else thebuffer = new FileObuffer(2,maplay_args.output_filename); return(thebuffer); } */ } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/converter/WaveFile.java0000644000175000017500000003230111377161311026232 0ustar /* * 11/19/04 1.0 moved to LGPL. * 02/23/99 JavaConversion by E.B * Don Cross, April 1993. * RIFF file format classes. * See Chapter 8 of "Multimedia Programmer's Reference" in * the Microsoft Windows SDK. * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.converter; /** * Class allowing WaveFormat Access */ public class WaveFile extends RiffFile { public static final int MAX_WAVE_CHANNELS = 2; class WaveFormat_ChunkData { public short wFormatTag = 0; // Format category (PCM=1) public short nChannels = 0; // Number of channels (mono=1, stereo=2) public int nSamplesPerSec = 0; // Sampling rate [Hz] public int nAvgBytesPerSec = 0; public short nBlockAlign = 0; public short nBitsPerSample = 0; public WaveFormat_ChunkData() { wFormatTag = 1; // PCM Config(44100,(short)16,(short)1); } public void Config (int NewSamplingRate, short NewBitsPerSample, short NewNumChannels) { nSamplesPerSec = NewSamplingRate; nChannels = NewNumChannels; nBitsPerSample = NewBitsPerSample; nAvgBytesPerSec = (nChannels * nSamplesPerSec * nBitsPerSample) / 8; nBlockAlign = (short) ((nChannels * nBitsPerSample) / 8); } } class WaveFormat_Chunk { public RiffChunkHeader header; public WaveFormat_ChunkData data; public WaveFormat_Chunk() { header = new RiffChunkHeader(); data = new WaveFormat_ChunkData(); header.ckID = FourCC("fmt "); header.ckSize = 16; } public int VerifyValidity() { boolean ret = header.ckID == FourCC("fmt ") && (data.nChannels == 1 || data.nChannels == 2) && data.nAvgBytesPerSec == ( data.nChannels * data.nSamplesPerSec * data.nBitsPerSample ) / 8 && data.nBlockAlign == ( data.nChannels * data.nBitsPerSample ) / 8; if (ret == true) return 1; else return 0; } } public class WaveFileSample { public short[] chan; public WaveFileSample() {chan = new short[WaveFile.MAX_WAVE_CHANNELS];} } private WaveFormat_Chunk wave_format; private RiffChunkHeader pcm_data; private long pcm_data_offset = 0; // offset of 'pcm_data' in output file private int num_samples = 0; /** * Constructs a new WaveFile instance. */ public WaveFile() { pcm_data = new RiffChunkHeader(); wave_format = new WaveFormat_Chunk(); pcm_data.ckID = FourCC("data"); pcm_data.ckSize = 0; num_samples = 0; } /** * * public int OpenForRead (String Filename) { // Verify filename parameter as best we can... if (Filename == null) { return DDC_INVALID_CALL; } int retcode = Open ( Filename, RFM_READ ); if ( retcode == DDC_SUCCESS ) { retcode = Expect ( "WAVE", 4 ); if ( retcode == DDC_SUCCESS ) { retcode = Read(wave_format,24); if ( retcode == DDC_SUCCESS && !wave_format.VerifyValidity() ) { // This isn't standard PCM, so we don't know what it is! retcode = DDC_FILE_ERROR; } if ( retcode == DDC_SUCCESS ) { pcm_data_offset = CurrentFilePosition(); // Figure out number of samples from // file size, current file position, and // WAVE header. retcode = Read (pcm_data, 8 ); num_samples = filelength(fileno(file)) - CurrentFilePosition(); num_samples /= NumChannels(); num_samples /= (BitsPerSample() / 8); } } } return retcode; }*/ /** * */ public int OpenForWrite (String Filename, int SamplingRate, short BitsPerSample, short NumChannels) { // Verify parameters... if ( (Filename==null) || (BitsPerSample != 8 && BitsPerSample != 16) || NumChannels < 1 || NumChannels > 2 ) { return DDC_INVALID_CALL; } wave_format.data.Config ( SamplingRate, BitsPerSample, NumChannels ); int retcode = Open ( Filename, RFM_WRITE ); if ( retcode == DDC_SUCCESS ) { byte [] theWave = {(byte)'W',(byte)'A',(byte)'V',(byte)'E'}; retcode = Write ( theWave, 4 ); if ( retcode == DDC_SUCCESS ) { // Ecriture de wave_format retcode = Write (wave_format.header, 8); retcode = Write (wave_format.data.wFormatTag, 2); retcode = Write (wave_format.data.nChannels, 2); retcode = Write (wave_format.data.nSamplesPerSec, 4); retcode = Write (wave_format.data.nAvgBytesPerSec, 4); retcode = Write (wave_format.data.nBlockAlign, 2); retcode = Write (wave_format.data.nBitsPerSample, 2); /* byte[] br = new byte[16]; br[0] = (byte) ((wave_format.data.wFormatTag >> 8) & 0x00FF); br[1] = (byte) (wave_format.data.wFormatTag & 0x00FF); br[2] = (byte) ((wave_format.data.nChannels >> 8) & 0x00FF); br[3] = (byte) (wave_format.data.nChannels & 0x00FF); br[4] = (byte) ((wave_format.data.nSamplesPerSec >> 24)& 0x000000FF); br[5] = (byte) ((wave_format.data.nSamplesPerSec >> 16)& 0x000000FF); br[6] = (byte) ((wave_format.data.nSamplesPerSec >> 8)& 0x000000FF); br[7] = (byte) (wave_format.data.nSamplesPerSec & 0x000000FF); br[8] = (byte) ((wave_format.data.nAvgBytesPerSec>> 24)& 0x000000FF); br[9] = (byte) ((wave_format.data.nAvgBytesPerSec >> 16)& 0x000000FF); br[10] = (byte) ((wave_format.data.nAvgBytesPerSec >> 8)& 0x000000FF); br[11] = (byte) (wave_format.data.nAvgBytesPerSec & 0x000000FF); br[12] = (byte) ((wave_format.data.nBlockAlign >> 8) & 0x00FF); br[13] = (byte) (wave_format.data.nBlockAlign & 0x00FF); br[14] = (byte) ((wave_format.data.nBitsPerSample >> 8) & 0x00FF); br[15] = (byte) (wave_format.data.nBitsPerSample & 0x00FF); retcode = Write (br, 16); */ if ( retcode == DDC_SUCCESS ) { pcm_data_offset = CurrentFilePosition(); retcode = Write ( pcm_data, 8 ); } } } return retcode; } /** * * public int ReadSample ( short[] Sample ) { }*/ /** * * public int WriteSample( short[] Sample ) { int retcode = DDC_SUCCESS; switch ( wave_format.data.nChannels ) { case 1: switch ( wave_format.data.nBitsPerSample ) { case 8: pcm_data.ckSize += 1; retcode = Write ( Sample, 1 ); break; case 16: pcm_data.ckSize += 2; retcode = Write ( Sample, 2 ); break; default: retcode = DDC_INVALID_CALL; } break; case 2: switch ( wave_format.data.nBitsPerSample ) { case 8: retcode = Write ( Sample, 1 ); if ( retcode == DDC_SUCCESS ) { // &Sample[1] retcode = Write (Sample, 1 ); if ( retcode == DDC_SUCCESS ) { pcm_data.ckSize += 2; } } break; case 16: retcode = Write ( Sample, 2 ); if ( retcode == DDC_SUCCESS ) { // &Sample[1] retcode = Write (Sample, 2 ); if ( retcode == DDC_SUCCESS ) { pcm_data.ckSize += 4; } } break; default: retcode = DDC_INVALID_CALL; } break; default: retcode = DDC_INVALID_CALL; } return retcode; }*/ /** * * public int SeekToSample ( long SampleIndex ) { if ( SampleIndex >= NumSamples() ) { return DDC_INVALID_CALL; } int SampleSize = (BitsPerSample() + 7) / 8; int rc = Seek ( pcm_data_offset + 8 + SampleSize * NumChannels() * SampleIndex ); return rc; }*/ /** * Write 16-bit audio */ public int WriteData ( short[] data, int numData ) { int extraBytes = numData * 2; pcm_data.ckSize += extraBytes; return super.Write ( data, extraBytes ); } /** * Read 16-bit audio. * public int ReadData (short[] data, int numData) {return super.Read ( data, numData * 2);} */ /** * Write 8-bit audio. * public int WriteData ( byte[] data, int numData ) { pcm_data.ckSize += numData; return super.Write ( data, numData ); }*/ /** * Read 8-bit audio. * public int ReadData ( byte[] data, int numData ) {return super.Read ( data, numData );} */ /** * * public int ReadSamples (int num, int [] WaveFileSample) { }*/ /** * * public int WriteMonoSample ( short[] SampleData ) { switch ( wave_format.data.nBitsPerSample ) { case 8: pcm_data.ckSize += 1; return Write ( SampleData, 1 ); case 16: pcm_data.ckSize += 2; return Write ( SampleData, 2 ); } return DDC_INVALID_CALL; }*/ /** * * public int WriteStereoSample ( short[] LeftSample, short[] RightSample ) { int retcode = DDC_SUCCESS; switch ( wave_format.data.nBitsPerSample ) { case 8: retcode = Write ( LeftSample, 1 ); if ( retcode == DDC_SUCCESS ) { retcode = Write ( RightSample, 1 ); if ( retcode == DDC_SUCCESS ) { pcm_data.ckSize += 2; } } break; case 16: retcode = Write ( LeftSample, 2 ); if ( retcode == DDC_SUCCESS ) { retcode = Write ( RightSample, 2 ); if ( retcode == DDC_SUCCESS ) { pcm_data.ckSize += 4; } } break; default: retcode = DDC_INVALID_CALL; } return retcode; }*/ /** * * public int ReadMonoSample ( short[] Sample ) { int retcode = DDC_SUCCESS; switch ( wave_format.data.nBitsPerSample ) { case 8: byte[] x = {0}; retcode = Read ( x, 1 ); Sample[0] = (short)(x[0]); break; case 16: retcode = Read ( Sample, 2 ); break; default: retcode = DDC_INVALID_CALL; } return retcode; }*/ /** * * public int ReadStereoSample ( short[] LeftSampleData, short[] RightSampleData ) { int retcode = DDC_SUCCESS; byte[] x = new byte[2]; short[] y = new short[2]; switch ( wave_format.data.nBitsPerSample ) { case 8: retcode = Read ( x, 2 ); L[0] = (short) ( x[0] ); R[0] = (short) ( x[1] ); break; case 16: retcode = Read ( y, 4 ); L[0] = (short) ( y[0] ); R[0] = (short) ( y[1] ); break; default: retcode = DDC_INVALID_CALL; } return retcode; }*/ /** * */ public int Close() { int rc = DDC_SUCCESS; if ( fmode == RFM_WRITE ) rc = Backpatch ( pcm_data_offset, pcm_data, 8 ); if ( rc == DDC_SUCCESS ) rc = super.Close(); return rc; } // [Hz] public int SamplingRate() {return wave_format.data.nSamplesPerSec;} public short BitsPerSample() {return wave_format.data.nBitsPerSample;} public short NumChannels() {return wave_format.data.nChannels;} public int NumSamples() {return num_samples;} /** * Open for write using another wave file's parameters... */ public int OpenForWrite (String Filename, WaveFile OtherWave ) { return OpenForWrite ( Filename, OtherWave.SamplingRate(), OtherWave.BitsPerSample(), OtherWave.NumChannels() ); } /** * */ public long CurrentFilePosition() { return super.CurrentFilePosition(); } /* public int FourCC(String ChunkName) { byte[] p = {0x20,0x20,0x20,0x20}; ChunkName.getBytes(0,4,p,0); int ret = (((p[0] << 24)& 0xFF000000) | ((p[1] << 16)&0x00FF0000) | ((p[2] << 8)&0x0000FF00) | (p[3]&0x000000FF)); return ret; }*/ }jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/converter/jlc.java0000644000175000017500000001356711377161311025315 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 29/01/00 Initial version. mdm@techie.com * * 12/12/99 JavaLayer 0.0.7 mdm@techie.com * * 14/02/99 MPEG_Args Based Class - E.B * Adapted from javalayer and MPEG_Args. * Doc'ed and integerated with JL converter. Removed * Win32 specifics from original Maplay code. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.converter; import java.io.PrintWriter; import javazoom.jl.decoder.Crc16; import javazoom.jl.decoder.JavaLayerException; import javazoom.jl.decoder.OutputChannels; /** * The jlc class presents the JavaLayer * Conversion functionality as a command-line program. * * @since 0.0.7 */ public class jlc { static public void main(String args[]) { String[] argv; long start = System.currentTimeMillis(); int argc = args.length + 1; argv = new String[argc]; argv[0] = "jlc"; for(int i=0;i2) { try { String level = argv[i].substring(2); verbose_level = Integer.parseInt(level); } catch (NumberFormatException ex) { System.err.println("Invalid verbose level. Using default."); } } System.out.println("Verbose Activated (level "+verbose_level+")"); } /* else if (argv[i].equals("-s")) ma.stdout_mode = true; */ else if (argv[i].equals("-p")) { if (++i == argc) { System.out.println("Please specify an output filename after the -p option!"); System.exit (1); } //output_mode = O_WAVEFILE; output_filename = argv[i]; } /*else if (argv[i].equals("-f")) { if (++i == argc) { System.out.println("Please specify a new scalefactor after the -f option!"); System.exit(1); } ma.use_own_scalefactor = true; // ma.scalefactor = argv[i]; }*/ else return Usage(); } else { filename = argv[i]; System.out.println("FileName = "+argv[i]); if (filename == null) return Usage(); } i++; } if (filename == null) return Usage(); return true; } /** * Usage of JavaLayer. */ public boolean Usage() { System.out.println("JavaLayer Converter :"); System.out.println(" -v[x] verbose mode. "); System.out.println(" default = 2"); /* System.out.println(" -s write u-law samples at 8 kHz rate to stdout"); System.out.println(" -l decode only the left channel"); System.out.println(" -r decode only the right channel"); System.out.println(" -d downmix mode (layer III only)"); System.out.println(" -s write pcm samples to stdout"); System.out.println(" -d downmix mode (layer III only)");*/ System.out.println(" -p name output as a PCM wave file"); System.out.println(""); System.out.println(" More info on http://www.javazoom.net"); /* System.out.println(" -f ushort use this scalefactor instead of the default value 32768");*/ return false; } }; };jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/converter/RiffFile.java0000644000175000017500000003031011377161311026214 0ustar /* * 11/19/04 1.0 moved to LGPL. * 02/23/99 JavaConversion by E.B * Don Cross, April 1993. * RIFF file format classes. * See Chapter 8 of "Multimedia Programmer's Reference" in * the Microsoft Windows SDK. * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.converter; import java.io.IOException; import java.io.RandomAccessFile; /** * Class to manage RIFF files */ public class RiffFile { class RiffChunkHeader { public int ckID = 0; // Four-character chunk ID public int ckSize = 0; // Length of data in chunk public RiffChunkHeader() {} } // DDCRET public static final int DDC_SUCCESS = 0; // The operation succeded public static final int DDC_FAILURE = 1; // The operation failed for unspecified reasons public static final int DDC_OUT_OF_MEMORY = 2; // Operation failed due to running out of memory public static final int DDC_FILE_ERROR = 3; // Operation encountered file I/O error public static final int DDC_INVALID_CALL = 4; // Operation was called with invalid parameters public static final int DDC_USER_ABORT = 5; // Operation was aborted by the user public static final int DDC_INVALID_FILE = 6; // File format does not match // RiffFileMode public static final int RFM_UNKNOWN = 0; // undefined type (can use to mean "N/A" or "not open") public static final int RFM_WRITE = 1; // open for write public static final int RFM_READ = 2; // open for read private RiffChunkHeader riff_header; // header for whole file protected int fmode; // current file I/O mode protected RandomAccessFile file; // I/O stream to use /** * Dummy Constructor */ public RiffFile() { file = null; fmode = RFM_UNKNOWN; riff_header = new RiffChunkHeader(); riff_header.ckID = FourCC("RIFF"); riff_header.ckSize = 0; } /** * Return File Mode. */ public int CurrentFileMode() {return fmode;} /** * Open a RIFF file. */ public int Open(String Filename, int NewMode) { int retcode = DDC_SUCCESS; if ( fmode != RFM_UNKNOWN ) { retcode = Close(); } if ( retcode == DDC_SUCCESS ) { switch ( NewMode ) { case RFM_WRITE: try { file = new RandomAccessFile(Filename,"rw"); try { // Write the RIFF header... // We will have to come back later and patch it! byte[] br = new byte[8]; br[0] = (byte) ((riff_header.ckID >>> 24) & 0x000000FF); br[1] = (byte) ((riff_header.ckID >>> 16) & 0x000000FF); br[2] = (byte) ((riff_header.ckID >>> 8) & 0x000000FF); br[3] = (byte) (riff_header.ckID & 0x000000FF); byte br4 = (byte) ((riff_header.ckSize >>> 24)& 0x000000FF); byte br5 = (byte) ((riff_header.ckSize >>> 16)& 0x000000FF); byte br6 = (byte) ((riff_header.ckSize >>> 8)& 0x000000FF); byte br7 = (byte) (riff_header.ckSize & 0x000000FF); br[4] = br7; br[5] = br6; br[6] = br5; br[7] = br4; file.write(br,0,8); fmode = RFM_WRITE; } catch (IOException ioe) { file.close(); fmode = RFM_UNKNOWN; } } catch (IOException ioe) { fmode = RFM_UNKNOWN; retcode = DDC_FILE_ERROR; } break; case RFM_READ: try { file = new RandomAccessFile(Filename,"r"); try { // Try to read the RIFF header... byte[] br = new byte[8]; file.read(br,0,8); fmode = RFM_READ; riff_header.ckID = ((br[0]<<24)& 0xFF000000) | ((br[1]<<16)&0x00FF0000) | ((br[2]<<8)&0x0000FF00) | (br[3]&0x000000FF); riff_header.ckSize = ((br[4]<<24)& 0xFF000000) | ((br[5]<<16)&0x00FF0000) | ((br[6]<<8)&0x0000FF00) | (br[7]&0x000000FF); } catch (IOException ioe) { file.close(); fmode = RFM_UNKNOWN; } } catch (IOException ioe) { fmode = RFM_UNKNOWN; retcode = DDC_FILE_ERROR; } break; default: retcode = DDC_INVALID_CALL; } } return retcode; } /** * Write NumBytes data. */ public int Write(byte[] Data, int NumBytes ) { if ( fmode != RFM_WRITE ) { return DDC_INVALID_CALL; } try { file.write(Data,0,NumBytes); fmode = RFM_WRITE; } catch (IOException ioe) { return DDC_FILE_ERROR; } riff_header.ckSize += NumBytes; return DDC_SUCCESS; } /** * Write NumBytes data. */ public int Write(short[] Data, int NumBytes ) { byte[] theData = new byte[NumBytes]; int yc = 0; for (int y = 0;y>> 8) & 0x00FF); } if ( fmode != RFM_WRITE ) { return DDC_INVALID_CALL; } try { file.write(theData,0,NumBytes); fmode = RFM_WRITE; } catch (IOException ioe) { return DDC_FILE_ERROR; } riff_header.ckSize += NumBytes; return DDC_SUCCESS; } /** * Write NumBytes data. */ public int Write(RiffChunkHeader Triff_header, int NumBytes ) { byte[] br = new byte[8]; br[0] = (byte) ((Triff_header.ckID >>> 24) & 0x000000FF); br[1] = (byte) ((Triff_header.ckID >>> 16) & 0x000000FF); br[2] = (byte) ((Triff_header.ckID >>> 8) & 0x000000FF); br[3] = (byte) (Triff_header.ckID & 0x000000FF); byte br4 = (byte) ((Triff_header.ckSize >>> 24)& 0x000000FF); byte br5 = (byte) ((Triff_header.ckSize >>> 16)& 0x000000FF); byte br6 = (byte) ((Triff_header.ckSize >>> 8)& 0x000000FF); byte br7 = (byte) (Triff_header.ckSize & 0x000000FF); br[4] = br7; br[5] = br6; br[6] = br5; br[7] = br4; if ( fmode != RFM_WRITE ) { return DDC_INVALID_CALL; } try { file.write(br,0,NumBytes); fmode = RFM_WRITE; } catch (IOException ioe) { return DDC_FILE_ERROR; } riff_header.ckSize += NumBytes; return DDC_SUCCESS; } /** * Write NumBytes data. */ public int Write(short Data, int NumBytes ) { short theData = (short) ( ((Data>>>8)&0x00FF) | ((Data<<8)&0xFF00) ); if ( fmode != RFM_WRITE ) { return DDC_INVALID_CALL; } try { file.writeShort(theData); fmode = RFM_WRITE; } catch (IOException ioe) { return DDC_FILE_ERROR; } riff_header.ckSize += NumBytes; return DDC_SUCCESS; } /** * Write NumBytes data. */ public int Write(int Data, int NumBytes ) { short theDataL = (short) ((Data>>>16)&0x0000FFFF); short theDataR = (short) (Data&0x0000FFFF); short theDataLI = (short) ( ((theDataL>>>8)&0x00FF) | ((theDataL<<8)&0xFF00) ); short theDataRI = (short) ( ((theDataR>>>8)&0x00FF) | ((theDataR<<8)&0xFF00) ); int theData = ((theDataRI<<16)&0xFFFF0000) | (theDataLI&0x0000FFFF); if ( fmode != RFM_WRITE ) { return DDC_INVALID_CALL; } try { file.writeInt(theData); fmode = RFM_WRITE; } catch (IOException ioe) { return DDC_FILE_ERROR; } riff_header.ckSize += NumBytes; return DDC_SUCCESS; } /** * Read NumBytes data. */ public int Read (byte[] Data, int NumBytes) { int retcode = DDC_SUCCESS; try { file.read(Data,0,NumBytes); } catch (IOException ioe) { retcode = DDC_FILE_ERROR; } return retcode; } /** * Expect NumBytes data. */ public int Expect(String Data, int NumBytes ) { byte target = 0; int cnt = 0; try { while ((NumBytes--) != 0) { target = file.readByte(); if (target != Data.charAt(cnt++)) return DDC_FILE_ERROR; } } catch (IOException ioe) { return DDC_FILE_ERROR; } return DDC_SUCCESS; } /** * Close Riff File. * Length is written too. */ public int Close() { int retcode = DDC_SUCCESS; switch ( fmode ) { case RFM_WRITE: try { file.seek(0); try { byte[] br = new byte[8]; br[0] = (byte) ((riff_header.ckID >>> 24) & 0x000000FF); br[1] = (byte) ((riff_header.ckID >>> 16) & 0x000000FF); br[2] = (byte) ((riff_header.ckID >>> 8) & 0x000000FF); br[3] = (byte) (riff_header.ckID & 0x000000FF); br[7] = (byte) ((riff_header.ckSize >>> 24)& 0x000000FF); br[6] = (byte) ((riff_header.ckSize >>> 16)& 0x000000FF); br[5] = (byte) ((riff_header.ckSize >>> 8)& 0x000000FF); br[4] = (byte) (riff_header.ckSize & 0x000000FF); file.write(br,0,8); file.close(); } catch (IOException ioe) { retcode = DDC_FILE_ERROR; } } catch (IOException ioe) { retcode = DDC_FILE_ERROR; } break; case RFM_READ: try { file.close(); } catch (IOException ioe) { retcode = DDC_FILE_ERROR; } break; } file = null; fmode = RFM_UNKNOWN; return retcode; } /** * Return File Position. */ public long CurrentFilePosition() { long position; try { position = file.getFilePointer(); } catch (IOException ioe) { position = -1; } return position; } /** * Write Data to specified offset. */ public int Backpatch (long FileOffset, RiffChunkHeader Data, int NumBytes ) { if (file == null) { return DDC_INVALID_CALL; } try { file.seek(FileOffset); } catch (IOException ioe) { return DDC_FILE_ERROR; } return Write ( Data, NumBytes ); } public int Backpatch (long FileOffset, byte[] Data, int NumBytes ) { if (file == null) { return DDC_INVALID_CALL; } try { file.seek(FileOffset); } catch (IOException ioe) { return DDC_FILE_ERROR; } return Write ( Data, NumBytes ); } /** * Seek in the File. */ protected int Seek(long offset) { int rc; try { file.seek(offset); rc = DDC_SUCCESS; } catch (IOException ioe) { rc = DDC_FILE_ERROR; } return rc; } /** * Error Messages. */ private String DDCRET_String(int retcode) { switch ( retcode ) { case DDC_SUCCESS: return "DDC_SUCCESS"; case DDC_FAILURE: return "DDC_FAILURE"; case DDC_OUT_OF_MEMORY: return "DDC_OUT_OF_MEMORY"; case DDC_FILE_ERROR: return "DDC_FILE_ERROR"; case DDC_INVALID_CALL: return "DDC_INVALID_CALL"; case DDC_USER_ABORT: return "DDC_USER_ABORT"; case DDC_INVALID_FILE: return "DDC_INVALID_FILE"; } return "Unknown Error"; } /** * Fill the header. */ public static int FourCC(String ChunkName) { //byte[] p = {0x20,0x20,0x20,0x20}; // ChunkName.getBytes(0,4,p,0); // int ret = (((p[0] << 24)& 0xFF000000) | ((p[1] << 16)&0x00FF0000) | ((p[2] << 8)&0x0000FF00) | (p[3]&0x000000FF)); //return ret; return ((((byte)(ChunkName.charAt(0)) << 24)& 0xFF000000) | (((byte)(ChunkName.charAt(1)) << 16)&0x00FF0000) | (((byte)(ChunkName.charAt(2)) << 8)&0x0000FF00) | ((byte)(ChunkName.charAt(3))&0x000000FF)); } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/converter/Converter.java0000644000175000017500000002534411377161311026510 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Original verion. mdm@techie.com. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.converter; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import javazoom.jl.decoder.Bitstream; import javazoom.jl.decoder.Decoder; import javazoom.jl.decoder.Header; import javazoom.jl.decoder.JavaLayerException; import javazoom.jl.decoder.Obuffer; /** * The Converter class implements the conversion of * an MPEG audio file to a .WAV file. To convert an MPEG audio stream, * just create an instance of this class and call the convert() * method, passing in the names of the input and output files. You can * pass in optional ProgressListener and * Decoder.Params objects also to customize the conversion. * * @author MDM 12/12/99 * @since 0.0.7 */ public class Converter { /** * Creates a new converter instance. */ public Converter() { } public synchronized void convert(String sourceName, String destName) throws JavaLayerException { convert(sourceName, destName, null, null); } public synchronized void convert(String sourceName, String destName, ProgressListener progressListener) throws JavaLayerException { convert(sourceName, destName, progressListener, null); } public void convert(String sourceName, String destName, ProgressListener progressListener, Decoder.Params decoderParams) throws JavaLayerException { if (destName.length()==0) destName = null; try { InputStream in = openInput(sourceName); convert(in, destName, progressListener, decoderParams); in.close(); } catch(IOException ioe) { throw new JavaLayerException(ioe.getLocalizedMessage(), ioe); } } public synchronized void convert(InputStream sourceStream, String destName, ProgressListener progressListener, Decoder.Params decoderParams) throws JavaLayerException { if (progressListener==null) progressListener = PrintWriterProgressListener.newStdOut( PrintWriterProgressListener.NO_DETAIL); try { if (!(sourceStream instanceof BufferedInputStream)) sourceStream = new BufferedInputStream(sourceStream); int frameCount = -1; if (sourceStream.markSupported()) { sourceStream.mark(-1); frameCount = countFrames(sourceStream); sourceStream.reset(); } progressListener.converterUpdate(ProgressListener.UPDATE_FRAME_COUNT, frameCount, 0); Obuffer output = null; Decoder decoder = new Decoder(decoderParams); Bitstream stream = new Bitstream(sourceStream); if (frameCount==-1) frameCount = Integer.MAX_VALUE; int frame = 0; long startTime = System.currentTimeMillis(); try { for (; frameupdateID parameter can take these values: * * UPDATE_FRAME_COUNT: param1 is the frame count, or -1 if not known. * UPDATE_CONVERT_COMPLETE: param1 is the conversion time, param2 * is the number of frames converted. */ public void converterUpdate(int updateID, int param1, int param2); /** * If the converter wishes to make a first pass over the * audio frames, this is called as each frame is parsed. */ public void parsedFrame(int frameNo, Header header); /** * This method is called after each frame has been read, * but before it has been decoded. * * @param frameNo The 0-based sequence number of the frame. * @param header The Header rerpesenting the frame just read. */ public void readFrame(int frameNo, Header header); /** * This method is called after a frame has been decoded. * * @param frameNo The 0-based sequence number of the frame. * @param header The Header rerpesenting the frame just read. * @param o The Obuffer the deocded data was written to. */ public void decodedFrame(int frameNo, Header header, Obuffer o); /** * Called when an exception is thrown during while converting * a frame. * * @param t The Throwable instance that * was thrown. * * @return true to continue processing, or false * to abort conversion. * * If this method returns false, the exception * is propagated to the caller of the convert() method. If * true is returned, the exception is silently * ignored and the converter moves onto the next frame. */ public boolean converterException(Throwable t); } /** * Implementation of ProgressListener that writes * notification text to a PrintWriter. */ // REVIEW: i18n of text and order required. static public class PrintWriterProgressListener implements ProgressListener { static public final int NO_DETAIL = 0; /** * Level of detail typically expected of expert * users. */ static public final int EXPERT_DETAIL = 1; /** * Verbose detail. */ static public final int VERBOSE_DETAIL = 2; /** * Debug detail. All frame read notifications are shown. */ static public final int DEBUG_DETAIL = 7; static public final int MAX_DETAIL = 10; private PrintWriter pw; private int detailLevel; static public PrintWriterProgressListener newStdOut(int detail) { return new PrintWriterProgressListener( new PrintWriter(System.out, true), detail); } public PrintWriterProgressListener(PrintWriter writer, int detailLevel) { this.pw = writer; this.detailLevel = detailLevel; } public boolean isDetail(int detail) { return (this.detailLevel >= detail); } public void converterUpdate(int updateID, int param1, int param2) { if (isDetail(VERBOSE_DETAIL)) { switch (updateID) { case UPDATE_CONVERT_COMPLETE: // catch divide by zero errors. if (param2==0) param2 = 1; pw.println(); pw.println("Converted "+param2+" frames in "+param1+" ms ("+ (param1/param2)+" ms per frame.)"); } } } public void parsedFrame(int frameNo, Header header) { if ((frameNo==0) && isDetail(VERBOSE_DETAIL)) { String headerString = header.toString(); pw.println("File is a "+headerString); } else if (isDetail(MAX_DETAIL)) { String headerString = header.toString(); pw.println("Prased frame "+frameNo+": "+headerString); } } public void readFrame(int frameNo, Header header) { if ((frameNo==0) && isDetail(VERBOSE_DETAIL)) { String headerString = header.toString(); pw.println("File is a "+headerString); } else if (isDetail(MAX_DETAIL)) { String headerString = header.toString(); pw.println("Read frame "+frameNo+": "+headerString); } } public void decodedFrame(int frameNo, Header header, Obuffer o) { if (isDetail(MAX_DETAIL)) { String headerString = header.toString(); pw.println("Decoded frame "+frameNo+": "+headerString); pw.println("Output: "+o); } else if (isDetail(VERBOSE_DETAIL)) { if (frameNo==0) { pw.print("Converting."); pw.flush(); } if ((frameNo % 10)==0) { pw.print('.'); pw.flush(); } } } public boolean converterException(Throwable t) { if (this.detailLevel>NO_DETAIL) { t.printStackTrace(pw); pw.flush(); } return false; } } }jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/0000755000175000017500000000000011377161311023264 5ustar jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/BitstreamErrors.java0000644000175000017500000000404611377161311027262 0ustar /* * 11/19/04 1.0 moved to LGPL. * 11/17/04 INVALIDFRAME code added. javalayer@javazoom.net * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * This interface describes all error codes that can be thrown * in BistreamExceptions. * * @see BitstreamException * * @author MDM 12/12/99 * @since 0.0.6 */ public interface BitstreamErrors extends JavaLayerErrors { /** * An undeterminable error occurred. */ static public final int UNKNOWN_ERROR = BITSTREAM_ERROR + 0; /** * The header describes an unknown sample rate. */ static public final int UNKNOWN_SAMPLE_RATE = BITSTREAM_ERROR + 1; /** * A problem occurred reading from the stream. */ static public final int STREAM_ERROR = BITSTREAM_ERROR + 2; /** * The end of the stream was reached prematurely. */ static public final int UNEXPECTED_EOF = BITSTREAM_ERROR + 3; /** * The end of the stream was reached. */ static public final int STREAM_EOF = BITSTREAM_ERROR + 4; /** * Frame data are missing. */ static public final int INVALIDFRAME = BITSTREAM_ERROR + 5; /** * */ static public final int BITSTREAM_LAST = 0x1ff; } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Bitstream.java0000644000175000017500000003632111377161311026066 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 11/17/04 Uncomplete frames discarded. E.B, javalayer@javazoom.net * * 12/05/03 ID3v2 tag returned. E.B, javalayer@javazoom.net * * 12/12/99 Based on Ibitstream. Exceptions thrown on errors, * Temporary removed seek functionality. mdm@techie.com * * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net * * 04/14/97 : Added function prototypes for new syncing and seeking * mechanisms. Also made this file portable. Changes made by Jeff Tsay * * @(#) ibitstream.h 1.5, last edit: 6/15/94 16:55:34 * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) * @(#) Berlin University of Technology *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PushbackInputStream; /** * The Bistream class is responsible for parsing * an MPEG audio bitstream. * * REVIEW: much of the parsing currently occurs in the * various decoders. This should be moved into this class and associated * inner classes. */ public final class Bitstream implements BitstreamErrors { /** * Synchronization control constant for the initial * synchronization to the start of a frame. */ static byte INITIAL_SYNC = 0; /** * Synchronization control constant for non-initial frame * synchronizations. */ static byte STRICT_SYNC = 1; // max. 1730 bytes per frame: 144 * 384kbit/s / 32000 Hz + 2 Bytes CRC /** * Maximum size of the frame buffer. */ private static final int BUFFER_INT_SIZE = 433; /** * The frame buffer that holds the data for the current frame. */ private final int[] framebuffer = new int[BUFFER_INT_SIZE]; /** * Number of valid bytes in the frame buffer. */ private int framesize; /** * The bytes read from the stream. */ private byte[] frame_bytes = new byte[BUFFER_INT_SIZE*4]; /** * Index into framebuffer where the next bits are * retrieved. */ private int wordpointer; /** * Number (0-31, from MSB to LSB) of next bit for get_bits() */ private int bitindex; /** * The current specified syncword */ private int syncword; /** * Audio header position in stream. */ private int header_pos = 0; /** * */ private boolean single_ch_mode; //private int current_frame_number; //private int last_frame_number; private final int bitmask[] = {0, // dummy 0x00000001, 0x00000003, 0x00000007, 0x0000000F, 0x0000001F, 0x0000003F, 0x0000007F, 0x000000FF, 0x000001FF, 0x000003FF, 0x000007FF, 0x00000FFF, 0x00001FFF, 0x00003FFF, 0x00007FFF, 0x0000FFFF, 0x0001FFFF }; private final PushbackInputStream source; private final Header header = new Header(); private final byte syncbuf[] = new byte[4]; private Crc16[] crc = new Crc16[1]; private byte[] rawid3v2 = null; private boolean firstframe = true; /** * Construct a IBitstream that reads data from a * given InputStream. * * @param in The InputStream to read from. */ public Bitstream(InputStream in) { if (in==null) throw new NullPointerException("in"); in = new BufferedInputStream(in); loadID3v2(in); firstframe = true; //source = new PushbackInputStream(in, 1024); source = new PushbackInputStream(in, BUFFER_INT_SIZE*4); closeFrame(); //current_frame_number = -1; //last_frame_number = -1; } /** * Return position of the first audio header. * @return size of ID3v2 tag frames. */ public int header_pos() { return header_pos; } /** * Load ID3v2 frames. * @param in MP3 InputStream. * @author JavaZOOM */ private void loadID3v2(InputStream in) { int size = -1; try { // Read ID3v2 header (10 bytes). in.mark(10); size = readID3v2Header(in); header_pos = size; } catch (IOException e) {} finally { try { // Unread ID3v2 header (10 bytes). in.reset(); } catch (IOException e) {} } // Load ID3v2 tags. try { if (size > 0) { rawid3v2 = new byte[size]; in.read(rawid3v2,0,rawid3v2.length); } } catch (IOException e) {} } /** * Parse ID3v2 tag header to find out size of ID3v2 frames. * @param in MP3 InputStream * @return size of ID3v2 frames + header * @throws IOException * @author JavaZOOM */ private int readID3v2Header(InputStream in) throws IOException { byte[] id3header = new byte[4]; int size = -10; in.read(id3header,0,3); // Look for ID3v2 if ( (id3header[0]=='I') && (id3header[1]=='D') && (id3header[2]=='3')) { in.read(id3header,0,3); int majorVersion = id3header[0]; int revision = id3header[1]; in.read(id3header,0,4); size = (int) (id3header[0] << 21) + (id3header[1] << 14) + (id3header[2] << 7) + (id3header[3]); } return (size+10); } /** * Return raw ID3v2 frames + header. * @return ID3v2 InputStream or null if ID3v2 frames are not available. */ public InputStream getRawID3v2() { if (rawid3v2 == null) return null; else { ByteArrayInputStream bain = new ByteArrayInputStream(rawid3v2); return bain; } } /** * Close the Bitstream. * @throws BitstreamException */ public void close() throws BitstreamException { try { source.close(); } catch (IOException ex) { throw newBitstreamException(STREAM_ERROR, ex); } } /** * Reads and parses the next frame from the input source. * @return the Header describing details of the frame read, * or null if the end of the stream has been reached. */ public Header readFrame() throws BitstreamException { Header result = null; try { result = readNextFrame(); // E.B, Parse VBR (if any) first frame. if (firstframe == true) { result.parseVBR(frame_bytes); firstframe = false; } } catch (BitstreamException ex) { if ((ex.getErrorCode()==INVALIDFRAME)) { // Try to skip this frame. //System.out.println("INVALIDFRAME"); try { closeFrame(); result = readNextFrame(); } catch (BitstreamException e) { if ((e.getErrorCode()!=STREAM_EOF)) { // wrap original exception so stack trace is maintained. throw newBitstreamException(e.getErrorCode(), e); } } } else if ((ex.getErrorCode()!=STREAM_EOF)) { // wrap original exception so stack trace is maintained. throw newBitstreamException(ex.getErrorCode(), ex); } } return result; } /** * Read next MP3 frame. * @return MP3 frame header. * @throws BitstreamException */ private Header readNextFrame() throws BitstreamException { if (framesize == -1) { nextFrame(); } return header; } /** * Read next MP3 frame. * @throws BitstreamException */ private void nextFrame() throws BitstreamException { // entire frame is read by the header class. header.read_header(this, crc); } /** * Unreads the bytes read from the frame. * @throws BitstreamException */ // REVIEW: add new error codes for this. public void unreadFrame() throws BitstreamException { if (wordpointer==-1 && bitindex==-1 && (framesize>0)) { try { source.unread(frame_bytes, 0, framesize); } catch (IOException ex) { throw newBitstreamException(STREAM_ERROR); } } } /** * Close MP3 frame. */ public void closeFrame() { framesize = -1; wordpointer = -1; bitindex = -1; } /** * Determines if the next 4 bytes of the stream represent a * frame header. */ public boolean isSyncCurrentPosition(int syncmode) throws BitstreamException { int read = readBytes(syncbuf, 0, 4); int headerstring = ((syncbuf[0] << 24) & 0xFF000000) | ((syncbuf[1] << 16) & 0x00FF0000) | ((syncbuf[2] << 8) & 0x0000FF00) | ((syncbuf[3] << 0) & 0x000000FF); try { source.unread(syncbuf, 0, read); } catch (IOException ex) { } boolean sync = false; switch (read) { case 0: sync = true; break; case 4: sync = isSyncMark(headerstring, syncmode, syncword); break; } return sync; } // REVIEW: this class should provide inner classes to // parse the frame contents. Eventually, readBits will // be removed. public int readBits(int n) { return get_bits(n); } public int readCheckedBits(int n) { // REVIEW: implement CRC check. return get_bits(n); } protected BitstreamException newBitstreamException(int errorcode) { return new BitstreamException(errorcode, null); } protected BitstreamException newBitstreamException(int errorcode, Throwable throwable) { return new BitstreamException(errorcode, throwable); } /** * Get next 32 bits from bitstream. * They are stored in the headerstring. * syncmod allows Synchro flag ID * The returned value is False at the end of stream. */ int syncHeader(byte syncmode) throws BitstreamException { boolean sync; int headerstring; // read additional 2 bytes int bytesRead = readBytes(syncbuf, 0, 3); if (bytesRead!=3) throw newBitstreamException(STREAM_EOF, null); headerstring = ((syncbuf[0] << 16) & 0x00FF0000) | ((syncbuf[1] << 8) & 0x0000FF00) | ((syncbuf[2] << 0) & 0x000000FF); do { headerstring <<= 8; if (readBytes(syncbuf, 3, 1)!=1) throw newBitstreamException(STREAM_EOF, null); headerstring |= (syncbuf[3] & 0x000000FF); sync = isSyncMark(headerstring, syncmode, syncword); } while (!sync); //current_frame_number++; //if (last_frame_number < current_frame_number) last_frame_number = current_frame_number; return headerstring; } public boolean isSyncMark(int headerstring, int syncmode, int word) { boolean sync = false; if (syncmode == INITIAL_SYNC) { //sync = ((headerstring & 0xFFF00000) == 0xFFF00000); sync = ((headerstring & 0xFFE00000) == 0xFFE00000); // SZD: MPEG 2.5 } else { sync = ((headerstring & 0xFFF80C00) == word) && (((headerstring & 0x000000C0) == 0x000000C0) == single_ch_mode); } // filter out invalid sample rate if (sync) sync = (((headerstring >>> 10) & 3)!=3); // filter out invalid layer if (sync) sync = (((headerstring >>> 17) & 3)!=0); // filter out invalid version if (sync) sync = (((headerstring >>> 19) & 3)!=1); return sync; } /** * Reads the data for the next frame. The frame is not parsed * until parse frame is called. */ int read_frame_data(int bytesize) throws BitstreamException { int numread = 0; numread = readFully(frame_bytes, 0, bytesize); framesize = bytesize; wordpointer = -1; bitindex = -1; return numread; } /** * Parses the data previously read with read_frame_data(). */ void parse_frame() throws BitstreamException { // Convert Bytes read to int int b=0; byte[] byteread = frame_bytes; int bytesize = framesize; // Check ID3v1 TAG (True only if last frame). //for (int t=0;t<(byteread.length)-2;t++) //{ // if ((byteread[t]=='T') && (byteread[t+1]=='A') && (byteread[t+2]=='G')) // { // System.out.println("ID3v1 detected at offset "+t); // throw newBitstreamException(INVALIDFRAME, null); // } //} for (int k=0;k>> (32 - sum)) & bitmask[number_of_bits]; // returnvalue = (wordpointer[0] >> (32 - sum)) & bitmask[number_of_bits]; if ((bitindex += number_of_bits) == 32) { bitindex = 0; wordpointer++; // added by me! } return returnvalue; } // E.B : Check that ? //((short[])&returnvalue)[0] = ((short[])wordpointer + 1)[0]; //wordpointer++; // Added by me! //((short[])&returnvalue + 1)[0] = ((short[])wordpointer)[0]; int Right = (framebuffer[wordpointer] & 0x0000FFFF); wordpointer++; int Left = (framebuffer[wordpointer] & 0xFFFF0000); returnvalue = ((Right << 16) & 0xFFFF0000) | ((Left >>> 16)& 0x0000FFFF); returnvalue >>>= 48 - sum; // returnvalue >>= 16 - (number_of_bits - (32 - bitindex)) returnvalue &= bitmask[number_of_bits]; bitindex = sum - 32; return returnvalue; } /** * Set the word we want to sync the header to. * In Big-Endian byte order */ void set_syncword(int syncword0) { syncword = syncword0 & 0xFFFFFF3F; single_ch_mode = ((syncword0 & 0x000000C0) == 0x000000C0); } /** * Reads the exact number of bytes from the source * input stream into a byte array. * * @param b The byte array to read the specified number * of bytes into. * @param offs The index in the array where the first byte * read should be stored. * @param len the number of bytes to read. * * @exception BitstreamException is thrown if the specified * number of bytes could not be read from the stream. */ private int readFully(byte[] b, int offs, int len) throws BitstreamException { int nRead = 0; try { while (len > 0) { int bytesread = source.read(b, offs, len); if (bytesread == -1) { while (len-->0) { b[offs++] = 0; } break; //throw newBitstreamException(UNEXPECTED_EOF, new EOFException()); } nRead = nRead + bytesread; offs += bytesread; len -= bytesread; } } catch (IOException ex) { throw newBitstreamException(STREAM_ERROR, ex); } return nRead; } /** * Simlar to readFully, but doesn't throw exception when * EOF is reached. */ private int readBytes(byte[] b, int offs, int len) throws BitstreamException { int totalBytesRead = 0; try { while (len > 0) { int bytesread = source.read(b, offs, len); if (bytesread == -1) { break; } totalBytesRead += bytesread; offs += bytesread; len -= bytesread; } } catch (IOException ex) { throw newBitstreamException(STREAM_ERROR, ex); } return totalBytesRead; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/au2lin.ser0000644000175000017500000000103311377161311025166 0ustar ur[S.]xp !&*.27;?BDGIKMOQSUXZ\^`b56789:;<^_` a2Rr3Ss ,<:86420.,*(&$"   LK J H G F EDc#b"a!` oO/nN.ueUE5%xph`XPH@80( jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/FrameDecoder.java0000644000175000017500000000256511377161311026457 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Implementations of FrameDecoder are responsible for decoding * an MPEG audio frame. * */ //REVIEW: the interface currently is too thin. There should be // methods to specify the output buffer, the synthesis filters and // possibly other objects used by the decoder. public interface FrameDecoder { /** * Decodes one frame of MPEG audio. */ public void decodeFrame(); } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/readme.txt0000644000175000017500000000050211377161311025257 0ustar TODO: Implement high-level Player and Converter classes. Add MP1 and MP2 support and test. Add option to run each "stage" on own thread. E.g. read & parse input, decode subbands, subband synthesis, audio output. Retrofit seek support (temporarily removed when reworking classes.) Document and give example code. jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Header.java0000644000175000017500000005152311377161311025325 0ustar /* * 11/19/04 : 1.0 moved to LGPL. * VBRI header support added, E.B javalayer@javazoom.net * * 12/04/03 : VBR (XING) header support added, E.B javalayer@javazoom.net * * 02/13/99 : Java Conversion by JavaZOOM , E.B javalayer@javazoom.net * * Declarations for MPEG header class * A few layer III, MPEG-2 LSF, and seeking modifications made by Jeff Tsay. * Last modified : 04/19/97 * * @(#) header.h 1.7, last edit: 6/15/94 16:55:33 * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) * @(#) Berlin University of Technology *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Class for extracting information from a frame header. */ public final class Header { public static final int[][] frequencies = {{22050, 24000, 16000, 1}, {44100, 48000, 32000, 1}, {11025, 12000, 8000, 1}}; // SZD: MPEG25 /** * Constant for MPEG-2 LSF version */ public static final int MPEG2_LSF = 0; public static final int MPEG25_LSF = 2; // SZD /** * Constant for MPEG-1 version */ public static final int MPEG1 = 1; public static final int STEREO = 0; public static final int JOINT_STEREO = 1; public static final int DUAL_CHANNEL = 2; public static final int SINGLE_CHANNEL = 3; public static final int FOURTYFOUR_POINT_ONE = 0; public static final int FOURTYEIGHT=1; public static final int THIRTYTWO=2; private int h_layer, h_protection_bit, h_bitrate_index, h_padding_bit, h_mode_extension; private int h_version; private int h_mode; private int h_sample_frequency; private int h_number_of_subbands, h_intensity_stereo_bound; private boolean h_copyright, h_original; // VBR support added by E.B private double[] h_vbr_time_per_frame = {-1, 384, 1152, 1152}; private boolean h_vbr; private int h_vbr_frames; private int h_vbr_scale; private int h_vbr_bytes; private byte[] h_vbr_toc; private byte syncmode = Bitstream.INITIAL_SYNC; private Crc16 crc; public short checksum; public int framesize; public int nSlots; private int _headerstring = -1; // E.B Header() { } public String toString() { StringBuffer buffer = new StringBuffer(200); buffer.append("Layer "); buffer.append(layer_string()); buffer.append(" frame "); buffer.append(mode_string()); buffer.append(' '); buffer.append(version_string()); if (!checksums()) buffer.append(" no"); buffer.append(" checksums"); buffer.append(' '); buffer.append(sample_frequency_string()); buffer.append(','); buffer.append(' '); buffer.append(bitrate_string()); String s = buffer.toString(); return s; } /** * Read a 32-bit header from the bitstream. */ void read_header(Bitstream stream, Crc16[] crcp) throws BitstreamException { int headerstring; int channel_bitrate; boolean sync = false; do { headerstring = stream.syncHeader(syncmode); _headerstring = headerstring; // E.B if (syncmode == Bitstream.INITIAL_SYNC) { h_version = ((headerstring >>> 19) & 1); if (((headerstring >>> 20) & 1) == 0) // SZD: MPEG2.5 detection if (h_version == MPEG2_LSF) h_version = MPEG25_LSF; else throw stream.newBitstreamException(Bitstream.UNKNOWN_ERROR); if ((h_sample_frequency = ((headerstring >>> 10) & 3)) == 3) { throw stream.newBitstreamException(Bitstream.UNKNOWN_ERROR); } } h_layer = 4 - (headerstring >>> 17) & 3; h_protection_bit = (headerstring >>> 16) & 1; h_bitrate_index = (headerstring >>> 12) & 0xF; h_padding_bit = (headerstring >>> 9) & 1; h_mode = ((headerstring >>> 6) & 3); h_mode_extension = (headerstring >>> 4) & 3; if (h_mode == JOINT_STEREO) h_intensity_stereo_bound = (h_mode_extension << 2) + 4; else h_intensity_stereo_bound = 0; // should never be used if (((headerstring >>> 3) & 1) == 1) h_copyright = true; if (((headerstring >>> 2) & 1) == 1) h_original = true; // calculate number of subbands: if (h_layer == 1) h_number_of_subbands = 32; else { channel_bitrate = h_bitrate_index; // calculate bitrate per channel: if (h_mode != SINGLE_CHANNEL) if (channel_bitrate == 4) channel_bitrate = 1; else channel_bitrate -= 4; if ((channel_bitrate == 1) || (channel_bitrate == 2)) if (h_sample_frequency == THIRTYTWO) h_number_of_subbands = 12; else h_number_of_subbands = 8; else if ((h_sample_frequency == FOURTYEIGHT) || ((channel_bitrate >= 3) && (channel_bitrate <= 5))) h_number_of_subbands = 27; else h_number_of_subbands = 30; } if (h_intensity_stereo_bound > h_number_of_subbands) h_intensity_stereo_bound = h_number_of_subbands; // calculate framesize and nSlots calculate_framesize(); // read framedata: int framesizeloaded = stream.read_frame_data(framesize); if ((framesize >=0) && (framesizeloaded != framesize)) { // Data loaded does not match to expected framesize, // it might be an ID3v1 TAG. (Fix 11/17/04). throw stream.newBitstreamException(Bitstream.INVALIDFRAME); } if (stream.isSyncCurrentPosition(syncmode)) { if (syncmode == Bitstream.INITIAL_SYNC) { syncmode = Bitstream.STRICT_SYNC; stream.set_syncword(headerstring & 0xFFF80CC0); } sync = true; } else { stream.unreadFrame(); } } while (!sync); stream.parse_frame(); if (h_protection_bit == 0) { // frame contains a crc checksum checksum = (short) stream.get_bits(16); if (crc == null) crc = new Crc16(); crc.add_bits(headerstring, 16); crcp[0] = crc; } else crcp[0] = null; if (h_sample_frequency == FOURTYFOUR_POINT_ONE) { /* if (offset == null) { int max = max_number_of_frames(stream); offset = new int[max]; for(int i=0; i 0) && (cf == lf)) { offset[cf] = offset[cf-1] + h_padding_bit; } else { offset[0] = h_padding_bit; } */ } } /** * Parse frame to extract optionnal VBR frame. * @param firstframe * @author E.B (javalayer@javazoom.net) */ void parseVBR(byte[] firstframe) throws BitstreamException { // Trying Xing header. String xing = "Xing"; byte tmp[] = new byte[4]; int offset = 0; // Compute "Xing" offset depending on MPEG version and channels. if (h_version == MPEG1) { if (h_mode == SINGLE_CHANNEL) offset=21-4; else offset=36-4; } else { if (h_mode == SINGLE_CHANNEL) offset=13-4; else offset = 21-4; } try { System.arraycopy(firstframe, offset, tmp, 0, 4); // Is "Xing" ? if (xing.equals(new String(tmp))) { //Yes. h_vbr = true; h_vbr_frames = -1; h_vbr_bytes = -1; h_vbr_scale = -1; h_vbr_toc = new byte[100]; int length = 4; // Read flags. byte flags[] = new byte[4]; System.arraycopy(firstframe, offset + length, flags, 0, flags.length); length += flags.length; // Read number of frames (if available). if ((flags[3] & (byte) (1 << 0)) != 0) { System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); h_vbr_frames = (tmp[0] << 24)&0xFF000000 | (tmp[1] << 16)&0x00FF0000 | (tmp[2] << 8)&0x0000FF00 | tmp[3]&0x000000FF; length += 4; } // Read size (if available). if ((flags[3] & (byte) (1 << 1)) != 0) { System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); h_vbr_bytes = (tmp[0] << 24)&0xFF000000 | (tmp[1] << 16)&0x00FF0000 | (tmp[2] << 8)&0x0000FF00 | tmp[3]&0x000000FF; length += 4; } // Read TOC (if available). if ((flags[3] & (byte) (1 << 2)) != 0) { System.arraycopy(firstframe, offset + length, h_vbr_toc, 0, h_vbr_toc.length); length += h_vbr_toc.length; } // Read scale (if available). if ((flags[3] & (byte) (1 << 3)) != 0) { System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); h_vbr_scale = (tmp[0] << 24)&0xFF000000 | (tmp[1] << 16)&0x00FF0000 | (tmp[2] << 8)&0x0000FF00 | tmp[3]&0x000000FF; length += 4; } //System.out.println("VBR:"+xing+" Frames:"+ h_vbr_frames +" Size:"+h_vbr_bytes); } } catch (ArrayIndexOutOfBoundsException e) { throw new BitstreamException("XingVBRHeader Corrupted",e); } // Trying VBRI header. String vbri = "VBRI"; offset = 36-4; try { System.arraycopy(firstframe, offset, tmp, 0, 4); // Is "VBRI" ? if (vbri.equals(new String(tmp))) { //Yes. h_vbr = true; h_vbr_frames = -1; h_vbr_bytes = -1; h_vbr_scale = -1; h_vbr_toc = new byte[100]; // Bytes. int length = 4 + 6; System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); h_vbr_bytes = (tmp[0] << 24)&0xFF000000 | (tmp[1] << 16)&0x00FF0000 | (tmp[2] << 8)&0x0000FF00 | tmp[3]&0x000000FF; length += 4; // Frames. System.arraycopy(firstframe, offset + length, tmp, 0, tmp.length); h_vbr_frames = (tmp[0] << 24)&0xFF000000 | (tmp[1] << 16)&0x00FF0000 | (tmp[2] << 8)&0x0000FF00 | tmp[3]&0x000000FF; length += 4; //System.out.println("VBR:"+vbri+" Frames:"+ h_vbr_frames +" Size:"+h_vbr_bytes); // TOC // TODO } } catch (ArrayIndexOutOfBoundsException e) { throw new BitstreamException("VBRIVBRHeader Corrupted",e); } } // Functions to query header contents: /** * Returns version. */ public int version() { return h_version; } /** * Returns Layer ID. */ public int layer() { return h_layer; } /** * Returns bitrate index. */ public int bitrate_index() { return h_bitrate_index; } /** * Returns Sample Frequency. */ public int sample_frequency() { return h_sample_frequency; } /** * Returns Frequency. */ public int frequency() {return frequencies[h_version][h_sample_frequency];} /** * Returns Mode. */ public int mode() { return h_mode; } /** * Returns Protection bit. */ public boolean checksums() { if (h_protection_bit == 0) return true; else return false; } /** * Returns Copyright. */ public boolean copyright() { return h_copyright; } /** * Returns Original. */ public boolean original() { return h_original; } /** * Return VBR. * @return true if VBR header is found */ public boolean vbr() { return h_vbr; } /** * Return VBR scale. * @return scale of -1 if not available */ public int vbr_scale() { return h_vbr_scale; } /** * Return VBR TOC. * @return vbr toc ot null if not available */ public byte[] vbr_toc() { return h_vbr_toc; } /** * Returns Checksum flag. * Compares computed checksum with stream checksum. */ public boolean checksum_ok () { return (checksum == crc.checksum()); } // Seeking and layer III stuff /** * Returns Layer III Padding bit. */ public boolean padding() { if (h_padding_bit == 0) return false; else return true; } /** * Returns Slots. */ public int slots() { return nSlots; } /** * Returns Mode Extension. */ public int mode_extension() { return h_mode_extension; } // E.B -> private to public public static final int bitrates[][][] = { {{0 /*free format*/, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 176000, 192000 ,224000, 256000, 0}, {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}, {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}}, {{0 /*free format*/, 32000, 64000, 96000, 128000, 160000, 192000, 224000, 256000, 288000, 320000, 352000, 384000, 416000, 448000, 0}, {0 /*free format*/, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 384000, 0}, {0 /*free format*/, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 160000, 192000, 224000, 256000, 320000, 0}}, // SZD: MPEG2.5 {{0 /*free format*/, 32000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 176000, 192000 ,224000, 256000, 0}, {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}, {0 /*free format*/, 8000, 16000, 24000, 32000, 40000, 48000, 56000, 64000, 80000, 96000, 112000, 128000, 144000, 160000, 0}}, }; // E.B -> private to public /** * Calculate Frame size. * Calculates framesize in bytes excluding header size. */ public int calculate_framesize() { if (h_layer == 1) { framesize = (12 * bitrates[h_version][0][h_bitrate_index]) / frequencies[h_version][h_sample_frequency]; if (h_padding_bit != 0 ) framesize++; framesize <<= 2; // one slot is 4 bytes long nSlots = 0; } else { framesize = (144 * bitrates[h_version][h_layer - 1][h_bitrate_index]) / frequencies[h_version][h_sample_frequency]; if (h_version == MPEG2_LSF || h_version == MPEG25_LSF) framesize >>= 1; // SZD if (h_padding_bit != 0) framesize++; // Layer III slots if (h_layer == 3) { if (h_version == MPEG1) { nSlots = framesize - ((h_mode == SINGLE_CHANNEL) ? 17 : 32) // side info size - ((h_protection_bit!=0) ? 0 : 2) // CRC size - 4; // header size } else { // MPEG-2 LSF, SZD: MPEG-2.5 LSF nSlots = framesize - ((h_mode == SINGLE_CHANNEL) ? 9 : 17) // side info size - ((h_protection_bit!=0) ? 0 : 2) // CRC size - 4; // header size } } else { nSlots = 0; } } framesize -= 4; // subtract header size return framesize; } /** * Returns the maximum number of frames in the stream. * @param streamsize * @return number of frames */ public int max_number_of_frames(int streamsize) // E.B { if (h_vbr == true) return h_vbr_frames; else { if ((framesize + 4 - h_padding_bit) == 0) return 0; else return(streamsize / (framesize + 4 - h_padding_bit)); } } /** * Returns the maximum number of frames in the stream. * @param streamsize * @return number of frames */ public int min_number_of_frames(int streamsize) // E.B { if (h_vbr == true) return h_vbr_frames; else { if ((framesize + 5 - h_padding_bit) == 0) return 0; else return(streamsize / (framesize + 5 - h_padding_bit)); } } /** * Returns ms/frame. * @return milliseconds per frame */ public float ms_per_frame() // E.B { if (h_vbr == true) { double tpf = h_vbr_time_per_frame[layer()] / frequency(); if ((h_version == MPEG2_LSF) || (h_version == MPEG25_LSF)) tpf /= 2; return ((float) (tpf * 1000)); } else { float ms_per_frame_array[][] = {{8.707483f, 8.0f, 12.0f}, {26.12245f, 24.0f, 36.0f}, {26.12245f, 24.0f, 36.0f}}; return(ms_per_frame_array[h_layer-1][h_sample_frequency]); } } /** * Returns total ms. * @param streamsize * @return total milliseconds */ public float total_ms(int streamsize) // E.B { return(max_number_of_frames(streamsize) * ms_per_frame()); } /** * Returns synchronized header. */ public int getSyncHeader() // E.B { return _headerstring; } // functions which return header informations as strings: /** * Return Layer version. */ public String layer_string() { switch (h_layer) { case 1: return "I"; case 2: return "II"; case 3: return "III"; } return null; } // E.B -> private to public public static final String bitrate_str[][][] = { {{"free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "176 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "forbidden"}, {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden"}, {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden"}}, {{"free format", "32 kbit/s", "64 kbit/s", "96 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "288 kbit/s", "320 kbit/s", "352 kbit/s", "384 kbit/s", "416 kbit/s", "448 kbit/s", "forbidden"}, {"free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "320 kbit/s", "384 kbit/s", "forbidden"}, {"free format", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s" , "96 kbit/s", "112 kbit/s", "128 kbit/s", "160 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "320 kbit/s", "forbidden"}}, // SZD: MPEG2.5 {{"free format", "32 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "176 kbit/s", "192 kbit/s", "224 kbit/s", "256 kbit/s", "forbidden"}, {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden"}, {"free format", "8 kbit/s", "16 kbit/s", "24 kbit/s", "32 kbit/s", "40 kbit/s", "48 kbit/s", "56 kbit/s", "64 kbit/s", "80 kbit/s", "96 kbit/s", "112 kbit/s", "128 kbit/s", "144 kbit/s", "160 kbit/s", "forbidden"}}, }; /** * Return Bitrate. * @return bitrate in bps */ public String bitrate_string() { if (h_vbr == true) { return Integer.toString(bitrate()/1000)+" kb/s"; } else return bitrate_str[h_version][h_layer - 1][h_bitrate_index]; } /** * Return Bitrate. * @return bitrate in bps and average bitrate for VBR header */ public int bitrate() { if (h_vbr == true) { return ((int) ((h_vbr_bytes * 8) / (ms_per_frame() * h_vbr_frames)))*1000; } else return bitrates[h_version][h_layer - 1][h_bitrate_index]; } /** * Return Instant Bitrate. * Bitrate for VBR is not constant. * @return bitrate in bps */ public int bitrate_instant() { return bitrates[h_version][h_layer - 1][h_bitrate_index]; } /** * Returns Frequency * @return frequency string in kHz */ public String sample_frequency_string() { switch (h_sample_frequency) { case THIRTYTWO: if (h_version == MPEG1) return "32 kHz"; else if (h_version == MPEG2_LSF) return "16 kHz"; else // SZD return "8 kHz"; case FOURTYFOUR_POINT_ONE: if (h_version == MPEG1) return "44.1 kHz"; else if (h_version == MPEG2_LSF) return "22.05 kHz"; else // SZD return "11.025 kHz"; case FOURTYEIGHT: if (h_version == MPEG1) return "48 kHz"; else if (h_version == MPEG2_LSF) return "24 kHz"; else // SZD return "12 kHz"; } return(null); } /** * Returns Mode. */ public String mode_string() { switch (h_mode) { case STEREO: return "Stereo"; case JOINT_STEREO: return "Joint stereo"; case DUAL_CHANNEL: return "Dual channel"; case SINGLE_CHANNEL: return "Single channel"; } return null; } /** * Returns Version. * @return MPEG-1 or MPEG-2 LSF or MPEG-2.5 LSF */ public String version_string() { switch (h_version) { case MPEG1: return "MPEG-1"; case MPEG2_LSF: return "MPEG-2 LSF"; case MPEG25_LSF: // SZD return "MPEG-2.5 LSF"; } return(null); } /** * Returns the number of subbands in the current frame. * @return number of subbands */ public int number_of_subbands() {return h_number_of_subbands;} /** * Returns Intensity Stereo. * (Layer II joint stereo only). * Returns the number of subbands which are in stereo mode, * subbands above that limit are in intensity stereo mode. * @return intensity */ public int intensity_stereo_bound() {return h_intensity_stereo_bound;} } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/SampleBuffer.java0000644000175000017500000000551411377161311026507 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 12/12/99 Initial Version based on FileObuffer. mdm@techie.com. * * FileObuffer: * 15/02/99 Java Conversion by E.B ,javalayer@javazoom.net * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * The SampleBuffer class implements an output buffer * that provides storage for a fixed size block of samples. */ public class SampleBuffer extends Obuffer { private short[] buffer; private int[] bufferp; private int channels; private int frequency; /** * Constructor */ public SampleBuffer(int sample_frequency, int number_of_channels) { buffer = new short[OBUFFERSIZE]; bufferp = new int[MAXCHANNELS]; channels = number_of_channels; frequency = sample_frequency; for (int i = 0; i < number_of_channels; ++i) bufferp[i] = (short)i; } public int getChannelCount() { return this.channels; } public int getSampleFrequency() { return this.frequency; } public short[] getBuffer() { return this.buffer; } public int getBufferLength() { return bufferp[0]; } /** * Takes a 16 Bit PCM sample. */ public void append(int channel, short value) { buffer[bufferp[channel]] = value; bufferp[channel] += channels; } public void appendSamples(int channel, float[] f) { int pos = bufferp[channel]; short s; float fs; for (int i=0; i<32;) { fs = f[i++]; fs = (fs>32767.0f ? 32767.0f : (fs < -32767.0f ? -32767.0f : fs)); s = (short)fs; buffer[pos] = s; pos += channels; } bufferp[channel] = pos; } /** * Write the samples to the file (Random Acces). */ public void write_buffer(int val) { //for (int i = 0; i < channels; ++i) // bufferp[i] = (short)i; } public void close() {} /** * */ public void clear_buffer() { for (int i = 0; i < channels; ++i) bufferp[i] = (short)i; } /** * */ public void set_stop_flag() {} } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/BitReserve.java0000644000175000017500000001152011377161311026200 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 12/12/99 0.0.7 Implementation stores single bits * as ints for better performance. mdm@techie.com. * * 02/28/99 0.0 Java Conversion by E.B, javalayer@javazoom.net * * Adapted from the public c code by Jeff Tsay. * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Implementation of Bit Reservoir for Layer III. *

* The implementation stores single bits as a word in the buffer. If * a bit is set, the corresponding word in the buffer will be non-zero. * If a bit is clear, the corresponding word is zero. Although this * may seem waseful, this can be a factor of two quicker than * packing 8 bits to a byte and extracting. *

*/ // REVIEW: there is no range checking, so buffer underflow or overflow // can silently occur. final class BitReserve { /** * Size of the internal buffer to store the reserved bits. * Must be a power of 2. And x8, as each bit is stored as a single * entry. */ private static final int BUFSIZE = 4096*8; /** * Mask that can be used to quickly implement the * modulus operation on BUFSIZE. */ private static final int BUFSIZE_MASK = BUFSIZE-1; private int offset, totbit, buf_byte_idx; private final int[] buf = new int[BUFSIZE]; private int buf_bit_idx; BitReserve() { offset = 0; totbit = 0; buf_byte_idx = 0; } /** * Return totbit Field. */ public int hsstell() { return(totbit); } /** * Read a number bits from the bit stream. * @param N the number of */ public int hgetbits(int N) { totbit += N; int val = 0; int pos = buf_byte_idx; if (pos+N < BUFSIZE) { while (N-- > 0) { val <<= 1; val |= ((buf[pos++]!=0) ? 1 : 0); } } else { while (N-- > 0) { val <<= 1; val |= ((buf[pos]!=0) ? 1 : 0); pos = (pos+1) & BUFSIZE_MASK; } } buf_byte_idx = pos; return val; } /** * Read 1 bit from the bit stream. */ /* public int hget1bit_old() { int val; totbit++; if (buf_bit_idx == 0) { buf_bit_idx = 8; buf_byte_idx++; } // BUFSIZE = 4096 = 2^12, so // buf_byte_idx%BUFSIZE == buf_byte_idx & 0xfff val = buf[buf_byte_idx & BUFSIZE_MASK] & putmask[buf_bit_idx]; buf_bit_idx--; val = val >>> buf_bit_idx; return val; } */ /** * Returns next bit from reserve. * @returns 0 if next bit is reset, or 1 if next bit is set. */ public int hget1bit() { totbit++; int val = buf[buf_byte_idx]; buf_byte_idx = (buf_byte_idx+1) & BUFSIZE_MASK; return val; } /** * Retrieves bits from the reserve. */ /* public int readBits(int[] out, int len) { if (buf_bit_idx == 0) { buf_bit_idx = 8; buf_byte_idx++; current = buf[buf_byte_idx & BUFSIZE_MASK]; } // save total number of bits returned len = buf_bit_idx; buf_bit_idx = 0; int b = current; int count = len-1; while (count >= 0) { out[count--] = (b & 0x1); b >>>= 1; } totbit += len; return len; } */ /** * Write 8 bits into the bit stream. */ public void hputbuf(int val) { int ofs = offset; buf[ofs++] = val & 0x80; buf[ofs++] = val & 0x40; buf[ofs++] = val & 0x20; buf[ofs++] = val & 0x10; buf[ofs++] = val & 0x08; buf[ofs++] = val & 0x04; buf[ofs++] = val & 0x02; buf[ofs++] = val & 0x01; if (ofs==BUFSIZE) offset = 0; else offset = ofs; } /** * Rewind N bits in Stream. */ public void rewindNbits(int N) { totbit -= N; buf_byte_idx -= N; if (buf_byte_idx<0) buf_byte_idx += BUFSIZE; } /** * Rewind N bytes in Stream. */ public void rewindNbytes(int N) { int bits = (N << 3); totbit -= bits; buf_byte_idx -= bits; if (buf_byte_idx<0) buf_byte_idx += BUFSIZE; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/JavaLayerException.java0000644000175000017500000000357411377161311027675 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; import java.io.PrintStream; /** * The JavaLayerException is the base class for all API-level * exceptions thrown by JavaLayer. To facilitate conversion and * common handling of exceptions from other domains, the class * can delegate some functionality to a contained Throwable instance. *

* * @author MDM */ public class JavaLayerException extends Exception { private Throwable exception; public JavaLayerException() { } public JavaLayerException(String msg) { super(msg); } public JavaLayerException(String msg, Throwable t) { super(msg); exception = t; } public Throwable getException() { return exception; } public void printStackTrace() { printStackTrace(System.err); } public void printStackTrace(PrintStream ps) { if (this.exception==null) { super.printStackTrace(ps); } else { exception.printStackTrace(); } } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/JavaLayerHook.java0000644000175000017500000000246711377161311026637 0ustar /* * 11/19/04 1.0 moved to LGPL. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; import java.io.InputStream; /** * The JavaLayerHooks class allows developers to change * the way the JavaLayer library uses Resources. */ public interface JavaLayerHook { /** * Retrieves the named resource. This allows resources to be * obtained without specifying how they are retrieved. */ public InputStream getResourceAsStream(String name); } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Control.java0000644000175000017500000000263411377161311025554 0ustar /* * 11/19/04 1.0 moved to LGPL. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Work in progress. */ public interface Control { /** * Starts playback of the media presented by this control. */ public void start(); /** * Stops playback of the media presented by this control. */ public void stop(); public boolean isPlaying(); public void pause(); public boolean isRandomAccess(); /** * Retrieves the current position. */ public double getPosition(); /** * */ public void setPosition(double d); } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/DecoderErrors.java0000644000175000017500000000254211377161311026674 0ustar /* * 11/19/04 1.0 moved to LGPL. * 01/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * This interface provides constants describing the error * codes used by the Decoder to indicate errors. * * @author MDM */ public interface DecoderErrors extends JavaLayerErrors { static public final int UNKNOWN_ERROR = DECODER_ERROR + 0; /** * Layer not supported by the decoder. */ static public final int UNSUPPORTED_LAYER = DECODER_ERROR + 1; } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Obuffer.java0000644000175000017500000000531411377161311025522 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Added appendSamples() method for efficiency. MDM. * 15/02/99 ,Java Conversion by E.B ,ebsp@iname.com, JavaLayer * * Declarations for output buffer, includes operating system * implementation of the virtual Obuffer. Optional routines * enabling seeks and stops added by Jeff Tsay. * * @(#) obuffer.h 1.8, last edit: 6/15/94 16:51:56 * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) * @(#) Berlin University of Technology * * Idea and first implementation for u-law output with fast downsampling by * Jim Boucher (jboucher@flash.bu.edu) * * LinuxObuffer class written by * Louis P. Kruger (lpkruger@phoenix.princeton.edu) *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Base Class for audio output. */ public abstract class Obuffer { public static final int OBUFFERSIZE = 2 * 1152; // max. 2 * 1152 samples per frame public static final int MAXCHANNELS = 2; // max. number of channels /** * Takes a 16 Bit PCM sample. */ public abstract void append(int channel, short value); /** * Accepts 32 new PCM samples. */ public void appendSamples(int channel, float[] f) { short s; for (int i=0; i<32;) { s = clip(f[i++]); append(channel, s); } } /** * Clip Sample to 16 Bits */ private final short clip(float sample) { return ((sample > 32767.0f) ? 32767 : ((sample < -32768.0f) ? -32768 : (short) sample)); } /** * Write the samples to the file or directly to the audio hardware. */ public abstract void write_buffer(int val); public abstract void close(); /** * Clears all data in the buffer (for seeking). */ public abstract void clear_buffer(); /** * Notify the buffer that the user has stopped the stream. */ public abstract void set_stop_flag(); } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/JavaLayerErrors.java0000644000175000017500000000271211377161311027204 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Exception erorr codes for components of the JavaLayer API. */ public interface JavaLayerErrors { /** * The first bitstream error code. See the {@link DecoderErrors DecoderErrors} * interface for other bitstream error codes. */ static public final int BITSTREAM_ERROR = 0x100; /** * The first decoder error code. See the {@link DecoderErrors DecoderErrors} * interface for other decoder error codes. */ static public final int DECODER_ERROR = 0x200; } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/InputStreamSource.java0000644000175000017500000000363111377161311027566 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; import java.io.IOException; import java.io.InputStream; /** * Work In Progress. * * An instance of InputStreamSource implements a * Source that provides data from an InputStream * . Seeking functionality is not supported. * * @author MDM */ public class InputStreamSource implements Source { private final InputStream in; public InputStreamSource(InputStream in) { if (in==null) throw new NullPointerException("in"); this.in = in; } public int read(byte[] b, int offs, int len) throws IOException { int read = in.read(b, offs, len); return read; } public boolean willReadBlock() { return true; //boolean block = (in.available()==0); //return block; } public boolean isSeekable() { return false; } public long tell() { return -1; } public long seek(long to) { return -1; } public long length() { return -1; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/LayerIDecoder.java0000644000175000017500000003131611377161311026606 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 12/12/99 Initial version. Adapted from javalayer.java * and Subband*.java. mdm@techie.com * * 02/28/99 Initial version : javalayer.java by E.B *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Implements decoding of MPEG Audio Layer I frames. */ class LayerIDecoder implements FrameDecoder { protected Bitstream stream; protected Header header; protected SynthesisFilter filter1, filter2; protected Obuffer buffer; protected int which_channels; protected int mode; protected int num_subbands; protected Subband[] subbands; protected Crc16 crc = null; // new Crc16[1] to enable CRC checking. public LayerIDecoder() { crc = new Crc16(); } public void create(Bitstream stream0, Header header0, SynthesisFilter filtera, SynthesisFilter filterb, Obuffer buffer0, int which_ch0) { stream = stream0; header = header0; filter1 = filtera; filter2 = filterb; buffer = buffer0; which_channels = which_ch0; } public void decodeFrame() { num_subbands = header.number_of_subbands(); subbands = new Subband[32]; mode = header.mode(); createSubbands(); readAllocation(); readScaleFactorSelection(); if ((crc != null) || header.checksum_ok()) { readScaleFactors(); readSampleData(); } } protected void createSubbands() { int i; if (mode == Header.SINGLE_CHANNEL) for (i = 0; i < num_subbands; ++i) subbands[i] = new SubbandLayer1(i); else if (mode == Header.JOINT_STEREO) { for (i = 0; i < header.intensity_stereo_bound(); ++i) subbands[i] = new SubbandLayer1Stereo(i); for (; i < num_subbands; ++i) subbands[i] = new SubbandLayer1IntensityStereo(i); } else { for (i = 0; i < num_subbands; ++i) subbands[i] = new SubbandLayer1Stereo(i); } } protected void readAllocation() { // start to read audio data: for (int i = 0; i < num_subbands; ++i) subbands[i].read_allocation(stream, header, crc); } protected void readScaleFactorSelection() { // scale factor selection not present for layer I. } protected void readScaleFactors() { for (int i = 0; i < num_subbands; ++i) subbands[i].read_scalefactor(stream, header); } protected void readSampleData() { boolean read_ready = false; boolean write_ready = false; int mode = header.mode(); int i; do { for (i = 0; i < num_subbands; ++i) read_ready = subbands[i].read_sampledata(stream); do { for (i = 0; i < num_subbands; ++i) write_ready = subbands[i].put_next_sample(which_channels,filter1, filter2); filter1.calculate_pcm_samples(buffer); if ((which_channels == OutputChannels.BOTH_CHANNELS) && (mode != Header.SINGLE_CHANNEL)) filter2.calculate_pcm_samples(buffer); } while (!write_ready); } while (!read_ready); } /** * Abstract base class for subband classes of layer I and II */ static abstract class Subband { /* * Changes from version 1.1 to 1.2: * - array size increased by one, although a scalefactor with index 63 * is illegal (to prevent segmentation faults) */ // Scalefactors for layer I and II, Annex 3-B.1 in ISO/IEC DIS 11172: public static final float scalefactors[] = { 2.00000000000000f, 1.58740105196820f, 1.25992104989487f, 1.00000000000000f, 0.79370052598410f, 0.62996052494744f, 0.50000000000000f, 0.39685026299205f, 0.31498026247372f, 0.25000000000000f, 0.19842513149602f, 0.15749013123686f, 0.12500000000000f, 0.09921256574801f, 0.07874506561843f, 0.06250000000000f, 0.04960628287401f, 0.03937253280921f, 0.03125000000000f, 0.02480314143700f, 0.01968626640461f, 0.01562500000000f, 0.01240157071850f, 0.00984313320230f, 0.00781250000000f, 0.00620078535925f, 0.00492156660115f, 0.00390625000000f, 0.00310039267963f, 0.00246078330058f, 0.00195312500000f, 0.00155019633981f, 0.00123039165029f, 0.00097656250000f, 0.00077509816991f, 0.00061519582514f, 0.00048828125000f, 0.00038754908495f, 0.00030759791257f, 0.00024414062500f, 0.00019377454248f, 0.00015379895629f, 0.00012207031250f, 0.00009688727124f, 0.00007689947814f, 0.00006103515625f, 0.00004844363562f, 0.00003844973907f, 0.00003051757813f, 0.00002422181781f, 0.00001922486954f, 0.00001525878906f, 0.00001211090890f, 0.00000961243477f, 0.00000762939453f, 0.00000605545445f, 0.00000480621738f, 0.00000381469727f, 0.00000302772723f, 0.00000240310869f, 0.00000190734863f, 0.00000151386361f, 0.00000120155435f, 0.00000000000000f /* illegal scalefactor */ }; public abstract void read_allocation (Bitstream stream, Header header, Crc16 crc); public abstract void read_scalefactor (Bitstream stream, Header header); public abstract boolean read_sampledata (Bitstream stream); public abstract boolean put_next_sample (int channels, SynthesisFilter filter1, SynthesisFilter filter2); }; /** * Class for layer I subbands in single channel mode. * Used for single channel mode * and in derived class for intensity stereo mode */ static class SubbandLayer1 extends Subband { // Factors and offsets for sample requantization public static final float table_factor[] = { 0.0f, (1.0f/2.0f) * (4.0f/3.0f), (1.0f/4.0f) * (8.0f/7.0f), (1.0f/8.0f) * (16.0f/15.0f), (1.0f/16.0f) * (32.0f/31.0f), (1.0f/32.0f) * (64.0f/63.0f), (1.0f/64.0f) * (128.0f/127.0f), (1.0f/128.0f) * (256.0f/255.0f), (1.0f/256.0f) * (512.0f/511.0f), (1.0f/512.0f) * (1024.0f/1023.0f), (1.0f/1024.0f) * (2048.0f/2047.0f), (1.0f/2048.0f) * (4096.0f/4095.0f), (1.0f/4096.0f) * (8192.0f/8191.0f), (1.0f/8192.0f) * (16384.0f/16383.0f), (1.0f/16384.0f) * (32768.0f/32767.0f) }; public static final float table_offset[] = { 0.0f, ((1.0f/2.0f)-1.0f) * (4.0f/3.0f), ((1.0f/4.0f)-1.0f) * (8.0f/7.0f), ((1.0f/8.0f)-1.0f) * (16.0f/15.0f), ((1.0f/16.0f)-1.0f) * (32.0f/31.0f), ((1.0f/32.0f)-1.0f) * (64.0f/63.0f), ((1.0f/64.0f)-1.0f) * (128.0f/127.0f), ((1.0f/128.0f)-1.0f) * (256.0f/255.0f), ((1.0f/256.0f)-1.0f) * (512.0f/511.0f), ((1.0f/512.0f)-1.0f) * (1024.0f/1023.0f), ((1.0f/1024.0f)-1.0f) * (2048.0f/2047.0f), ((1.0f/2048.0f)-1.0f) * (4096.0f/4095.0f), ((1.0f/4096.0f)-1.0f) * (8192.0f/8191.0f), ((1.0f/8192.0f)-1.0f) * (16384.0f/16383.0f), ((1.0f/16384.0f)-1.0f) * (32768.0f/32767.0f) }; protected int subbandnumber; protected int samplenumber; protected int allocation; protected float scalefactor; protected int samplelength; protected float sample; protected float factor, offset; /** * Construtor. */ public SubbandLayer1(int subbandnumber) { this.subbandnumber = subbandnumber; samplenumber = 0; } /** * */ public void read_allocation(Bitstream stream, Header header, Crc16 crc) { if ((allocation = stream.get_bits (4)) == 15) ; // cerr << "WARNING: stream contains an illegal allocation!\n"; // MPEG-stream is corrupted! if (crc != null) crc.add_bits (allocation, 4); if (allocation != 0) { samplelength = allocation + 1; factor = table_factor[allocation]; offset = table_offset[allocation]; } } /** * */ public void read_scalefactor(Bitstream stream, Header header) { if (allocation != 0) scalefactor = scalefactors[stream.get_bits(6)]; } /** * */ public boolean read_sampledata(Bitstream stream) { if (allocation != 0) { sample = (float) (stream.get_bits(samplelength)); } if (++samplenumber == 12) { samplenumber = 0; return true; } return false; } /** * */ public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { if ((allocation !=0) && (channels != OutputChannels.RIGHT_CHANNEL)) { float scaled_sample = (sample * factor + offset) * scalefactor; filter1.input_sample (scaled_sample, subbandnumber); } return true; } }; /** * Class for layer I subbands in joint stereo mode. */ static class SubbandLayer1IntensityStereo extends SubbandLayer1 { protected float channel2_scalefactor; /** * Constructor */ public SubbandLayer1IntensityStereo(int subbandnumber) { super(subbandnumber); } /** * */ public void read_allocation(Bitstream stream, Header header, Crc16 crc) { super.read_allocation (stream, header, crc); } /** * */ public void read_scalefactor (Bitstream stream, Header header) { if (allocation != 0) { scalefactor = scalefactors[stream.get_bits(6)]; channel2_scalefactor = scalefactors[stream.get_bits(6)]; } } /** * */ public boolean read_sampledata(Bitstream stream) { return super.read_sampledata (stream); } /** * */ public boolean put_next_sample (int channels, SynthesisFilter filter1, SynthesisFilter filter2) { if (allocation !=0 ) { sample = sample * factor + offset; // requantization if (channels == OutputChannels.BOTH_CHANNELS) { float sample1 = sample * scalefactor, sample2 = sample * channel2_scalefactor; filter1.input_sample(sample1, subbandnumber); filter2.input_sample(sample2, subbandnumber); } else if (channels == OutputChannels.LEFT_CHANNEL) { float sample1 = sample * scalefactor; filter1.input_sample(sample1, subbandnumber); } else { float sample2 = sample * channel2_scalefactor; filter1.input_sample(sample2, subbandnumber); } } return true; } }; /** * Class for layer I subbands in stereo mode. */ static class SubbandLayer1Stereo extends SubbandLayer1 { protected int channel2_allocation; protected float channel2_scalefactor; protected int channel2_samplelength; protected float channel2_sample; protected float channel2_factor, channel2_offset; /** * Constructor */ public SubbandLayer1Stereo(int subbandnumber) { super(subbandnumber); } /** * */ public void read_allocation (Bitstream stream, Header header, Crc16 crc) { allocation = stream.get_bits(4); channel2_allocation = stream.get_bits(4); if (crc != null) { crc.add_bits (allocation, 4); crc.add_bits (channel2_allocation, 4); } if (allocation != 0) { samplelength = allocation + 1; factor = table_factor[allocation]; offset = table_offset[allocation]; } if (channel2_allocation != 0) { channel2_samplelength = channel2_allocation + 1; channel2_factor = table_factor[channel2_allocation]; channel2_offset = table_offset[channel2_allocation]; } } /** * */ public void read_scalefactor(Bitstream stream, Header header) { if (allocation != 0) scalefactor = scalefactors[stream.get_bits(6)]; if (channel2_allocation != 0) channel2_scalefactor = scalefactors[stream.get_bits(6)]; } /** * */ public boolean read_sampledata (Bitstream stream) { boolean returnvalue = super.read_sampledata(stream); if (channel2_allocation != 0) { channel2_sample = (float) (stream.get_bits(channel2_samplelength)); } return(returnvalue); } /** * */ public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { super.put_next_sample (channels, filter1, filter2); if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) { float sample2 = (channel2_sample * channel2_factor + channel2_offset) * channel2_scalefactor; if (channels == OutputChannels.BOTH_CHANNELS) filter2.input_sample (sample2, subbandnumber); else filter1.input_sample (sample2, subbandnumber); } return true; } }; } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/DecoderException.java0000644000175000017500000000333011377161311027352 0ustar /* * 11/19/04 1.0 moved to LGPL. * 01/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * The DecoderException represents the class of * errors that can occur when decoding MPEG audio. * * @author MDM */ public class DecoderException extends JavaLayerException implements DecoderErrors { private int errorcode = UNKNOWN_ERROR; public DecoderException(String msg, Throwable t) { super(msg, t); } public DecoderException(int errorcode, Throwable t) { this(getErrorString(errorcode), t); this.errorcode = errorcode; } public int getErrorCode() { return errorcode; } static public String getErrorString(int errorcode) { // REVIEW: use resource file to map error codes // to locale-sensitive strings. return "Decoder errorcode "+Integer.toHexString(errorcode); } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Crc16.java0000644000175000017500000000362111377161311025007 0ustar /* * 11/19/04 : 1.0 moved to LGPL. * * 02/12/99 : Java Conversion by E.B , javalayer@javazoom.net * * @(#) crc.h 1.5, last edit: 6/15/94 16:55:32 * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) * @(#) Berlin University of Technology *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * 16-Bit CRC checksum */ public final class Crc16 { private static short polynomial=(short)0x8005; private short crc; /** * Dummy Constructor */ public Crc16() { crc = (short) 0xFFFF; } /** * Feed a bitstring to the crc calculation (0 < length <= 32). */ public void add_bits (int bitstring, int length) { int bitmask = 1 << (length - 1); do if (((crc & 0x8000) == 0) ^ ((bitstring & bitmask) == 0 )) { crc <<= 1; crc ^= polynomial; } else crc <<= 1; while ((bitmask >>>= 1) != 0); } /** * Return the calculated checksum. * Erase it for next calls to add_bits(). */ public short checksum() { short sum = crc; crc = (short) 0xFFFF; return sum; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/SynthesisFilter.java0000644000175000017500000014717211377161311027302 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 04/01/00 Fixes for running under build 23xx Microsoft JVM. mdm. * * 19/12/99 Performance improvements to compute_pcm_samples(). * Mat McGowan. mdm@techie.com. * * 16/02/99 Java Conversion by E.B , javalayer@javazoom.net * * @(#) synthesis_filter.h 1.8, last edit: 6/15/94 16:52:00 * @(#) Copyright (C) 1993, 1994 Tobias Bading (bading@cs.tu-berlin.de) * @(#) Berlin University of Technology * *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; import java.io.IOException; /** * A class for the synthesis filter bank. * This class does a fast downsampling from 32, 44.1 or 48 kHz to 8 kHz, if ULAW is defined. * Frequencies above 4 kHz are removed by ignoring higher subbands. */ final class SynthesisFilter { private float[] v1; private float[] v2; private float[] actual_v; // v1 or v2 private int actual_write_pos; // 0-15 private float[] samples; // 32 new subband samples private int channel; private float scalefactor; private float[] eq; /** * Quality value for controlling CPU usage/quality tradeoff. */ /* private int quality; private int v_inc; public static final int HIGH_QUALITY = 1; public static final int MEDIUM_QUALITY = 2; public static final int LOW_QUALITY = 4; */ /** * Contructor. * The scalefactor scales the calculated float pcm samples to short values * (raw pcm samples are in [-1.0, 1.0], if no violations occur). */ public SynthesisFilter(int channelnumber, float factor, float[] eq0) { if (d==null) { d = load_d(); d16 = splitArray(d, 16); } v1 = new float[512]; v2 = new float[512]; samples = new float[32]; channel = channelnumber; scalefactor = factor; setEQ(eq); //setQuality(HIGH_QUALITY); reset(); } public void setEQ(float[] eq0) { this.eq = eq0; if (eq==null) { eq = new float[32]; for (int i=0; i<32; i++) eq[i] = 1.0f; } if (eq.length<32) { throw new IllegalArgumentException("eq0"); } } /* private void setQuality(int quality0) { switch (quality0) { case HIGH_QUALITY: case MEDIUM_QUALITY: case LOW_QUALITY: v_inc = 16 * quality0; quality = quality0; break; default : throw new IllegalArgumentException("Unknown quality value"); } } public int getQuality() { return quality; } */ /** * Reset the synthesis filter. */ public void reset() { //float[] floatp; // float[] floatp2; // initialize v1[] and v2[]: //for (floatp = v1 + 512, floatp2 = v2 + 512; floatp > v1; ) // *--floatp = *--floatp2 = 0.0; for (int p=0;p<512;p++) v1[p] = v2[p] = 0.0f; // initialize samples[]: //for (floatp = samples + 32; floatp > samples; ) // *--floatp = 0.0; for (int p2=0;p2<32;p2++) samples[p2] = 0.0f; actual_v = v1; actual_write_pos = 15; } /** * Inject Sample. */ public void input_sample(float sample, int subbandnumber) { samples[subbandnumber] = eq[subbandnumber]*sample; } public void input_samples(float[] s) { for (int i=31; i>=0; i--) { samples[i] = s[i]*eq[i]; } } /** * Compute new values via a fast cosine transform. */ private void compute_new_v() { // p is fully initialized from x1 //float[] p = _p; // pp is fully initialized from p //float[] pp = _pp; //float[] new_v = _new_v; //float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 //float[] p = new float[16]; //float[] pp = new float[16]; /* for (int i=31; i>=0; i--) { new_v[i] = 0.0f; } */ float new_v0, new_v1, new_v2, new_v3, new_v4, new_v5, new_v6, new_v7, new_v8, new_v9; float new_v10, new_v11, new_v12, new_v13, new_v14, new_v15, new_v16, new_v17, new_v18, new_v19; float new_v20, new_v21, new_v22, new_v23, new_v24, new_v25, new_v26, new_v27, new_v28, new_v29; float new_v30, new_v31; new_v0 = new_v1 = new_v2 = new_v3 = new_v4 = new_v5 = new_v6 = new_v7 = new_v8 = new_v9 = new_v10 = new_v11 = new_v12 = new_v13 = new_v14 = new_v15 = new_v16 = new_v17 = new_v18 = new_v19 = new_v20 = new_v21 = new_v22 = new_v23 = new_v24 = new_v25 = new_v26 = new_v27 = new_v28 = new_v29 = new_v30 = new_v31 = 0.0f; // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 // float[] p = new float[16]; // float[] pp = new float[16]; float[] s = samples; float s0 = s[0]; float s1 = s[1]; float s2 = s[2]; float s3 = s[3]; float s4 = s[4]; float s5 = s[5]; float s6 = s[6]; float s7 = s[7]; float s8 = s[8]; float s9 = s[9]; float s10 = s[10]; float s11 = s[11]; float s12 = s[12]; float s13 = s[13]; float s14 = s[14]; float s15 = s[15]; float s16 = s[16]; float s17 = s[17]; float s18 = s[18]; float s19 = s[19]; float s20 = s[20]; float s21 = s[21]; float s22 = s[22]; float s23 = s[23]; float s24 = s[24]; float s25 = s[25]; float s26 = s[26]; float s27 = s[27]; float s28 = s[28]; float s29 = s[29]; float s30 = s[30]; float s31 = s[31]; float p0 = s0 + s31; float p1 = s1 + s30; float p2 = s2 + s29; float p3 = s3 + s28; float p4 = s4 + s27; float p5 = s5 + s26; float p6 = s6 + s25; float p7 = s7 + s24; float p8 = s8 + s23; float p9 = s9 + s22; float p10 = s10 + s21; float p11 = s11 + s20; float p12 = s12 + s19; float p13 = s13 + s18; float p14 = s14 + s17; float p15 = s15 + s16; float pp0 = p0 + p15; float pp1 = p1 + p14; float pp2 = p2 + p13; float pp3 = p3 + p12; float pp4 = p4 + p11; float pp5 = p5 + p10; float pp6 = p6 + p9; float pp7 = p7 + p8; float pp8 = (p0 - p15) * cos1_32; float pp9 = (p1 - p14) * cos3_32; float pp10 = (p2 - p13) * cos5_32; float pp11 = (p3 - p12) * cos7_32; float pp12 = (p4 - p11) * cos9_32; float pp13 = (p5 - p10) * cos11_32; float pp14 = (p6 - p9) * cos13_32; float pp15 = (p7 - p8) * cos15_32; p0 = pp0 + pp7; p1 = pp1 + pp6; p2 = pp2 + pp5; p3 = pp3 + pp4; p4 = (pp0 - pp7) * cos1_16; p5 = (pp1 - pp6) * cos3_16; p6 = (pp2 - pp5) * cos5_16; p7 = (pp3 - pp4) * cos7_16; p8 = pp8 + pp15; p9 = pp9 + pp14; p10 = pp10 + pp13; p11 = pp11 + pp12; p12 = (pp8 - pp15) * cos1_16; p13 = (pp9 - pp14) * cos3_16; p14 = (pp10 - pp13) * cos5_16; p15 = (pp11 - pp12) * cos7_16; pp0 = p0 + p3; pp1 = p1 + p2; pp2 = (p0 - p3) * cos1_8; pp3 = (p1 - p2) * cos3_8; pp4 = p4 + p7; pp5 = p5 + p6; pp6 = (p4 - p7) * cos1_8; pp7 = (p5 - p6) * cos3_8; pp8 = p8 + p11; pp9 = p9 + p10; pp10 = (p8 - p11) * cos1_8; pp11 = (p9 - p10) * cos3_8; pp12 = p12 + p15; pp13 = p13 + p14; pp14 = (p12 - p15) * cos1_8; pp15 = (p13 - p14) * cos3_8; p0 = pp0 + pp1; p1 = (pp0 - pp1) * cos1_4; p2 = pp2 + pp3; p3 = (pp2 - pp3) * cos1_4; p4 = pp4 + pp5; p5 = (pp4 - pp5) * cos1_4; p6 = pp6 + pp7; p7 = (pp6 - pp7) * cos1_4; p8 = pp8 + pp9; p9 = (pp8 - pp9) * cos1_4; p10 = pp10 + pp11; p11 = (pp10 - pp11) * cos1_4; p12 = pp12 + pp13; p13 = (pp12 - pp13) * cos1_4; p14 = pp14 + pp15; p15 = (pp14 - pp15) * cos1_4; // this is pretty insane coding float tmp1; new_v19/*36-17*/ = -(new_v4 = (new_v12 = p7) + p5) - p6; new_v27/*44-17*/ = -p6 - p7 - p4; new_v6 = (new_v10 = (new_v14 = p15) + p11) + p13; new_v17/*34-17*/ = -(new_v2 = p15 + p13 + p9) - p14; new_v21/*38-17*/ = (tmp1 = -p14 - p15 - p10 - p11) - p13; new_v29/*46-17*/ = -p14 - p15 - p12 - p8; new_v25/*42-17*/ = tmp1 - p12; new_v31/*48-17*/ = -p0; new_v0 = p1; new_v23/*40-17*/ = -(new_v8 = p3) - p2; p0 = (s0 - s31) * cos1_64; p1 = (s1 - s30) * cos3_64; p2 = (s2 - s29) * cos5_64; p3 = (s3 - s28) * cos7_64; p4 = (s4 - s27) * cos9_64; p5 = (s5 - s26) * cos11_64; p6 = (s6 - s25) * cos13_64; p7 = (s7 - s24) * cos15_64; p8 = (s8 - s23) * cos17_64; p9 = (s9 - s22) * cos19_64; p10 = (s10 - s21) * cos21_64; p11 = (s11 - s20) * cos23_64; p12 = (s12 - s19) * cos25_64; p13 = (s13 - s18) * cos27_64; p14 = (s14 - s17) * cos29_64; p15 = (s15 - s16) * cos31_64; pp0 = p0 + p15; pp1 = p1 + p14; pp2 = p2 + p13; pp3 = p3 + p12; pp4 = p4 + p11; pp5 = p5 + p10; pp6 = p6 + p9; pp7 = p7 + p8; pp8 = (p0 - p15) * cos1_32; pp9 = (p1 - p14) * cos3_32; pp10 = (p2 - p13) * cos5_32; pp11 = (p3 - p12) * cos7_32; pp12 = (p4 - p11) * cos9_32; pp13 = (p5 - p10) * cos11_32; pp14 = (p6 - p9) * cos13_32; pp15 = (p7 - p8) * cos15_32; p0 = pp0 + pp7; p1 = pp1 + pp6; p2 = pp2 + pp5; p3 = pp3 + pp4; p4 = (pp0 - pp7) * cos1_16; p5 = (pp1 - pp6) * cos3_16; p6 = (pp2 - pp5) * cos5_16; p7 = (pp3 - pp4) * cos7_16; p8 = pp8 + pp15; p9 = pp9 + pp14; p10 = pp10 + pp13; p11 = pp11 + pp12; p12 = (pp8 - pp15) * cos1_16; p13 = (pp9 - pp14) * cos3_16; p14 = (pp10 - pp13) * cos5_16; p15 = (pp11 - pp12) * cos7_16; pp0 = p0 + p3; pp1 = p1 + p2; pp2 = (p0 - p3) * cos1_8; pp3 = (p1 - p2) * cos3_8; pp4 = p4 + p7; pp5 = p5 + p6; pp6 = (p4 - p7) * cos1_8; pp7 = (p5 - p6) * cos3_8; pp8 = p8 + p11; pp9 = p9 + p10; pp10 = (p8 - p11) * cos1_8; pp11 = (p9 - p10) * cos3_8; pp12 = p12 + p15; pp13 = p13 + p14; pp14 = (p12 - p15) * cos1_8; pp15 = (p13 - p14) * cos3_8; p0 = pp0 + pp1; p1 = (pp0 - pp1) * cos1_4; p2 = pp2 + pp3; p3 = (pp2 - pp3) * cos1_4; p4 = pp4 + pp5; p5 = (pp4 - pp5) * cos1_4; p6 = pp6 + pp7; p7 = (pp6 - pp7) * cos1_4; p8 = pp8 + pp9; p9 = (pp8 - pp9) * cos1_4; p10 = pp10 + pp11; p11 = (pp10 - pp11) * cos1_4; p12 = pp12 + pp13; p13 = (pp12 - pp13) * cos1_4; p14 = pp14 + pp15; p15 = (pp14 - pp15) * cos1_4; // manually doing something that a compiler should handle sucks // coding like this is hard to read float tmp2; new_v5 = (new_v11 = (new_v13 = (new_v15 = p15) + p7) + p11) + p5 + p13; new_v7 = (new_v9 = p15 + p11 + p3) + p13; new_v16/*33-17*/ = -(new_v1 = (tmp1 = p13 + p15 + p9) + p1) - p14; new_v18/*35-17*/ = -(new_v3 = tmp1 + p5 + p7) - p6 - p14; new_v22/*39-17*/ = (tmp1 = -p10 - p11 - p14 - p15) - p13 - p2 - p3; new_v20/*37-17*/ = tmp1 - p13 - p5 - p6 - p7; new_v24/*41-17*/ = tmp1 - p12 - p2 - p3; new_v26/*43-17*/ = tmp1 - p12 - (tmp2 = p4 + p6 + p7); new_v30/*47-17*/ = (tmp1 = -p8 - p12 - p14 - p15) - p0; new_v28/*45-17*/ = tmp1 - tmp2; // insert V[0-15] (== new_v[0-15]) into actual v: // float[] x2 = actual_v + actual_write_pos; float dest[] = actual_v; int pos = actual_write_pos; dest[0 + pos] = new_v0; dest[16 + pos] = new_v1; dest[32 + pos] = new_v2; dest[48 + pos] = new_v3; dest[64 + pos] = new_v4; dest[80 + pos] = new_v5; dest[96 + pos] = new_v6; dest[112 + pos] = new_v7; dest[128 + pos] = new_v8; dest[144 + pos] = new_v9; dest[160 + pos] = new_v10; dest[176 + pos] = new_v11; dest[192 + pos] = new_v12; dest[208 + pos] = new_v13; dest[224 + pos] = new_v14; dest[240 + pos] = new_v15; // V[16] is always 0.0: dest[256 + pos] = 0.0f; // insert V[17-31] (== -new_v[15-1]) into actual v: dest[272 + pos] = -new_v15; dest[288 + pos] = -new_v14; dest[304 + pos] = -new_v13; dest[320 + pos] = -new_v12; dest[336 + pos] = -new_v11; dest[352 + pos] = -new_v10; dest[368 + pos] = -new_v9; dest[384 + pos] = -new_v8; dest[400 + pos] = -new_v7; dest[416 + pos] = -new_v6; dest[432 + pos] = -new_v5; dest[448 + pos] = -new_v4; dest[464 + pos] = -new_v3; dest[480 + pos] = -new_v2; dest[496 + pos] = -new_v1; // insert V[32] (== -new_v[0]) into other v: dest = (actual_v==v1) ? v2 : v1; dest[0 + pos] = -new_v0; // insert V[33-48] (== new_v[16-31]) into other v: dest[16 + pos] = new_v16; dest[32 + pos] = new_v17; dest[48 + pos] = new_v18; dest[64 + pos] = new_v19; dest[80 + pos] = new_v20; dest[96 + pos] = new_v21; dest[112 + pos] = new_v22; dest[128 + pos] = new_v23; dest[144 + pos] = new_v24; dest[160 + pos] = new_v25; dest[176 + pos] = new_v26; dest[192 + pos] = new_v27; dest[208 + pos] = new_v28; dest[224 + pos] = new_v29; dest[240 + pos] = new_v30; dest[256 + pos] = new_v31; // insert V[49-63] (== new_v[30-16]) into other v: dest[272 + pos] = new_v30; dest[288 + pos] = new_v29; dest[304 + pos] = new_v28; dest[320 + pos] = new_v27; dest[336 + pos] = new_v26; dest[352 + pos] = new_v25; dest[368 + pos] = new_v24; dest[384 + pos] = new_v23; dest[400 + pos] = new_v22; dest[416 + pos] = new_v21; dest[432 + pos] = new_v20; dest[448 + pos] = new_v19; dest[464 + pos] = new_v18; dest[480 + pos] = new_v17; dest[496 + pos] = new_v16; /* } else { v1[0 + actual_write_pos] = -new_v0; // insert V[33-48] (== new_v[16-31]) into other v: v1[16 + actual_write_pos] = new_v16; v1[32 + actual_write_pos] = new_v17; v1[48 + actual_write_pos] = new_v18; v1[64 + actual_write_pos] = new_v19; v1[80 + actual_write_pos] = new_v20; v1[96 + actual_write_pos] = new_v21; v1[112 + actual_write_pos] = new_v22; v1[128 + actual_write_pos] = new_v23; v1[144 + actual_write_pos] = new_v24; v1[160 + actual_write_pos] = new_v25; v1[176 + actual_write_pos] = new_v26; v1[192 + actual_write_pos] = new_v27; v1[208 + actual_write_pos] = new_v28; v1[224 + actual_write_pos] = new_v29; v1[240 + actual_write_pos] = new_v30; v1[256 + actual_write_pos] = new_v31; // insert V[49-63] (== new_v[30-16]) into other v: v1[272 + actual_write_pos] = new_v30; v1[288 + actual_write_pos] = new_v29; v1[304 + actual_write_pos] = new_v28; v1[320 + actual_write_pos] = new_v27; v1[336 + actual_write_pos] = new_v26; v1[352 + actual_write_pos] = new_v25; v1[368 + actual_write_pos] = new_v24; v1[384 + actual_write_pos] = new_v23; v1[400 + actual_write_pos] = new_v22; v1[416 + actual_write_pos] = new_v21; v1[432 + actual_write_pos] = new_v20; v1[448 + actual_write_pos] = new_v19; v1[464 + actual_write_pos] = new_v18; v1[480 + actual_write_pos] = new_v17; v1[496 + actual_write_pos] = new_v16; } */ } /** * Compute new values via a fast cosine transform. */ private void compute_new_v_old() { // p is fully initialized from x1 //float[] p = _p; // pp is fully initialized from p //float[] pp = _pp; //float[] new_v = _new_v; float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 float[] p = new float[16]; float[] pp = new float[16]; for (int i=31; i>=0; i--) { new_v[i] = 0.0f; } // float[] new_v = new float[32]; // new V[0-15] and V[33-48] of Figure 3-A.2 in ISO DIS 11172-3 // float[] p = new float[16]; // float[] pp = new float[16]; float[] x1 = samples; p[0] = x1[0] + x1[31]; p[1] = x1[1] + x1[30]; p[2] = x1[2] + x1[29]; p[3] = x1[3] + x1[28]; p[4] = x1[4] + x1[27]; p[5] = x1[5] + x1[26]; p[6] = x1[6] + x1[25]; p[7] = x1[7] + x1[24]; p[8] = x1[8] + x1[23]; p[9] = x1[9] + x1[22]; p[10] = x1[10] + x1[21]; p[11] = x1[11] + x1[20]; p[12] = x1[12] + x1[19]; p[13] = x1[13] + x1[18]; p[14] = x1[14] + x1[17]; p[15] = x1[15] + x1[16]; pp[0] = p[0] + p[15]; pp[1] = p[1] + p[14]; pp[2] = p[2] + p[13]; pp[3] = p[3] + p[12]; pp[4] = p[4] + p[11]; pp[5] = p[5] + p[10]; pp[6] = p[6] + p[9]; pp[7] = p[7] + p[8]; pp[8] = (p[0] - p[15]) * cos1_32; pp[9] = (p[1] - p[14]) * cos3_32; pp[10] = (p[2] - p[13]) * cos5_32; pp[11] = (p[3] - p[12]) * cos7_32; pp[12] = (p[4] - p[11]) * cos9_32; pp[13] = (p[5] - p[10]) * cos11_32; pp[14] = (p[6] - p[9]) * cos13_32; pp[15] = (p[7] - p[8]) * cos15_32; p[0] = pp[0] + pp[7]; p[1] = pp[1] + pp[6]; p[2] = pp[2] + pp[5]; p[3] = pp[3] + pp[4]; p[4] = (pp[0] - pp[7]) * cos1_16; p[5] = (pp[1] - pp[6]) * cos3_16; p[6] = (pp[2] - pp[5]) * cos5_16; p[7] = (pp[3] - pp[4]) * cos7_16; p[8] = pp[8] + pp[15]; p[9] = pp[9] + pp[14]; p[10] = pp[10] + pp[13]; p[11] = pp[11] + pp[12]; p[12] = (pp[8] - pp[15]) * cos1_16; p[13] = (pp[9] - pp[14]) * cos3_16; p[14] = (pp[10] - pp[13]) * cos5_16; p[15] = (pp[11] - pp[12]) * cos7_16; pp[0] = p[0] + p[3]; pp[1] = p[1] + p[2]; pp[2] = (p[0] - p[3]) * cos1_8; pp[3] = (p[1] - p[2]) * cos3_8; pp[4] = p[4] + p[7]; pp[5] = p[5] + p[6]; pp[6] = (p[4] - p[7]) * cos1_8; pp[7] = (p[5] - p[6]) * cos3_8; pp[8] = p[8] + p[11]; pp[9] = p[9] + p[10]; pp[10] = (p[8] - p[11]) * cos1_8; pp[11] = (p[9] - p[10]) * cos3_8; pp[12] = p[12] + p[15]; pp[13] = p[13] + p[14]; pp[14] = (p[12] - p[15]) * cos1_8; pp[15] = (p[13] - p[14]) * cos3_8; p[0] = pp[0] + pp[1]; p[1] = (pp[0] - pp[1]) * cos1_4; p[2] = pp[2] + pp[3]; p[3] = (pp[2] - pp[3]) * cos1_4; p[4] = pp[4] + pp[5]; p[5] = (pp[4] - pp[5]) * cos1_4; p[6] = pp[6] + pp[7]; p[7] = (pp[6] - pp[7]) * cos1_4; p[8] = pp[8] + pp[9]; p[9] = (pp[8] - pp[9]) * cos1_4; p[10] = pp[10] + pp[11]; p[11] = (pp[10] - pp[11]) * cos1_4; p[12] = pp[12] + pp[13]; p[13] = (pp[12] - pp[13]) * cos1_4; p[14] = pp[14] + pp[15]; p[15] = (pp[14] - pp[15]) * cos1_4; // this is pretty insane coding float tmp1; new_v[36-17] = -(new_v[4] = (new_v[12] = p[7]) + p[5]) - p[6]; new_v[44-17] = -p[6] - p[7] - p[4]; new_v[6] = (new_v[10] = (new_v[14] = p[15]) + p[11]) + p[13]; new_v[34-17] = -(new_v[2] = p[15] + p[13] + p[9]) - p[14]; new_v[38-17] = (tmp1 = -p[14] - p[15] - p[10] - p[11]) - p[13]; new_v[46-17] = -p[14] - p[15] - p[12] - p[8]; new_v[42-17] = tmp1 - p[12]; new_v[48-17] = -p[0]; new_v[0] = p[1]; new_v[40-17] = -(new_v[8] = p[3]) - p[2]; p[0] = (x1[0] - x1[31]) * cos1_64; p[1] = (x1[1] - x1[30]) * cos3_64; p[2] = (x1[2] - x1[29]) * cos5_64; p[3] = (x1[3] - x1[28]) * cos7_64; p[4] = (x1[4] - x1[27]) * cos9_64; p[5] = (x1[5] - x1[26]) * cos11_64; p[6] = (x1[6] - x1[25]) * cos13_64; p[7] = (x1[7] - x1[24]) * cos15_64; p[8] = (x1[8] - x1[23]) * cos17_64; p[9] = (x1[9] - x1[22]) * cos19_64; p[10] = (x1[10] - x1[21]) * cos21_64; p[11] = (x1[11] - x1[20]) * cos23_64; p[12] = (x1[12] - x1[19]) * cos25_64; p[13] = (x1[13] - x1[18]) * cos27_64; p[14] = (x1[14] - x1[17]) * cos29_64; p[15] = (x1[15] - x1[16]) * cos31_64; pp[0] = p[0] + p[15]; pp[1] = p[1] + p[14]; pp[2] = p[2] + p[13]; pp[3] = p[3] + p[12]; pp[4] = p[4] + p[11]; pp[5] = p[5] + p[10]; pp[6] = p[6] + p[9]; pp[7] = p[7] + p[8]; pp[8] = (p[0] - p[15]) * cos1_32; pp[9] = (p[1] - p[14]) * cos3_32; pp[10] = (p[2] - p[13]) * cos5_32; pp[11] = (p[3] - p[12]) * cos7_32; pp[12] = (p[4] - p[11]) * cos9_32; pp[13] = (p[5] - p[10]) * cos11_32; pp[14] = (p[6] - p[9]) * cos13_32; pp[15] = (p[7] - p[8]) * cos15_32; p[0] = pp[0] + pp[7]; p[1] = pp[1] + pp[6]; p[2] = pp[2] + pp[5]; p[3] = pp[3] + pp[4]; p[4] = (pp[0] - pp[7]) * cos1_16; p[5] = (pp[1] - pp[6]) * cos3_16; p[6] = (pp[2] - pp[5]) * cos5_16; p[7] = (pp[3] - pp[4]) * cos7_16; p[8] = pp[8] + pp[15]; p[9] = pp[9] + pp[14]; p[10] = pp[10] + pp[13]; p[11] = pp[11] + pp[12]; p[12] = (pp[8] - pp[15]) * cos1_16; p[13] = (pp[9] - pp[14]) * cos3_16; p[14] = (pp[10] - pp[13]) * cos5_16; p[15] = (pp[11] - pp[12]) * cos7_16; pp[0] = p[0] + p[3]; pp[1] = p[1] + p[2]; pp[2] = (p[0] - p[3]) * cos1_8; pp[3] = (p[1] - p[2]) * cos3_8; pp[4] = p[4] + p[7]; pp[5] = p[5] + p[6]; pp[6] = (p[4] - p[7]) * cos1_8; pp[7] = (p[5] - p[6]) * cos3_8; pp[8] = p[8] + p[11]; pp[9] = p[9] + p[10]; pp[10] = (p[8] - p[11]) * cos1_8; pp[11] = (p[9] - p[10]) * cos3_8; pp[12] = p[12] + p[15]; pp[13] = p[13] + p[14]; pp[14] = (p[12] - p[15]) * cos1_8; pp[15] = (p[13] - p[14]) * cos3_8; p[0] = pp[0] + pp[1]; p[1] = (pp[0] - pp[1]) * cos1_4; p[2] = pp[2] + pp[3]; p[3] = (pp[2] - pp[3]) * cos1_4; p[4] = pp[4] + pp[5]; p[5] = (pp[4] - pp[5]) * cos1_4; p[6] = pp[6] + pp[7]; p[7] = (pp[6] - pp[7]) * cos1_4; p[8] = pp[8] + pp[9]; p[9] = (pp[8] - pp[9]) * cos1_4; p[10] = pp[10] + pp[11]; p[11] = (pp[10] - pp[11]) * cos1_4; p[12] = pp[12] + pp[13]; p[13] = (pp[12] - pp[13]) * cos1_4; p[14] = pp[14] + pp[15]; p[15] = (pp[14] - pp[15]) * cos1_4; // manually doing something that a compiler should handle sucks // coding like this is hard to read float tmp2; new_v[5] = (new_v[11] = (new_v[13] = (new_v[15] = p[15]) + p[7]) + p[11]) + p[5] + p[13]; new_v[7] = (new_v[9] = p[15] + p[11] + p[3]) + p[13]; new_v[33-17] = -(new_v[1] = (tmp1 = p[13] + p[15] + p[9]) + p[1]) - p[14]; new_v[35-17] = -(new_v[3] = tmp1 + p[5] + p[7]) - p[6] - p[14]; new_v[39-17] = (tmp1 = -p[10] - p[11] - p[14] - p[15]) - p[13] - p[2] - p[3]; new_v[37-17] = tmp1 - p[13] - p[5] - p[6] - p[7]; new_v[41-17] = tmp1 - p[12] - p[2] - p[3]; new_v[43-17] = tmp1 - p[12] - (tmp2 = p[4] + p[6] + p[7]); new_v[47-17] = (tmp1 = -p[8] - p[12] - p[14] - p[15]) - p[0]; new_v[45-17] = tmp1 - tmp2; // insert V[0-15] (== new_v[0-15]) into actual v: x1 = new_v; // float[] x2 = actual_v + actual_write_pos; float[] dest = actual_v; dest[0 + actual_write_pos] = x1[0]; dest[16 + actual_write_pos] = x1[1]; dest[32 + actual_write_pos] = x1[2]; dest[48 + actual_write_pos] = x1[3]; dest[64 + actual_write_pos] = x1[4]; dest[80 + actual_write_pos] = x1[5]; dest[96 + actual_write_pos] = x1[6]; dest[112 + actual_write_pos] = x1[7]; dest[128 + actual_write_pos] = x1[8]; dest[144 + actual_write_pos] = x1[9]; dest[160 + actual_write_pos] = x1[10]; dest[176 + actual_write_pos] = x1[11]; dest[192 + actual_write_pos] = x1[12]; dest[208 + actual_write_pos] = x1[13]; dest[224 + actual_write_pos] = x1[14]; dest[240 + actual_write_pos] = x1[15]; // V[16] is always 0.0: dest[256 + actual_write_pos] = 0.0f; // insert V[17-31] (== -new_v[15-1]) into actual v: dest[272 + actual_write_pos] = -x1[15]; dest[288 + actual_write_pos] = -x1[14]; dest[304 + actual_write_pos] = -x1[13]; dest[320 + actual_write_pos] = -x1[12]; dest[336 + actual_write_pos] = -x1[11]; dest[352 + actual_write_pos] = -x1[10]; dest[368 + actual_write_pos] = -x1[9]; dest[384 + actual_write_pos] = -x1[8]; dest[400 + actual_write_pos] = -x1[7]; dest[416 + actual_write_pos] = -x1[6]; dest[432 + actual_write_pos] = -x1[5]; dest[448 + actual_write_pos] = -x1[4]; dest[464 + actual_write_pos] = -x1[3]; dest[480 + actual_write_pos] = -x1[2]; dest[496 + actual_write_pos] = -x1[1]; // insert V[32] (== -new_v[0]) into other v: } /** * Compute PCM Samples. */ private float[] _tmpOut = new float[32]; private void compute_pcm_samples0(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { float pcm_sample; final float[] dp = d16[i]; pcm_sample = (float)(((vp[0 + dvp] * dp[0]) + (vp[15 + dvp] * dp[1]) + (vp[14 + dvp] * dp[2]) + (vp[13 + dvp] * dp[3]) + (vp[12 + dvp] * dp[4]) + (vp[11 + dvp] * dp[5]) + (vp[10 + dvp] * dp[6]) + (vp[9 + dvp] * dp[7]) + (vp[8 + dvp] * dp[8]) + (vp[7 + dvp] * dp[9]) + (vp[6 + dvp] * dp[10]) + (vp[5 + dvp] * dp[11]) + (vp[4 + dvp] * dp[12]) + (vp[3 + dvp] * dp[13]) + (vp[2 + dvp] * dp[14]) + (vp[1 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples1(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[1 + dvp] * dp[0]) + (vp[0 + dvp] * dp[1]) + (vp[15 + dvp] * dp[2]) + (vp[14 + dvp] * dp[3]) + (vp[13 + dvp] * dp[4]) + (vp[12 + dvp] * dp[5]) + (vp[11 + dvp] * dp[6]) + (vp[10 + dvp] * dp[7]) + (vp[9 + dvp] * dp[8]) + (vp[8 + dvp] * dp[9]) + (vp[7 + dvp] * dp[10]) + (vp[6 + dvp] * dp[11]) + (vp[5 + dvp] * dp[12]) + (vp[4 + dvp] * dp[13]) + (vp[3 + dvp] * dp[14]) + (vp[2 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples2(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[2 + dvp] * dp[0]) + (vp[1 + dvp] * dp[1]) + (vp[0 + dvp] * dp[2]) + (vp[15 + dvp] * dp[3]) + (vp[14 + dvp] * dp[4]) + (vp[13 + dvp] * dp[5]) + (vp[12 + dvp] * dp[6]) + (vp[11 + dvp] * dp[7]) + (vp[10 + dvp] * dp[8]) + (vp[9 + dvp] * dp[9]) + (vp[8 + dvp] * dp[10]) + (vp[7 + dvp] * dp[11]) + (vp[6 + dvp] * dp[12]) + (vp[5 + dvp] * dp[13]) + (vp[4 + dvp] * dp[14]) + (vp[3 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples3(Obuffer buffer) { final float[] vp = actual_v; int idx = 0; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[3 + dvp] * dp[0]) + (vp[2 + dvp] * dp[1]) + (vp[1 + dvp] * dp[2]) + (vp[0 + dvp] * dp[3]) + (vp[15 + dvp] * dp[4]) + (vp[14 + dvp] * dp[5]) + (vp[13 + dvp] * dp[6]) + (vp[12 + dvp] * dp[7]) + (vp[11 + dvp] * dp[8]) + (vp[10 + dvp] * dp[9]) + (vp[9 + dvp] * dp[10]) + (vp[8 + dvp] * dp[11]) + (vp[7 + dvp] * dp[12]) + (vp[6 + dvp] * dp[13]) + (vp[5 + dvp] * dp[14]) + (vp[4 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples4(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[4 + dvp] * dp[0]) + (vp[3 + dvp] * dp[1]) + (vp[2 + dvp] * dp[2]) + (vp[1 + dvp] * dp[3]) + (vp[0 + dvp] * dp[4]) + (vp[15 + dvp] * dp[5]) + (vp[14 + dvp] * dp[6]) + (vp[13 + dvp] * dp[7]) + (vp[12 + dvp] * dp[8]) + (vp[11 + dvp] * dp[9]) + (vp[10 + dvp] * dp[10]) + (vp[9 + dvp] * dp[11]) + (vp[8 + dvp] * dp[12]) + (vp[7 + dvp] * dp[13]) + (vp[6 + dvp] * dp[14]) + (vp[5 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples5(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[5 + dvp] * dp[0]) + (vp[4 + dvp] * dp[1]) + (vp[3 + dvp] * dp[2]) + (vp[2 + dvp] * dp[3]) + (vp[1 + dvp] * dp[4]) + (vp[0 + dvp] * dp[5]) + (vp[15 + dvp] * dp[6]) + (vp[14 + dvp] * dp[7]) + (vp[13 + dvp] * dp[8]) + (vp[12 + dvp] * dp[9]) + (vp[11 + dvp] * dp[10]) + (vp[10 + dvp] * dp[11]) + (vp[9 + dvp] * dp[12]) + (vp[8 + dvp] * dp[13]) + (vp[7 + dvp] * dp[14]) + (vp[6 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples6(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[6 + dvp] * dp[0]) + (vp[5 + dvp] * dp[1]) + (vp[4 + dvp] * dp[2]) + (vp[3 + dvp] * dp[3]) + (vp[2 + dvp] * dp[4]) + (vp[1 + dvp] * dp[5]) + (vp[0 + dvp] * dp[6]) + (vp[15 + dvp] * dp[7]) + (vp[14 + dvp] * dp[8]) + (vp[13 + dvp] * dp[9]) + (vp[12 + dvp] * dp[10]) + (vp[11 + dvp] * dp[11]) + (vp[10 + dvp] * dp[12]) + (vp[9 + dvp] * dp[13]) + (vp[8 + dvp] * dp[14]) + (vp[7 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples7(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[7 + dvp] * dp[0]) + (vp[6 + dvp] * dp[1]) + (vp[5 + dvp] * dp[2]) + (vp[4 + dvp] * dp[3]) + (vp[3 + dvp] * dp[4]) + (vp[2 + dvp] * dp[5]) + (vp[1 + dvp] * dp[6]) + (vp[0 + dvp] * dp[7]) + (vp[15 + dvp] * dp[8]) + (vp[14 + dvp] * dp[9]) + (vp[13 + dvp] * dp[10]) + (vp[12 + dvp] * dp[11]) + (vp[11 + dvp] * dp[12]) + (vp[10 + dvp] * dp[13]) + (vp[9 + dvp] * dp[14]) + (vp[8 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples8(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[8 + dvp] * dp[0]) + (vp[7 + dvp] * dp[1]) + (vp[6 + dvp] * dp[2]) + (vp[5 + dvp] * dp[3]) + (vp[4 + dvp] * dp[4]) + (vp[3 + dvp] * dp[5]) + (vp[2 + dvp] * dp[6]) + (vp[1 + dvp] * dp[7]) + (vp[0 + dvp] * dp[8]) + (vp[15 + dvp] * dp[9]) + (vp[14 + dvp] * dp[10]) + (vp[13 + dvp] * dp[11]) + (vp[12 + dvp] * dp[12]) + (vp[11 + dvp] * dp[13]) + (vp[10 + dvp] * dp[14]) + (vp[9 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples9(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[9 + dvp] * dp[0]) + (vp[8 + dvp] * dp[1]) + (vp[7 + dvp] * dp[2]) + (vp[6 + dvp] * dp[3]) + (vp[5 + dvp] * dp[4]) + (vp[4 + dvp] * dp[5]) + (vp[3 + dvp] * dp[6]) + (vp[2 + dvp] * dp[7]) + (vp[1 + dvp] * dp[8]) + (vp[0 + dvp] * dp[9]) + (vp[15 + dvp] * dp[10]) + (vp[14 + dvp] * dp[11]) + (vp[13 + dvp] * dp[12]) + (vp[12 + dvp] * dp[13]) + (vp[11 + dvp] * dp[14]) + (vp[10 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples10(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[10 + dvp] * dp[0]) + (vp[9 + dvp] * dp[1]) + (vp[8 + dvp] * dp[2]) + (vp[7 + dvp] * dp[3]) + (vp[6 + dvp] * dp[4]) + (vp[5 + dvp] * dp[5]) + (vp[4 + dvp] * dp[6]) + (vp[3 + dvp] * dp[7]) + (vp[2 + dvp] * dp[8]) + (vp[1 + dvp] * dp[9]) + (vp[0 + dvp] * dp[10]) + (vp[15 + dvp] * dp[11]) + (vp[14 + dvp] * dp[12]) + (vp[13 + dvp] * dp[13]) + (vp[12 + dvp] * dp[14]) + (vp[11 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples11(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[11 + dvp] * dp[0]) + (vp[10 + dvp] * dp[1]) + (vp[9 + dvp] * dp[2]) + (vp[8 + dvp] * dp[3]) + (vp[7 + dvp] * dp[4]) + (vp[6 + dvp] * dp[5]) + (vp[5 + dvp] * dp[6]) + (vp[4 + dvp] * dp[7]) + (vp[3 + dvp] * dp[8]) + (vp[2 + dvp] * dp[9]) + (vp[1 + dvp] * dp[10]) + (vp[0 + dvp] * dp[11]) + (vp[15 + dvp] * dp[12]) + (vp[14 + dvp] * dp[13]) + (vp[13 + dvp] * dp[14]) + (vp[12 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples12(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[12 + dvp] * dp[0]) + (vp[11 + dvp] * dp[1]) + (vp[10 + dvp] * dp[2]) + (vp[9 + dvp] * dp[3]) + (vp[8 + dvp] * dp[4]) + (vp[7 + dvp] * dp[5]) + (vp[6 + dvp] * dp[6]) + (vp[5 + dvp] * dp[7]) + (vp[4 + dvp] * dp[8]) + (vp[3 + dvp] * dp[9]) + (vp[2 + dvp] * dp[10]) + (vp[1 + dvp] * dp[11]) + (vp[0 + dvp] * dp[12]) + (vp[15 + dvp] * dp[13]) + (vp[14 + dvp] * dp[14]) + (vp[13 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples13(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[13 + dvp] * dp[0]) + (vp[12 + dvp] * dp[1]) + (vp[11 + dvp] * dp[2]) + (vp[10 + dvp] * dp[3]) + (vp[9 + dvp] * dp[4]) + (vp[8 + dvp] * dp[5]) + (vp[7 + dvp] * dp[6]) + (vp[6 + dvp] * dp[7]) + (vp[5 + dvp] * dp[8]) + (vp[4 + dvp] * dp[9]) + (vp[3 + dvp] * dp[10]) + (vp[2 + dvp] * dp[11]) + (vp[1 + dvp] * dp[12]) + (vp[0 + dvp] * dp[13]) + (vp[15 + dvp] * dp[14]) + (vp[14 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples14(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { final float[] dp = d16[i]; float pcm_sample; pcm_sample = (float)(((vp[14 + dvp] * dp[0]) + (vp[13 + dvp] * dp[1]) + (vp[12 + dvp] * dp[2]) + (vp[11 + dvp] * dp[3]) + (vp[10 + dvp] * dp[4]) + (vp[9 + dvp] * dp[5]) + (vp[8 + dvp] * dp[6]) + (vp[7 + dvp] * dp[7]) + (vp[6 + dvp] * dp[8]) + (vp[5 + dvp] * dp[9]) + (vp[4 + dvp] * dp[10]) + (vp[3 + dvp] * dp[11]) + (vp[2 + dvp] * dp[12]) + (vp[1 + dvp] * dp[13]) + (vp[0 + dvp] * dp[14]) + (vp[15 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples15(Obuffer buffer) { final float[] vp = actual_v; //int inc = v_inc; final float[] tmpOut = _tmpOut; int dvp =0; // fat chance of having this loop unroll for( int i=0; i<32; i++) { float pcm_sample; final float dp[] = d16[i]; pcm_sample = (float)(((vp[15 + dvp] * dp[0]) + (vp[14 + dvp] * dp[1]) + (vp[13 + dvp] * dp[2]) + (vp[12 + dvp] * dp[3]) + (vp[11 + dvp] * dp[4]) + (vp[10 + dvp] * dp[5]) + (vp[9 + dvp] * dp[6]) + (vp[8 + dvp] * dp[7]) + (vp[7 + dvp] * dp[8]) + (vp[6 + dvp] * dp[9]) + (vp[5 + dvp] * dp[10]) + (vp[4 + dvp] * dp[11]) + (vp[3 + dvp] * dp[12]) + (vp[2 + dvp] * dp[13]) + (vp[1 + dvp] * dp[14]) + (vp[0 + dvp] * dp[15]) ) * scalefactor); tmpOut[i] = pcm_sample; dvp += 16; } // for } private void compute_pcm_samples(Obuffer buffer) { switch (actual_write_pos) { case 0: compute_pcm_samples0(buffer); break; case 1: compute_pcm_samples1(buffer); break; case 2: compute_pcm_samples2(buffer); break; case 3: compute_pcm_samples3(buffer); break; case 4: compute_pcm_samples4(buffer); break; case 5: compute_pcm_samples5(buffer); break; case 6: compute_pcm_samples6(buffer); break; case 7: compute_pcm_samples7(buffer); break; case 8: compute_pcm_samples8(buffer); break; case 9: compute_pcm_samples9(buffer); break; case 10: compute_pcm_samples10(buffer); break; case 11: compute_pcm_samples11(buffer); break; case 12: compute_pcm_samples12(buffer); break; case 13: compute_pcm_samples13(buffer); break; case 14: compute_pcm_samples14(buffer); break; case 15: compute_pcm_samples15(buffer); break; } if (buffer!=null) { buffer.appendSamples(channel, _tmpOut); } /* // MDM: I was considering putting in quality control for // low-spec CPUs, but the performance gain (about 10-15%) // did not justify the considerable drop in audio quality. switch (inc) { case 16: buffer.appendSamples(channel, tmpOut); break; case 32: for (int i=0; i<16; i++) { buffer.append(channel, (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); } break; case 64: for (int i=0; i<8; i++) { buffer.append(channel, (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); buffer.append(channel, (short)tmpOut[i]); } break; } */ } /** * Calculate 32 PCM samples and put the into the Obuffer-object. */ public void calculate_pcm_samples(Obuffer buffer) { compute_new_v(); compute_pcm_samples(buffer); actual_write_pos = (actual_write_pos + 1) & 0xf; actual_v = (actual_v == v1) ? v2 : v1; // initialize samples[]: //for (register float *floatp = samples + 32; floatp > samples; ) // *--floatp = 0.0f; // MDM: this may not be necessary. The Layer III decoder always // outputs 32 subband samples, but I haven't checked layer I & II. for (int p=0;p<32;p++) samples[p] = 0.0f; } private static final double MY_PI = 3.14159265358979323846; private static final float cos1_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI / 64.0))); private static final float cos3_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 64.0))); private static final float cos5_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 64.0))); private static final float cos7_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 64.0))); private static final float cos9_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 9.0 / 64.0))); private static final float cos11_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 11.0 / 64.0))); private static final float cos13_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 13.0 / 64.0))); private static final float cos15_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 15.0 / 64.0))); private static final float cos17_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 17.0 / 64.0))); private static final float cos19_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 19.0 / 64.0))); private static final float cos21_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 21.0 / 64.0))); private static final float cos23_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 23.0 / 64.0))); private static final float cos25_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 25.0 / 64.0))); private static final float cos27_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 27.0 / 64.0))); private static final float cos29_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 29.0 / 64.0))); private static final float cos31_64 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 31.0 / 64.0))); private static final float cos1_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI / 32.0))); private static final float cos3_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 32.0))); private static final float cos5_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 32.0))); private static final float cos7_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 32.0))); private static final float cos9_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 9.0 / 32.0))); private static final float cos11_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 11.0 / 32.0))); private static final float cos13_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 13.0 / 32.0))); private static final float cos15_32 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 15.0 / 32.0))); private static final float cos1_16 =(float) (1.0 / (2.0 * Math.cos(MY_PI / 16.0))); private static final float cos3_16 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 16.0))); private static final float cos5_16 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 5.0 / 16.0))); private static final float cos7_16 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 7.0 / 16.0))); private static final float cos1_8 =(float) (1.0 / (2.0 * Math.cos(MY_PI / 8.0))); private static final float cos3_8 =(float) (1.0 / (2.0 * Math.cos(MY_PI * 3.0 / 8.0))); private static final float cos1_4 =(float) (1.0 / (2.0 * Math.cos(MY_PI / 4.0))); // Note: These values are not in the same order // as in Annex 3-B.3 of the ISO/IEC DIS 11172-3 // private float d[] = {0.000000000, -4.000442505}; private static float d[] = null; /** * d[] split into subarrays of length 16. This provides for * more faster access by allowing a block of 16 to be addressed * with constant offset. **/ private static float d16[][] = null; /** * Loads the data for the d[] from the resource SFd.ser. * @return the loaded values for d[]. */ static private float[] load_d() { try { Class elemType = Float.TYPE; Object o = JavaLayerUtils.deserializeArrayResource("sfd.ser", elemType, 512); return (float[])o; } catch (IOException ex) { throw new ExceptionInInitializerError(ex); } } /** * Converts a 1D array into a number of smaller arrays. This is used * to achieve offset + constant indexing into an array. Each sub-array * represents a block of values of the original array. * @param array The array to split up into blocks. * @param blockSize The size of the blocks to split the array * into. This must be an exact divisor of * the length of the array, or some data * will be lost from the main array. * * @return An array of arrays in which each element in the returned * array will be of length blockSize. */ static private float[][] splitArray(final float[] array, final int blockSize) { int size = array.length / blockSize; float[][] split = new float[size][]; for (int i=0; i array.length) { len = array.length-offs; } if (len < 0) len = 0; float[] subarray = new float[len]; for (int i=0; i>> 3; // of previous frame if ((flush_main = (br.hsstell() & 7)) != 0) { br.hgetbits(8 - flush_main); main_data_end++; } bytes_to_discard = frame_start - main_data_end - si.main_data_begin; frame_start += nSlots; if (bytes_to_discard < 0) return; if (main_data_end > 4096) { frame_start -= 4096; br.rewindNbytes(4096); } for (; bytes_to_discard > 0; bytes_to_discard--) br.hgetbits(8); for (gr=0;gr>> 4) / 5 ; new_slen[1] = (scalefac_comp >>> 4) % 5 ; new_slen[2] = (scalefac_comp & 0xF) >>> 2 ; new_slen[3] = (scalefac_comp & 3); si.ch[ch].gr[gr].preflag = 0; blocknumber = 0; } else if (scalefac_comp < 500) { new_slen[0] = ((scalefac_comp - 400) >>> 2) / 5 ; new_slen[1] = ((scalefac_comp - 400) >>> 2) % 5 ; new_slen[2] = (scalefac_comp - 400 ) & 3 ; new_slen[3] = 0; si.ch[ch].gr[gr].preflag = 0; blocknumber = 1; } else if (scalefac_comp < 512) { new_slen[0] = (scalefac_comp - 500 ) / 3 ; new_slen[1] = (scalefac_comp - 500) % 3 ; new_slen[2] = 0; new_slen[3] = 0; si.ch[ch].gr[gr].preflag = 1; blocknumber = 2; } } if((((mode_ext == 1) || (mode_ext == 3)) && (ch == 1))) { int_scalefac_comp = scalefac_comp >>> 1; if (int_scalefac_comp < 180) { new_slen[0] = int_scalefac_comp / 36 ; new_slen[1] = (int_scalefac_comp % 36 ) / 6 ; new_slen[2] = (int_scalefac_comp % 36) % 6; new_slen[3] = 0; si.ch[ch].gr[gr].preflag = 0; blocknumber = 3; } else if (int_scalefac_comp < 244) { new_slen[0] = ((int_scalefac_comp - 180 ) & 0x3F) >>> 4 ; new_slen[1] = ((int_scalefac_comp - 180) & 0xF) >>> 2 ; new_slen[2] = (int_scalefac_comp - 180 ) & 3 ; new_slen[3] = 0; si.ch[ch].gr[gr].preflag = 0; blocknumber = 4; } else if (int_scalefac_comp < 255) { new_slen[0] = (int_scalefac_comp - 244 ) / 3 ; new_slen[1] = (int_scalefac_comp - 244 ) % 3 ; new_slen[2] = 0 ; new_slen[3] = 0; si.ch[ch].gr[gr].preflag = 0; blocknumber = 5; } } for (int x=0; x<45; x++) // why 45, not 54? scalefac_buffer[x] = 0; m = 0; for (int i=0; i<4;i++) { for (int j = 0; j < nr_of_sfb_block[blocknumber][blocktypenumber][i]; j++) { scalefac_buffer[m] = (new_slen[i] == 0) ? 0 : br.hgetbits(new_slen[i]); m++; } // for (unint32 j ... } // for (uint32 i ... } /** * */ private void get_LSF_scale_factors(int ch, int gr) { int m = 0; int sfb, window; gr_info_s gr_info = (si.ch[ch].gr[gr]); get_LSF_scale_data(ch, gr); if ((gr_info.window_switching_flag != 0) && (gr_info.block_type == 2)) { if (gr_info.mixed_block_flag != 0) { // MIXED for (sfb = 0; sfb < 8; sfb++) { scalefac[ch].l[sfb] = scalefac_buffer[m]; m++; } for (sfb = 3; sfb < 12; sfb++) { for (window=0; window<3; window++) { scalefac[ch].s[window][sfb] = scalefac_buffer[m]; m++; } } for (window=0; window<3; window++) scalefac[ch].s[window][12] = 0; } else { // SHORT for (sfb = 0; sfb < 12; sfb++) { for (window=0; window<3; window++) { scalefac[ch].s[window][sfb] = scalefac_buffer[m]; m++; } } for (window=0; window<3; window++) scalefac[ch].s[window][12] = 0; } } else { // LONG types 0,1,3 for (sfb = 0; sfb < 21; sfb++) { scalefac[ch].l[sfb] = scalefac_buffer[m]; m++; } scalefac[ch].l[21] = 0; // Jeff scalefac[ch].l[22] = 0; } } /** * */ int[] x = {0}; int[] y = {0}; int[] v = {0}; int[] w = {0}; private void huffman_decode(int ch, int gr) { x[0] = 0; y[0] = 0; v[0] = 0; w[0] = 0; int part2_3_end = part2_start + si.ch[ch].gr[gr].part2_3_length; int num_bits; int region1Start; int region2Start; int index; int buf, buf1; huffcodetab h; // Find region boundary for short block case if ( ((si.ch[ch].gr[gr].window_switching_flag) != 0) && (si.ch[ch].gr[gr].block_type == 2) ) { // Region2. //MS: Extrahandling for 8KHZ region1Start = (sfreq == 8) ? 72 : 36; // sfb[9/3]*3=36 or in case 8KHZ = 72 region2Start = 576; // No Region2 for short block case } else { // Find region boundary for long block case buf = si.ch[ch].gr[gr].region0_count + 1; buf1 = buf + si.ch[ch].gr[gr].region1_count + 1; if(buf1 > sfBandIndex[sfreq].l.length - 1) buf1 = sfBandIndex[sfreq].l.length - 1; region1Start = sfBandIndex[sfreq].l[buf]; region2Start = sfBandIndex[sfreq].l[buf1]; /* MI */ } index = 0; // Read bigvalues area for (int i=0; i<(si.ch[ch].gr[gr].big_values<<1); i+=2) { if (i= is_1d.length) System.out.println("i0="+i+"/"+(si.ch[ch].gr[gr].big_values<<1)+" Index="+index+" is_1d="+is_1d.length); is_1d[index++] = x[0]; is_1d[index++] = y[0]; CheckSumHuff = CheckSumHuff + x[0] + y[0]; // System.out.println("x = "+x[0]+" y = "+y[0]); } // Read count1 area h = huffcodetab.ht[si.ch[ch].gr[gr].count1table_select+32]; num_bits = br.hsstell(); while ((num_bits < part2_3_end) && (index < 576)) { huffcodetab.huffman_decoder(h, x, y, v, w, br); is_1d[index++] = v[0]; is_1d[index++] = w[0]; is_1d[index++] = x[0]; is_1d[index++] = y[0]; CheckSumHuff = CheckSumHuff + v[0] + w[0] + x[0] + y[0]; // System.out.println("v = "+v[0]+" w = "+w[0]); // System.out.println("x = "+x[0]+" y = "+y[0]); num_bits = br.hsstell(); } if (num_bits > part2_3_end) { br.rewindNbits(num_bits - part2_3_end); index-=4; } num_bits = br.hsstell(); // Dismiss stuffing bits if (num_bits < part2_3_end) br.hgetbits(part2_3_end - num_bits); // Zero out rest if (index < 576) nonzero[ch] = index; else nonzero[ch] = 576; if (index < 0) index = 0; // may not be necessary for (; index<576; index++) is_1d[index] = 0; } /** * */ private void i_stereo_k_values(int is_pos, int io_type, int i) { if (is_pos == 0) { k[0][i] = 1.0f; k[1][i] = 1.0f; } else if ((is_pos & 1) != 0) { k[0][i] = io[io_type][(is_pos + 1) >>> 1]; k[1][i] = 1.0f; } else { k[0][i] = 1.0f; k[1][i] = io[io_type][is_pos >>> 1]; } } /** * */ private void dequantize_sample(float xr[][], int ch, int gr) { gr_info_s gr_info = (si.ch[ch].gr[gr]); int cb=0; int next_cb_boundary; int cb_begin = 0; int cb_width = 0; int index=0, t_index, j; float g_gain; float[][] xr_1d = xr; // choose correct scalefactor band per block type, initalize boundary if ((gr_info.window_switching_flag !=0 ) && (gr_info.block_type == 2) ) { if (gr_info.mixed_block_flag != 0) next_cb_boundary=sfBandIndex[sfreq].l[1]; // LONG blocks: 0,1,3 else { cb_width = sfBandIndex[sfreq].s[1]; next_cb_boundary = (cb_width << 2) - cb_width; cb_begin = 0; } } else { next_cb_boundary=sfBandIndex[sfreq].l[1]; // LONG blocks: 0,1,3 } // Compute overall (global) scaling. g_gain = (float) Math.pow(2.0 , (0.25 * (gr_info.global_gain - 210.0))); for (j=0; j 0) xr_1d[quotien][reste] = g_gain * t_43[abv]; else { if (-abv < t_43.length) xr_1d[quotien][reste] = -g_gain * t_43[-abv]; else xr_1d[quotien][reste] = -g_gain * (float)Math.pow(-abv, d43); } } else { if (is_1d[j] > 0) xr_1d[quotien][reste] = g_gain * (float)Math.pow(abv, d43); else xr_1d[quotien][reste] = -g_gain * (float)Math.pow(-abv, d43); } } } // apply formula per block type for (j=0; j= 36)) )) { t_index = (index - cb_begin) / cb_width; /* xr[sb][ss] *= pow(2.0, ((-2.0 * gr_info.subblock_gain[t_index]) -(0.5 * (1.0 + gr_info.scalefac_scale) * scalefac[ch].s[t_index][cb]))); */ int idx = scalefac[ch].s[t_index][cb] << gr_info.scalefac_scale; idx += (gr_info.subblock_gain[t_index] << 2); xr_1d[quotien][reste] *= two_to_negative_half_pow[idx]; } else { // LONG block types 0,1,3 & 1st 2 subbands of switched blocks /* xr[sb][ss] *= pow(2.0, -0.5 * (1.0+gr_info.scalefac_scale) * (scalefac[ch].l[cb] + gr_info.preflag * pretab[cb])); */ int idx = scalefac[ch].l[cb]; if (gr_info.preflag != 0) idx += pretab[cb]; idx = idx << gr_info.scalefac_scale; xr_1d[quotien][reste] *= two_to_negative_half_pow[idx]; } index++; } for (j=nonzero[ch]; j<576; j++) { // Modif E.B 02/22/99 int reste = j % SSLIMIT; int quotien = (int) ((j-reste)/SSLIMIT); if(reste < 0) reste = 0; if(quotien < 0) quotien = 0; xr_1d[quotien][reste] = 0.0f; } return; } /** * */ private void reorder(float xr[][], int ch, int gr) { gr_info_s gr_info = (si.ch[ch].gr[gr]); int freq, freq3; int index; int sfb, sfb_start, sfb_lines; int src_line, des_line; float[][] xr_1d = xr; if ((gr_info.window_switching_flag !=0) && (gr_info.block_type == 2)) { for(index=0; index<576; index++) out_1d[index] = 0.0f; if (gr_info.mixed_block_flag !=0 ) { // NO REORDER FOR LOW 2 SUBBANDS for (index = 0; index < 36; index++) { // Modif E.B 02/22/99 int reste = index % SSLIMIT; int quotien = (int) ((index-reste)/SSLIMIT); out_1d[index] = xr_1d[quotien][reste]; } // REORDERING FOR REST SWITCHED SHORT /*for( sfb=3,sfb_start=sfBandIndex[sfreq].s[3], sfb_lines=sfBandIndex[sfreq].s[4] - sfb_start; sfb < 13; sfb++,sfb_start = sfBandIndex[sfreq].s[sfb], sfb_lines = sfBandIndex[sfreq].s[sfb+1] - sfb_start ) {*/ for( sfb=3; sfb < 13; sfb++) { //System.out.println("sfreq="+sfreq+" sfb="+sfb+" sfBandIndex="+sfBandIndex.length+" sfBandIndex[sfreq].s="+sfBandIndex[sfreq].s.length); sfb_start = sfBandIndex[sfreq].s[sfb]; sfb_lines = sfBandIndex[sfreq].s[sfb+1] - sfb_start; int sfb_start3 = (sfb_start << 2) - sfb_start; for(freq=0, freq3=0; freq=3; sfb-- ) { i = sfBandIndex[sfreq].s[sfb]; lines = sfBandIndex[sfreq].s[sfb+1] - i; i = (i << 2) - i + (j+1) * lines - 1; while (lines > 0) { if (ro[1][i/18][i%18] != 0.0f) { // MDM: in java, array access is very slow. // Is quicker to compute div and mod values. //if (ro[1][ss_div[i]][ss_mod[i]] != 0.0f) { sfbcnt = sfb; sfb = -10; lines = -10; } lines--; i--; } // while (lines > 0) } // for (sfb=12 ... sfb = sfbcnt + 1; if (sfb > max_sfb) max_sfb = sfb; while(sfb < 12) { temp = sfBandIndex[sfreq].s[sfb]; sb = sfBandIndex[sfreq].s[sfb+1] - temp; i = (temp << 2) - temp + j * sb; for ( ; sb > 0; sb--) { is_pos[i] = scalefac[1].s[j][sfb]; if (is_pos[i] != 7) if (lsf) i_stereo_k_values(is_pos[i], io_type, i); else is_ratio[i] = TAN12[is_pos[i]]; i++; } // for (; sb>0... sfb++; } // while (sfb < 12) sfb = sfBandIndex[sfreq].s[10]; sb = sfBandIndex[sfreq].s[11] - sfb; sfb = (sfb << 2) - sfb + j * sb; temp = sfBandIndex[sfreq].s[11]; sb = sfBandIndex[sfreq].s[12] - temp; i = (temp << 2) - temp + j * sb; for (; sb > 0; sb--) { is_pos[i] = is_pos[sfb]; if (lsf) { k[0][i] = k[0][sfb]; k[1][i] = k[1][sfb]; } else { is_ratio[i] = is_ratio[sfb]; } i++; } // for (; sb > 0 ... } if (max_sfb <= 3) { i = 2; ss = 17; sb = -1; while (i >= 0) { if (ro[1][i][ss] != 0.0f) { sb = (i<<4) + (i<<1) + ss; i = -1; } else { ss--; if (ss < 0) { i--; ss = 17; } } // if (ro ... } // while (i>=0) i = 0; while (sfBandIndex[sfreq].l[i] <= sb) i++; sfb = i; i = sfBandIndex[sfreq].l[i]; for (; sfb<8; sfb++) { sb = sfBandIndex[sfreq].l[sfb+1]-sfBandIndex[sfreq].l[sfb]; for (; sb>0; sb--) { is_pos[i] = scalefac[1].l[sfb]; if (is_pos[i] != 7) if (lsf) i_stereo_k_values(is_pos[i], io_type, i); else is_ratio[i] = TAN12[is_pos[i]]; i++; } // for (; sb>0 ... } // for (; sfb<8 ... } // for (j=0 ... } else { // if (gr_info.mixed_block_flag) for (int j=0; j<3; j++) { int sfbcnt; sfbcnt = -1; for( sfb=12; sfb >=0; sfb-- ) { temp = sfBandIndex[sfreq].s[sfb]; lines = sfBandIndex[sfreq].s[sfb+1] - temp; i = (temp << 2) - temp + (j+1) * lines - 1; while (lines > 0) { if (ro[1][i/18][i%18] != 0.0f) { // MDM: in java, array access is very slow. // Is quicker to compute div and mod values. //if (ro[1][ss_div[i]][ss_mod[i]] != 0.0f) { sfbcnt = sfb; sfb = -10; lines = -10; } lines--; i--; } // while (lines > 0) */ } // for (sfb=12 ... sfb = sfbcnt + 1; while(sfb<12) { temp = sfBandIndex[sfreq].s[sfb]; sb = sfBandIndex[sfreq].s[sfb+1] - temp; i = (temp << 2) - temp + j * sb; for ( ; sb > 0; sb--) { is_pos[i] = scalefac[1].s[j][sfb]; if (is_pos[i] != 7) if (lsf) i_stereo_k_values(is_pos[i], io_type, i); else is_ratio[i] = TAN12[is_pos[i]]; i++; } // for (; sb>0 ... sfb++; } // while (sfb<12) temp = sfBandIndex[sfreq].s[10]; temp2= sfBandIndex[sfreq].s[11]; sb = temp2 - temp; sfb = (temp << 2) - temp + j * sb; sb = sfBandIndex[sfreq].s[12] - temp2; i = (temp2 << 2) - temp2 + j * sb; for (; sb>0; sb--) { is_pos[i] = is_pos[sfb]; if (lsf) { k[0][i] = k[0][sfb]; k[1][i] = k[1][sfb]; } else { is_ratio[i] = is_ratio[sfb]; } i++; } // for (; sb>0 ... } // for (sfb=12 } // for (j=0 ... } else { // if (gr_info.window_switching_flag ... i = 31; ss = 17; sb = 0; while (i >= 0) { if (ro[1][i][ss] != 0.0f) { sb = (i<<4) + (i<<1) + ss; i = -1; } else { ss--; if (ss < 0) { i--; ss = 17; } } } i = 0; while (sfBandIndex[sfreq].l[i] <= sb) i++; sfb = i; i = sfBandIndex[sfreq].l[i]; for (; sfb<21; sfb++) { sb = sfBandIndex[sfreq].l[sfb+1] - sfBandIndex[sfreq].l[sfb]; for (; sb > 0; sb--) { is_pos[i] = scalefac[1].l[sfb]; if (is_pos[i] != 7) if (lsf) i_stereo_k_values(is_pos[i], io_type, i); else is_ratio[i] = TAN12[is_pos[i]]; i++; } } sfb = sfBandIndex[sfreq].l[20]; for (sb = 576 - sfBandIndex[sfreq].l[21]; (sb > 0) && (i<576); sb--) { is_pos[i] = is_pos[sfb]; // error here : i >=576 if (lsf) { k[0][i] = k[0][sfb]; k[1][i] = k[1][sfb]; } else { is_ratio[i] = is_ratio[sfb]; } i++; } // if (gr_info.mixed_block_flag) } // if (gr_info.window_switching_flag ... } // if (i_stereo) i = 0; for(sb=0;sb>>>>>>>>>>>>>>>????????????????@@@@@@@@AAAAAAAABBBBBBBBCCCCCCCCDDDDDDDDEEEEEEEEFFFFFFFFGGGGGGGGHHHHHHHHIIIIIIIIJJJJJJJJKKKKKKKKLLLLLLLLMMMMMMMMNNNNNNNNOOOOOOOOPPPPQQQQRRRRSSSSTTTTUUUUVVVVWWWWXXXXYYYYZZZZ[[[[\\\\]]]]^^^^____``aabbccddeeffgghhhiijjkkllmmnnoopqrstuvwxyz{|}~jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Decoder.java0000644000175000017500000002055211377161311025500 0ustar /* * 11/19/04 1.0 moved to LGPL. * 01/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * The Decoder class encapsulates the details of * decoding an MPEG audio frame. * * @author MDM * @version 0.0.7 12/12/99 * @since 0.0.5 */ public class Decoder implements DecoderErrors { static private final Params DEFAULT_PARAMS = new Params(); /** * The Bistream from which the MPEG audio frames are read. */ //private Bitstream stream; /** * The Obuffer instance that will receive the decoded * PCM samples. */ private Obuffer output; /** * Synthesis filter for the left channel. */ private SynthesisFilter filter1; /** * Sythesis filter for the right channel. */ private SynthesisFilter filter2; /** * The decoder used to decode layer III frames. */ private LayerIIIDecoder l3decoder; private LayerIIDecoder l2decoder; private LayerIDecoder l1decoder; private int outputFrequency; private int outputChannels; private Equalizer equalizer = new Equalizer(); private Params params; private boolean initialized; /** * Creates a new Decoder instance with default * parameters. */ public Decoder() { this(null); } /** * Creates a new Decoder instance with default * parameters. * * @param params The Params instance that describes * the customizable aspects of the decoder. */ public Decoder(Params params0) { if (params0==null) params0 = DEFAULT_PARAMS; params = params0; Equalizer eq = params.getInitialEqualizerSettings(); if (eq!=null) { equalizer.setFrom(eq); } } static public Params getDefaultParams() { return (Params)DEFAULT_PARAMS.clone(); } public void setEqualizer(Equalizer eq) { if (eq==null) eq = Equalizer.PASS_THRU_EQ; equalizer.setFrom(eq); float[] factors = equalizer.getBandFactors(); if (filter1!=null) filter1.setEQ(factors); if (filter2!=null) filter2.setEQ(factors); } /** * Decodes one frame from an MPEG audio bitstream. * * @param header The header describing the frame to decode. * @param bitstream The bistream that provides the bits for te body of the frame. * * @return A SampleBuffer containing the decoded samples. */ public Obuffer decodeFrame(Header header, Bitstream stream) throws DecoderException { if (!initialized) { initialize(header); } int layer = header.layer(); output.clear_buffer(); FrameDecoder decoder = retrieveDecoder(header, stream, layer); decoder.decodeFrame(); output.write_buffer(1); return output; } /** * Changes the output buffer. This will take effect the next time * decodeFrame() is called. */ public void setOutputBuffer(Obuffer out) { output = out; } /** * Retrieves the sample frequency of the PCM samples output * by this decoder. This typically corresponds to the sample * rate encoded in the MPEG audio stream. * * @param the sample rate (in Hz) of the samples written to the * output buffer when decoding. */ public int getOutputFrequency() { return outputFrequency; } /** * Retrieves the number of channels of PCM samples output by * this decoder. This usually corresponds to the number of * channels in the MPEG audio stream, although it may differ. * * @return The number of output channels in the decoded samples: 1 * for mono, or 2 for stereo. * */ public int getOutputChannels() { return outputChannels; } /** * Retrieves the maximum number of samples that will be written to * the output buffer when one frame is decoded. This can be used to * help calculate the size of other buffers whose size is based upon * the number of samples written to the output buffer. NB: this is * an upper bound and fewer samples may actually be written, depending * upon the sample rate and number of channels. * * @return The maximum number of samples that are written to the * output buffer when decoding a single frame of MPEG audio. */ public int getOutputBlockSize() { return Obuffer.OBUFFERSIZE; } protected DecoderException newDecoderException(int errorcode) { return new DecoderException(errorcode, null); } protected DecoderException newDecoderException(int errorcode, Throwable throwable) { return new DecoderException(errorcode, throwable); } protected FrameDecoder retrieveDecoder(Header header, Bitstream stream, int layer) throws DecoderException { FrameDecoder decoder = null; // REVIEW: allow channel output selection type // (LEFT, RIGHT, BOTH, DOWNMIX) switch (layer) { case 3: if (l3decoder==null) { l3decoder = new LayerIIIDecoder(stream, header, filter1, filter2, output, OutputChannels.BOTH_CHANNELS); } decoder = l3decoder; break; case 2: if (l2decoder==null) { l2decoder = new LayerIIDecoder(); l2decoder.create(stream, header, filter1, filter2, output, OutputChannels.BOTH_CHANNELS); } decoder = l2decoder; break; case 1: if (l1decoder==null) { l1decoder = new LayerIDecoder(); l1decoder.create(stream, header, filter1, filter2, output, OutputChannels.BOTH_CHANNELS); } decoder = l1decoder; break; } if (decoder==null) { throw newDecoderException(UNSUPPORTED_LAYER, null); } return decoder; } private void initialize(Header header) throws DecoderException { // REVIEW: allow customizable scale factor float scalefactor = 32700.0f; int mode = header.mode(); int layer = header.layer(); int channels = mode==Header.SINGLE_CHANNEL ? 1 : 2; // set up output buffer if not set up by client. if (output==null) output = new SampleBuffer(header.frequency(), channels); float[] factors = equalizer.getBandFactors(); filter1 = new SynthesisFilter(0, scalefactor, factors); // REVIEW: allow mono output for stereo if (channels==2) filter2 = new SynthesisFilter(1, scalefactor, factors); outputChannels = channels; outputFrequency = header.frequency(); initialized = true; } /** * The Params class presents the customizable * aspects of the decoder. *

* Instances of this class are not thread safe. */ public static class Params implements Cloneable { private OutputChannels outputChannels = OutputChannels.BOTH; private Equalizer equalizer = new Equalizer(); public Params() { } public Object clone() { try { return super.clone(); } catch (CloneNotSupportedException ex) { throw new InternalError(this+": "+ex); } } public void setOutputChannels(OutputChannels out) { if (out==null) throw new NullPointerException("out"); outputChannels = out; } public OutputChannels getOutputChannels() { return outputChannels; } /** * Retrieves the equalizer settings that the decoder's equalizer * will be initialized from. *

* The Equalizer instance returned * cannot be changed in real time to affect the * decoder output as it is used only to initialize the decoders * EQ settings. To affect the decoder's output in realtime, * use the Equalizer returned from the getEqualizer() method on * the decoder. * * @return The Equalizer used to initialize the * EQ settings of the decoder. */ public Equalizer getInitialEqualizerSettings() { return equalizer; } }; } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/JavaLayerError.java0000644000175000017500000000223311377161311027017 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Work in progress. * * API usage errors may be handled by throwing an instance of this * class, as per JMF 2.0. */ public class JavaLayerError extends Error { } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/huffcodetab.java0000644000175000017500000007215111377161311026407 0ustar /* * 11/19/04 1.0 moved to LGPL. * 16/11/99 Renamed class, added javadoc, and changed table * name from String to 3 chars. mdm@techie.com * 02/15/99 Java Conversion by E.B, javalayer@javazoom.net * * 04/19/97 : Adapted from the ISO MPEG Audio Subgroup Software Simulation * Group's public c source for its MPEG audio decoder. Miscellaneous * changes by Jeff Tsay (ctsay@pasteur.eecs.berkeley.edu). *----------------------------------------------------------------------- * Copyright (c) 1991 MPEG/audio software simulation group, All Rights Reserved * MPEG/audio coding/decoding software, work in progress * NOT for public distribution until verified and approved by the * MPEG/audio committee. For further information, please contact * Davis Pan, 508-493-2241, e-mail: pan@3d.enet.dec.com * * VERSION 4.1 * changes made since last update: * date programmers comment * 27.2.92 F.O.Witte (ITT Intermetall) * 8/24/93 M. Iwadare Changed for 1 pass decoding. * 7/14/94 J. Koller useless 'typedef' before huffcodetab removed *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Class to implements Huffman decoder. */ final class huffcodetab { private static final int MXOFF=250; private static final int HTN=34; private char tablename0 = ' '; /* string, containing table_description */ private char tablename1 = ' '; /* string, containing table_description */ private char tablename2 = ' '; /* string, containing table_description */ private int xlen; /* max. x-index+ */ private int ylen; /* max. y-index+ */ private int linbits; /* number of linbits */ private int linmax; /* max number to be stored in linbits */ private int ref; /* a positive value indicates a reference */ private int[] table=null; /* pointer to array[xlen][ylen] */ private int[] hlen=null; /* pointer to array[xlen][ylen] */ private int[][] val=null; /* decoder tree */ private int treelen; /* length of decoder tree */ private static int ValTab0[][] = { {0,0} // dummy }; private static int ValTab1[][] = { {2,1},{0,0},{2,1},{0,16},{2,1},{0,1},{0,17}, }; private static int ValTab2[][] = { {2,1},{0,0},{4,1},{2,1},{0,16},{0,1},{2,1},{0,17},{4,1},{2,1}, {0,32},{0,33},{2,1},{0,18},{2,1},{0,2},{0,34}, }; private static int ValTab3[][] = { {4,1},{2,1},{0,0},{0,1},{2,1},{0,17},{2,1},{0,16},{4,1},{2,1}, {0,32},{0,33},{2,1},{0,18},{2,1},{0,2},{0,34}, }; private static int ValTab4[][] = {{0,0}}; // dummy private static int ValTab5[][] = { {2,1},{0,0},{4,1},{2,1},{0,16},{0,1},{2,1},{0,17},{8,1},{4,1}, {2,1},{0,32},{0,2},{2,1},{0,33},{0,18},{8,1},{4,1},{2,1},{0,34}, {0,48},{2,1},{0,3},{0,19},{2,1},{0,49},{2,1},{0,50},{2,1},{0,35}, {0,51}, }; private static int ValTab6[][] = { {6,1},{4,1},{2,1},{0,0},{0,16},{0,17},{6,1},{2,1},{0,1},{2,1}, {0,32},{0,33},{6,1},{2,1},{0,18},{2,1},{0,2},{0,34},{4,1},{2,1}, {0,49},{0,19},{4,1},{2,1},{0,48},{0,50},{2,1},{0,35},{2,1},{0,3}, {0,51}, }; private static int ValTab7[][] = { {2,1},{0,0},{4,1},{2,1},{0,16},{0,1},{8,1},{2,1},{0,17},{4,1}, {2,1},{0,32},{0,2},{0,33},{18,1},{6,1},{2,1},{0,18},{2,1},{0,34}, {0,48},{4,1},{2,1},{0,49},{0,19},{4,1},{2,1},{0,3},{0,50},{2,1}, {0,35},{0,4},{10,1},{4,1},{2,1},{0,64},{0,65},{2,1},{0,20},{2,1}, {0,66},{0,36},{12,1},{6,1},{4,1},{2,1},{0,51},{0,67},{0,80},{4,1}, {2,1},{0,52},{0,5},{0,81},{6,1},{2,1},{0,21},{2,1},{0,82},{0,37}, {4,1},{2,1},{0,68},{0,53},{4,1},{2,1},{0,83},{0,84},{2,1},{0,69}, {0,85}, }; private static int ValTab8[][] = { {6,1},{2,1},{0,0},{2,1},{0,16},{0,1},{2,1},{0,17},{4,1},{2,1}, {0,33},{0,18},{14,1},{4,1},{2,1},{0,32},{0,2},{2,1},{0,34},{4,1}, {2,1},{0,48},{0,3},{2,1},{0,49},{0,19},{14,1},{8,1},{4,1},{2,1}, {0,50},{0,35},{2,1},{0,64},{0,4},{2,1},{0,65},{2,1},{0,20},{0,66}, {12,1},{6,1},{2,1},{0,36},{2,1},{0,51},{0,80},{4,1},{2,1},{0,67}, {0,52},{0,81},{6,1},{2,1},{0,21},{2,1},{0,5},{0,82},{6,1},{2,1}, {0,37},{2,1},{0,68},{0,53},{2,1},{0,83},{2,1},{0,69},{2,1},{0,84}, {0,85}, }; private static int ValTab9[][] = { {8,1},{4,1},{2,1},{0,0},{0,16},{2,1},{0,1},{0,17},{10,1},{4,1}, {2,1},{0,32},{0,33},{2,1},{0,18},{2,1},{0,2},{0,34},{12,1},{6,1}, {4,1},{2,1},{0,48},{0,3},{0,49},{2,1},{0,19},{2,1},{0,50},{0,35}, {12,1},{4,1},{2,1},{0,65},{0,20},{4,1},{2,1},{0,64},{0,51},{2,1}, {0,66},{0,36},{10,1},{6,1},{4,1},{2,1},{0,4},{0,80},{0,67},{2,1}, {0,52},{0,81},{8,1},{4,1},{2,1},{0,21},{0,82},{2,1},{0,37},{0,68}, {6,1},{4,1},{2,1},{0,5},{0,84},{0,83},{2,1},{0,53},{2,1},{0,69}, {0,85}, }; private static int ValTab10[][] = { {2,1},{0,0},{4,1},{2,1},{0,16},{0,1},{10,1},{2,1},{0,17},{4,1}, {2,1},{0,32},{0,2},{2,1},{0,33},{0,18},{28,1},{8,1},{4,1},{2,1}, {0,34},{0,48},{2,1},{0,49},{0,19},{8,1},{4,1},{2,1},{0,3},{0,50}, {2,1},{0,35},{0,64},{4,1},{2,1},{0,65},{0,20},{4,1},{2,1},{0,4}, {0,51},{2,1},{0,66},{0,36},{28,1},{10,1},{6,1},{4,1},{2,1},{0,80}, {0,5},{0,96},{2,1},{0,97},{0,22},{12,1},{6,1},{4,1},{2,1},{0,67}, {0,52},{0,81},{2,1},{0,21},{2,1},{0,82},{0,37},{4,1},{2,1},{0,38}, {0,54},{0,113},{20,1},{8,1},{2,1},{0,23},{4,1},{2,1},{0,68},{0,83}, {0,6},{6,1},{4,1},{2,1},{0,53},{0,69},{0,98},{2,1},{0,112},{2,1}, {0,7},{0,100},{14,1},{4,1},{2,1},{0,114},{0,39},{6,1},{2,1},{0,99}, {2,1},{0,84},{0,85},{2,1},{0,70},{0,115},{8,1},{4,1},{2,1},{0,55}, {0,101},{2,1},{0,86},{0,116},{6,1},{2,1},{0,71},{2,1},{0,102},{0,117}, {4,1},{2,1},{0,87},{0,118},{2,1},{0,103},{0,119}, }; private static int ValTab11[][] = { {6,1},{2,1},{0,0},{2,1},{0,16},{0,1},{8,1},{2,1},{0,17},{4,1}, {2,1},{0,32},{0,2},{0,18},{24,1},{8,1},{2,1},{0,33},{2,1},{0,34}, {2,1},{0,48},{0,3},{4,1},{2,1},{0,49},{0,19},{4,1},{2,1},{0,50}, {0,35},{4,1},{2,1},{0,64},{0,4},{2,1},{0,65},{0,20},{30,1},{16,1}, {10,1},{4,1},{2,1},{0,66},{0,36},{4,1},{2,1},{0,51},{0,67},{0,80}, {4,1},{2,1},{0,52},{0,81},{0,97},{6,1},{2,1},{0,22},{2,1},{0,6}, {0,38},{2,1},{0,98},{2,1},{0,21},{2,1},{0,5},{0,82},{16,1},{10,1}, {6,1},{4,1},{2,1},{0,37},{0,68},{0,96},{2,1},{0,99},{0,54},{4,1}, {2,1},{0,112},{0,23},{0,113},{16,1},{6,1},{4,1},{2,1},{0,7},{0,100}, {0,114},{2,1},{0,39},{4,1},{2,1},{0,83},{0,53},{2,1},{0,84},{0,69}, {10,1},{4,1},{2,1},{0,70},{0,115},{2,1},{0,55},{2,1},{0,101},{0,86}, {10,1},{6,1},{4,1},{2,1},{0,85},{0,87},{0,116},{2,1},{0,71},{0,102}, {4,1},{2,1},{0,117},{0,118},{2,1},{0,103},{0,119}, }; private static int ValTab12[][] = { {12,1},{4,1},{2,1},{0,16},{0,1},{2,1},{0,17},{2,1},{0,0},{2,1}, {0,32},{0,2},{16,1},{4,1},{2,1},{0,33},{0,18},{4,1},{2,1},{0,34}, {0,49},{2,1},{0,19},{2,1},{0,48},{2,1},{0,3},{0,64},{26,1},{8,1}, {4,1},{2,1},{0,50},{0,35},{2,1},{0,65},{0,51},{10,1},{4,1},{2,1}, {0,20},{0,66},{2,1},{0,36},{2,1},{0,4},{0,80},{4,1},{2,1},{0,67}, {0,52},{2,1},{0,81},{0,21},{28,1},{14,1},{8,1},{4,1},{2,1},{0,82}, {0,37},{2,1},{0,83},{0,53},{4,1},{2,1},{0,96},{0,22},{0,97},{4,1}, {2,1},{0,98},{0,38},{6,1},{4,1},{2,1},{0,5},{0,6},{0,68},{2,1}, {0,84},{0,69},{18,1},{10,1},{4,1},{2,1},{0,99},{0,54},{4,1},{2,1}, {0,112},{0,7},{0,113},{4,1},{2,1},{0,23},{0,100},{2,1},{0,70},{0,114}, {10,1},{6,1},{2,1},{0,39},{2,1},{0,85},{0,115},{2,1},{0,55},{0,86}, {8,1},{4,1},{2,1},{0,101},{0,116},{2,1},{0,71},{0,102},{4,1},{2,1}, {0,117},{0,87},{2,1},{0,118},{2,1},{0,103},{0,119}, }; private static int ValTab13[][] = { {2,1},{0,0},{6,1},{2,1},{0,16},{2,1},{0,1},{0,17},{28,1},{8,1}, {4,1},{2,1},{0,32},{0,2},{2,1},{0,33},{0,18},{8,1},{4,1},{2,1}, {0,34},{0,48},{2,1},{0,3},{0,49},{6,1},{2,1},{0,19},{2,1},{0,50}, {0,35},{4,1},{2,1},{0,64},{0,4},{0,65},{70,1},{28,1},{14,1},{6,1}, {2,1},{0,20},{2,1},{0,51},{0,66},{4,1},{2,1},{0,36},{0,80},{2,1}, {0,67},{0,52},{4,1},{2,1},{0,81},{0,21},{4,1},{2,1},{0,5},{0,82}, {2,1},{0,37},{2,1},{0,68},{0,83},{14,1},{8,1},{4,1},{2,1},{0,96}, {0,6},{2,1},{0,97},{0,22},{4,1},{2,1},{0,128},{0,8},{0,129},{16,1}, {8,1},{4,1},{2,1},{0,53},{0,98},{2,1},{0,38},{0,84},{4,1},{2,1}, {0,69},{0,99},{2,1},{0,54},{0,112},{6,1},{4,1},{2,1},{0,7},{0,85}, {0,113},{2,1},{0,23},{2,1},{0,39},{0,55},{72,1},{24,1},{12,1},{4,1}, {2,1},{0,24},{0,130},{2,1},{0,40},{4,1},{2,1},{0,100},{0,70},{0,114}, {8,1},{4,1},{2,1},{0,132},{0,72},{2,1},{0,144},{0,9},{2,1},{0,145}, {0,25},{24,1},{14,1},{8,1},{4,1},{2,1},{0,115},{0,101},{2,1},{0,86}, {0,116},{4,1},{2,1},{0,71},{0,102},{0,131},{6,1},{2,1},{0,56},{2,1}, {0,117},{0,87},{2,1},{0,146},{0,41},{14,1},{8,1},{4,1},{2,1},{0,103}, {0,133},{2,1},{0,88},{0,57},{2,1},{0,147},{2,1},{0,73},{0,134},{6,1}, {2,1},{0,160},{2,1},{0,104},{0,10},{2,1},{0,161},{0,26},{68,1},{24,1}, {12,1},{4,1},{2,1},{0,162},{0,42},{4,1},{2,1},{0,149},{0,89},{2,1}, {0,163},{0,58},{8,1},{4,1},{2,1},{0,74},{0,150},{2,1},{0,176},{0,11}, {2,1},{0,177},{0,27},{20,1},{8,1},{2,1},{0,178},{4,1},{2,1},{0,118}, {0,119},{0,148},{6,1},{4,1},{2,1},{0,135},{0,120},{0,164},{4,1},{2,1}, {0,105},{0,165},{0,43},{12,1},{6,1},{4,1},{2,1},{0,90},{0,136},{0,179}, {2,1},{0,59},{2,1},{0,121},{0,166},{6,1},{4,1},{2,1},{0,106},{0,180}, {0,192},{4,1},{2,1},{0,12},{0,152},{0,193},{60,1},{22,1},{10,1},{6,1}, {2,1},{0,28},{2,1},{0,137},{0,181},{2,1},{0,91},{0,194},{4,1},{2,1}, {0,44},{0,60},{4,1},{2,1},{0,182},{0,107},{2,1},{0,196},{0,76},{16,1}, {8,1},{4,1},{2,1},{0,168},{0,138},{2,1},{0,208},{0,13},{2,1},{0,209}, {2,1},{0,75},{2,1},{0,151},{0,167},{12,1},{6,1},{2,1},{0,195},{2,1}, {0,122},{0,153},{4,1},{2,1},{0,197},{0,92},{0,183},{4,1},{2,1},{0,29}, {0,210},{2,1},{0,45},{2,1},{0,123},{0,211},{52,1},{28,1},{12,1},{4,1}, {2,1},{0,61},{0,198},{4,1},{2,1},{0,108},{0,169},{2,1},{0,154},{0,212}, {8,1},{4,1},{2,1},{0,184},{0,139},{2,1},{0,77},{0,199},{4,1},{2,1}, {0,124},{0,213},{2,1},{0,93},{0,224},{10,1},{4,1},{2,1},{0,225},{0,30}, {4,1},{2,1},{0,14},{0,46},{0,226},{8,1},{4,1},{2,1},{0,227},{0,109}, {2,1},{0,140},{0,228},{4,1},{2,1},{0,229},{0,186},{0,240},{38,1},{16,1}, {4,1},{2,1},{0,241},{0,31},{6,1},{4,1},{2,1},{0,170},{0,155},{0,185}, {2,1},{0,62},{2,1},{0,214},{0,200},{12,1},{6,1},{2,1},{0,78},{2,1}, {0,215},{0,125},{2,1},{0,171},{2,1},{0,94},{0,201},{6,1},{2,1},{0,15}, {2,1},{0,156},{0,110},{2,1},{0,242},{0,47},{32,1},{16,1},{6,1},{4,1}, {2,1},{0,216},{0,141},{0,63},{6,1},{2,1},{0,243},{2,1},{0,230},{0,202}, {2,1},{0,244},{0,79},{8,1},{4,1},{2,1},{0,187},{0,172},{2,1},{0,231}, {0,245},{4,1},{2,1},{0,217},{0,157},{2,1},{0,95},{0,232},{30,1},{12,1}, {6,1},{2,1},{0,111},{2,1},{0,246},{0,203},{4,1},{2,1},{0,188},{0,173}, {0,218},{8,1},{2,1},{0,247},{4,1},{2,1},{0,126},{0,127},{0,142},{6,1}, {4,1},{2,1},{0,158},{0,174},{0,204},{2,1},{0,248},{0,143},{18,1},{8,1}, {4,1},{2,1},{0,219},{0,189},{2,1},{0,234},{0,249},{4,1},{2,1},{0,159}, {0,235},{2,1},{0,190},{2,1},{0,205},{0,250},{14,1},{4,1},{2,1},{0,221}, {0,236},{6,1},{4,1},{2,1},{0,233},{0,175},{0,220},{2,1},{0,206},{0,251}, {8,1},{4,1},{2,1},{0,191},{0,222},{2,1},{0,207},{0,238},{4,1},{2,1}, {0,223},{0,239},{2,1},{0,255},{2,1},{0,237},{2,1},{0,253},{2,1},{0,252}, {0,254}, }; private static int ValTab14[][] = { {0,0} // dummy }; private static int ValTab15[][] = { {16,1},{6,1},{2,1},{0,0},{2,1},{0,16},{0,1},{2,1},{0,17},{4,1}, {2,1},{0,32},{0,2},{2,1},{0,33},{0,18},{50,1},{16,1},{6,1},{2,1}, {0,34},{2,1},{0,48},{0,49},{6,1},{2,1},{0,19},{2,1},{0,3},{0,64}, {2,1},{0,50},{0,35},{14,1},{6,1},{4,1},{2,1},{0,4},{0,20},{0,65}, {4,1},{2,1},{0,51},{0,66},{2,1},{0,36},{0,67},{10,1},{6,1},{2,1}, {0,52},{2,1},{0,80},{0,5},{2,1},{0,81},{0,21},{4,1},{2,1},{0,82}, {0,37},{4,1},{2,1},{0,68},{0,83},{0,97},{90,1},{36,1},{18,1},{10,1}, {6,1},{2,1},{0,53},{2,1},{0,96},{0,6},{2,1},{0,22},{0,98},{4,1}, {2,1},{0,38},{0,84},{2,1},{0,69},{0,99},{10,1},{6,1},{2,1},{0,54}, {2,1},{0,112},{0,7},{2,1},{0,113},{0,85},{4,1},{2,1},{0,23},{0,100}, {2,1},{0,114},{0,39},{24,1},{16,1},{8,1},{4,1},{2,1},{0,70},{0,115}, {2,1},{0,55},{0,101},{4,1},{2,1},{0,86},{0,128},{2,1},{0,8},{0,116}, {4,1},{2,1},{0,129},{0,24},{2,1},{0,130},{0,40},{16,1},{8,1},{4,1}, {2,1},{0,71},{0,102},{2,1},{0,131},{0,56},{4,1},{2,1},{0,117},{0,87}, {2,1},{0,132},{0,72},{6,1},{4,1},{2,1},{0,144},{0,25},{0,145},{4,1}, {2,1},{0,146},{0,118},{2,1},{0,103},{0,41},{92,1},{36,1},{18,1},{10,1}, {4,1},{2,1},{0,133},{0,88},{4,1},{2,1},{0,9},{0,119},{0,147},{4,1}, {2,1},{0,57},{0,148},{2,1},{0,73},{0,134},{10,1},{6,1},{2,1},{0,104}, {2,1},{0,160},{0,10},{2,1},{0,161},{0,26},{4,1},{2,1},{0,162},{0,42}, {2,1},{0,149},{0,89},{26,1},{14,1},{6,1},{2,1},{0,163},{2,1},{0,58}, {0,135},{4,1},{2,1},{0,120},{0,164},{2,1},{0,74},{0,150},{6,1},{4,1}, {2,1},{0,105},{0,176},{0,177},{4,1},{2,1},{0,27},{0,165},{0,178},{14,1}, {8,1},{4,1},{2,1},{0,90},{0,43},{2,1},{0,136},{0,151},{2,1},{0,179}, {2,1},{0,121},{0,59},{8,1},{4,1},{2,1},{0,106},{0,180},{2,1},{0,75}, {0,193},{4,1},{2,1},{0,152},{0,137},{2,1},{0,28},{0,181},{80,1},{34,1}, {16,1},{6,1},{4,1},{2,1},{0,91},{0,44},{0,194},{6,1},{4,1},{2,1}, {0,11},{0,192},{0,166},{2,1},{0,167},{0,122},{10,1},{4,1},{2,1},{0,195}, {0,60},{4,1},{2,1},{0,12},{0,153},{0,182},{4,1},{2,1},{0,107},{0,196}, {2,1},{0,76},{0,168},{20,1},{10,1},{4,1},{2,1},{0,138},{0,197},{4,1}, {2,1},{0,208},{0,92},{0,209},{4,1},{2,1},{0,183},{0,123},{2,1},{0,29}, {2,1},{0,13},{0,45},{12,1},{4,1},{2,1},{0,210},{0,211},{4,1},{2,1}, {0,61},{0,198},{2,1},{0,108},{0,169},{6,1},{4,1},{2,1},{0,154},{0,184}, {0,212},{4,1},{2,1},{0,139},{0,77},{2,1},{0,199},{0,124},{68,1},{34,1}, {18,1},{10,1},{4,1},{2,1},{0,213},{0,93},{4,1},{2,1},{0,224},{0,14}, {0,225},{4,1},{2,1},{0,30},{0,226},{2,1},{0,170},{0,46},{8,1},{4,1}, {2,1},{0,185},{0,155},{2,1},{0,227},{0,214},{4,1},{2,1},{0,109},{0,62}, {2,1},{0,200},{0,140},{16,1},{8,1},{4,1},{2,1},{0,228},{0,78},{2,1}, {0,215},{0,125},{4,1},{2,1},{0,229},{0,186},{2,1},{0,171},{0,94},{8,1}, {4,1},{2,1},{0,201},{0,156},{2,1},{0,241},{0,31},{6,1},{4,1},{2,1}, {0,240},{0,110},{0,242},{2,1},{0,47},{0,230},{38,1},{18,1},{8,1},{4,1}, {2,1},{0,216},{0,243},{2,1},{0,63},{0,244},{6,1},{2,1},{0,79},{2,1}, {0,141},{0,217},{2,1},{0,187},{0,202},{8,1},{4,1},{2,1},{0,172},{0,231}, {2,1},{0,126},{0,245},{8,1},{4,1},{2,1},{0,157},{0,95},{2,1},{0,232}, {0,142},{2,1},{0,246},{0,203},{34,1},{18,1},{10,1},{6,1},{4,1},{2,1}, {0,15},{0,174},{0,111},{2,1},{0,188},{0,218},{4,1},{2,1},{0,173},{0,247}, {2,1},{0,127},{0,233},{8,1},{4,1},{2,1},{0,158},{0,204},{2,1},{0,248}, {0,143},{4,1},{2,1},{0,219},{0,189},{2,1},{0,234},{0,249},{16,1},{8,1}, {4,1},{2,1},{0,159},{0,220},{2,1},{0,205},{0,235},{4,1},{2,1},{0,190}, {0,250},{2,1},{0,175},{0,221},{14,1},{6,1},{4,1},{2,1},{0,236},{0,206}, {0,251},{4,1},{2,1},{0,191},{0,237},{2,1},{0,222},{0,252},{6,1},{4,1}, {2,1},{0,207},{0,253},{0,238},{4,1},{2,1},{0,223},{0,254},{2,1},{0,239}, {0,255}, }; private static int ValTab16[][] = { {2,1},{0,0},{6,1},{2,1},{0,16},{2,1},{0,1},{0,17},{42,1},{8,1}, {4,1},{2,1},{0,32},{0,2},{2,1},{0,33},{0,18},{10,1},{6,1},{2,1}, {0,34},{2,1},{0,48},{0,3},{2,1},{0,49},{0,19},{10,1},{4,1},{2,1}, {0,50},{0,35},{4,1},{2,1},{0,64},{0,4},{0,65},{6,1},{2,1},{0,20}, {2,1},{0,51},{0,66},{4,1},{2,1},{0,36},{0,80},{2,1},{0,67},{0,52}, {138,1},{40,1},{16,1},{6,1},{4,1},{2,1},{0,5},{0,21},{0,81},{4,1}, {2,1},{0,82},{0,37},{4,1},{2,1},{0,68},{0,53},{0,83},{10,1},{6,1}, {4,1},{2,1},{0,96},{0,6},{0,97},{2,1},{0,22},{0,98},{8,1},{4,1}, {2,1},{0,38},{0,84},{2,1},{0,69},{0,99},{4,1},{2,1},{0,54},{0,112}, {0,113},{40,1},{18,1},{8,1},{2,1},{0,23},{2,1},{0,7},{2,1},{0,85}, {0,100},{4,1},{2,1},{0,114},{0,39},{4,1},{2,1},{0,70},{0,101},{0,115}, {10,1},{6,1},{2,1},{0,55},{2,1},{0,86},{0,8},{2,1},{0,128},{0,129}, {6,1},{2,1},{0,24},{2,1},{0,116},{0,71},{2,1},{0,130},{2,1},{0,40}, {0,102},{24,1},{14,1},{8,1},{4,1},{2,1},{0,131},{0,56},{2,1},{0,117}, {0,132},{4,1},{2,1},{0,72},{0,144},{0,145},{6,1},{2,1},{0,25},{2,1}, {0,9},{0,118},{2,1},{0,146},{0,41},{14,1},{8,1},{4,1},{2,1},{0,133}, {0,88},{2,1},{0,147},{0,57},{4,1},{2,1},{0,160},{0,10},{0,26},{8,1}, {2,1},{0,162},{2,1},{0,103},{2,1},{0,87},{0,73},{6,1},{2,1},{0,148}, {2,1},{0,119},{0,134},{2,1},{0,161},{2,1},{0,104},{0,149},{220,1},{126,1}, {50,1},{26,1},{12,1},{6,1},{2,1},{0,42},{2,1},{0,89},{0,58},{2,1}, {0,163},{2,1},{0,135},{0,120},{8,1},{4,1},{2,1},{0,164},{0,74},{2,1}, {0,150},{0,105},{4,1},{2,1},{0,176},{0,11},{0,177},{10,1},{4,1},{2,1}, {0,27},{0,178},{2,1},{0,43},{2,1},{0,165},{0,90},{6,1},{2,1},{0,179}, {2,1},{0,166},{0,106},{4,1},{2,1},{0,180},{0,75},{2,1},{0,12},{0,193}, {30,1},{14,1},{6,1},{4,1},{2,1},{0,181},{0,194},{0,44},{4,1},{2,1}, {0,167},{0,195},{2,1},{0,107},{0,196},{8,1},{2,1},{0,29},{4,1},{2,1}, {0,136},{0,151},{0,59},{4,1},{2,1},{0,209},{0,210},{2,1},{0,45},{0,211}, {18,1},{6,1},{4,1},{2,1},{0,30},{0,46},{0,226},{6,1},{4,1},{2,1}, {0,121},{0,152},{0,192},{2,1},{0,28},{2,1},{0,137},{0,91},{14,1},{6,1}, {2,1},{0,60},{2,1},{0,122},{0,182},{4,1},{2,1},{0,76},{0,153},{2,1}, {0,168},{0,138},{6,1},{2,1},{0,13},{2,1},{0,197},{0,92},{4,1},{2,1}, {0,61},{0,198},{2,1},{0,108},{0,154},{88,1},{86,1},{36,1},{16,1},{8,1}, {4,1},{2,1},{0,139},{0,77},{2,1},{0,199},{0,124},{4,1},{2,1},{0,213}, {0,93},{2,1},{0,224},{0,14},{8,1},{2,1},{0,227},{4,1},{2,1},{0,208}, {0,183},{0,123},{6,1},{4,1},{2,1},{0,169},{0,184},{0,212},{2,1},{0,225}, {2,1},{0,170},{0,185},{24,1},{10,1},{6,1},{4,1},{2,1},{0,155},{0,214}, {0,109},{2,1},{0,62},{0,200},{6,1},{4,1},{2,1},{0,140},{0,228},{0,78}, {4,1},{2,1},{0,215},{0,229},{2,1},{0,186},{0,171},{12,1},{4,1},{2,1}, {0,156},{0,230},{4,1},{2,1},{0,110},{0,216},{2,1},{0,141},{0,187},{8,1}, {4,1},{2,1},{0,231},{0,157},{2,1},{0,232},{0,142},{4,1},{2,1},{0,203}, {0,188},{0,158},{0,241},{2,1},{0,31},{2,1},{0,15},{0,47},{66,1},{56,1}, {2,1},{0,242},{52,1},{50,1},{20,1},{8,1},{2,1},{0,189},{2,1},{0,94}, {2,1},{0,125},{0,201},{6,1},{2,1},{0,202},{2,1},{0,172},{0,126},{4,1}, {2,1},{0,218},{0,173},{0,204},{10,1},{6,1},{2,1},{0,174},{2,1},{0,219}, {0,220},{2,1},{0,205},{0,190},{6,1},{4,1},{2,1},{0,235},{0,237},{0,238}, {6,1},{4,1},{2,1},{0,217},{0,234},{0,233},{2,1},{0,222},{4,1},{2,1}, {0,221},{0,236},{0,206},{0,63},{0,240},{4,1},{2,1},{0,243},{0,244},{2,1}, {0,79},{2,1},{0,245},{0,95},{10,1},{2,1},{0,255},{4,1},{2,1},{0,246}, {0,111},{2,1},{0,247},{0,127},{12,1},{6,1},{2,1},{0,143},{2,1},{0,248}, {0,249},{4,1},{2,1},{0,159},{0,250},{0,175},{8,1},{4,1},{2,1},{0,251}, {0,191},{2,1},{0,252},{0,207},{4,1},{2,1},{0,253},{0,223},{2,1},{0,254}, {0,239}, }; private static int ValTab24[][] = { {60,1},{8,1},{4,1},{2,1},{0,0},{0,16},{2,1},{0,1},{0,17},{14,1}, {6,1},{4,1},{2,1},{0,32},{0,2},{0,33},{2,1},{0,18},{2,1},{0,34}, {2,1},{0,48},{0,3},{14,1},{4,1},{2,1},{0,49},{0,19},{4,1},{2,1}, {0,50},{0,35},{4,1},{2,1},{0,64},{0,4},{0,65},{8,1},{4,1},{2,1}, {0,20},{0,51},{2,1},{0,66},{0,36},{6,1},{4,1},{2,1},{0,67},{0,52}, {0,81},{6,1},{4,1},{2,1},{0,80},{0,5},{0,21},{2,1},{0,82},{0,37}, {250,1},{98,1},{34,1},{18,1},{10,1},{4,1},{2,1},{0,68},{0,83},{2,1}, {0,53},{2,1},{0,96},{0,6},{4,1},{2,1},{0,97},{0,22},{2,1},{0,98}, {0,38},{8,1},{4,1},{2,1},{0,84},{0,69},{2,1},{0,99},{0,54},{4,1}, {2,1},{0,113},{0,85},{2,1},{0,100},{0,70},{32,1},{14,1},{6,1},{2,1}, {0,114},{2,1},{0,39},{0,55},{2,1},{0,115},{4,1},{2,1},{0,112},{0,7}, {0,23},{10,1},{4,1},{2,1},{0,101},{0,86},{4,1},{2,1},{0,128},{0,8}, {0,129},{4,1},{2,1},{0,116},{0,71},{2,1},{0,24},{0,130},{16,1},{8,1}, {4,1},{2,1},{0,40},{0,102},{2,1},{0,131},{0,56},{4,1},{2,1},{0,117}, {0,87},{2,1},{0,132},{0,72},{8,1},{4,1},{2,1},{0,145},{0,25},{2,1}, {0,146},{0,118},{4,1},{2,1},{0,103},{0,41},{2,1},{0,133},{0,88},{92,1}, {34,1},{16,1},{8,1},{4,1},{2,1},{0,147},{0,57},{2,1},{0,148},{0,73}, {4,1},{2,1},{0,119},{0,134},{2,1},{0,104},{0,161},{8,1},{4,1},{2,1}, {0,162},{0,42},{2,1},{0,149},{0,89},{4,1},{2,1},{0,163},{0,58},{2,1}, {0,135},{2,1},{0,120},{0,74},{22,1},{12,1},{4,1},{2,1},{0,164},{0,150}, {4,1},{2,1},{0,105},{0,177},{2,1},{0,27},{0,165},{6,1},{2,1},{0,178}, {2,1},{0,90},{0,43},{2,1},{0,136},{0,179},{16,1},{10,1},{6,1},{2,1}, {0,144},{2,1},{0,9},{0,160},{2,1},{0,151},{0,121},{4,1},{2,1},{0,166}, {0,106},{0,180},{12,1},{6,1},{2,1},{0,26},{2,1},{0,10},{0,176},{2,1}, {0,59},{2,1},{0,11},{0,192},{4,1},{2,1},{0,75},{0,193},{2,1},{0,152}, {0,137},{67,1},{34,1},{16,1},{8,1},{4,1},{2,1},{0,28},{0,181},{2,1}, {0,91},{0,194},{4,1},{2,1},{0,44},{0,167},{2,1},{0,122},{0,195},{10,1}, {6,1},{2,1},{0,60},{2,1},{0,12},{0,208},{2,1},{0,182},{0,107},{4,1}, {2,1},{0,196},{0,76},{2,1},{0,153},{0,168},{16,1},{8,1},{4,1},{2,1}, {0,138},{0,197},{2,1},{0,92},{0,209},{4,1},{2,1},{0,183},{0,123},{2,1}, {0,29},{0,210},{9,1},{4,1},{2,1},{0,45},{0,211},{2,1},{0,61},{0,198}, {85,250},{4,1},{2,1},{0,108},{0,169},{2,1},{0,154},{0,212},{32,1},{16,1}, {8,1},{4,1},{2,1},{0,184},{0,139},{2,1},{0,77},{0,199},{4,1},{2,1}, {0,124},{0,213},{2,1},{0,93},{0,225},{8,1},{4,1},{2,1},{0,30},{0,226}, {2,1},{0,170},{0,185},{4,1},{2,1},{0,155},{0,227},{2,1},{0,214},{0,109}, {20,1},{10,1},{6,1},{2,1},{0,62},{2,1},{0,46},{0,78},{2,1},{0,200}, {0,140},{4,1},{2,1},{0,228},{0,215},{4,1},{2,1},{0,125},{0,171},{0,229}, {10,1},{4,1},{2,1},{0,186},{0,94},{2,1},{0,201},{2,1},{0,156},{0,110}, {8,1},{2,1},{0,230},{2,1},{0,13},{2,1},{0,224},{0,14},{4,1},{2,1}, {0,216},{0,141},{2,1},{0,187},{0,202},{74,1},{2,1},{0,255},{64,1},{58,1}, {32,1},{16,1},{8,1},{4,1},{2,1},{0,172},{0,231},{2,1},{0,126},{0,217}, {4,1},{2,1},{0,157},{0,232},{2,1},{0,142},{0,203},{8,1},{4,1},{2,1}, {0,188},{0,218},{2,1},{0,173},{0,233},{4,1},{2,1},{0,158},{0,204},{2,1}, {0,219},{0,189},{16,1},{8,1},{4,1},{2,1},{0,234},{0,174},{2,1},{0,220}, {0,205},{4,1},{2,1},{0,235},{0,190},{2,1},{0,221},{0,236},{8,1},{4,1}, {2,1},{0,206},{0,237},{2,1},{0,222},{0,238},{0,15},{4,1},{2,1},{0,240}, {0,31},{0,241},{4,1},{2,1},{0,242},{0,47},{2,1},{0,243},{0,63},{18,1}, {8,1},{4,1},{2,1},{0,244},{0,79},{2,1},{0,245},{0,95},{4,1},{2,1}, {0,246},{0,111},{2,1},{0,247},{2,1},{0,127},{0,143},{10,1},{4,1},{2,1}, {0,248},{0,249},{4,1},{2,1},{0,159},{0,175},{0,250},{8,1},{4,1},{2,1}, {0,251},{0,191},{2,1},{0,252},{0,207},{4,1},{2,1},{0,253},{0,223},{2,1}, {0,254},{0,239}, }; private static int ValTab32[][] = { {2,1},{0,0},{8,1},{4,1},{2,1},{0,8},{0,4},{2,1},{0,1},{0,2}, {8,1},{4,1},{2,1},{0,12},{0,10},{2,1},{0,3},{0,6},{6,1},{2,1}, {0,9},{2,1},{0,5},{0,7},{4,1},{2,1},{0,14},{0,13},{2,1},{0,15}, {0,11}, }; private static int ValTab33[][] = { {16,1},{8,1},{4,1},{2,1},{0,0},{0,1},{2,1},{0,2},{0,3},{4,1}, {2,1},{0,4},{0,5},{2,1},{0,6},{0,7},{8,1},{4,1},{2,1},{0,8}, {0,9},{2,1},{0,10},{0,11},{4,1},{2,1},{0,12},{0,13},{2,1},{0,14}, {0,15}, }; public static huffcodetab[] ht = null; /* Simulate extern struct */ private static int[] bitbuf = new int[32]; /** * Big Constructor : Computes all Huffman Tables. */ private huffcodetab(String S,int XLEN, int YLEN, int LINBITS, int LINMAX, int REF, int[] TABLE, int[] HLEN, int[][] VAL, int TREELEN) { tablename0 = S.charAt(0); tablename1 = S.charAt(1); tablename2 = S.charAt(2); xlen = XLEN; ylen = YLEN; linbits = LINBITS; linmax = LINMAX; ref = REF; table = TABLE; hlen = HLEN; val = VAL; treelen = TREELEN; } /** * Do the huffman-decoding. * note! for counta,countb -the 4 bit value is returned in y, * discard x. */ public static int huffman_decoder(huffcodetab h, int[] x, int[] y, int[] v, int[] w, BitReserve br) { // array of all huffcodtable headers // 0..31 Huffman code table 0..31 // 32,33 count1-tables int dmask = 1 << ((4 * 8) - 1); int hs = 4 * 8; int level; int point = 0; int error = 1; level = dmask; if (h.val == null) return 2; /* table 0 needs no bits */ if ( h.treelen == 0) { x[0] = y[0] = 0; return 0; } /* Lookup in Huffman table. */ /*int bitsAvailable = 0; int bitIndex = 0; int bits[] = bitbuf;*/ do { if (h.val[point][0]==0) { /*end of tree*/ x[0] = h.val[point][1] >>> 4; y[0] = h.val[point][1] & 0xf; error = 0; break; } // hget1bit() is called thousands of times, and so needs to be // ultra fast. /* if (bitIndex==bitsAvailable) { bitsAvailable = br.readBits(bits, 32); bitIndex = 0; } */ //if (bits[bitIndex++]!=0) if (br.hget1bit()!=0) { while (h.val[point][1] >= MXOFF) point += h.val[point][1]; point += h.val[point][1]; } else { while (h.val[point][0] >= MXOFF) point += h.val[point][0]; point += h.val[point][0]; } level >>>= 1; // MDM: ht[0] is always 0; } while ((level !=0 ) || (point < 0 /*ht[0].treelen*/) ); // put back any bits not consumed /* int unread = (bitsAvailable-bitIndex); if (unread>0) br.rewindNbits(unread); */ /* Process sign encodings for quadruples tables. */ // System.out.println(h.tablename); if (h.tablename0 == '3' && (h.tablename1 == '2' || h.tablename1 == '3')) { v[0] = (y[0]>>3) & 1; w[0] = (y[0]>>2) & 1; x[0] = (y[0]>>1) & 1; y[0] = y[0] & 1; /* v, w, x and y are reversed in the bitstream. switch them around to make test bistream work. */ if (v[0]!=0) if (br.hget1bit() != 0) v[0] = -v[0]; if (w[0]!=0) if (br.hget1bit() != 0) w[0] = -w[0]; if (x[0]!=0) if (br.hget1bit() != 0) x[0] = -x[0]; if (y[0]!=0) if (br.hget1bit() != 0) y[0] = -y[0]; } else { // Process sign and escape encodings for dual tables. // x and y are reversed in the test bitstream. // Reverse x and y here to make test bitstream work. if (h.linbits != 0) if ((h.xlen-1) == x[0]) x[0] += br.hgetbits(h.linbits); if (x[0] != 0) if (br.hget1bit() != 0) x[0] = -x[0]; if (h.linbits != 0) if ((h.ylen-1) == y[0]) y[0] += br.hgetbits(h.linbits); if (y[0] != 0) if (br.hget1bit() != 0) y[0] = -y[0]; } return error; } public static void inithuff() { if (ht!=null) return; ht = new huffcodetab[HTN]; ht[0] = new huffcodetab("0 ",0,0,0,0,-1,null,null,ValTab0,0); ht[1] = new huffcodetab("1 ",2,2,0,0,-1,null,null,ValTab1,7); ht[2] = new huffcodetab("2 ",3,3,0,0,-1,null,null,ValTab2,17); ht[3] = new huffcodetab("3 ",3,3,0,0,-1,null,null,ValTab3,17); ht[4] = new huffcodetab("4 ",0,0,0,0,-1,null,null,ValTab4,0); ht[5] = new huffcodetab("5 ",4,4,0,0,-1,null,null,ValTab5,31); ht[6] = new huffcodetab("6 ",4,4,0,0,-1,null,null,ValTab6,31); ht[7] = new huffcodetab("7 ",6,6,0,0,-1,null,null,ValTab7,71); ht[8] = new huffcodetab("8 ",6,6,0,0,-1,null,null,ValTab8,71); ht[9] = new huffcodetab("9 ",6,6,0,0,-1,null,null,ValTab9,71); ht[10] = new huffcodetab("10 ",8,8,0,0,-1,null,null,ValTab10,127); ht[11] = new huffcodetab("11 ",8,8,0,0,-1,null,null,ValTab11,127); ht[12] = new huffcodetab("12 ",8,8,0,0,-1,null,null,ValTab12,127); ht[13] = new huffcodetab("13 ",16,16,0,0,-1,null,null,ValTab13,511); ht[14] = new huffcodetab("14 ",0,0,0,0,-1,null,null,ValTab14,0); ht[15] = new huffcodetab("15 ",16,16,0,0,-1,null,null,ValTab15,511); ht[16] = new huffcodetab("16 ",16,16,1,1,-1,null,null,ValTab16,511); ht[17] = new huffcodetab("17 ",16,16,2,3,16,null,null,ValTab16,511); ht[18] = new huffcodetab("18 ",16,16,3,7,16,null,null,ValTab16,511); ht[19] = new huffcodetab("19 ",16,16,4,15,16,null,null,ValTab16,511); ht[20] = new huffcodetab("20 ",16,16,6,63,16,null,null,ValTab16,511); ht[21] = new huffcodetab("21 ",16,16,8,255,16,null,null,ValTab16,511); ht[22] = new huffcodetab("22 ",16,16,10,1023,16,null,null,ValTab16,511); ht[23] = new huffcodetab("23 ",16,16,13,8191,16,null,null,ValTab16,511); ht[24] = new huffcodetab("24 ",16,16,4,15,-1,null,null,ValTab24,512); ht[25] = new huffcodetab("25 ",16,16,5,31,24,null,null,ValTab24,512); ht[26] = new huffcodetab("26 ",16,16,6,63,24,null,null,ValTab24,512); ht[27] = new huffcodetab("27 ",16,16,7,127,24,null,null,ValTab24,512); ht[28] = new huffcodetab("28 ",16,16,8,255,24,null,null,ValTab24,512); ht[29] = new huffcodetab("29 ",16,16,9,511,24,null,null,ValTab24,512); ht[30] = new huffcodetab("30 ",16,16,11,2047,24,null,null,ValTab24,512); ht[31] = new huffcodetab("31 ",16,16,13,8191,24,null,null,ValTab24,512); ht[32] = new huffcodetab("32 ",1,16,0,0,-1,null,null,ValTab32,31); ht[33] = new huffcodetab("33 ",1,16,0,0,-1,null,null,ValTab33,31); } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/OutputChannels.java0000644000175000017500000000731211377161311027106 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial implementation. mdm@techie.com. *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * A Type-safe representation of the the supported output channel * constants. * * This class is immutable and, hence, is thread safe. * * @author Mat McGowan 12/12/99 * @since 0.0.7 */ public class OutputChannels { /** * Flag to indicate output should include both channels. */ public static final int BOTH_CHANNELS = 0; /** * Flag to indicate output should include the left channel only. */ public static final int LEFT_CHANNEL = 1; /** * Flag to indicate output should include the right channel only. */ public static final int RIGHT_CHANNEL = 2; /** * Flag to indicate output is mono. */ public static final int DOWNMIX_CHANNELS = 3; public static final OutputChannels LEFT = new OutputChannels(LEFT_CHANNEL); public static final OutputChannels RIGHT = new OutputChannels(RIGHT_CHANNEL); public static final OutputChannels BOTH = new OutputChannels(BOTH_CHANNELS); public static final OutputChannels DOWNMIX = new OutputChannels(DOWNMIX_CHANNELS); private /*final*/ int outputChannels; /** * Creates an OutputChannels instance * corresponding to the given channel code. * * @param code one of the OutputChannels channel code constants. * * @throws IllegalArgumentException if code is not a valid * channel code. */ static public OutputChannels fromInt(int code) { switch (code) { case LEFT_CHANNEL: return LEFT; case RIGHT_CHANNEL: return RIGHT; case BOTH_CHANNELS: return BOTH; case DOWNMIX_CHANNELS: return DOWNMIX; default: throw new IllegalArgumentException("Invalid channel code: "+code); } } private OutputChannels(int channels) { outputChannels = channels; if (channels<0 || channels>3) throw new IllegalArgumentException("channels"); } /** * Retrieves the code representing the desired output channels. * Will be one of LEFT_CHANNEL, RIGHT_CHANNEL, BOTH_CHANNELS * or DOWNMIX_CHANNELS. * * @return the channel code represented by this instance. */ public int getChannelsOutputCode() { return outputChannels; } /** * Retrieves the number of output channels represented * by this channel output type. * * @return The number of output channels for this channel output * type. This will be 2 for BOTH_CHANNELS only, and 1 * for all other types. */ public int getChannelCount() { int count = (outputChannels==BOTH_CHANNELS) ? 2 : 1; return count; } public boolean equals(Object o) { boolean equals = false; if (o instanceof OutputChannels) { OutputChannels oc = (OutputChannels)o; equals = (oc.outputChannels == outputChannels); } return equals; } public int hashCode() { return outputChannels; } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/sfd.ser0000644000175000017500000000403311377161311024553 0ustar ur[F " Bxp;U<=pq??q=p=<;;U9t;Z<h=8?x? 8===;;O9t ;]@<=@ ?4?==H=;;I9t;a!@<='?>==}=p;;D9t#;b1<=l/?$>@>=g=P;t;>9t4;dB<`ظ=7p6?Z>> =Qp=;D;69tD;dT<̀8<=?c>>=;=;;09 tT;be<h<@C?A>>=&p<:;(9_th;`w<0:J?>">=< :;!9Ot|;\<DyQ?~>>X<<@:;90t;W <`W?>,><Ӏ<8t;9 ?;O@><<<; 9?;H`|l><< d;8ոպ;<<@ i?>cP>J><@<@:8A;#@;9pt? >2>;<@:8%;4z?z>>:4<:8%:@2 ?t>p>9<@#:8A:@@J?oi=ߐ> <1:8ոA:KcP?i=> @<<:8ոջ:d |l*?c=> F<`H:8? 9<?]=N@>r<@O:8? tӀ,?W=>`< W:8t0@X~?QD<\:|8tO! "?J=0tPg@$?/l=<1b:#7tDp}?'=D9?E:@F;AGHPXIQYJRZKS[LT\MU]NV^OW_`jtakublvcmwdnxeoyfpzgq{hr|is}~ !" # $ % & '()*+,Ll-Mm.Nn/Oo0Pp1Qq2Rr3Ss4Tt5Uu6Vv7Ww8Xx9Yy:Zz;[{<\|=]}>^~?_@`AaBbCcDdEeFfGgHhIiJjKk  . / 0 1 2!3"4#5$6%7&8'9(:);*<+=,>-?uq~@     !"#$*0%+1&,2'-3(.4)/56>F7?G8@H9AI:BJ;CK<DL=EMNXbOYcPZdQ[eR\fS]gT^hU_iV`jWaklxmynzo{p|q}r~stuvw  ! " # $ %&'()*+,-./012345678Xx9Yy:Zz;[{<\|=]}>^~?_@`AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWw     (4)5*6+7 ,8!-9".:#/;$0<%1=&2>'3?uq~@     !"#$*0%+1&,2'-3(.4)/56>F7?G8@H9AI:BJ;CK<DL=EMNXbOYcPZdQ[eR\fS]gT^hU_iV`jWaklxmynzo{p|q}r~stuvw  ! " # $ %&'()*+,-./012345678Vt9Wu:Xv;Yw<Zx=[y>\z?]{@^|A_}B`~CaDbEcFdGeHfIgJhKiLjMkNlOmPnQoRpSqTrUs  . / 0 1 2!3"4#5$6%7&8'9(:);*<+=,>-?uq~@     !"#$(,%)-&*.'+/06<17=28>39?4:@5;ABJRCKSDLTEMUFNVGOWHPXIQYZdn[eo\fp]gq^hr_is`jtakublvcmwxyz{|}~()*+,-./01234 5  6 !7 "8 #9$:%;&<'=>\z?]{@^|A_}B`~CaDbEcFdGeHfIgJhKiLjMkNlOmPnQoRpSqTrUsVtWuXvYwZx[y      !"#$%&'()*+,-./0123456789:;<=>?uq~@     !"#$(,%)-&*.'+/06<17=28>39?4:@5;ABHNCIODJPEKQFLRGMST^hU_iV`jWakXblYcmZdn[eo\fp]gqr~stuvwxyz{|}      !"#$%&'()*+,F`-Ga.Hb/Ic0Jd1Ke2Lf3Mg4Nh5Oi6Pj7Qk8Rl9Sm:Tn;Uo<Vp=Wq>Xr?Ys@ZtA[uB\vC]wD^xE_yz{|}~      !"#$%&'()*+,-./0123456789:;<=>?uq~@     !"#$(,%)-&*.'+/06<17=28>39?4:@5;ABJRCKSDLTEMUFNVGOWHPXIQYZfr[gs\ht]iu^jv_kw`lxamybnzco{dp|eq}~ !" # $ % & '()*+,-./012345678Z|9[}:\~;]<^=_>`?a@bAcBdCeDfEgFhGiHjIkJlKmLnMoNpOqPrQsRtSuTvUwVxWyXzY{     (4)5*6+7 ,8!-9".:#/;$0<%1=&2>'3?jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/Equalizer.java0000644000175000017500000001133311377161311026071 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * The Equalizer class can be used to specify * equalization settings for the MPEG audio decoder. *

* The equalizer consists of 32 band-pass filters. * Each band of the equalizer can take on a fractional value between * -1.0 and +1.0. * At -1.0, the input signal is attenuated by 6dB, at +1.0 the signal is * amplified by 6dB. * * @see Decoder * * @author MDM */ public final class Equalizer { /** * Equalizer setting to denote that a given band will not be * present in the output signal. */ static public final float BAND_NOT_PRESENT = Float.NEGATIVE_INFINITY; static public final Equalizer PASS_THRU_EQ = new Equalizer(); private static final int BANDS = 32; private final float[] settings = new float[BANDS]; /** * Creates a new Equalizer instance. */ public Equalizer() { } // private Equalizer(float b1, float b2, float b3, float b4, float b5, // float b6, float b7, float b8, float b9, float b10, float b11, // float b12, float b13, float b14, float b15, float b16, // float b17, float b18, float b19, float b20); public Equalizer(float[] settings) { setFrom(settings); } public Equalizer(EQFunction eq) { setFrom(eq); } public void setFrom(float[] eq) { reset(); int max = (eq.length > BANDS) ? BANDS : eq.length; for (int i=0; i=0) && (band=0) && (band 1.0f) return 1.0f; if (eq < -1.0f) return -1.0f; return eq; } /** * Retrieves an array of floats whose values represent a * scaling factor that can be applied to linear samples * in each band to provide the equalization represented by * this instance. * * @return an array of factors that can be applied to the * subbands. */ float[] getBandFactors() { float[] factors = new float[BANDS]; for (int i=0, maxCount=BANDS; iBitstreamException are thrown * when operations on a Bitstream fail. *

* The exception provides details of the exception condition * in two ways: *

  1. * as an error-code describing the nature of the error *


  2. * as the Throwable instance, if any, that was thrown * indicating that an exceptional condition has occurred. *

* * @since 0.0.6 * @author MDM 12/12/99 */ public class BitstreamException extends JavaLayerException implements BitstreamErrors { private int errorcode = UNKNOWN_ERROR; public BitstreamException(String msg, Throwable t) { super(msg, t); } public BitstreamException(int errorcode, Throwable t) { this(getErrorString(errorcode), t); this.errorcode = errorcode; } public int getErrorCode() { return errorcode; } static public String getErrorString(int errorcode) { // REVIEW: use resource bundle to map error codes // to locale-sensitive strings. return "Bitstream errorcode "+Integer.toHexString(errorcode); } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/LayerIIDecoder.java0000644000175000017500000015273611377161311026731 0ustar /* * 11/19/04 1.0 moved to LGPL. * * 29/05/01 Michael Scheerer, Fixed some C++ to Java porting bugs. * * 16/07/01 Michael Scheerer, Catched a bug in method * read_sampledata, which causes an outOfIndexException. * * 12/12/99 Initial version. Adapted from javalayer.java * and Subband*.java. mdm@techie.com * * 02/28/99 Initial version : javalayer.java by E.B *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; /** * Implements decoding of MPEG Audio Layer II frames. */ class LayerIIDecoder extends LayerIDecoder implements FrameDecoder { public LayerIIDecoder() { } protected void createSubbands() { int i; if (mode == Header.SINGLE_CHANNEL) for (i = 0; i < num_subbands; ++i) subbands[i] = new SubbandLayer2(i); else if (mode == Header.JOINT_STEREO) { for (i = 0; i < header.intensity_stereo_bound(); ++i) subbands[i] = new SubbandLayer2Stereo(i); for (; i < num_subbands; ++i) subbands[i] = new SubbandLayer2IntensityStereo(i); } else { for (i = 0; i < num_subbands; ++i) subbands[i] = new SubbandLayer2Stereo(i); } } protected void readScaleFactorSelection() { for (int i = 0; i < num_subbands; ++i) ((SubbandLayer2)subbands[i]).read_scalefactor_selection(stream, crc); } /** * Class for layer II subbands in single channel mode. */ static class SubbandLayer2 extends Subband { // this table contains 3 requantized samples for each legal codeword // when grouped in 5 bits, i.e. 3 quantizationsteps per sample public static final float grouping_5bits[] = new float[] { -2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, 0.0f, -2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, 0.0f, -2.0f/3.0f, 0.0f, 0.0f, -2.0f/3.0f, 2.0f/3.0f, 0.0f, -2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, 0.0f, 2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, -2.0f/3.0f, 0.0f, 0.0f, -2.0f/3.0f, 0.0f, 2.0f/3.0f, -2.0f/3.0f, 0.0f, -2.0f/3.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f/3.0f, 0.0f, 0.0f, -2.0f/3.0f, 2.0f/3.0f, 0.0f, 0.0f, 2.0f/3.0f, 0.0f, 2.0f/3.0f, 2.0f/3.0f, 0.0f, -2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, 0.0f, -2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, -2.0f/3.0f, 0.0f, 2.0f/3.0f, 0.0f, 0.0f, 2.0f/3.0f, 2.0f/3.0f, 0.0f, 2.0f/3.0f, -2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f, 0.0f, 2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f, 2.0f/3.0f }; // this table contains 3 requantized samples for each legal codeword // when grouped in 7 bits, i.e. 5 quantizationsteps per sample public static final float grouping_7bits[] = new float[] { -0.8f, -0.8f, -0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.8f, -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.8f, -0.8f, -0.8f, -0.4f, -0.4f, -0.8f, -0.4f, 0.0f, -0.8f, -0.4f, 0.4f, -0.8f, -0.4f, 0.8f, -0.8f, -0.4f, -0.8f, -0.4f, -0.4f, -0.4f, -0.4f, -0.4f, 0.0f, -0.4f, -0.4f, 0.4f, -0.4f, -0.4f, 0.8f, -0.4f, -0.4f, -0.8f, 0.0f, -0.4f, -0.4f, 0.0f, -0.4f, 0.0f, 0.0f, -0.4f, 0.4f, 0.0f, -0.4f, 0.8f, 0.0f, -0.4f, -0.8f, 0.4f, -0.4f, -0.4f, 0.4f, -0.4f, 0.0f, 0.4f, -0.4f, 0.4f, 0.4f, -0.4f, 0.8f, 0.4f, -0.4f, -0.8f, 0.8f, -0.4f, -0.4f, 0.8f, -0.4f, 0.0f, 0.8f, -0.4f, 0.4f, 0.8f, -0.4f, 0.8f, 0.8f, -0.4f, -0.8f, -0.8f, 0.0f, -0.4f, -0.8f, 0.0f, 0.0f, -0.8f, 0.0f, 0.4f, -0.8f, 0.0f, 0.8f, -0.8f, 0.0f, -0.8f, -0.4f, 0.0f, -0.4f, -0.4f, 0.0f, 0.0f, -0.4f, 0.0f, 0.4f, -0.4f, 0.0f, 0.8f, -0.4f, 0.0f, -0.8f, 0.0f, 0.0f, -0.4f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.4f, 0.0f, 0.0f, 0.8f, 0.0f, 0.0f, -0.8f, 0.4f, 0.0f, -0.4f, 0.4f, 0.0f, 0.0f, 0.4f, 0.0f, 0.4f, 0.4f, 0.0f, 0.8f, 0.4f, 0.0f, -0.8f, 0.8f, 0.0f, -0.4f, 0.8f, 0.0f, 0.0f, 0.8f, 0.0f, 0.4f, 0.8f, 0.0f, 0.8f, 0.8f, 0.0f, -0.8f, -0.8f, 0.4f, -0.4f, -0.8f, 0.4f, 0.0f, -0.8f, 0.4f, 0.4f, -0.8f, 0.4f, 0.8f, -0.8f, 0.4f, -0.8f, -0.4f, 0.4f, -0.4f, -0.4f, 0.4f, 0.0f, -0.4f, 0.4f, 0.4f, -0.4f, 0.4f, 0.8f, -0.4f, 0.4f, -0.8f, 0.0f, 0.4f, -0.4f, 0.0f, 0.4f, 0.0f, 0.0f, 0.4f, 0.4f, 0.0f, 0.4f, 0.8f, 0.0f, 0.4f, -0.8f, 0.4f, 0.4f, -0.4f, 0.4f, 0.4f, 0.0f, 0.4f, 0.4f, 0.4f, 0.4f, 0.4f, 0.8f, 0.4f, 0.4f, -0.8f, 0.8f, 0.4f, -0.4f, 0.8f, 0.4f, 0.0f, 0.8f, 0.4f, 0.4f, 0.8f, 0.4f, 0.8f, 0.8f, 0.4f, -0.8f, -0.8f, 0.8f, -0.4f, -0.8f, 0.8f, 0.0f, -0.8f, 0.8f, 0.4f, -0.8f, 0.8f, 0.8f, -0.8f, 0.8f, -0.8f, -0.4f, 0.8f, -0.4f, -0.4f, 0.8f, 0.0f, -0.4f, 0.8f, 0.4f, -0.4f, 0.8f, 0.8f, -0.4f, 0.8f, -0.8f, 0.0f, 0.8f, -0.4f, 0.0f, 0.8f, 0.0f, 0.0f, 0.8f, 0.4f, 0.0f, 0.8f, 0.8f, 0.0f, 0.8f, -0.8f, 0.4f, 0.8f, -0.4f, 0.4f, 0.8f, 0.0f, 0.4f, 0.8f, 0.4f, 0.4f, 0.8f, 0.8f, 0.4f, 0.8f, -0.8f, 0.8f, 0.8f, -0.4f, 0.8f, 0.8f, 0.0f, 0.8f, 0.8f, 0.4f, 0.8f, 0.8f, 0.8f, 0.8f, 0.8f }; // this table contains 3 requantized samples for each legal codeword // when grouped in 10 bits, i.e. 9 quantizationsteps per sample public static final float grouping_10bits[] = { -8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 0.0f, -8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 0.0f, -6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 0.0f, -4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 0.0f, -2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 0.0f, -8.0f/9.0f, -6.0f/9.0f, 0.0f, -8.0f/9.0f, -4.0f/9.0f, 0.0f, -8.0f/9.0f, -2.0f/9.0f, 0.0f, -8.0f/9.0f, 0.0f, 0.0f, -8.0f/9.0f, 2.0f/9.0f, 0.0f, -8.0f/9.0f, 4.0f/9.0f, 0.0f, -8.0f/9.0f, 6.0f/9.0f, 0.0f, -8.0f/9.0f, 8.0f/9.0f, 0.0f, -8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 0.0f, 2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 0.0f, 4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 0.0f, 6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 0.0f, 8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 0.0f, -8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 0.0f, -6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 0.0f, -4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 0.0f, -2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 0.0f, -6.0f/9.0f, -6.0f/9.0f, 0.0f, -6.0f/9.0f, -4.0f/9.0f, 0.0f, -6.0f/9.0f, -2.0f/9.0f, 0.0f, -6.0f/9.0f, 0.0f, 0.0f, -6.0f/9.0f, 2.0f/9.0f, 0.0f, -6.0f/9.0f, 4.0f/9.0f, 0.0f, -6.0f/9.0f, 6.0f/9.0f, 0.0f, -6.0f/9.0f, 8.0f/9.0f, 0.0f, -6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 0.0f, 2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 0.0f, 4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 0.0f, 6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 0.0f, 8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 0.0f, -8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 0.0f, -6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 0.0f, -4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 0.0f, -2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 0.0f, -4.0f/9.0f, -6.0f/9.0f, 0.0f, -4.0f/9.0f, -4.0f/9.0f, 0.0f, -4.0f/9.0f, -2.0f/9.0f, 0.0f, -4.0f/9.0f, 0.0f, 0.0f, -4.0f/9.0f, 2.0f/9.0f, 0.0f, -4.0f/9.0f, 4.0f/9.0f, 0.0f, -4.0f/9.0f, 6.0f/9.0f, 0.0f, -4.0f/9.0f, 8.0f/9.0f, 0.0f, -4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 0.0f, 2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 0.0f, 4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 0.0f, 6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 0.0f, 8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 0.0f, -8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 0.0f, -6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 0.0f, -4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 0.0f, -2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 0.0f, -2.0f/9.0f, -6.0f/9.0f, 0.0f, -2.0f/9.0f, -4.0f/9.0f, 0.0f, -2.0f/9.0f, -2.0f/9.0f, 0.0f, -2.0f/9.0f, 0.0f, 0.0f, -2.0f/9.0f, 2.0f/9.0f, 0.0f, -2.0f/9.0f, 4.0f/9.0f, 0.0f, -2.0f/9.0f, 6.0f/9.0f, 0.0f, -2.0f/9.0f, 8.0f/9.0f, 0.0f, -2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 0.0f, 2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 0.0f, 4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 0.0f, 6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 0.0f, 8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 0.0f, -6.0f/9.0f, -8.0f/9.0f, 0.0f, -4.0f/9.0f, -8.0f/9.0f, 0.0f, -2.0f/9.0f, -8.0f/9.0f, 0.0f, 0.0f, -8.0f/9.0f, 0.0f, 2.0f/9.0f, -8.0f/9.0f, 0.0f, 4.0f/9.0f, -8.0f/9.0f, 0.0f, 6.0f/9.0f, -8.0f/9.0f, 0.0f, 8.0f/9.0f, -8.0f/9.0f, 0.0f, -8.0f/9.0f, -6.0f/9.0f, 0.0f, -6.0f/9.0f, -6.0f/9.0f, 0.0f, -4.0f/9.0f, -6.0f/9.0f, 0.0f, -2.0f/9.0f, -6.0f/9.0f, 0.0f, 0.0f, -6.0f/9.0f, 0.0f, 2.0f/9.0f, -6.0f/9.0f, 0.0f, 4.0f/9.0f, -6.0f/9.0f, 0.0f, 6.0f/9.0f, -6.0f/9.0f, 0.0f, 8.0f/9.0f, -6.0f/9.0f, 0.0f, -8.0f/9.0f, -4.0f/9.0f, 0.0f, -6.0f/9.0f, -4.0f/9.0f, 0.0f, -4.0f/9.0f, -4.0f/9.0f, 0.0f, -2.0f/9.0f, -4.0f/9.0f, 0.0f, 0.0f, -4.0f/9.0f, 0.0f, 2.0f/9.0f, -4.0f/9.0f, 0.0f, 4.0f/9.0f, -4.0f/9.0f, 0.0f, 6.0f/9.0f, -4.0f/9.0f, 0.0f, 8.0f/9.0f, -4.0f/9.0f, 0.0f, -8.0f/9.0f, -2.0f/9.0f, 0.0f, -6.0f/9.0f, -2.0f/9.0f, 0.0f, -4.0f/9.0f, -2.0f/9.0f, 0.0f, -2.0f/9.0f, -2.0f/9.0f, 0.0f, 0.0f, -2.0f/9.0f, 0.0f, 2.0f/9.0f, -2.0f/9.0f, 0.0f, 4.0f/9.0f, -2.0f/9.0f, 0.0f, 6.0f/9.0f, -2.0f/9.0f, 0.0f, 8.0f/9.0f, -2.0f/9.0f, 0.0f, -8.0f/9.0f, 0.0f, 0.0f, -6.0f/9.0f, 0.0f, 0.0f, -4.0f/9.0f, 0.0f, 0.0f, -2.0f/9.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 2.0f/9.0f, 0.0f, 0.0f, 4.0f/9.0f, 0.0f, 0.0f, 6.0f/9.0f, 0.0f, 0.0f, 8.0f/9.0f, 0.0f, 0.0f, -8.0f/9.0f, 2.0f/9.0f, 0.0f, -6.0f/9.0f, 2.0f/9.0f, 0.0f, -4.0f/9.0f, 2.0f/9.0f, 0.0f, -2.0f/9.0f, 2.0f/9.0f, 0.0f, 0.0f, 2.0f/9.0f, 0.0f, 2.0f/9.0f, 2.0f/9.0f, 0.0f, 4.0f/9.0f, 2.0f/9.0f, 0.0f, 6.0f/9.0f, 2.0f/9.0f, 0.0f, 8.0f/9.0f, 2.0f/9.0f, 0.0f, -8.0f/9.0f, 4.0f/9.0f, 0.0f, -6.0f/9.0f, 4.0f/9.0f, 0.0f, -4.0f/9.0f, 4.0f/9.0f, 0.0f, -2.0f/9.0f, 4.0f/9.0f, 0.0f, 0.0f, 4.0f/9.0f, 0.0f, 2.0f/9.0f, 4.0f/9.0f, 0.0f, 4.0f/9.0f, 4.0f/9.0f, 0.0f, 6.0f/9.0f, 4.0f/9.0f, 0.0f, 8.0f/9.0f, 4.0f/9.0f, 0.0f, -8.0f/9.0f, 6.0f/9.0f, 0.0f, -6.0f/9.0f, 6.0f/9.0f, 0.0f, -4.0f/9.0f, 6.0f/9.0f, 0.0f, -2.0f/9.0f, 6.0f/9.0f, 0.0f, 0.0f, 6.0f/9.0f, 0.0f, 2.0f/9.0f, 6.0f/9.0f, 0.0f, 4.0f/9.0f, 6.0f/9.0f, 0.0f, 6.0f/9.0f, 6.0f/9.0f, 0.0f, 8.0f/9.0f, 6.0f/9.0f, 0.0f, -8.0f/9.0f, 8.0f/9.0f, 0.0f, -6.0f/9.0f, 8.0f/9.0f, 0.0f, -4.0f/9.0f, 8.0f/9.0f, 0.0f, -2.0f/9.0f, 8.0f/9.0f, 0.0f, 0.0f, 8.0f/9.0f, 0.0f, 2.0f/9.0f, 8.0f/9.0f, 0.0f, 4.0f/9.0f, 8.0f/9.0f, 0.0f, 6.0f/9.0f, 8.0f/9.0f, 0.0f, 8.0f/9.0f, 8.0f/9.0f, 0.0f, -8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 0.0f, -8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 0.0f, -6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 0.0f, -4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 0.0f, -2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 0.0f, 2.0f/9.0f, -6.0f/9.0f, 0.0f, 2.0f/9.0f, -4.0f/9.0f, 0.0f, 2.0f/9.0f, -2.0f/9.0f, 0.0f, 2.0f/9.0f, 0.0f, 0.0f, 2.0f/9.0f, 2.0f/9.0f, 0.0f, 2.0f/9.0f, 4.0f/9.0f, 0.0f, 2.0f/9.0f, 6.0f/9.0f, 0.0f, 2.0f/9.0f, 8.0f/9.0f, 0.0f, 2.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 0.0f, 2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 0.0f, 4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 0.0f, 6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 0.0f, 8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 0.0f, -8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 0.0f, -6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 0.0f, -4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 0.0f, -2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 0.0f, 4.0f/9.0f, -6.0f/9.0f, 0.0f, 4.0f/9.0f, -4.0f/9.0f, 0.0f, 4.0f/9.0f, -2.0f/9.0f, 0.0f, 4.0f/9.0f, 0.0f, 0.0f, 4.0f/9.0f, 2.0f/9.0f, 0.0f, 4.0f/9.0f, 4.0f/9.0f, 0.0f, 4.0f/9.0f, 6.0f/9.0f, 0.0f, 4.0f/9.0f, 8.0f/9.0f, 0.0f, 4.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 0.0f, 2.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 0.0f, 4.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 0.0f, 6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 0.0f, 8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 0.0f, -8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 0.0f, -6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 0.0f, -4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 0.0f, -2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 0.0f, 6.0f/9.0f, -6.0f/9.0f, 0.0f, 6.0f/9.0f, -4.0f/9.0f, 0.0f, 6.0f/9.0f, -2.0f/9.0f, 0.0f, 6.0f/9.0f, 0.0f, 0.0f, 6.0f/9.0f, 2.0f/9.0f, 0.0f, 6.0f/9.0f, 4.0f/9.0f, 0.0f, 6.0f/9.0f, 6.0f/9.0f, 0.0f, 6.0f/9.0f, 8.0f/9.0f, 0.0f, 6.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 0.0f, 2.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 0.0f, 4.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 0.0f, 6.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 0.0f, 8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 0.0f, -8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 0.0f, -6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 0.0f, -4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 0.0f, -2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 0.0f, 8.0f/9.0f, -6.0f/9.0f, 0.0f, 8.0f/9.0f, -4.0f/9.0f, 0.0f, 8.0f/9.0f, -2.0f/9.0f, 0.0f, 8.0f/9.0f, 0.0f, 0.0f, 8.0f/9.0f, 2.0f/9.0f, 0.0f, 8.0f/9.0f, 4.0f/9.0f, 0.0f, 8.0f/9.0f, 6.0f/9.0f, 0.0f, 8.0f/9.0f, 8.0f/9.0f, 0.0f, 8.0f/9.0f, -8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 0.0f, 2.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 0.0f, 4.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 0.0f, 6.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, -8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, -2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 0.0f, 8.0f/9.0f, 8.0f/9.0f, 2.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 4.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 6.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f, 8.0f/9.0f }; // data taken from ISO/IEC DIS 11172, Annexes 3-B.2[abcd] and 3-B.4: // subbands 0-2 in tables 3-B.2a and 2b: (index is allocation) public static final int table_ab1_codelength[] = // bits per codeword { 0, 5, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 }; public static final float table_ab1_groupingtables[][] = // pointer to sample grouping table, or NULL-pointer if ungrouped { null, grouping_5bits, null, null, null, null, null, null, null, null, null, null, null, null, null, null }; public static final float table_ab1_factor[] = // factor for requantization: (real)sample * factor - 1.0 gives requantized sample { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32.0f, 1.0f/64.0f, 1.0f/128.0f, 1.0f/256.0f, 1.0f/512.0f, 1.0f/1024.0f, 1.0f/2048.0f, 1.0f/4096.0f, 1.0f/8192.0f, 1.0f/16384.0f, 1.0f/32768.0f }; public static final float table_ab1_c[] = // factor c for requantization from table 3-B.4 { 0.0f, 1.33333333333f, 1.14285714286f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f, 1.00001525902f }; public static final float table_ab1_d[] = // addend d for requantization from table 3-B.4 { 0.0f, 0.50000000000f, 0.25000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f, 0.00003051758f }; // subbands 3-... tables 3-B.2a and 2b: public static final float[] table_ab234_groupingtables[] = { null, grouping_5bits, grouping_7bits, null, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null }; // subbands 3-10 in tables 3-B.2a and 2b: public static final int table_ab2_codelength[] = { 0, 5, 7, 3, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16 }; public static final float table_ab2_factor[] = { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32.0f, 1.0f/64.0f, 1.0f/128.0f, 1.0f/256.0f, 1.0f/512.0f, 1.0f/1024.0f, 1.0f/2048.0f, 1.0f/4096.0f, 1.0f/32768.0f }; public static final float table_ab2_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00001525902f }; public static final float table_ab2_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00003051758f }; // subbands 11-22 in tables 3-B.2a and 2b: public static final int table_ab3_codelength[] = { 0, 5, 7, 3, 10, 4, 5, 16 }; public static final float table_ab3_factor[] = { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32768.0f }; public static final float table_ab3_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.14285714286f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.00001525902f }; public static final float table_ab3_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.25000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.00003051758f }; // subbands 23-... in tables 3-B.2a and 2b: public static final int table_ab4_codelength[] = { 0, 5, 7, 16 }; public static final float table_ab4_factor[] = { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/32768.0f }; public static final float table_ab4_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.00001525902f }; public static final float table_ab4_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.00003051758f }; // subbands in tables 3-B.2c and 2d: public static final int table_cd_codelength[] = { 0, 5, 7, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }; public static final float table_cd_groupingtables[][] = { null, grouping_5bits, grouping_7bits, grouping_10bits, null, null, null, null, null, null, null, null, null, null, null, null }; public static final float table_cd_factor[] = { 0.0f, 1.0f/2.0f, 1.0f/4.0f, 1.0f/8.0f, 1.0f/8.0f, 1.0f/16.0f, 1.0f/32.0f, 1.0f/64.0f, 1.0f/128.0f, 1.0f/256.0f, 1.0f/512.0f, 1.0f/1024.0f, 1.0f/2048.0f, 1.0f/4096.0f, 1.0f/8192.0f, 1.0f/16384.0f }; public static final float table_cd_c[] = { 0.0f, 1.33333333333f, 1.60000000000f, 1.77777777777f, 1.06666666666f, 1.03225806452f, 1.01587301587f, 1.00787401575f, 1.00392156863f, 1.00195694716f, 1.00097751711f, 1.00048851979f, 1.00024420024f, 1.00012208522f, 1.00006103888f, 1.00003051851f }; public static final float table_cd_d[] = { 0.0f, 0.50000000000f, 0.50000000000f, 0.50000000000f, 0.12500000000f, 0.06250000000f, 0.03125000000f, 0.01562500000f, 0.00781250000f, 0.00390625000f, 0.00195312500f, 0.00097656250f, 0.00048828125f, 0.00024414063f, 0.00012207031f, 0.00006103516f }; protected int subbandnumber; protected int allocation; protected int scfsi; protected float scalefactor1, scalefactor2, scalefactor3; protected int[] codelength = {0}; protected float groupingtable[][] = new float[2][]; //protected float[][] groupingtable = {{0},{0}} ; protected float[] factor = {0.0f}; protected int groupnumber; protected int samplenumber; protected float[] samples = new float[3]; protected float[] c = {0}; protected float[] d = {0}; /** * Constructor */ public SubbandLayer2(int subbandnumber) { this.subbandnumber = subbandnumber; groupnumber = samplenumber = 0; } /** * */ protected int get_allocationlength (Header header) { if (header.version() == Header.MPEG1) { int channel_bitrate = header.bitrate_index(); // calculate bitrate per channel: if (header.mode() != Header.SINGLE_CHANNEL) if (channel_bitrate == 4) channel_bitrate = 1; else channel_bitrate -= 4; if (channel_bitrate == 1 || channel_bitrate == 2) // table 3-B.2c or 3-B.2d if (subbandnumber <= 1) return 4; else return 3; else // tables 3-B.2a or 3-B.2b if (subbandnumber <= 10) return 4; else if (subbandnumber <= 22) return 3; else return 2; } else { // MPEG-2 LSF -- Jeff // table B.1 of ISO/IEC 13818-3 if (subbandnumber <= 3) return 4; else if (subbandnumber <= 10) return 3; else return 2; } } /** * */ protected void prepare_sample_reading(Header header, int allocation, //float[][] groupingtable, int channel, float[] factor, int[] codelength, float[] c, float[] d) { int channel_bitrate = header.bitrate_index(); // calculate bitrate per channel: if (header.mode() != Header.SINGLE_CHANNEL) if (channel_bitrate == 4) channel_bitrate = 1; else channel_bitrate -= 4; if (channel_bitrate == 1 || channel_bitrate == 2) { // table 3-B.2c or 3-B.2d groupingtable[channel] = table_cd_groupingtables[allocation]; factor[0] = table_cd_factor[allocation]; codelength[0] = table_cd_codelength[allocation]; c[0] = table_cd_c[allocation]; d[0] = table_cd_d[allocation]; } else { // tables 3-B.2a or 3-B.2b if (subbandnumber <= 2) { groupingtable[channel] = table_ab1_groupingtables[allocation]; factor[0] = table_ab1_factor[allocation]; codelength[0] = table_ab1_codelength[allocation]; c[0] = table_ab1_c[allocation]; d[0] = table_ab1_d[allocation]; } else { groupingtable[channel] = table_ab234_groupingtables[allocation]; if (subbandnumber <= 10) { factor[0] = table_ab2_factor[allocation]; codelength[0] = table_ab2_codelength[allocation]; c[0] = table_ab2_c[allocation]; d[0] = table_ab2_d[allocation]; } else if (subbandnumber <= 22) { factor[0] = table_ab3_factor[allocation]; codelength[0] = table_ab3_codelength[allocation]; c[0] = table_ab3_c[allocation]; d[0] = table_ab3_d[allocation]; } else { factor[0] = table_ab4_factor[allocation]; codelength[0] = table_ab4_codelength[allocation]; c[0] = table_ab4_c[allocation]; d[0] = table_ab4_d[allocation]; } } } } /** * */ public void read_allocation(Bitstream stream, Header header, Crc16 crc) { int length = get_allocationlength(header); allocation = stream.get_bits(length); if (crc != null) crc.add_bits(allocation, length); } /** * */ public void read_scalefactor_selection (Bitstream stream, Crc16 crc) { if (allocation != 0) { scfsi = stream.get_bits(2); if (crc != null) crc.add_bits(scfsi, 2); } } /** * */ public void read_scalefactor (Bitstream stream, Header header) { if (allocation != 0) { switch (scfsi) { case 0: scalefactor1 = scalefactors[stream.get_bits(6)]; scalefactor2 = scalefactors[stream.get_bits(6)]; scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 1: scalefactor1 = scalefactor2 = scalefactors[stream.get_bits(6)]; scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 2: scalefactor1 = scalefactor2 = scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 3: scalefactor1 = scalefactors[stream.get_bits(6)]; scalefactor2 = scalefactor3 = scalefactors[stream.get_bits(6)]; break; } prepare_sample_reading(header, allocation, 0, factor, codelength, c, d); } } /** * */ public boolean read_sampledata (Bitstream stream) { if (allocation != 0) if (groupingtable[0] != null) { int samplecode = stream.get_bits(codelength[0]); // create requantized samples: samplecode += samplecode << 1; float[] target = samples; float[] source = groupingtable[0]; /* int tmp = 0; int temp = 0; target[tmp++] = source[samplecode + temp]; temp++; target[tmp++] = source[samplecode + temp]; temp++; target[tmp] = source[samplecode + temp]; */ //Bugfix: int tmp = 0; int temp = samplecode; if(temp > source.length - 3) temp = source.length - 3; target[tmp] = source[temp]; temp++;tmp++; target[tmp] = source[temp]; temp++;tmp++; target[tmp] = source[temp]; // memcpy (samples, groupingtable + samplecode, 3 * sizeof (real)); } else { samples[0] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); samples[1] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); samples[2] = (float) ((stream.get_bits(codelength[0])) * factor[0] - 1.0); } samplenumber = 0; if (++groupnumber == 12) return true; else return false; } /** * */ public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { if ((allocation != 0) && (channels != OutputChannels.RIGHT_CHANNEL)) { float sample = samples[samplenumber]; if (groupingtable[0] == null) sample = (sample + d[0]) * c[0]; if (groupnumber <= 4) sample *= scalefactor1; else if (groupnumber <= 8) sample *= scalefactor2; else sample *= scalefactor3; filter1.input_sample(sample, subbandnumber); } if (++samplenumber == 3) return true; else return false; } }; /** * Class for layer II subbands in joint stereo mode. */ static class SubbandLayer2IntensityStereo extends SubbandLayer2 { protected int channel2_scfsi; protected float channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3; /** * Constructor */ public SubbandLayer2IntensityStereo (int subbandnumber) { super(subbandnumber); } /** * */ public void read_allocation(Bitstream stream, Header header, Crc16 crc) { super.read_allocation (stream, header, crc); } /** * */ public void read_scalefactor_selection(Bitstream stream, Crc16 crc) { if (allocation != 0) { scfsi = stream.get_bits(2); channel2_scfsi = stream.get_bits(2); if (crc != null) { crc.add_bits(scfsi, 2); crc.add_bits(channel2_scfsi, 2); } } } /** * */ public void read_scalefactor(Bitstream stream, Header header) { if (allocation != 0) { super.read_scalefactor(stream, header); switch (channel2_scfsi) { case 0: channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 1: channel2_scalefactor1 = channel2_scalefactor2 = scalefactors[stream.get_bits (6)]; channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 2: channel2_scalefactor1 = channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 3: channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits (6)]; break; } } } /** * */ public boolean read_sampledata(Bitstream stream) { return super.read_sampledata (stream); } /** * */ public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { if (allocation != 0) { float sample = samples[samplenumber]; if (groupingtable[0] == null) sample = (sample + d[0]) * c[0]; if (channels == OutputChannels.BOTH_CHANNELS) { float sample2 = sample; if (groupnumber <= 4) { sample *= scalefactor1; sample2 *= channel2_scalefactor1; } else if (groupnumber <= 8) { sample *= scalefactor2; sample2 *= channel2_scalefactor2; } else { sample *= scalefactor3; sample2 *= channel2_scalefactor3; } filter1.input_sample(sample, subbandnumber); filter2.input_sample(sample2, subbandnumber); } else if (channels == OutputChannels.LEFT_CHANNEL) { if (groupnumber <= 4) sample *= scalefactor1; else if (groupnumber <= 8) sample *= scalefactor2; else sample *= scalefactor3; filter1.input_sample(sample, subbandnumber); } else { if (groupnumber <= 4) sample *= channel2_scalefactor1; else if (groupnumber <= 8) sample *= channel2_scalefactor2; else sample *= channel2_scalefactor3; filter1.input_sample(sample, subbandnumber); } } if (++samplenumber == 3) return true; else return false; } }; /** * Class for layer II subbands in stereo mode. */ static class SubbandLayer2Stereo extends SubbandLayer2 { protected int channel2_allocation; protected int channel2_scfsi; protected float channel2_scalefactor1, channel2_scalefactor2, channel2_scalefactor3; //protected boolean channel2_grouping; ???? Never used! protected int[] channel2_codelength = {0}; //protected float[][] channel2_groupingtable = {{0},{0}}; protected float[] channel2_factor = {0}; protected float[] channel2_samples; protected float[] channel2_c = {0}; protected float[] channel2_d = {0}; /** * Constructor */ public SubbandLayer2Stereo(int subbandnumber) { super(subbandnumber); channel2_samples = new float[3]; } /** * */ public void read_allocation (Bitstream stream, Header header, Crc16 crc) { int length = get_allocationlength(header); allocation = stream.get_bits(length); channel2_allocation = stream.get_bits(length); if (crc != null) { crc.add_bits(allocation, length); crc.add_bits(channel2_allocation, length); } } /** * */ public void read_scalefactor_selection(Bitstream stream, Crc16 crc) { if (allocation != 0) { scfsi = stream.get_bits(2); if (crc != null) crc.add_bits(scfsi, 2); } if (channel2_allocation != 0) { channel2_scfsi = stream.get_bits(2); if (crc != null) crc.add_bits(channel2_scfsi, 2); } } /** * */ public void read_scalefactor(Bitstream stream, Header header) { super.read_scalefactor(stream, header); if (channel2_allocation != 0) { switch (channel2_scfsi) { case 0: channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 1: channel2_scalefactor1 = channel2_scalefactor2 = scalefactors[stream.get_bits(6)]; channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 2: channel2_scalefactor1 = channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; case 3: channel2_scalefactor1 = scalefactors[stream.get_bits(6)]; channel2_scalefactor2 = channel2_scalefactor3 = scalefactors[stream.get_bits(6)]; break; } prepare_sample_reading(header, channel2_allocation, 1, channel2_factor, channel2_codelength, channel2_c, channel2_d); } } /** * */ public boolean read_sampledata (Bitstream stream) { boolean returnvalue = super.read_sampledata(stream); if (channel2_allocation != 0) if (groupingtable[1] != null) { int samplecode = stream.get_bits(channel2_codelength[0]); // create requantized samples: samplecode += samplecode << 1; /* float[] target = channel2_samples; float[] source = channel2_groupingtable[0]; int tmp = 0; int temp = 0; target[tmp++] = source[samplecode + temp]; temp++; target[tmp++] = source[samplecode + temp]; temp++; target[tmp] = source[samplecode + temp]; // memcpy (channel2_samples, channel2_groupingtable + samplecode, 3 * sizeof (real)); */ float[] target = channel2_samples; float[] source = groupingtable[1]; int tmp = 0; int temp = samplecode; target[tmp] = source[temp]; temp++;tmp++; target[tmp] = source[temp]; temp++;tmp++; target[tmp] = source[temp]; } else { channel2_samples[0] = (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0); channel2_samples[1] = (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0); channel2_samples[2] = (float) ((stream.get_bits(channel2_codelength[0])) * channel2_factor[0] - 1.0); } return returnvalue; } /** * */ public boolean put_next_sample(int channels, SynthesisFilter filter1, SynthesisFilter filter2) { boolean returnvalue = super.put_next_sample(channels, filter1, filter2); if ((channel2_allocation != 0) && (channels != OutputChannels.LEFT_CHANNEL)) { float sample = channel2_samples[samplenumber - 1]; if (groupingtable[1] == null) sample = (sample + channel2_d[0]) * channel2_c[0]; if (groupnumber <= 4) sample *= channel2_scalefactor1; else if (groupnumber <= 8) sample *= channel2_scalefactor2; else sample *= channel2_scalefactor3; if (channels == OutputChannels.BOTH_CHANNELS) filter2.input_sample(sample, subbandnumber); else filter1.input_sample(sample, subbandnumber); } return returnvalue; } } } jclic-0.2.1.0.orig/extensions/soundspi/javalayer/src/javazoom/jl/decoder/JavaLayerUtils.java0000644000175000017500000001263711377161311027037 0ustar /* * 11/19/04 1.0 moved to LGPL. * 12/12/99 Initial version. mdm@techie.com *----------------------------------------------------------------------- * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Library General Public License for more details. * * You should have received a copy of the GNU Library General Public * License along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *---------------------------------------------------------------------- */ package javazoom.jl.decoder; import java.io.IOException; import java.io.InputStream; import java.io.InvalidClassException; import java.io.InvalidObjectException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.lang.reflect.Array; /** * The JavaLayerUtils class is not strictly part of the JavaLayer API. * It serves to provide useful methods and system-wide hooks. * * @author MDM */ public class JavaLayerUtils { static private JavaLayerHook hook = null; /** * Deserializes the object contained in the given input stream. * @param in The input stream to deserialize an object from. * @param cls The expected class of the deserialized object. */ static public Object deserialize(InputStream in, Class cls) throws IOException { if (cls==null) throw new NullPointerException("cls"); Object obj = deserialize(in, cls); if (!cls.isInstance(obj)) { throw new InvalidObjectException("type of deserialized instance not of required class."); } return obj; } /** * Deserializes an object from the given InputStream. * The deserialization is delegated to an * ObjectInputStream instance. * * @param in The InputStream to deserialize an object * from. * * @return The object deserialized from the stream. * @exception IOException is thrown if there was a problem reading * the underlying stream, or an object could not be deserialized * from the stream. * * @see java.io.ObjectInputStream */ static public Object deserialize(InputStream in) throws IOException { if (in==null) throw new NullPointerException("in"); ObjectInputStream objIn = new ObjectInputStream(in); Object obj; try { obj = objIn.readObject(); } catch (ClassNotFoundException ex) { throw new InvalidClassException(ex.toString()); } return obj; } /** * Deserializes an array from a given InputStream. * * @param in The InputStream to * deserialize an object from. * * @param elemType The class denoting the type of the array * elements. * @param length The expected length of the array, or -1 if * any length is expected. */ static public Object deserializeArray(InputStream in, Class elemType, int length) throws IOException { if (elemType==null) throw new NullPointerException("elemType"); if (length<-1) throw new IllegalArgumentException("length"); Object obj = deserialize(in); Class cls = obj.getClass(); if (!cls.isArray()) throw new InvalidObjectException("object is not an array"); Class arrayElemType = cls.getComponentType(); if (arrayElemType!=elemType) throw new InvalidObjectException("unexpected array component type"); if (length != -1) { int arrayLength = Array.getLength(obj); if (arrayLength!=length) throw new InvalidObjectException("array length mismatch"); } return obj; } static public Object deserializeArrayResource(String name, Class elemType, int length) throws IOException { InputStream str = getResourceAsStream(name); if (str==null) throw new IOException("unable to load resource '"+name+"'"); Object obj = deserializeArray(str, elemType, length); return obj; } static public void serialize(OutputStream out, Object obj) throws IOException { if (out==null) throw new NullPointerException("out"); if (obj==null) throw new NullPointerException("obj"); ObjectOutputStream objOut = new ObjectOutputStream(out); objOut.writeObject(obj); } /** * Sets the system-wide JavaLayer hook. */ static synchronized public void setHook(JavaLayerHook hook0) { hook = hook0; } static synchronized public JavaLayerHook getHook() { return hook; } /** * Retrieves an InputStream for a named resource. * * @param name The name of the resource. This must be a simple * name, and not a qualified package name. * * @return The InputStream for the named resource, or null if * the resource has not been found. If a hook has been * provided, its getResourceAsStream() method is called * to retrieve the resource. */ static synchronized public InputStream getResourceAsStream(String name) { InputStream is = null; if (hook!=null) { is = hook.getResourceAsStream(name); } else { Class cls = JavaLayerUtils.class; is = cls.getResourceAsStream(name); } return is; } } jclic-0.2.1.0.orig/CHANGES.txt0000644000175000017500000002253111377161311012430 0ustar Release notes for JClic (http://clic.xtec.cat) More information on each of the fixes can be found in the project development home at http://projectes.lafarga.cat/projects/jclic Changes in 0.1.2.0 (22-May-2006) --------------------------------------------------------------------------------------- This is primarily a bug fix release. The following bugs have been fixed: 38: Data lost when editing crosswords It was caused by a cleanup of excessive cells, incorrectly applied to Crossword activities. 51: No way to set dragCells property 52: No way to set UseOrder property Now it's possible to set/unset this boolean properties from JClic author. The check boxes are in the "Options" tab of the Activity editor. 42: Changes to the parameters of conditional jumps are not retained Now the edition of this properties, located in the "Sequences" tab of JClic author, work as expected. 83: Custom event sounds ignored in media dependency check Now custom event sounds are correctly handled by JClic author, both when specified for the whole project or for a specific activity. In addition, changes to the project global skin are also shown in the test activity window. 103: User's password not saved in JClic reports The "edit user" and "create user" forms have been modified, so now the password can be set in JClic Reports when creating a new user, and modified or erased later. 46: Windows installer create icons only for the current user Now the installer defaults to create shortcuts and icons for all users. Changes in 0.1.2.1 (23-Oct-2006) --------------------------------------------------------------------------------------- Three main changes have been done: - Feature request #68: In the reports system, the 'content-type' header of the HTTP responses is now "text/xml". This facilitates the integration with PHP-based applications, like Moodle. See http://projectes.lafarga.cat/projects/jclicmoodle for more information about a project that makes use of this feature. - A new automation module, called "TagReplace", has been created. This module allows to substitute designed tags written in text elements by its associated values, indicated by means of an external text file or URL. - Feature request #45: JClic Author can now transfer activities between different JClic projects. The "Import activities" feature allows to add to the current project activities taken from another one. Changes in 0.1.2.2 (23-Feb-2007) --------------------------------------------------------------------------------------- - Corrected bug #41: "Conditional jumps between sequence elements are not always working as expected". Conditional jumps now are working also in the test window of JClic Author. This will simplify the design and testing of projects that make use of this feature. - Corrected a bug in the algorithm that computes the global score. - Corrected some minor mistakes detected in the German translation of JClic. Changes in 0.2.0.3 (03-Apr-2008) --------------------------------------------------------------------------------------- Support for QuickTime 6.0 has been suppressed in JClic. Users of Mac OSX can still make use of QuickTime for Java 6.1 or later. JClic runs now on Java 1.4 or later. JRE 1.3.1 is no longer supported. This avoids the need of provide specific modules for the basic Java XML API (JAXP, DOM and Xalan), because they are already included in the Java 1.4 specification. JDOM 1.0 still remains as a external module needed by JClic. Changes in the source code, in order to make it fully compilable without external non-free dependencies: The binary files QTJava.zip, jclicjmf.jar and servlet.jar are no longer distributed with the source code of JClic, because of licensing issues. In order to make possible the build process, empty and partial stub implementations of QuickTime for Java, Java Media Framework and JSR-154 (Servlet 2.4) APIs have been included in the "lib" directory. All this stub implementations of the libraries are used only at compile time, and are not included in the binary files obtained as a result of the build process of JClic. The ANT extensions are no longer needed to build JClic. The password for the key store file (needed to digitally sign the JAR files) is now provided through a include call to the file ~/.ant-global.properties. JDOM is now compiled without X-Path functions. This features, not used by JClic, require binary JAR files at compile-time. The file jmfhandlers.jar, used to avoid unnecessary http connections to the server during the initialization of Java Media Framework in applets, has been suppressed to avoid copyright conflicts. The GIF Encoder library by Rana Bhattacharyya, and the BMP importer by J.Osbaldeston, have been removed. Now the graphics presented in JClic Reports are dinamically generated in PNG format by the Java ImageIO library (included in Java 1.4). The import of BMP files is done by means of the Image4j library (http://image4j.sourceforge.net). Important changes have been done in the final packaging of JClic. Since this version, only three JAR files will be generated: * jclic.jar - Contains all the ingredients needed to run JClic Player and JClic Applet * jclicauthor.jar - To be used in conjunction with jclic.jar. Contains JClic Author. * jclicreports.jar - Also to be used with jclic.jar. Contains the stand-alone version of the JClic Reports Server. In addition to this three files, jclicreports.war and jclicreports.ear provide the Servlet version of JClic Reports Server. The build.xml file has been changed in many ways to reflect all this changes in the source code structure. Added two new skins: "Mini", for embedding JClic projects in blogs and other web pages with small space available, and "Empty", without buttons, counters nor message boxes. The cell marker is drawed only when there are more than one cell to solve. In multiple-answer mode, the first valid option is always displayed when the activity is finished, even if another valid option was entered (useful for natural spelling exercises). Applets can now handle project installer scripts (files with extension ".jclic.inst"). This allows to perform "one-click" installations of remote JClic projects without using Java WebStart. To use this feature, edit your project with JClicAuthor, generate the installer script (Menu "Tools-Create project installer...") and generate the applet ("Tools - Create web page..."). Then edit the "index.htm" file created in the last step, find the line that starts with "writePlugin" and change the project's file name ("yourproject.jclic.zip") by the installer one ("yourproject.jclic.inst"). New translation system, hosted in Launchpad.net, and new translations: Basque, Greek, Danish and Turkish. Changes in 0.2.0.4 (11-Jun-2008) --------------------------------------------------------------------------------------- This is a maintenance release. Added translations to new languages: Italian (full) and Russian (not yet finished) JClicAuthor can now run as an applet. Tha file dist/jclic/author.html contains an example of this modality. Changes in 0.2.0.5 (16-Jun-2008) --------------------------------------------------------------------------------------- Updated Basque and Russian translations Changes in 0.2.0.6 (25-Feb-2009) --------------------------------------------------------------------------------------- New and upgraded translations Support for ISO-639-2 three-letter language codes, like Asturian (ast). Now this languages can be declared in src/util/edu/xtec/util/Messages.java in order to be listed in JClic settings dialog. Initial implementation of new accessibility features that make use of java.awt.Robot New button "Clear text styles" in JClic Author, to facilitate the cleaning of manually applied character attributes Unified base domain of external URLs to "clic.xtec.cat" instead of "clic.xtec.net". In the past, we have a merge of both. Changed the behavior of links of type "Go to activity". Now this links will preserve the user's navigation history, allowing to return and go back. Development tools: Forms are now edited with NetBeans 6.5 ReportServer uses now the server's date and time to store session data, instead of the one reported by clients. Windows installer: now in 14 languages, built with NSIS-Unicode Changes in 0.2.1.0 (25-Jan-2010) --------------------------------------------------------------------------------------- New and updated translations Windows installer: Added the parameter "-Xmx256m" into the command line of the JClic Author shortcut. Java WebStart: Added the parameter "max-heap-size=256m" to the JClic Author JNLP script. JClic AUthor: Memory management has been improved, specially in JClic AUthor, to avoid unexpected crashes. Now the java.awt.Image objects stored in the MediaBag are often cleaned, and reloaded only when needed. JClic player and Applet have also improved memory check and garbage collection. Fixed bug 129-326: Arabic and other right-to-left writting languages are now rended correctly. JClic Author: Large images can be automatically scaled-down when imported into the media library. The maximum size is set by default to 800 x 600 pixels, but this setting can be changed in user's preferences. JClic Author: The cell properties editor allows to directly import images and other files into the media library (improvement suggested by Camille Manoury) JClic Author: When creating new activities, prompt again errors like empty or repeated name (improvement suggested by Camille Manoury) jclic-0.2.1.0.orig/ChangeLog0000644000175000017500000015060711377161311012377 0ustar 2010-01-25 Francesc Busquets * i18n/fromLaunchpad/build.xml: Corrected a bug in translations. Colons (":") were often replaced by slash-colon sequences ("/:"). * src/author/edu/xtec/jclic/AuthorSingleFrame.java * src/core/edu/xtec/jclic/project/JClicProject.java: More improvements in memory management. 2010-01-15 Francesc Busquets * CHANGES.txt * src/author/edu/xtec/jclic/ActivityEditorPanel.form * src/author/edu/xtec/jclic/ActivityEditorPanel.java * src/author/edu/xtec/jclic/bags/ActivityBagEditor.java * src/author/edu/xtec/jclic/bags/MediaBagEditor.java * src/author/edu/xtec/jclic/bags/MediaBagElementEditorPanel.form * src/author/edu/xtec/jclic/bags/MediaBagElementEditorPanel.java * src/author/edu/xtec/jclic/bags/MediaBagSelector.form * src/author/edu/xtec/jclic/bags/MediaBagSelector.java * src/author/edu/xtec/jclic/bags/MediaPreviewPanel.java * src/core/edu/xtec/jclic/bags/MediaBagElement.java * src/core/edu/xtec/jclic/misc/Utils.java * src/core/edu/xtec/jclic/Player.java * src/utilities/edu/xtec/util/Messages.java * src/utilities/edu/xtec/util/StreamIO.java: Miscellaneous improvements like the ability to import media files when editing a cell. 2010-01-13 Francesc Busquets * CHANGES.txt * dist/jclic/jclicplugin.js * dist/jclic/readme.txt * dist/jclic/llegiume.txt * dist/jclic/leeme.txt * project.properties: Preparing version 0.2.1.0 * dist/jnlp/author.jnlp * dist/jnlp/install.jnlp * dist/jnlp/player.jnlp * dist/jnlp/reportServer.jnlp * instal/setup.nsi: Launch JClic Author with the parameter -Xmx256m * src/author/edu/xtec/jclic/ActivityEditorPanel.form * src/author/edu/xtec/jclic/ActivityEditorPanel.java * src/author/edu/xtec/jclic/AuthorSettingsDlg.form * src/author/edu/xtec/jclic/AuthorSettingsDlg.java * src/author/edu/xtec/jclic/AuthorSettings.java * src/author/edu/xtec/jclic/bags/MediaBagEditor.java * src/author/edu/xtec/jclic/bags/MediaBagElementEditor.java * src/author/edu/xtec/jclic/bags/MediaBagMultiEditorPanel.form * src/author/edu/xtec/jclic/bags/MediaBagMultiEditorPanel.java * src/author/edu/xtec/jclic/bags/MediaBagSelector.java * src/author/edu/xtec/jclic/project/JClicProjectEditor.java * src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties * src/author/edu/xtec/resources/messages/AuthorMessages_es.properties * src/author/edu/xtec/resources/messages/AuthorMessages.properties * src/core/edu/xtec/jclic/bags/MediaBagElement.java * src/core/edu/xtec/jclic/bags/MediaBag.java * src/core/edu/xtec/jclic/misc/Utils.java * src/core/edu/xtec/jclic/Player.java * src/core/edu/xtec/jclic/project/JClicProject.java * src/utilities/edu/xtec/util/StrUtils.java: Improvements in memory management and garbage collection. Large images can be automatically resized when imported into the media library of JClic Author 2009-12-23 Francesc Busquets * lib/servlet-api/src/javax/servlet/ServletContextEvent.java * lib/servlet-api/src/javax/servlet/ServletContextListener.java * extensions/dbconn/src/edu/xtec/util/db/ConnectionBeanProvider.java: * src/report/reportServlets/edu/xtec/jclic/report/rp/ReportsRequestProcessor.java * src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/ContextParamsReader.java * src/report/webApp/WEB-INF/web.xml: New methods for passing settings to servlets: by "context-param" entries in web.xml, and by key-value fields in the database * src/core/edu/xtec/jclic/boxes/ActiveBox.java: Corrected bug 321 - Bad rendring in right-to-left (arabic, hebrew...) texts * src/utilities/edu/xtec/util/Options.java * src/core/edu/xtec/jclic/media/CheckMediaSystem.java: Correction for Mac OS-X SnowLeopard - Avoid QuickTime with 64-bit java * project.properties: Preparing for new version 0.2.1.0 2009-03-03 Francesc Busquets * dist/jnlp/install.jnlp * dist/jnlp/author.jnlp: Preparing new version 0.2.0.6 * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/author/edu/xtec/resources/messages/AuthorMessages_it.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties: Updated translations. 2009-02-25 Francesc Busquets * dist/jclic/jclicplugin.js * dist/jnlp/player.jnlp * dist/jnlp/install.jnlp * dist/jnlp/author.jnlp * dist/jnlp/reportServer.jnlp: * instal/build.xml * instal/setup.nsi: Preparing new version 0.2.0.6 * src/author/edu/xtec/jclic/activities/text/TextActivityBaseEditor.java * src/activities/edu/xtec/jclic/activities/text/TextActivityBase.java * src/activities/edu/xtec/jclic/activities/text/TextActivityDocument.java * src/author/edu/xtec/jclic/activities/text/TextActivityEditorTextPanel.form * src/author/edu/xtec/jclic/activities/text/TextActivityEditorTextPanel.java * src/author/edu/xtec/resources/icons/doc_styles_clear.gif * src/author/edu/xtec/resources/icons/doc_styles.gif: New button "Clear text style" in JClic Author * src/author/edu/xtec/resources/messages/AuthorMessages_ar.properties * src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties * src/author/edu/xtec/resources/messages/AuthorMessages_de.properties * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/author/edu/xtec/resources/messages/AuthorMessages_es.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties * src/author/edu/xtec/resources/messages/AuthorMessages_gl.properties * src/author/edu/xtec/resources/messages/AuthorMessages_it.properties * src/author/edu/xtec/resources/messages/AuthorMessages_nl.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt_BR.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties * src/author/edu/xtec/resources/messages/AuthorMessages.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt_BR.properties * src/extra/edu/xtec/resources/activities/listactivities_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt_BR.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_eu.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt_BR.properties: New and updated translations * src/author/edu/xtec/jclic/AuthorSettings.java * src/core/edu/xtec/resources/about/about.html * src/core/edu/xtec/resources/messages/checkmedia_ca.html * src/core/edu/xtec/resources/messages/checkmedia_de.html * src/core/edu/xtec/resources/messages/checkmedia_es.html * src/core/edu/xtec/resources/messages/checkmedia_gl.html * src/core/edu/xtec/resources/messages/checkmedia_pt_BR.html * src/core/edu/xtec/resources/messages/checkmedia_pt.html * src/core/edu/xtec/resources/messages/checkmedia.html * src/jclicApplet/JClicApplet.html * src/utilities/edu/xtec/resources/messages/checksignature_ca.html * src/utilities/edu/xtec/resources/messages/checksignature_de.html * src/utilities/edu/xtec/resources/messages/checksignature_es.html * src/utilities/edu/xtec/resources/messages/checksignature_gl.html * src/utilities/edu/xtec/resources/messages/checksignature_pt_BR.html * src/utilities/edu/xtec/resources/messages/checksignature_pt.html * src/utilities/edu/xtec/resources/messages/checksignature.html: Unifying domain references to clic.xtec.cat * src/core/edu/xtec/jclic/Player.java: Changed the behavior of internal links between activities * src/player/edu/xtec/jclic/report/BasicJDBCBridge.java * src/report/reportServlets/edu/xtec/jclic/jclicReports.properties * src/report/reportServlets/edu/xtec/jclic/report/rp/JClicReportService.java: Save server date and time in reports, instead of the client one. 2009-02-15 Francesc Busquets * dist/jnlp/player.jnlp * dist/jnlp/author.jnlp * dist/jnlp/reportServer.jnlp * dist/jclic/jclicplugin.js: Preparing new version 0.2.6 * dist/jclic/icons/favicon.ico * dist/jclic/author.html: Improved author applet * src/author/edu/xtec/resources/messages/AuthorMessages_ar.properties * src/author/edu/xtec/resources/messages/AuthorMessages_de.properties * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties * src/author/edu/xtec/resources/messages/AuthorMessages_gl.properties * src/author/edu/xtec/resources/messages/AuthorMessages_nl.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt_BR.properties * src/core/edu/xtec/resources/messages/JClicMessages_ast.properties * src/core/edu/xtec/resources/messages/JClicMessages_ca.properties * src/core/edu/xtec/resources/messages/JClicMessages_da.properties * src/core/edu/xtec/resources/messages/JClicMessages_de.properties * src/core/edu/xtec/resources/messages/JClicMessages_el.properties * src/core/edu/xtec/resources/messages/JClicMessages_es.properties * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties * src/core/edu/xtec/resources/messages/JClicMessages_he.properties * src/core/edu/xtec/resources/messages/JClicMessages_it.properties * src/core/edu/xtec/resources/messages/JClicMessages_nl.properties * src/core/edu/xtec/resources/messages/JClicMessages_wo.properties * src/extra/edu/xtec/resources/activities/listactivities_nl.properties * src/extra/edu/xtec/resources/shapers/listshapers_fr.properties * src/extra/edu/xtec/resources/shapers/listshapers_nl.properties * src/player/edu/xtec/resources/messages/PlayerMessages_ast.properties * src/player/edu/xtec/resources/messages/PlayerMessages_de.properties * src/player/edu/xtec/resources/messages/PlayerMessages_el.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_nl.properties * src/player/edu/xtec/resources/messages/PlayerMessages_ru.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_de.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_nl.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt_BR.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_nl.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt_BR.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_de.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_nl.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt_BR.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_el.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_nl.properties: New and improved translations * src/utilities/edu/xtec/util/Messages.java: Added support for ISO-639-2 three-letter language codes, for languages not in ISO-639-1 like Asturian (ast). * src/activities/edu/xtec/jclic/activities/puzzles/DoublePuzzle.java * src/core/edu/xtec/jclic/boxes/BoxBag.java * src/core/edu/xtec/jclic/Player.java * src/interface/edu/xtec/jclic/PlayStation.java * src/core/edu/xtec/jclic/Activity.java * src/core/edu/xtec/jclic/boxes/AbstractBox.java: Initial implementation of new accessibility features that make use of java.awt.Robot * src/player/edu/xtec/jclic/PlayerSettings.java: Changed default llok and feel to "default", instead of "System". * src/report/webApp/META-INF/context.xml * src/report/webApp/WEB-INF/sun-web.xml: new files created for compatibility with GlassFish 2008-06-16 Francesc Busquets * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_ru.properties * src/extra/edu/xtec/resources/activities/listactivities_eu.properties * src/extra/edu/xtec/resources/shapers/listshapers_eu.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_eu.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_el.properties * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * dist/jclic/jclicplugin.js * dist/jnlp/player.jnlp * dist/jnlp/install.jnlp * dist/jnlp/author.jnlp * dist/jnlp/reportServer.jnlp: Updated translations 2008-06-11 Francesc Busquets * src/activities/edu/xtec/jclic/automation/tagreplace/TagReplace.java * src/author/edu/xtec/jclic/AuthorSingleFrame.java * src/core/edu/xtec/jclic/Activity.java * src/core/edu/xtec/jclic/automation/AutoContentProvider.java: Modifications to solve bug 509 * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties: Updated translations 2008-06-06 Francesc Busquets * instal/setup.nsi * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_it.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ru.properties: New and updated translations 2008-05-29 Francesc Busquets * i18n/fromLaunchpad/build.xml: Adapted to new launchpad directory names * multiple po files: updated translations 2008-05-28 Francesc Busquets * build.xml: Corrected a dependency error in Ant targets "core" and "qt61" * dist/jclic/jclicplugin.js * dist/jclic/author.html * src/author/JClicAuthorApplet.java: New JClicAuthor applet * src/extra/edu/xtec/resources/shapers/listshapers_it.properties * src/player/edu/xtec/resources/messages/PlayerMessages_it.properties * src/author/edu/xtec/resources/messages/AuthorMessages_it.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_it.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_it.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_it.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_it.properties * src/core/edu/xtec/resources/messages/JClicMessages_it.properties * src/extra/edu/xtec/resources/activities/listactivities_it.properties * src/core/edu/xtec/resources/messages/JClicMessages_ru.properties * src/player/edu/xtec/resources/messages/PlayerMessages_ru.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_ru.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_eu.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_el.properties * src/extra/edu/xtec/resources/activities/listactivities_el.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_gl.properties * src/core/edu/xtec/resources/messages/JClicMessages_da.properties: Updated and new translations 2008-04-02 Francesc Busquets * dist/jclic/jclicplugin.js * dist/jnlp/player.jnlp * dist/jnlp/author.jnlp * dist/jnlp/manager.jnlp * dist/jnlp/install.jnlp * dist/jnlp/reportServer.jnlp * project.properties: Preparing new version 0.2.0.3 2008-04-02 Francesc Busquets * src/utilities/edu/xtec/util/FileChooserForFiles.java * src/utilities/edu/xtec/util/FontCheck.java * src/core/edu/xtec/jclic/media/ByteDataSource.java * src/core/edu/xtec/jclic/media/CheckMediaSystem.java * build.xml: Corrected a problem with non catcheable exceptions in applets 2008-04-02 Francesc Busquets * src/core/edu/xtec/resources/messages/JClicMessages_tr.properties * src/core/edu/xtec/resources/messages/JClicMessages_da.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties: Updated translations 2008-04-01 Francesc Busquets * src/core/edu/xtec/resources/about/credits.html * src/core/edu/xtec/resources/about/about.html * src/core/edu/xtec/jclic/skins/AboutWindow.java * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt_BR.properties * src/core/edu/xtec/resources/messages/JClicMessages_tr.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_gl.properties * src/core/edu/xtec/resources/messages/JClicMessages_da.properties * src/core/edu/xtec/resources/messages/JClicMessages_el.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_es.properties * src/core/edu/xtec/resources/messages/JClicMessages.properties * src/core/edu/xtec/resources/messages/JClicMessages_de.properties * src/core/edu/xtec/resources/messages/JClicMessages_ca.properties * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties: Updated translations 2008-03-26 Francesc Busquets * instal/build.xml * instal/setup.nsi * build.xml * src/jclicApplet/JClicApplet.java * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_da.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_tr.properties * src/extra/edu/xtec/resources/activities/listactivities_el.properties * src/extra/edu/xtec/resources/activities/listactivities_pt.properties * src/extra/edu/xtec/resources/shapers/listshapers_el.properties * src/extra/edu/xtec/resources/shapers/listshapers_pt.properties * src/player/edu/xtec/resources/messages/PlayerMessages_el.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_tr.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_fr.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_tr.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_ar.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_eu.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_tr.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_eu.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt.properties: Updated translations, and a new applet feature: now they can handle also project installers (files ".jclic.inst"). 2008-03-07 Francesc Busquets * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.properties * src/core/edu/xtec/resources/messages/JClicMessages_eu.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_eu.properties * src/player/edu/xtec/resources/messages/PlayerMessages_eu.properties * src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_eu.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.properties: New Basque translation, and small changes in other languages. 2008-02-29 Francesc Busquets * src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties * src/author/edu/xtec/resources/messages/AuthorMessages_de.properties * src/author/edu/xtec/resources/messages/AuthorMessages_el.properties * src/author/edu/xtec/resources/messages/AuthorMessages_es.properties * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties * src/author/edu/xtec/resources/messages/AuthorMessages_gl.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt_BR.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_ca.properties * src/core/edu/xtec/resources/messages/JClicMessages_da.properties * src/core/edu/xtec/resources/messages/JClicMessages_de.properties * src/core/edu/xtec/resources/messages/JClicMessages_el.properties * src/core/edu/xtec/resources/messages/JClicMessages_es.properties * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties * src/core/edu/xtec/resources/messages/JClicMessages_gl.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt_BR.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/extra/edu/xtec/resources/activities/listactivities_ca.properties * src/extra/edu/xtec/resources/activities/listactivities_de.properties * src/extra/edu/xtec/resources/activities/listactivities_el.properties * src/extra/edu/xtec/resources/activities/listactivities_fr.properties * src/extra/edu/xtec/resources/activities/listactivities_gl.properties * src/extra/edu/xtec/resources/activities/listactivities_pt_BR.properties * src/extra/edu/xtec/resources/shapers/listshapers_de.properties * src/extra/edu/xtec/resources/shapers/listshapers_el.properties * src/extra/edu/xtec/resources/shapers/listshapers_gl.properties * src/extra/edu/xtec/resources/shapers/listshapers_pt_BR.properties * src/player/edu/xtec/resources/messages/PlayerMessages_ca.properties * src/player/edu/xtec/resources/messages/PlayerMessages_de.properties * src/player/edu/xtec/resources/messages/PlayerMessages_el.properties * src/player/edu/xtec/resources/messages/PlayerMessages_es.properties * src/player/edu/xtec/resources/messages/PlayerMessages_fr.properties * src/player/edu/xtec/resources/messages/PlayerMessages_gl.properties * src/player/edu/xtec/resources/messages/PlayerMessages_pt_BR.properties * src/player/edu/xtec/resources/messages/PlayerMessages_pt.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ca.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_de.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_el.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_es.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_fr.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_gl.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_de.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_el.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_es.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_fr.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_gl.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_ca.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_de.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_el.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_es.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_fr.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_gl.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt_BR.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_ca.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_da.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_de.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_el.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_fr.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_gl.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt_BR.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt.properties * i18n/README * i18n/customAntTasks/src/edu/xtec/ant/Prop2Po.java * i18n/customAntTasks/src/edu/xtec/ant/Po2Prop.java * i18n/customAntTasks/build.xml * i18n/toLaunchpad/build.xml * i18n/fromLaunchpad/build.xml * ... and a lot of i18n/fromLaunchpad/po/*_*.po files not listed here: Implemented a new system in i18n/ to synchronize the .properties files with the .po files used in the Launchpad translation service. 2008-02-06 Francesc Busquets * src/author/edu/xtec/resources/messages/AuthorMessages.properties * src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties * src/author/edu/xtec/resources/messages/AuthorMessages_de.properties * src/author/edu/xtec/resources/messages/AuthorMessages_es.properties * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties * src/author/edu/xtec/resources/messages/AuthorMessages_gl.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt_BR.properties * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages.properties * src/core/edu/xtec/resources/messages/JClicMessages_de.properties * src/core/edu/xtec/resources/messages/JClicMessages_es.properties * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties * src/core/edu/xtec/resources/messages/JClicMessages_gl.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt_BR.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_ca.properties * src/extra/edu/xtec/resources/activities/listactivities.properties * src/extra/edu/xtec/resources/activities/listactivities_ca.properties * src/extra/edu/xtec/resources/activities/listactivities_de.properties * src/extra/edu/xtec/resources/activities/listactivities_es.properties * src/extra/edu/xtec/resources/activities/listactivities_fr.properties * src/extra/edu/xtec/resources/activities/listactivities_gl.properties * src/extra/edu/xtec/resources/activities/listactivities_pt_BR.properties * src/extra/edu/xtec/resources/automation/contentproviders.properties * src/extra/edu/xtec/resources/automation/contentproviders_ca.properties * src/extra/edu/xtec/resources/automation/contentproviders_de.properties * src/extra/edu/xtec/resources/automation/contentproviders_es.properties * src/extra/edu/xtec/resources/automation/contentproviders_gl.properties * src/extra/edu/xtec/resources/automation/contentproviders_pt_BR.properties * src/extra/edu/xtec/resources/shapers/listshapers.properties * src/extra/edu/xtec/resources/shapers/listshapers_ca.properties * src/extra/edu/xtec/resources/shapers/listshapers_de.properties * src/extra/edu/xtec/resources/shapers/listshapers_es.properties * src/extra/edu/xtec/resources/shapers/listshapers_gl.properties * src/extra/edu/xtec/resources/shapers/listshapers_pt_BR.properties * src/player/edu/xtec/resources/messages/PlayerMessages.properties * src/player/edu/xtec/resources/messages/PlayerMessages_ca.properties * src/player/edu/xtec/resources/messages/PlayerMessages_de.properties * src/player/edu/xtec/resources/messages/PlayerMessages_es.properties * src/player/edu/xtec/resources/messages/PlayerMessages_fr.properties * src/player/edu/xtec/resources/messages/PlayerMessages_gl.properties * src/player/edu/xtec/resources/messages/PlayerMessages_pt_BR.properties * src/player/edu/xtec/resources/messages/PlayerMessages_pt.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ca.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_de.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_es.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_fr.properties * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_gl.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ca.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_de.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_es.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_fr.properties * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_gl.properties * src/utilities/edu/xtec/resources/messages/BasicMessages.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_ca.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_de.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_es.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_fr.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_gl.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt_BR.properties * src/utilities/edu/xtec/resources/messages/BasicMessages_pt.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_ca.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_de.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_es.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_fr.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_gl.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt_BR.properties * src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt.properties * src/author/edu/xtec/jclic/AuthorSingleFrame.java * src/interface/edu/xtec/jclic/Constants.java * src/core/edu/xtec/jclic/Player.java * src/jclicApplet/JClicApplet.java * src/jclicPlayer/JClicInstaller.java * src/player/edu/xtec/jclic/SingleInstanceJFrame.java * src/report/reportServer/ReportServer.form * src/report/reportServer/ReportServer.java * src/core/edu/xtec/resources/commonSettings.properties: The encoding of all .properties files unified with the "native2ascii" tool, in order to make if compatible with "prop2po". Also, config expressions (like internal paths to resources or version numbers) have been removed from language files and placed in the new file commonSettings.properties.  2008-01-26 Francesc Busquets * src/core/edu/xtec/jclic/Player.java * removed file src/extra/edu/xtec/resources/fonts/arial2.ttf: Removed clone of arial font, not needed. 2008-01-23 Francesc Busquets * dist/jclic/jclicplugin.js * dist/jclic/leeme.txt * dist/jclic/readme.txt * dist/jclic/llegiume.txt * dist/jnlp/reportServer.jnlp * dist/jnlp/player.jnlp * dist/jnlp/author.jnlp * dist/jnlp/install.jnlp * instal/setup.nsi * instal/build.xml * deploy/reports/xml/application.xml * CHANGES.txt * HACKING.txt * INSTALL.txt * build.xml: The packaging of JClic has been simplified. Now only three JAR files are created: jclic.jar, jclicauthor.jar and jclicreports.jar 2008-01-23 Francesc Busquets * src/report/reportServlets/edu/xtec/jclic/report/rp/Img.java * removed directory src/report/reportServlets/edu/xtec/util/ranab: The GIF Encoder library, by Rana Bhattacharyya, has been suppressed. The graphics of reports are nou generated by means of the ImageIO API. 2008-01-23 Francesc Busquets * added directory extensions/img/image4j * src/core/edu/xtec/jclic/misc/Bmp.java * src/core/edu/xtec/resources/messages/JClicMessages_pt_BR.properties * src/core/edu/xtec/jclic/bags/MediaBagElement.java * src/core/edu/xtec/resources/messages/JClicMessages_gl.properties * src/core/edu/xtec/resources/messages/JClicMessages_es.properties * src/core/edu/xtec/resources/messages/JClicMessages_de.properties * src/core/edu/xtec/resources/messages/JClicMessages.properties * src/core/edu/xtec/resources/messages/JClicMessages_pt.properties * src/core/edu/xtec/resources/messages/JClicMessages_ca.properties * src/core/edu/xtec/resources/messages/JClicMessages_fr.properties * src/core/edu/xtec/resources/about/otherCredits.html * src/core/edu/xtec/jclic/misc/Utils.java * CREDITS.txt: The class used to import BMP files, by J.Osbaldeston, has been replaced by the LGPL library image4j (http://image4j.sourceforge.net). Now ICO files are also recognized by JClic. 2008-01-23 Francesc Busquets * added directory extensions/img/image4j * src/core/edu/xtec/jclic/misc/Bmp.java: The class used to import BMP files, by J.Osbaldeston, has been replaced by the LGPL library image4j (http://image4j.sourceforge.net) 2008-01-14 Francesc Busquets * removed dir lib/servlet-api * added new directory tree lib/servlet-api: The implementation of JSR-154 (Servlet 2.4) taked from the GlassFish project has been substitued by a partial, empty stub implementation of the classes and interfaces needed at compile-time by JClic reports server. 2008-01-14 Francesc Busquets * removed dir extensions/jmf * dist/jclic/jclicplugin.js * dist/jnlp/reportServer.jnlp * dist/jnlp/jclic.jnlp * dist/jnlp/install.jnlp * dist/jnlp/author.jnlp * dist/jnlp/player.jnlp * instal/setup.nsi * instal/build.xml * CREDITS.txt * HACKING.txt * CHANGES.txt * src/core/edu/xtec/resources/about/otherCredits.html * build.xml: The stub implementations of some JMF codecs in extensions/jmf has been removed to avoid copyright conflicts. 2007-12-29 Francesc Busquets * added file testcert-gkr.keystore * added file testcert-gkr.cer * build.xml: The GCJ compiler and tools use keystores in GKR format, different from Sun's JKS format. The Ant script build script dinamically loads the appropiate keystore for the compiler currently used (Sun JDK or GNU gcj) 2007-12-27 Francesc Busquets * removed dir extensions/xml/jdom-1.0/lib * build.xml: Suppressed the binary JAR files in the jdom-1.0/lib directory. JDOM is now compiled without the X-Path functions, not needed by JClic. 2007-12-10 Francesc Busquets * src/core/edu/xtec/jclic/media/JMFActiveMediaPlayer.java * src/qt61/edu/xtec/jclic/media/QT61AudioPlayer.java * src/core/edu/xtec/jclic/media/JMFAudioPlayer.java * src/qt61/edu/xtec/jclic/media/QT61ActiveMediaPlayer.java * src/qt61/edu/xtec/jclic/media/QT61AudioBuffer.java * src/qt61/edu/xtec/jclic/media/QT61Tools.java * src/core/edu/xtec/jclic/media/ByteDataSource.java: Minor changes in the source code, replacing "include" statements with full qualified names. 2007-12-10 Francesc Busquets * removed file lib/QTJava.zip * added directory tree lib/qtjava-api * removed file lib/jclicjmf.jar * added directory tree lib/jmf-api * removed file lib/servlet.jar * added dirctory tree lib/servlet-api: Changes made in order to have a clean and full-compilable source code without external non-free dependencies. 2007-12-10 Francesc Busquets * extensions/soundspi/tritonus/src/org/tritonus/share/sampled/mixer/TClip.java: Added the getLongFramePosition method in order to make it compliant with javax.sound.sampled.DataLine 2007-11-28 Francesc Busquets * extensions/dbconn/build.xml * build.xml: File extensions/dbconn/lib/javax-sql-classes.zip is no longer needed since JClic compiles against Java 1.4 2007-11-27 Francesc Busquets * dist/jclic/jclicplugin.js * dist/jnlp/reportServer.jnlp * dist/jnlp/player.jnlp * dist/jnlp/author.jnlp * dist/jnlp/install.jnlp * dist/jnlp/jclic.jnlp * instal/build.xml * instal/setup.nsi * src/core/edu/xtec/jclic/media/CheckMediaSystem.java * src/core/edu/xtec/jclic/media/ActiveMediaPlayer.java * src/core/edu/xtec/jclic/media/EventSoundsElement.java * src/core/edu/xtec/jclic/skins/AboutWindow.java * build.xml * HACKING.txt: Support for QuickTime 6.0 has been supressed in JClic. Mac users can still make use of QuickTime for Java 6.1. 2007-11-27 Francesc Busquets * dist/jclic/jclicplugin.js * dist/jnlp/reportServer.jnlp * dist/jnlp/player.jnlp * dist/jnlp/author.jnlp * dist/jnlp/install.jnlp * dist/jnlp/jclic.jnlp * instal/build.xml * instal/setup.nsi * build.xml * HACKING.txt: The extension "intl.jar" has been supressed from JClic. This extension was a workaround for having the texts of the common Java dialog boxes translated to Catalan. Since Java is a free platform, this must be done in the Java source code. 2007-11-26 Francesc Busquets * src/extra/edu/xtec/resources/skins/mini.xml * src/extra/edu/xtec/resources/skins/mini.png * src/extra/edu/xtec/resources/skins/listskins.properties: Added a new skin called "Mini", suitable for embedding JClic projects in blogs and other web pages with small space available. 2007-11-23 Francesc Busquets * extensions/dbconn/build.xml * dist/jclic/jclicplugin.js * dist/jnlp/reportServer.jnlp * dist/jnlp/player.jnlp * dist/jnlp/author.jnlp * dist/jnlp/install.jnlp * dist/jnlp/jclic.jnlp * instal/build.xml * instal/setup.nsi * ant/customAntTasks/customAntTasks.jar * build.xml * HACKING.txt * INSTALL.txt * project.properties: The Java virtual machine required by JClic has been updated from 1.3.1 to 1.4. This allows to use JAXP and other XML libraries provided by the platform, so it's no longer necessary to build jclicxml.jar. JDOM 1.0, still necessary, is built now within the new file "jdom.jar". The directories extensions/xml/jaxp and extensions/xml/crimson have been deleted. 2007-04-30 Francesc Busquets * src/activities/edu/xtec/jclic/beans/ColorButton.java: * src/activities/edu/xtec/jclic/beans/AlphaColorChooserPanel.java: * src/activities/edu/xtec/jclic/beans/AlphaColorChooserPanel.form: Corrected an irregular behavior of colorButton, that returns a new color even when the dialog window is closed. 2007-04-29 Francesc Busquets * src/activities/edu/xtec/jclic/activities/text/WrittenAnswer.java: The marker is drawed only when there are more than one cell to solve. In multiple-answer mode, the first valid option is always displayed when the activity is finished, even if another valid option was entered (useful for natural spelling exercises). 2007-03-30 Francesc Busquets * src/extra/edu/xtec/resources/skins/listskins.properties * src/extra/edu/xtec/resources/skins/empty.png * src/extra/edu/xtec/resources/skins/empty.xml: Added a new skin, named "Empty", without buttons, counters nor message boxes. 2007-02-23 Francesc Busquets * src/author/edu/xtec/jclic/AuthorSingleFrame.java * src/core/edu/xtec/jclic/PlayerHistory.java: Corrections and improvements to the reports system, in order to solve bug #41 (conditional jumps between sequence elements are not always working as expected) 2007-02-21 Francesc Busquets * src/core/edu/xtec/jclic/report/SessionReg.java: Corrected an error in the algorithm that computes the global score for a session 2006-12-18 Francesc Busquets * src/author/edu/xtec/jclic/AuthorSingleFrame.java: Corrected a problem with the scrolling of JList when importing activities 2006-10-24 Francesc Busquets * src/core/edu/xtec/jclic/automation/AutoContentProvider.java: Corrected a bug that caused recursive calls into "init(ResourceBridge,FileSystem)" 2006-10-23 Francesc Busquets * src/interface/edu/xtec/jclic/Constants.java * src/core/edu/xtec/jclic/Activity.java * src/core/edu/xtec/jclic/automation/AutoContentProvider.java * src/core/edu/xtec/jclic/misc/Utils.java * src/core/edu/xtec/resources/messages/JClicMessages.properties * src/core/edu/xtec/resources/messages/JClicMessages_ca.properties * src/core/edu/xtec/resources/messages/JClicMessages_es.properties * src/activities/edu/xtec/jclic/automation/tagreplace/TagReplace.java * src/activities/edu/xtec/jclic/automation/TextActivityContentKit.java * src/activities/edu/xtec/jclic/activities/text/TextActivityBase.java * src/activities/edu/xtec/jclic/activities/text/TextTarget.java * src/activities/edu/xtec/jclic/activities/textGrid/WordSearch.java * src/activities/edu/xtec/jclic/activities/textGrid/CrossWord.java: * src/extra/edu/xtec/resources/automation/contentproviders.properties * src/extra/edu/xtec/resources/automation/contentproviders_ca.properties * src/extra/edu/xtec/resources/automation/contentproviders_es.properties * src/author/edu/xtec/jclic/automation/AutoContentProviderEditor.java * src/author/edu/xtec/jclic/automation/tagreplace/TagReplaceEditor.java * src/author/edu/xtec/jclic/automation/tagreplace/TagReplaceEditorPanel.java * src/author/edu/xtec/jclic/automation/tagreplace/TagReplaceEditorPanel.form * src/author/edu/xtec/resources/messages/AuthorMessages.properties * src/author/edu/xtec/resources/messages/AuthorMessages_es.properties * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties * src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties: Implementation of TagReplace, a new automation module that allows to substitute tags with expressions indicated on text files or URLs. 2006-10-23 Francesc Busquets * src/author/edu/xtec/jclic/AuthorSingleFrame.java * src/author/edu/xtec/resources/icons/import_act.png: Customized icon and messages for import activities. 2006-09-27 Francesc Busquets * src/author/edu/xtec/jclic/AuthorSingleFrame.java: * src/core/edu/xtec/jclic/fileSystem/FileSystem.java: Create parent directories for new files if they don't exists. 2006-07-28 Francesc Busquets * build.xml: Converted CR+LF to LF. 2006-07-28 Francesc Busquets * src/author/edu/xtec/jclic/AuthorSingleFrame.java: * src/author/edu/xtec/jclic/bags/MediaBagEditor.java: * src/author/edu/xtec/resources/messages/AuthorMessages.properties * src/core/edu/xtec/jclic/project/JClicProject.java: Added the ability to import activities from another project. 2006-07-28 Francesc Busquets * src/core/edu/xtec/jclic/fileSystem/FileSystem.java: Simplified and corrected the file name character conversion tables. 2006-07-28 Francesc Busquets * src/core/edu/xtec/jclic/report/TCPReporter.java: * src/report/reportServer/edu/xtec/jclic/report/HTTPReportServer.java: * src/report/reportServer/edu/xtec/jclic/report/HTTPRequest.java: Modified the 'content-type' header of report requests. 2006-07-28 Francesc Busquets * src/player/edu/xtec/jclic/PlayerSettingsDlg.java: * src/player/edu/xtec/jclic/PlayerSettingsDlg.form: Added 'country' and 'variant' options to language selection. 2006-07-28 Francesc Busquets * src/shapers/edu/xtec/jclic/shapers/EditableLine2D.java: * src/shapers/edu/xtec/jclic/shapers/PolygonDrawPanel.java: * src/shapers/edu/xtec/jclic/shapers/EditableShape.java: * src/shapers/edu/xtec/jclic/shapers/EditableShapeConstants.java: * src/shapers/edu/xtec/jclic/shapers/EditableEllipse2D.java: * src/core/edu/xtec/jclic/shapers/Holes.java: * src/report/reportServlets/edu/xtec/jclic/report/rp/JClicReportService.java: * src/report/reportServlets/edu/xtec/jclic/report/rp/Basic.java: * src/report/reportServlets/edu/xtec/jclic/report/ReportServerJDBCBridge.java: * src/author/edu/xtec/jclic/bags/ActivityBagEditorPanel.java: * src/core/edu/xtec/jclic/clic3/Clic3.java: * src/utilities/edu/xtec/util/JDomUtility.java: * src/utilities/edu/xtec/util/Html.java: * src/activities/edu/xtec/jclic/activities/panels/Explore.java: * src/author/edu/xtec/jclic/boxes/ActiveBagContentControlPanel.java: Cleaning of commented code and translation of some Catalan comments to English. 2006-07-03 Francesc Busquets * build.xml: * HACKING.txt: Corrected some mistakes in build.xml that make it inoperable. Also added some explanations about how to prepare the filesystems in order to open the project with NetBeans. 2006-05-24 Francesc Busquets * instal/setup.nsi: Solved bug #46 (Windows installer create icons only for the current user). Added "SetShellVarContext all" to the installer script, so the installer defaults to create shortcuts and icons for all users. 2006-05-24 Francesc Busquets * build.xml: * instal/build.xml: * instal/setup.nsi: * src/author/edu/xtec/resources/messages/AuthorMessages.properties: * src/core/edu/xtec/resources/messages/JClicMessages.properties: * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages.properties: * CHANGES.txt: * COPYING.txt: * CREDITS.txt: * HACKING.txt: * INSTALL.txt: * project.properties: Attending feature request #69 (split readme.txt), five files have been created (CHANGES.txt, COPYING.txt, CREDITS.txt, HACKING.txt and INSTALL.txt). Also, the "version" strings displayed in credits has been moved to the external file "project.properties". 2006-05-22 Francesc Busquets * src/core/edu/xtec/jclic/report/Reporter.java: * src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages.properties: * src/report/reportServlets/edu/xtec/jclic/report/ReportServerJDBCBridge.java: * src/report/reportServlets/edu/xtec/jclic/report/rp/UserAdmin.java: * src/report/reportServlets/edu/xtec/resources/messages/reportMessages.properties: * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ca.properties: * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_de.properties: * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_es.properties: * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_fr.properties: * src/report/reportServlets/edu/xtec/resources/messages/reportMessages_gl.properties: Solved bug #103. The "edit user" and "create user" forms have been modified, so now the password can be set in JClic Reports when creating a new user, and modified or erased later. 2006-05-19 Francesc Busquets * src/report/reportServer/ReportServerSettingsDlg.java: * src/report/reportServer/ReportServerSettingsDlg.java: Solved a problem with unitialized settings that cause null pointer exception. 2006-04-20 Francesc Busquets * src/author/edu/xtec/jclic/bags/ActivityBagElementEditor.java: * src/author/edu/xtec/jclic/project/JclicProjectEditor.java: * src/core/edu/xtec/jclic/bags/ActivityBag.java: * src/core/edu/xtec/jclic/media/EventSounds.java: * src/interface/edu/xtec/jclic/Constants.java: Bug #83 solved. Now custom event sounds are correctly handled by JClic author, both when specified for the whole project or for a specific activity. In addition, changes to the project global skin are also shown in the test activity window. 2006-04-13 Francesc Busquets * src/author/edu/xtec/resources/messages/AuthorMessages.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_pt.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_pt_BR.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_gl.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_fr.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_es.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_de.properties: * src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties: * src/author/edu/xtec/jclic/boxes/ActiveBagContentEditor.form: * src/author/edu/xtec/jclic/bags/ConditionalJumpPanel.java: * src/author/edu/xtec/jclic/bags/ConditionalJumpPanel.form: * src/author/edu/xtec/jclic/ActivityEditorOptionsPanel.java: * src/author/edu/xtec/jclic/ActivityEditorOptionsPanel.form: Bugs #51, #52 and #42 solved. Now it's possible to set/unset the boolean properties dragCells and useOrder from JClic author. The check boxes are in the "Options" tab of the Activity editor. Changes in the parameters of conditional jumps (in "sequences" tab of JClic author) are now retained. 2006-04-10 Francesc Busquets * src/author/edu/xtec/jclic/boxes/ActiveBagContentControlPanel.java: Bug #38 solved. Data loss when editing crosswords. It was caused by a cleanup of excessive cells, incorrectly applied to CrossWord activities. jclic-0.2.1.0.orig/HACKING.txt0000644000175000017500000001603711377161311012430 0ustar JClic: Authoring and playing system for educational activities ----------------------------------------------------------------------------- This file contains information about the internal structure of JClic and the organization of the source code. For compilation instructions, see the INSTALL file ----------------------------------------------------------------------------- Directories The source code of JClic is organized into the following directories: * src Contains the source code of the JClic modules. It is organized in several sub-directories: - activities JClic activities - author Code specific of the JClic author module - core Main classes of JClic - extra No Java code here: only miscellaneous resources - interface Main interfaces and constants - jclicApplet Code for the JClic applet - jclicPlayer Code for the JClic player module - player Code used by JClic player and JClic author - qt61 QuickTime 6.1 functions, used only in Mac OS X - report/reportServer The stand-alone JClic reports server - report/webApp The J2EE application release of the reports server - report/reportServlets Code common to both versions of the reports server - shapers The cell shape editor of JClic author - utilities Miscellaneous utilities * extensions Contains the code of several libraries and external tools needed to run JClic: - dbconn Implementation of three types of JDBC connections, used by JClic reports: single, pooled and JNDI-defined. - soundspi Classes used to play audio compressed in MP3 and OGG formats. Code from four external projects are used: ** JLayer (http://www.javazoom.net/javalayer/javalayer.html) ** JOrbis (http://www.jcraft.com/jorbis/) ** MP3SPI (http://www.javazoom.net/mp3spi/mp3spi.html) ** Tritonus (http://www.tritonus.org/) - xml Classes used to write, read and parse XML files: ** JDom (http://www.jdom.org) without XPath features. ** CustomJDom - Special XML outputter - img Libraries for graphics processing ** image4j (http://image4j.sourceforge.net) * lib External libraries needed to compile JClic: - jmf-api Java Media Framework API empty implementation, to be used only at compile time. (http://java.sun.com/products/java-media/jmf/) - qtjava-api QuickTime for Java empty implementation, to be used only at compile time. (http://developer.apple.com/quicktime/qtjava/) - servlet-api Needed to compile the J2EE version of JClic reports. Empty implementation, to be used only at compile time. (http://java.sun.com/products/servlet/reference/api) * deploy Contains the "applicaton.xml" file, used in the J2EE web application of JClic reports * dist This is the directory where the JAR files obtained as result of the build process are stored. It contains also some scripts, icons and JNLP (Java Network Launching Protocol) files. * instal This directory contains a script that generates the Windows installer of JClic using the Nullsoft Scriptable Install System (http://nsis.sourceforge.net). It contains also an Ant script that launches NSIS and creates a ZIP with all the files needed to run JClic in any Java-enabled system. * keystore This folder contains a key store with a test certificate, that can be used to sign the JAR files for test purposes. Please use your own certificate if you plan to distribute your own versions of the program. * xml XML Schema (XSD) and Document Type Definitions (DTD) corresponding to the documents used by JClic to store skins and projects. ----------------------------------------------------------------------------- Edit instructions: JClic was made using NetBeans, version 3.5 and 3.6. Version 3.6 is recommended. You can download this IDE from: http://www.netbeans.info/downloads/download.php?a=arch&p=2 Build JClic and copy the following files into the "lib" directory: dist/jclic/jdom.jar dist/jclic/dbconn.jar dist/jclic/soundspi.jar Launch NetBeans 3.6, create a new project and mount the following 17 filesystems from the directory containing the JClic source code: File-based filesystems: lib/jdom.jar lib/dbconn.jar lib/soundspi.jar Directory-based filesystems: lib/jmf-api src/activities src/author src/core src/extra src/interface src/jclicApplet src/jclicPlayer src/player src/shapers src/utilities src/report/reportServer src/report/reportServlets src/report/webApp After mounting the last filesystem, a new one will be automatically created: src/report/webApp/WEB-INF/classes The classes are distributed into different directories in order to allow the compilation of independent small JAR files. The JClic classes are organized into the following Java packages: / Main classes (JClicApplet, JClicPlayer, JClicInstaller, JClicAuthor and ReportServer) /edu/xtec/jclic Main JClic core classes and interfaces /edu/xtec/jclic/activities The JClic activities. Each group of similar activities has its own package: associations, memory, panels, puzzles, text and textGrid /edu/xtec/jclic/automation The classes that provide automatic contents to activities. One package is included here: "arith", for automatic mental arithmetics. /edu/xtec/jclic/bags Classes dealing with collections of objects like activities, media, and sequence elements. /edu/xtec/jclic/boxes Graphic and multimedia elements: cells, counters, grids, buttons... /edu/xtec/jclic/clic3 Classes used to import Clic 3.0 activities /edu/xtec/jclic/edit Base for "editors", special classes used to modify complex objects. /edu/xtec/jclic/fileSystem Filesystems are objects used to read and write to files under different protocols and formats. /edu/xtec/jclic/media Classes that deal with sound, video... /edu/xtec/jclic/misc Miscellaneous utilities specific to JClic /edu/xtec/jclic/project Components of the JClic project structure /edu/xtec/jclic/report Activity results reporting system /edu/xtec/jclic/shapers Classes that deal with cell and grid shapes /edu/xtec/jclic/skins Support to JClic visual aspects /edu/xtec/jclic/beans Visual controls used in JClic Author. /edu/xtec/resources Different sub-packages containing messages, icons, graphics, sounds, etc. /edu/xtec/util Utility classes not specific to JClic jclic-0.2.1.0.orig/.cvsignore0000644000175000017500000000001511377161311012610 0ustar apidoc build jclic-0.2.1.0.orig/lib/0000755000175000017500000000000011377161311011362 5ustar jclic-0.2.1.0.orig/lib/jmf-api/0000755000175000017500000000000011377161311012705 5ustar jclic-0.2.1.0.orig/lib/jmf-api/README.txt0000644000175000017500000000116111377161311014402 0ustar JMF-API ----------------------------- This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the Java Media Framework library, based on the public API available at: http://java.sun.com/products/java-media/jmf/2.1.1/apidocs The files contained in this directory tree are used only at compile-time to make possible the build process of JClic without external dependencies. They will not be compiled, packaged nor included in the binary release of JClic obtained as a result of this build process. A full operational version of the library is available at: http://java.sun.com/products/java-media/jmf jclic-0.2.1.0.orig/lib/jmf-api/src/0000755000175000017500000000000011377161311013474 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/com/0000755000175000017500000000000011377161311014252 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/com/sun/0000755000175000017500000000000011377161311015057 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/com/sun/media/0000755000175000017500000000000011377161311016136 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/com/sun/media/MediaPlayer.java0000644000175000017500000000105711377161311021200 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package com.sun.media; public class MediaPlayer {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/0000755000175000017500000000000011377161311014605 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/0000755000175000017500000000000011377161311015664 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ControllerClosedEvent.java0000644000175000017500000000121111377161311023001 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class ControllerClosedEvent extends ControllerEvent { public ControllerClosedEvent(Object o) {super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ProcessorModel.java0000644000175000017500000000253211377161311021471 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import javax.media.protocol.*; public class ProcessorModel { public ProcessorModel() {} public ProcessorModel(Format [] formats, ContentDescriptor outputContentDescriptor) {} public ProcessorModel(DataSource inputDataSource, Format [] formats, ContentDescriptor outputContentDescriptor) {} public ProcessorModel(MediaLocator inputLocator, Format [] formats, ContentDescriptor outputContentDescriptor) {} public int getTrackCount(int availableTrackCount) {return 0;} public Format getOutputTrackFormat(int tIndex) {return null;} public boolean isFormatAcceptable(int tIndex, Format tFormat) {return false;} public ContentDescriptor getContentDescriptor() {return null;} public javax.media.protocol.DataSource getInputDataSource() {return null;} public MediaLocator getInputLocator() {return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/MediaEvent.java0000644000175000017500000000130411377161311020546 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.util.EventObject; public class MediaEvent extends java.util.EventObject { public MediaEvent(Object o) {super(o);} public String getMessage(){return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/MediaLocator.java0000644000175000017500000000161611377161311021076 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.net.*; public class MediaLocator implements java.io.Serializable { public MediaLocator(URL url) {} public MediaLocator(String locatorString) {} public URL getURL() throws MalformedURLException {return null;} public String getProtocol() {return null;} public String getRemainder() {return null;} public String toExternalForm() {return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/RealizeCompleteEvent.java0000644000175000017500000000120511377161311022613 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class RealizeCompleteEvent extends TransitionEvent { public RealizeCompleteEvent(Object o){super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ClockStoppedException.java0000644000175000017500000000111711377161311023000 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class ClockStoppedException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Renderer.java0000644000175000017500000000140611377161311020276 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface Renderer extends javax.media.PlugIn { public Format [] getSupportedInputFormats(); public Format setInputFormat(Format format); public void start(); public void stop(); public int process(Buffer buffer); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/IncompatibleSourceException.java0000644000175000017500000000112411377161311024173 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class IncompatibleSourceException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Control.java0000644000175000017500000000116711377161311020154 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.awt.Component; public interface Control { public Component getControlComponent(); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/CannotRealizeException.java0000644000175000017500000000112011377161311023136 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class CannotRealizeException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/0000755000175000017500000000000011377161311017525 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/PullSourceStream.java0000644000175000017500000000133411377161311023642 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; import java.io.*; public interface PullSourceStream extends SourceStream { public boolean willReadBlock(); public int read(byte[] buffer, int offset, int length) throws IOException; } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/Seekable.java0000644000175000017500000000120311377161311022077 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; public interface Seekable { long seek(long where); long tell(); boolean isRandomAccess(); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/ContentDescriptor.java0000644000175000017500000000203711377161311024043 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; import javax.media.Format; public class ContentDescriptor extends Format { static public final String RAW = "raw"; static public final String RAW_RTP = "raw.rtp"; static public final String MIXED = "application.mixed-data"; static public final String CONTENT_UNKNOWN = "UnknownContent"; public String getContentType() {return null;} public ContentDescriptor(String cdName) {super(cdName);} static final public String mimeTypeToPackageName(String mimeType) {return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/SourceStream.java0000644000175000017500000000143011377161311023002 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; import java.io.IOException; public interface SourceStream extends Controls { public static final long LENGTH_UNKNOWN = -1; public ContentDescriptor getContentDescriptor(); public long getContentLength(); public boolean endOfStream(); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/DataSource.java0000644000175000017500000000225411377161311022425 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; import javax.media.*; import javax.media.Duration; import java.io.IOException; import java.net.*; abstract public class DataSource implements Controls, Duration { MediaLocator sourceLocator; public DataSource() {} public DataSource(MediaLocator source) {} public void setLocator(MediaLocator source) {} public MediaLocator getLocator() {return null;} protected void initCheck() {} public abstract String getContentType(); public abstract void connect() throws IOException; public abstract void disconnect(); public abstract void start() throws IOException; public abstract void stop() throws IOException; } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/Controls.java0000644000175000017500000000112511377161311022172 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; public interface Controls extends javax.media.Controls {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/protocol/PullDataSource.java0000644000175000017500000000121411377161311023255 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.protocol; public abstract class PullDataSource extends DataSource { public abstract PullSourceStream[] getStreams(); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/GainChangeEvent.java0000644000175000017500000000166211377161311021522 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class GainChangeEvent extends MediaEvent { public GainChangeEvent(Object o) {super(o);} //public GainChangeEvent(GainControl from, boolean mute, float dB, float level) {} public Object getSource() {return null;} public GainControl getSourceGainControl() {return null;} public float getDB() {return 0;} public float getLevel() {return 0;} public boolean getMute() {return false;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Time.java0000644000175000017500000000201011377161311017416 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class Time implements java.io.Serializable { public final static long ONE_SECOND = 1000000000L; public final static Time TIME_UNKNOWN = new Time(Long.MAX_VALUE - 1); private final static double NANO_TO_SEC = 1.0E-9; public Time(long nanoseconds) {} public Time(double seconds) {} protected long secondsToNanoseconds(double seconds) {return (long)(seconds * ONE_SECOND);} public long getNanoseconds() {return 0L;} public double getSeconds() {return 0D;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/datasink/0000755000175000017500000000000011377161311017462 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/datasink/DataSinkListener.java0000644000175000017500000000115611377161311023534 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.datasink; public interface DataSinkListener { void dataSinkUpdate(DataSinkEvent event); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/datasink/DataSinkEvent.java0000644000175000017500000000143311377161311023026 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.datasink; import javax.media.*; public class DataSinkEvent extends javax.media.MediaEvent { public DataSinkEvent(DataSink from) {super(from);} //public DataSinkEvent(DataSink from, String reason) {} public DataSink getSourceDataSink() {return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Processor.java0000644000175000017500000000226111377161311020507 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import javax.media.protocol.*; import javax.media.control.TrackControl; public interface Processor extends Player { public final static int Configuring = 140; public final static int Configured = 180; public void configure(); public TrackControl[] getTrackControls() throws NotConfiguredError; public ContentDescriptor[] getSupportedContentDescriptors() throws NotConfiguredError; public ContentDescriptor setContentDescriptor(ContentDescriptor outputContentDescriptor) throws NotConfiguredError ; public ContentDescriptor getContentDescriptor() throws NotConfiguredError; public DataSource getDataOutput() throws NotRealizedError; } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/DataSink.java0000644000175000017500000000212011377161311020220 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.io.IOException; public interface DataSink extends MediaHandler, Controls { public void setOutputLocator(MediaLocator output); public MediaLocator getOutputLocator(); public void start() throws IOException; public void stop() throws IOException; public void open() throws IOException, SecurityException; public void close(); public String getContentType(); public void addDataSinkListener(javax.media.datasink.DataSinkListener listener); public void removeDataSinkListener(javax.media.datasink.DataSinkListener listener); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/StopEvent.java0000644000175000017500000000116011377161311020454 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class StopEvent extends TransitionEvent { public StopEvent(Object o) {super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ControllerListener.java0000644000175000017500000000115411377161311022361 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface ControllerListener { void controllerUpdate(ControllerEvent event); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/NoProcessorException.java0000644000175000017500000000112111377161311022655 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class NoProcessorException extends NoPlayerException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/GainControl.java0000644000175000017500000000163411377161311020752 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface GainControl extends Control { public void setMute(boolean mute); public boolean getMute(); public float setDB(float gain); public float getDB(); public float setLevel(float level); public float getLevel(); public void addGainChangeListener(GainChangeListener listener); public void removeGainChangeListener(GainChangeListener listener); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/UnsupportedPlugInException.java0000644000175000017500000000112411377161311024053 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class UnsupportedPlugInException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/NotConfiguredError.java0000644000175000017500000000111011377161311022300 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class NotConfiguredError extends MediaError {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Codec.java0000644000175000017500000000155211377161311017547 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import javax.media.*; public interface Codec extends javax.media.PlugIn { public Format [] getSupportedInputFormats(); public Format [] getSupportedOutputFormats(Format input); public Format setInputFormat(Format format); public Format setOutputFormat(Format format); public int process(Buffer input, Buffer output); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ControllerErrorEvent.java0000644000175000017500000000121411377161311022664 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class ControllerErrorEvent extends ControllerClosedEvent { public ControllerErrorEvent(Object o) {super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/control/0000755000175000017500000000000011377161311017344 5ustar jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/control/FormatControl.java0000644000175000017500000000147211377161311023004 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.control; import javax.media.Format; public interface FormatControl extends javax.media.Control { public Format getFormat(); public Format setFormat(Format format); public Format [] getSupportedFormats(); public boolean isEnabled(); public void setEnabled(boolean enabled); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/control/TrackControl.java0000644000175000017500000000151411377161311022615 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media.control; import javax.media.*; public interface TrackControl extends FormatControl, javax.media.Controls { public void setCodecChain(Codec codecs[]) throws UnsupportedPlugInException, NotConfiguredError; public void setRenderer(Renderer renderer) throws UnsupportedPlugInException, NotConfiguredError; } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Controller.java0000644000175000017500000000251511377161311020655 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface Controller extends Clock, Duration { public final static Time LATENCY_UNKNOWN = new Time(Long.MAX_VALUE); public final static int Unrealized = 100; public final static int Realizing = 200; public final static int Realized = 300; public final static int Prefetching = 400; public final static int Prefetched = 500; public final static int Started = 600; public int getState(); public int getTargetState(); public void realize(); public void prefetch(); public void deallocate(); public void close(); public Time getStartLatency(); public Control[] getControls(); public Control getControl(String forName); public void addControllerListener(ControllerListener listener); public void removeControllerListener(ControllerListener listener); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/NoDataSinkException.java0000644000175000017500000000111511377161311022377 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class NoDataSinkException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/GainChangeListener.java0000644000175000017500000000114611377161311022223 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface GainChangeListener { void gainChange(GainChangeEvent event); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ResourceUnavailableException.java0000644000175000017500000000112611377161311024341 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class ResourceUnavailableException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Manager.java0000644000175000017500000000731411377161311020106 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.lang.reflect.*; import java.io.IOException; import java.net.URL; import java.net.MalformedURLException; import java.util.Enumeration; import java.util.Vector; import java.util.Hashtable; import javax.media.protocol.*; import javax.media.control.*; import javax.media.*; public final class Manager { private static String VERSION = "Not implemented!!"; public static final int MAX_SECURITY = 1; public static final int CACHING = 2; public static final int LIGHTWEIGHT_RENDERER = 3; public static final int PLUGIN_PLAYER = 4; public final static String UNKNOWN_CONTENT_NAME = "unknown"; private Manager() {} public static String getVersion() {return VERSION;} public static Player createPlayer(URL sourceURL) throws IOException, NoPlayerException {return null;} public static Player createPlayer(MediaLocator sourceLocator) throws IOException, NoPlayerException {return null;} public static Player createPlayer(DataSource source) throws IOException, NoPlayerException {return null;} public static Player createRealizedPlayer(URL sourceURL) throws IOException, NoPlayerException, CannotRealizeException {return null;} public static Player createRealizedPlayer(MediaLocator ml) throws IOException, NoPlayerException, CannotRealizeException {return null;} public static Player createRealizedPlayer(DataSource source) throws IOException, NoPlayerException, CannotRealizeException {return null;} public static Processor createProcessor(URL sourceURL) throws IOException, NoProcessorException {return null;} public static Processor createProcessor(MediaLocator sourceLocator) throws IOException, NoProcessorException {return null;} public static Processor createProcessor(DataSource source) throws IOException, NoProcessorException {return null;} public static Processor createRealizedProcessor(ProcessorModel model) throws IOException, NoProcessorException, CannotRealizeException {return null;} public static DataSource createDataSource(URL sourceURL) throws IOException, NoDataSourceException {return null;} static public DataSource createDataSource(MediaLocator sourceLocator) throws IOException, NoDataSourceException {return null;} static public DataSource createMergingDataSource(DataSource[] sources) throws IncompatibleSourceException {return null;} static public DataSource createCloneableDataSource(DataSource source) {return null;} static public DataSink createDataSink(DataSource datasource, MediaLocator destLocator) throws NoDataSinkException {return null;} public static String getCacheDirectory() {return null;} public static void setHint(int hint, Object value) {} public static Object getHint(int hint) {return null;} static final int DONE = 0; static final int SUCCESS = 1; static public Vector getDataSourceList(String protocolName) {return null;} static public Vector getHandlerClassList(String contentName) {return null;} static public Vector getProcessorClassList(String contentName) {return null;} static Vector buildClassList(Vector prefixList, String name) {return null;} static Vector getContentPrefixList() {return null;} static Vector getProtocolPrefixList() {return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Controls.java0000644000175000017500000000121111377161311020325 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface Controls { public Object[] getControls(); public Object getControl(String controlType); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Duration.java0000644000175000017500000000135111377161311020314 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface Duration { public final static Time DURATION_UNBOUNDED = new Time(Long.MAX_VALUE); public final static Time DURATION_UNKNOWN = new Time(Long.MAX_VALUE - 1); public Time getDuration(); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/IncompatibleTimeBaseException.java0000644000175000017500000000112611377161311024426 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class IncompatibleTimeBaseException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Player.java0000644000175000017500000000175111377161311017767 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.awt.Component; import javax.media.protocol.DataSource; import java.io.IOException; public interface Player extends MediaHandler, Controller { public Component getVisualComponent(); public GainControl getGainControl(); public Component getControlPanelComponent(); public void start(); public void addController(Controller newController) throws IncompatibleTimeBaseException; public void removeController(Controller oldController); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/ControllerEvent.java0000644000175000017500000000120311377161311021650 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class ControllerEvent extends javax.media.MediaEvent { public ControllerEvent(Object o) {super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Clock.java0000644000175000017500000000217711377161311017571 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface Clock { static public final Time RESET = new Time(Long.MAX_VALUE); public void setTimeBase(TimeBase master) throws IncompatibleTimeBaseException; public void syncStart(Time at); public void stop(); public void setStopTime(Time stopTime); public Time getStopTime(); public void setMediaTime(Time now); public Time getMediaTime(); public long getMediaNanoseconds(); public Time getSyncTime(); public TimeBase getTimeBase(); public Time mapToTimeBase(Time t) throws ClockStoppedException; public float getRate(); public float setRate(float factor); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/EndOfMediaEvent.java0000644000175000017500000000116611377161311021470 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class EndOfMediaEvent extends StopEvent { public EndOfMediaEvent(Object o) {super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/MediaException.java0000644000175000017500000000110211377161311021417 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class MediaException extends Exception {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/MediaHandler.java0000644000175000017500000000133311377161311021044 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import javax.media.protocol.DataSource; import java.io.IOException; public interface MediaHandler { public void setSource(DataSource source) throws IOException, IncompatibleSourceException; } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/NoDataSourceException.java0000644000175000017500000000111711377161311022735 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class NoDataSourceException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/NotRealizedError.java0000644000175000017500000000110611377161311021757 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class NotRealizedError extends MediaError {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Buffer.java0000644000175000017500000000523411377161311017744 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class Buffer { public final static int FLAG_EOM = (1 << 0); public final static int FLAG_DISCARD = (1 << 1); public final static int FLAG_SILENCE = (1 << 2); public final static int FLAG_SID = (1 << 3); public final static int FLAG_KEY_FRAME = (1 << 4); public final static int FLAG_NO_DROP = (1 << 5); public final static int FLAG_NO_WAIT = (1 << 6); public final static int FLAG_NO_SYNC = (FLAG_NO_DROP | FLAG_NO_WAIT); public final static int FLAG_SYSTEM_TIME = (1 << 7); public final static int FLAG_RELATIVE_TIME = (1 << 8); public final static int FLAG_FLUSH = (1 << 9); public final static int FLAG_SYSTEM_MARKER = (1 << 10); public final static int FLAG_RTP_MARKER = (1 << 11); public final static int FLAG_RTP_TIME = (1 << 12); public final static int FLAG_BUF_OVERFLOWN = (1 << 13); public final static int FLAG_BUF_UNDERFLOWN = (1 << 14); public final static int FLAG_LIVE_DATA = (1 << 15); public final static long TIME_UNKNOWN = -1L; public final static long SEQUENCE_UNKNOWN = Long.MAX_VALUE - 1; public Format getFormat() {return null;} public void setFormat(Format format){} public int getFlags() {return 0;} public void setFlags(int flags) {} public boolean isEOM() {return false;} public void setEOM(boolean eom) {} public boolean isDiscard() {return false;} public void setDiscard(boolean discard) {} public Object getData() {return null;} public void setData(Object data) {} public Object getHeader() {return null;} public void setHeader(Object header) {} public int getLength() {return 0;} public void setLength(int length){} public int getOffset() {return 0;} public void setOffset(int offset) {} public long getTimeStamp() {return 0L;} public void setTimeStamp(long timeStamp) {} public long getDuration() {return 0L;} public void setDuration(long duration) {} public void setSequenceNumber(long number) {} public long getSequenceNumber() {return 0L;} public void copy(Buffer buffer) {} public void copy(Buffer buffer, boolean swapData) {} public Object clone() {return null;} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/MediaError.java0000644000175000017500000000107211377161311020560 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class MediaError extends Error {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/PlugIn.java0000644000175000017500000000202511377161311017724 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import javax.media.Controls; public interface PlugIn extends Controls { public static final int BUFFER_PROCESSED_OK = 0; public static final int BUFFER_PROCESSED_FAILED = 1 << 0; public static final int INPUT_BUFFER_NOT_CONSUMED = 1 << 1; public static final int OUTPUT_BUFFER_NOT_FILLED = 1 << 2; public static final int PLUGIN_TERMINATED = 1 << 3; public String getName(); public void open() throws ResourceUnavailableException; public void close(); public void reset(); } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/NoPlayerException.java0000644000175000017500000000111311377161311022133 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class NoPlayerException extends MediaException {} jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/TransitionEvent.java0000644000175000017500000000117711377161311021671 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public class TransitionEvent extends ControllerEvent { public TransitionEvent(Object o) {super(o);} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/Format.java0000644000175000017500000000334511377161311017764 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; import java.lang.Class; public class Format implements java.lang.Cloneable, java.io.Serializable { public static final int NOT_SPECIFIED = -1; public static final int TRUE = 1; public static final int FALSE = 0; protected String encoding; public static final Class intArray = (new int[0]).getClass(); public static final Class shortArray = (new short[0]).getClass(); public static final Class byteArray = (new byte[0]).getClass(); public static final Class formatArray = (new Format[0]).getClass(); protected Class dataType = byteArray; protected Class clz = getClass(); public Format(String encoding) {} public Format(String encoding, Class dataType) {} public String getEncoding() {return null;} public Class getDataType() {return null;} public boolean equals(Object format) {return false;} public boolean matches(Format format) {return false;} public Format intersects(Format other) {return null;} public boolean isSameEncoding(Format other) {return false;} public boolean isSameEncoding(String encoding) {return false;} public Format relax() {return null;} public Object clone() {return null;} protected void copy(Format f) {} } jclic-0.2.1.0.orig/lib/jmf-api/src/javax/media/TimeBase.java0000644000175000017500000000115511377161311020222 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * Java Media Framework library, based on the public API available at: * http://java.sun.com/products/java-media/jmf/2.1.1/apidocs * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://java.sun.com/products/java-media/jmf */ package javax.media; public interface TimeBase { public Time getTime(); public long getNanoseconds(); } jclic-0.2.1.0.orig/lib/qtjava-api/0000755000175000017500000000000011377161311013417 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/README.txt0000644000175000017500000000120711377161311015115 0ustar QTJAVA-API ----------------------------- This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the QuickTime(TM) for Java library, based on the public API available at: http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ The files contained in this directory tree are used only at compile-time to make possible the build process of JClic without external dependencies. They will not be compiled, packaged nor included in the binary release of JClic obtained as a result of this build process. A full operational version of the library is available at: http://developer.apple.com/quicktime/qtjava jclic-0.2.1.0.orig/lib/qtjava-api/src/0000755000175000017500000000000011377161311014206 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/0000755000175000017500000000000011377161311016201 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/QTObject.java0000644000175000017500000000120011377161311020510 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime; public abstract class QTObject { public void disposeQTObject() throws QTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/QTException.java0000644000175000017500000000112311377161311021244 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime; public class QTException extends Exception {} jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/util/0000755000175000017500000000000011377161311017156 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/util/QTUtils.java0000644000175000017500000000120511377161311021364 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.util; public final class QTUtils { public static final int toOSType (String s) {return 0;} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/util/QTHandleRef.java0000644000175000017500000000116511377161311022121 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.util; import quicktime.QTObject; public class QTHandleRef extends QTObject { } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/util/QTHandle.java0000644000175000017500000000133411377161311021462 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.util; import quicktime.QTException; public class QTHandle extends QTHandleRef { public QTHandle() throws QTException {} public QTHandle(byte abyte0[]) throws QTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/io/0000755000175000017500000000000011377161311016610 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/io/QTFile.java0000644000175000017500000000131011377161311020572 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.io; import java.io.File; public final class QTFile extends File { public QTFile(String s) {super(s);} public QTFile(File file) {this(file.getPath());} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/QTSession.java0000644000175000017500000000136511377161311020741 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime; import quicktime.QTException; public final class QTSession { public static boolean isInitialized() {return false;} public static void open() throws QTException {} public static void close() {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/0000755000175000017500000000000011377161311016773 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/StdQTConstants.java0000644000175000017500000032425311377161311022543 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std; public interface StdQTConstants { public static final int codecCanScale = 1; public static final int codecCanMask = 2; public static final int codecCanMatte = 4; public static final int codecCanTransform = 8; public static final int codecCanTransferMode = 16; public static final int codecCanCopyPrev = 32; public static final int codecCanSpool = 64; public static final int codecCanClipVertical = 128; public static final int codecCanClipRectangular = 256; public static final int codecCanRemapColor = 512; public static final int codecCanFastDither = 1024; public static final int codecCanSrcExtract = 2048; public static final int codecCanCopyPrevComp = 4096; public static final int codecCanAsync = 8192; public static final int codecCanMakeMask = 16384; public static final int codecCanShift = 32768; public static final int codecCanAsyncWhen = 0x10000; public static final int codecCanShieldCursor = 0x20000; public static final int codecCanManagePrevBuffer = 0x40000; public static final int codecHasVolatileBuffer = 0x80000; public static final int codecWantsRegionMask = 0x100000; public static final int codecImageBufferIsOnScreen = 0x200000; public static final int codecWantsDestinationPixels = 0x400000; public static final int codecWantsSpecialScaling = 0x800000; public static final int codecHandlesInputs = 0x1000000; public static final int codecCanDoIndirectSurface = 0x2000000; public static final int codecIsSequenceSensitive = 0x4000000; public static final int codecRequiresOffscreen = 0x8000000; public static final int codecRequiresMaskBits = 0x10000000; public static final int codecCanRemapResolution = 0x20000000; public static final int codecIsDirectToScreenOnly = 0x40000000; public static final int codecCanLockSurface = 0x80000000; public static final int codecConditionFirstBand = 1; public static final int codecConditionLastBand = 2; public static final int codecConditionFirstFrame = 4; public static final int codecConditionNewDepth = 8; public static final int codecConditionNewTransform = 16; public static final int codecConditionNewSrcRect = 32; public static final int codecConditionNewMask = 64; public static final int codecConditionNewMatte = 128; public static final int codecConditionNewTransferMode = 256; public static final int codecConditionNewClut = 512; public static final int codecConditionNewAccuracy = 1024; public static final int codecConditionNewDestination = 2048; public static final int codecConditionFirstScreen = 4096; public static final int codecConditionDoCursor = 8192; public static final int codecConditionCatchUpDiff = 16384; public static final int codecConditionMaskMayBeChanged = 32768; public static final int codecConditionToBuffer = 0x10000; public static final int codecConditionCodecChangedMask = 0x80000000; public static final int codecInfoResourceType = 0x63646369; public static final int codecInterfaceVersion = 2; public static final int matrixFlagScale2x = 128; public static final int matrixFlagScale1x = 64; public static final int matrixFlagScaleHalf = 32; public static final int kScreenFloodMethodNone = 0; public static final int kScreenFloodMethodKeyColor = 1; public static final int kScreenFloodMethodAlpha = 2; public static final int kFlushLastQueuedFrame = 0; public static final int kFlushFirstQueuedFrame = 1; public static final int kNewImageGWorldErase = 1; public static final int kCodecFrameTypeUnknown = 0; public static final int kCodecFrameTypeKey = 1; public static final int kCodecFrameTypeDifference = 2; public static final int kCodecFrameTypeDroppableDifference = 3; public static final int kParameterTitleName = 0x6e616d65; public static final int kParameterTitleID = 1; public static final int kParameterWhatName = 0x77686174; public static final int kParameterWhatID = 1; public static final int kParameterVersionName = 0x76657273; public static final int kParameterVersionID = 1; public static final int kParameterRepeatableName = 0x70657465; public static final int kParameterRepeatableID = 1; public static final int kParameterRepeatableTrue = 1; public static final int kParameterRepeatableFalse = 0; public static final int kParameterAlternateCodecName = 0x73756273; public static final int kParameterAlternateCodecID = 1; public static final int kParameterSourceCountName = 0x73726373; public static final int kParameterSourceCountID = 1; public static final int kParameterDependencyName = 0x64656570; public static final int kParameterDependencyID = 1; public static final int kParameterListDependsUponColorProfiles = 0x70726f66; public static final int kParameterListDependsUponFonts = 0x666f6e74; public static final int kParameterEnumList = 0x656e756d; public static final int kParameterAtomTypeAndID = 0x74797065; public static final int kNoAtom = 0x6e6f6e65; public static final int kAtomNoFlags = 0; public static final int kAtomNotInterpolated = 1; public static final int kAtomInterpolateIsOptional = 2; public static final int kParameterDataType = 0x64617461; public static final int kParameterTypeDataText = 0x74657874; public static final int kParameterTypeDataEnum = 0x656e756d; public static final int kParameterTypeDataBitField = 0x626f6f6c; public static final int kParameterTypeDataImage = 0x696d6167; public static final int kParameterAlternateDataType = 0x616c7431; public static final int kParameterTypeDataColorValue = 0x636d6c72; public static final int kParameterTypeDataCubic = 0x63756269; public static final int kParameterTypeDataNURB = 0x6e757262; public static final int kParameterDataRange = 0x72616e67; public static final int kNoMinimumLongFixed = 0x7fffffff; public static final int kNoMaximumLongFixed = 0x80000000; public static final int kNoScaleLongFixed = 0; public static final int kNoPrecision = -1; public static final int kParameterImageNoFlags = 0; public static final int kParameterDataBehavior = 0x6469746c; public static final int kParameterItemEditText = 0x65646974; public static final int kParameterItemEditLong = 0x6c6f6e67; public static final int kParameterItemEditFixed = 0x66697864; public static final int kParameterItemEditDouble = 0x646f7562; public static final int kParameterItemPopUp = 0x706f7075; public static final int kParameterItemRadioCluster = 0x72616469; public static final int kParameterItemCheckBox = 0x63686578; public static final int kParameterItemControl = 0x636e746c; public static final int kParameterItemLine = 0x6c696e65; public static final int kParameterItemColorPicker = 0x7069636b; public static final int kParameterItemGroupDivider = 0x64697669; public static final int kParameterItemStaticText = 0x73746174; public static final int kParameterItemDragImage = 0x696d6167; public static final int kGraphicsNoFlags = 0; public static final int kGraphicsFlagsGray = 1; public static final int kGroupNoFlags = 0; public static final int kGroupAlignText = 0x10000; public static final int kGroupSurroundBox = 0x20000; public static final int kGroupMatrix = 0x40000; public static final int kGroupNoName = 0x80000; public static final int kDisableControl = 1; public static final int kDisableWhenNotEqual = 1; public static final int kDisableWhenEqual = 17; public static final int kDisableWhenLessThan = 33; public static final int kDisableWhenGreaterThan = 49; public static final int kPopupStoreAsString = 0x10000; public static final int kParameterDataUsage = 0x75736520; public static final int kParameterUsagePixels = 0x7069786c; public static final int kParameterUsageRectangle = 0x72656374; public static final int kParameterUsagePoint = 0x78792020; public static final int kParameterUsage3DPoint = 0x78797a20; public static final int kParameterUsageDegrees = 0x64656772; public static final int kParameterUsageRadians = 0x72616473; public static final int kParameterUsagePercent = 0x70636e74; public static final int kParameterUsageSeconds = 0x73656373; public static final int kParameterUsageMilliseconds = 0x6d736563; public static final int kParameterUsageMicroseconds = 0xb5736563; public static final int kParameterUsage3by3Matrix = 0x33627933; public static final int kParameterDataDefaultItem = 0x64666c74; public static final int kParameterInfoLongName = 0xa96e616d; public static final int kParameterInfoCopyright = 0xa9637079; public static final int kParameterInfoDescription = 0xa9696e66; public static final int kParameterInfoWindowTitle = 0xa9776e74; public static final int kParameterInfoPicture = 0xa9706978; public static final int kParameterInfoManufacturer = 0xa96d616e; public static final int kParameterInfoIDs = 1; public static final int kParameterValidationNoFlags = 0; public static final int kParameterValidationFinalValidation = 1; public static final int kImageCodecSettingsFieldCount = 0x6669656c; public static final int kImageCodecSettingsFieldOrdering = 0x66646f6d; public static final int kImageCodecSettingsFieldOrderingF1F2 = 1; public static final int kImageCodecSettingsFieldOrderingF2F1 = 2; public static final int kMotionJPEGTag = 0x6d6a7067; public static final int kJPEGQuantizationTablesImageDescriptionExtension = 0x6d6a7174; public static final int kJPEGHuffmanTablesImageDescriptionExtension = 0x6d6a6874; public static final int kFieldInfoImageDescriptionExtension = 0x6669656c; public static final int kFieldOrderUnknown = 0; public static final int kFieldsStoredF1F2DisplayedF1F2 = 1; public static final int kFieldsStoredF1F2DisplayedF2F1 = 2; public static final int kFieldsStoredF2F1DisplayedF1F2 = 5; public static final int kFieldsStoredF2F1DisplayedF2F1 = 6; public static final int kEffectSourceName = 0x73726320; public static final int kEffectDataSourceType = 0x64747374; public static final int kEffectRawSource = 0; public static final int kEffectGenericType = 0x67656666; public static final int kLinearGradient = 0; public static final int kCircularGradient = 1; public static final int kCurveGetLengthSelect = 256; public static final int kCurveLengthToPointSelect = 257; public static final int kCurveNewPathSelect = 258; public static final int kCurveCountPointsInPathSelect = 259; public static final int kCurveGetPathPointSelect = 260; public static final int kCurveInsertPointIntoPathSelect = 261; public static final int kCurveSetPathPointSelect = 262; public static final int kCurveGetNearestPathPointSelect = 263; public static final int kCurvePathPointToLengthSelect = 264; public static final int kCurveCreateVectorStreamSelect = 265; public static final int kCurveAddAtomToVectorStreamSelect = 266; public static final int kCurveAddPathAtomToVectorStreamSelect = 267; public static final int kCurveAddZeroAtomToVectorStreamSelect = 268; public static final int kCurveGetAtomDataFromVectorStreamSelect = 269; public static final int gxNoFill = 0; public static final int gxOpenFrameFill = 1; public static final int gxFrameFill = 1; public static final int gxClosedFrameFill = 2; public static final int gxHollowFill = 2; public static final int gxEvenOddFill = 3; public static final int gxSolidFill = 3; public static final int gxWindingFill = 4; public static final int gxInverseEvenOddFill = 5; public static final int gxInverseSolidFill = 5; public static final int gxInverseFill = 5; public static final int gxInverseWindingFill = 6; public static final int kDontUseValidateToFindGraphicsImporter = 1; public static final int identityMatrixType = 0; public static final int translateMatrixType = 1; public static final int scaleMatrixType = 2; public static final int scaleTranslateMatrixType = 3; public static final int linearMatrixType = 4; public static final int linearTranslateMatrixType = 5; public static final int perspectiveMatrixType = 6; public static final int graphicsImporterUsesImageDecompressor = 0x800000; public static final int quickTimeImageFileImageDescriptionAtom = 0x69647363; public static final int quickTimeImageFileImageDataAtom = 0x69646174; public static final int quickTimeImageFileMetaDataAtom = 0x6d657461; public static final int kGraphicsExportGroup = 0x6578706f; public static final int kGraphicsExportFileType = 0x66747970; public static final int kGraphicsExportMIMEType = 0x6d696d65; public static final int kGraphicsExportExtension = 0x65787420; public static final int kGraphicsExportDescription = 0x64657363; public static final int imageTranscodererComponentType = 0x696d7463; public static final int handlerHasSpatial = 1; public static final int handlerCanClip = 2; public static final int handlerCanMatte = 4; public static final int handlerCanTransferMode = 8; public static final int handlerNeedsBuffer = 16; public static final int handlerNoIdle = 32; public static final int handlerNoScheduler = 64; public static final int handlerWantsTime = 128; public static final int handlerCGrafPortOnly = 256; public static final int handlerCanSend = 512; public static final int handlerCanHandleComplexMatrix = 1024; public static final int handlerWantsDestinationPixels = 2048; public static final int handlerCanSendImageData = 4096; public static final int mMustDraw = 8; public static final int mAtEnd = 16; public static final int mPreflightDraw = 32; public static final int mSyncDrawing = 64; public static final int mDidDraw = 1; public static final int mNeedsToDraw = 4; public static final int mDrawAgain = 8; public static final int mPartialDraw = 16; public static final int forceUpdateRedraw = 1; public static final int forceUpdateNewBuffer = 2; public static final int mHitTestBounds = 1; public static final int mHitTestImage = 2; public static final int mHitTestInvisible = 4; public static final int mHitTestIsClick = 8; public static final int mOpaque = 1; public static final int mInvisible = 2; public static final int kMediaVideoParamBrightness = 1; public static final int kMediaVideoParamContrast = 2; public static final int kMediaVideoParamHue = 3; public static final int kMediaVideoParamSharpness = 4; public static final int kMediaVideoParamSaturation = 5; public static final int kMediaVideoParamBlackLevel = 6; public static final int kMediaVideoParamWhiteLevel = 7; public static final int standardCompressionType = 0x73636469; public static final int standardCompressionSubType = 0x696d6167; public static final int standardCompressionSubTypeSound = 0x736f756e; public static final int scListEveryCodec = 2; public static final int scAllowZeroFrameRate = 4; public static final int scAllowZeroKeyFrameRate = 8; public static final int scShowBestDepth = 16; public static final int scUseMovableModal = 32; public static final int scDisableFrameRateItem = 64; public static final int scPreferCropping = 1; public static final int scPreferScaling = 2; public static final int scPreferScalingAndCropping = 3; public static final int scDontDetermineSettingsFromTestImage = 4; public static final int scTestImageWidth = 80; public static final int scTestImageHeight = 80; public static final int scOKItem = 1; public static final int scCancelItem = 2; public static final int scCustomItem = 3; public static final int scUserCancelled = 1; public static final int scSpatialSettingsType = 0x7370746c; public static final int scTemporalSettingsType = 0x7470726c; public static final int scDataRateSettingsType = 0x64726174; public static final int scColorTableType = 0x636c7574; public static final int scProgressProcType = 0x70726f67; public static final int scExtendedProcsType = 0x78707263; public static final int scPreferenceFlagsType = 0x70726566; public static final int scSettingsStateType = 0x73737461; public static final int scSequenceIDType = 0x73657175; public static final int scWindowPositionType = 0x776e6477; public static final int scCodecFlagsType = 0x63666c67; public static final int scCodecSettingsType = 0x63646563; public static final int scForceKeyValueType = 0x6b73696d; public static final int scSoundSampleRateType = 0x73737274; public static final int scSoundSampleSizeType = 0x73737373; public static final int scSoundChannelCountType = 0x73736363; public static final int scSoundCompressionType = 0x73736374; public static final int scCompressionListType = 0x6374796c; public static final int scCodecManufacturerType = 0x636d6672; public static final int scGetCompression = 1; public static final int scShowMotionSettings = 1; public static final int scSettingsChangedItem = -1; public static final int scCompressFlagIgnoreIdenticalFrames = 1; public static final int kQTSettingsVideo = 0x76696465; public static final int kQTSettingsSound = 0x736f756e; public static final int tcSourceRefNameType = 0x6e616d65; public static final int tctNegFlag = 128; public static final int movieExportWidth = 0x77647468; public static final int movieExportHeight = 0x68656774; public static final int movieExportDuration = 0x64757261; public static final int movieExportVideoFilter = 0x69666c74; public static final int pnotComponentWantsEvents = 1; public static final int pnotComponentNeedsNoCache = 2; public static final int showFilePreviewComponentType = 0x706e6f74; public static final int createFilePreviewComponentType = 0x706d616b; public static final int dataCompressorComponentType = 0x64636f6d; public static final int dataDecompressorComponentType = 0x64646563; public static final int appleDataCompressorSubType = 0x61646563; public static final int zlibDataCompressorSubType = 0x7a6c6962; public static final int kDataHExtendedSchedule = 0x78746e64; public static final int grabPictOffScreen = 1; public static final int grabPictIgnoreClip = 2; public static final int grabPictCurrentImage = 4; public static final int sgFlagControlledGrab = 1; public static final int sgDeviceNameFlagDeviceUnavailable = 1; public static final int sgPanelFlagForPanel = 1; public static final int seqGrabSettingsPreviewOnly = 1; public static final int qtVideoOutputComponentType = 0x766f7574; public static final int qtVideoOutputComponentBaseSubType = 0x62617365; public static final int kQTVideoOutputDontDisplayToUser = 1; public static final int kBackgroundSpriteLayerNum = 32767; public static final int kSpritePropertyMatrix = 1; public static final int kSpritePropertyImageDescription = 2; public static final int kSpritePropertyImageDataPtr = 3; public static final int kSpritePropertyVisible = 4; public static final int kSpritePropertyLayer = 5; public static final int kSpritePropertyGraphicsMode = 6; public static final int kSpritePropertyImageDataSize = 7; public static final int kOnlyDrawToSpriteWorld = 1; public static final int kSpriteWorldPreflight = 2; public static final int kSpriteWorldDidDraw = 1; public static final int kSpriteWorldNeedsToDraw = 2; public static final int kScaleSpritesToScaleWorld = 2; public static final int kSpriteWorldHighQuality = 4; public static final int kSpriteWorldDontAutoInvalidate = 8; public static final int kSpriteWorldInvisible = 16; public static final int spriteHitTestBounds = 1; public static final int spriteHitTestImage = 2; public static final int spriteHitTestInvisibleSprites = 4; public static final int spriteHitTestIsClick = 8; public static final int spriteHitTestLocInDisplayCoordinates = 16; public static final int qtcbNeedsRateChanges = 1; public static final int qtcbNeedsTimeChanges = 2; public static final int qtcbNeedsStartStopChanges = 4; public static final int clockComponentType = 0x636c6f6b; public static final int systemTickClock = 0x7469636b; public static final int systemSecondClock = 0x7365636f; public static final int systemMillisecondClock = 0x6d696c6c; public static final int systemMicrosecondClock = 0x6d696372; public static final int kClockRateIsLinear = 1; public static final int kClockImplementsCallBacks = 2; public static final int kClockCanHandleIntermittentSound = 4; public static final int loopTimeBase = 1; public static final int palindromeLoopTimeBase = 2; public static final int maintainTimeBaseZero = 4; public static final int triggerAtStart = 1; public static final int triggerAtStop = 2; public static final int triggerRateLT = 4; public static final int triggerRateGT = 8; public static final int triggerRateEqual = 16; public static final int triggerRateLTE = 20; public static final int triggerRateGTE = 24; public static final int triggerRateNotEqual = 28; public static final int triggerRateChange = 0; public static final int timeBaseBeforeStartTime = 1; public static final int timeBaseAfterStopTime = 2; public static final int triggerTimeFwd = 1; public static final int triggerTimeBwd = 2; public static final int triggerTimeEither = 3; public static final int kAnyType = 0; public static final int kAnySubType = 0; public static final int kSorensonCodecType = 0x53565131; public static final int kRawCodecType = 0x72617720; public static final int kCinepakCodecType = 0x63766964; public static final int kGraphicsCodecType = 0x736d6320; public static final int kAnimationCodecType = 0x726c6520; public static final int kVideoCodecType = 0x72707a61; public static final int kComponentVideoCodecType = 0x79757632; public static final int kJPEGCodecType = 0x6a706567; public static final int kMotionJPEGACodecType = 0x6d6a7061; public static final int kMotionJPEGBCodecType = 0x6d6a7062; public static final int kSGICodecType = 0x2e534749; public static final int kPlanarRGBCodecType = 0x38425053; public static final int kMacPaintCodecType = 0x50435447; public static final int kGIFCodecType = 0x67696620; public static final int kPhotoCDCodecType = 0x6b706364; public static final int kQuickDrawGXCodecType = 0x71646778; public static final int kAVRJPEGCodecType = 0x61767220; public static final int kOpenDMLJPEGCodecType = 0x646d6231; public static final int kBMPCodecType = 0x57524c45; public static final int kWindowsRawCodecType = 0x57524157; public static final int kVectorCodecType = 0x70617468; public static final int kQuickDrawCodecType = 0x71647277; public static final int kWaterRippleCodecType = 0x7269706c; public static final int kFireCodecType = 0x66697265; public static final int kCloudCodecType = 0x636c6f75; public static final int kH261CodecType = 0x68323631; public static final int kH263CodecType = 0x68323633; public static final int kDVCNTSCCodecType = 0x64766320; public static final int kDVCPALCodecType = 0x64766370; public static final int kDVCProNTSCCodecType = 0x6476706e; public static final int kDVCProPALCodecType = 0x64767070; public static final int kBaseCodecType = 0x62617365; public static final int kFLCCodecType = 0x666c6963; public static final int kTargaCodecType = 0x74676120; public static final int kComponentVideoSigned = 0x79757675; public static final int kComponentVideoUnsigned = 0x79757673; public static final int kCMYKCodecType = 0x636d796b; public static final int kMicrosoftVideo1CodecType = 0x6d737663; public static final int kBlurImageFilterType = 0x626c7572; public static final int kSharpenImageFilterType = 0x73687270; public static final int kEdgeDetectImageFilterType = 0x65646765; public static final int kEmbossImageFilterType = 0x656d6273; public static final int kConvolveImageFilterType = 0x67656e6b; public static final int kAlphaGainImageFilterType = 0x6761696e; public static final int kRGBColorBalanceImageFilterType = 0x72676262; public static final int kHSLColorBalanceImageFilterType = 0x68736c62; public static final int kColorSyncImageFilterType = 0x73796e63; public static final int kFilmNoiseImageFilterType = 0x666d6e73; public static final int kSolarizeImageFilterType = 0x736f6c72; public static final int kColorTintImageFilterType = 0x74696e74; public static final int kAlphaCompositorTransitionType = 0x626c6e64; public static final int kCrossFadeTransitionType = 0x64736c76; public static final int kChromaKeyTransitionType = 0x636b6579; public static final int kImplodeTransitionType = 0x6d706c6f; public static final int kExplodeTransitionType = 0x78706c6f; public static final int kGradientTransitionType = 0x6d617474; public static final int kPushTransitionType = 0x70757368; public static final int kSlideTransitionType = 0x736c6964; public static final int kWipeTransitionType = 0x736d7074; public static final int kIrisTransitionType = 0x736d7032; public static final int kRadialTransitionType = 0x736d7033; public static final int kMatrixTransitionType = 0x736d7034; public static final int kRandomWipeTransitionType = 409; public static final int kCurvePathAtom = 0x70617468; public static final int kCurveEndAtom = 0x7a65726f; public static final int kCurveAntialiasControlAtom = 0x616e7469; public static final int kCurveAntialiasOff = 0; public static final int kCurveAntialiasOn = -1; public static final int kCurveFillTypeAtom = 0x66696c6c; public static final int kCurvePenThicknessAtom = 0x70656e74; public static final int kCurveMiterLimitAtom = 0x6d697472; public static final int kCurveJoinAttributesAtom = 0x6a6f696e; public static final int kCurveMinimumDepthAtom = 0x6d696e64; public static final int kCurveDepthAlwaysOffscreenMask = 0x80000000; public static final int kCurveGradientAngleAtom = 0x616e676c; public static final int kCurveGradientRadiusAtom = 0x72616469; public static final int kCurveGradientOffsetAtom = 0x63656e74; public static final int kCurveARGBColorAtom = 0x61726762; public static final int kCurveGradientTypeAtom = 0x67726474; public static final int kCurveGradientRecordAtom = 0x67726164; public static final int codecInfoDoes1 = 1; public static final int codecInfoDoes2 = 2; public static final int codecInfoDoes4 = 4; public static final int codecInfoDoes8 = 8; public static final int codecInfoDoes16 = 16; public static final int codecInfoDoes32 = 32; public static final int codecInfoDoesDither = 64; public static final int codecInfoDoesStretch = 128; public static final int codecInfoDoesShrink = 256; public static final int codecInfoDoesMask = 512; public static final int codecInfoDoesTemporal = 1024; public static final int codecInfoDoesDouble = 2048; public static final int codecInfoDoesQuad = 4096; public static final int codecInfoDoesHalf = 8192; public static final int codecInfoDoesQuarter = 16384; public static final int codecInfoDoesRotate = 32768; public static final int codecInfoDoesHorizFlip = 0x10000; public static final int codecInfoDoesVertFlip = 0x20000; public static final int codecInfoHasEffectParameterList = 0x40000; public static final int codecInfoDoesBlend = 0x80000; public static final int codecInfoDoesWarp = 0x100000; public static final int codecInfoDoesRecompress = 0x200000; public static final int codecInfoDoesSpool = 0x400000; public static final int codecInfoDoesRateConstrain = 0x800000; public static final int codecInfoDepth1 = 1; public static final int codecInfoDepth2 = 2; public static final int codecInfoDepth4 = 4; public static final int codecInfoDepth8 = 8; public static final int codecInfoDepth16 = 16; public static final int codecInfoDepth32 = 32; public static final int codecInfoDepth24 = 64; public static final int codecInfoDepth33 = 128; public static final int codecInfoDepth34 = 256; public static final int codecInfoDepth36 = 512; public static final int codecInfoDepth40 = 1024; public static final int codecInfoStoresClut = 2048; public static final int codecInfoDoesLossless = 4096; public static final int codecInfoSequenceSensitive = 8192; public static final int compressorComponentType = 0x696d636f; public static final int decompressorComponentType = 0x696d6463; public static final int defaultDither = 0; public static final int forceDither = 1; public static final int suppressDither = 2; public static final int useColorMatching = 4; public static final int callStdBits = 1; public static final int callOldBits = 2; public static final int noDefaultOpcodes = 4; public static final int graphicsModeStraightAlpha = 256; public static final int graphicsModePreWhiteAlpha = 257; public static final int graphicsModePreBlackAlpha = 258; public static final int graphicsModeComposition = 259; public static final int graphicsModeStraightAlphaBlend = 260; public static final int graphicsModePreMulColorAlpha = 261; public static final int evenField1ToEvenFieldOut = 1; public static final int evenField1ToOddFieldOut = 2; public static final int oddField1ToEvenFieldOut = 4; public static final int oddField1ToOddFieldOut = 8; public static final int evenField2ToEvenFieldOut = 16; public static final int evenField2ToOddFieldOut = 32; public static final int oddField2ToEvenFieldOut = 64; public static final int oddField2ToOddFieldOut = 128; public static final int icmFrameTimeHasVirtualStartTimeAndDuration = 1; public static final int elOptionsIncludeNoneInList = 1; public static final int pdOptionsCollectOneValue = 1; public static final int pdOptionsAllowOptionalInterpolations = 2; public static final int pdOptionsModalDialogBox = 4; public static final int effectIsRealtime = 0; public static final int kEffectPercentage = 0x70636e74; public static final int kEffectWipe = 0x77704944; public static final int kEffectSoftBorder = 0x736f6674; public static final int kEffectBorderWidth = 0x77696474; public static final int kEffectBorderColor = 0x62636c72; public static final int kEffectHorizontalRepeat = 0x686f7269; public static final int kEffectVerticalRepeat = 0x76657274; public static final int kEffectBlendMode = 0x624d6f64; public static final int kEffectPreMultiplyColor = 0x6d636c72; public static final int kEffectStraightAlpha = 1; public static final int kEffectPreMultiplyAlpha = 2; public static final int kEffectReverseAlpha = 3; public static final int kEffectGainValue = 0x6761696e; public static final int kEffectOffsetValue = 0x6f666673; public static final int kEffectTopAlphaPin = 0x70696e54; public static final int kEffectBottomAlphaPin = 0x70696e42; public static final int kEffectFromDirection = 0x66726f6d; public static final int kEffectDirectionTop = 0; public static final int kEffectDirectionLeft = 1; public static final int kEffectDirectionBottom = 2; public static final int kEffectDirectionRight = 3; public static final int kEffectSlideAngle = 0x616e676c; public static final int kEffectWhatAtom = 0x77686174; public static final int kEffectSrcAtom = 0x73726320; public static final int kEffectNameAtom = 0x6e616d65; public static final int kEffectTypeAtom = 0x74797065; public static final int kEffectManufacturerAtom = 0x6d616e75; public static final int pdActionConfirmDialog = 1; public static final int pdActionSetAppleMenu = 2; public static final int pdActionSetEditMenu = 3; public static final int pdActionGetDialogValues = 4; public static final int pdActionSetPreviewUserItem = 5; public static final int pdActionSetPreviewPicture = 6; public static final int pdActionSetColorPickerEventProc = 7; public static final int pdActionSetDialogTitle = 8; public static final int pdActionGetSubPanelMenu = 9; public static final int pdActionActivateSubPanel = 10; public static final int pdActionConductStopAlert = 11; public static final int pdActionModelessCallback = 12; public static final int kVendorApple = 0x6170706c; public static final int graphicsExporterComponentType = 0x67726578; public static final int kBaseGraphicsExporterSubType = 0x62617365; public static final int graphicsExporterIsBaseExporter = 1; public static final int graphicsExporterCanTranscode = 2; public static final int graphicsExporterUsesImageCompressor = 4; public static final int kQTResolutionSettings = 0x7265736f; public static final int kQTTargetDataSize = 0x6461737a; public static final int kQTDontRecompress = 0x646e7472; public static final int kQTInterlaceStyle = 0x696c63; public static final int kQTColorSyncProfile = 0x6963636d; public static final int kQTTIFFCompressionMethod = 0x74696663; public static final int kQTTIFFCompression_None = 1; public static final int kQTTIFFLittleEndian = 0x74696665; public static final int kQTPNGFilterPreference = 0x6d6e6966; public static final int kQTPNGFilterBestForColorType = 0x62666c74; public static final int kQTPNGFilterNone = 0; public static final int kQTPNGFilterSub = 1; public static final int kQTPNGFilterUp = 2; public static final int kQTPNGFilterAverage = 3; public static final int kQTPNGFilterPaeth = 4; public static final int kQTPNGFilterAdaptivePerRow = 0x61666c74; public static final int kQTPNGInterlaceStyle = 0x696c63; public static final int kQTPNGInterlaceNone = 0; public static final int kQTPNGInterlaceAdam7 = 1; public static final int graphicsImporterComponentType = 0x67726970; public static final int graphicsImporterDrawsAllPixels = 0; public static final int graphicsImporterDoesntDrawAllPixels = 1; public static final int graphicsImporterDontKnowIfDrawAllPixels = 2; public static final int kAccessKeyAtomType = 0x61636b79; public static final int kAccessKeySystemFlag = 1; public static final int kTrackReferenceChapterList = 0x63686170; public static final int kTrackReferenceTimeCode = 0x746d6364; public static final int kTrackReferenceModifier = 0x73737263; public static final int codecLosslessQuality = 1024; public static final int codecMaxQuality = 1023; public static final int codecMinQuality = 0; public static final int codecLowQuality = 256; public static final int codecNormalQuality = 512; public static final int codecHighQuality = 768; public static final int codecLockBitsShieldCursor = 1; public static final int codecCompletionSource = 1; public static final int codecCompletionDest = 2; public static final int codecCompletionDontUnshield = 4; public static final int codecCompletionWentOffscreen = 8; public static final int codecCompletionUnlockBits = 16; public static final int codecCompletionForceChainFlush = 32; public static final int codecCompletionDropped = 64; public static final int codecProgressOpen = 0; public static final int codecProgressUpdatePercent = 1; public static final int codecProgressClose = 2; public static final int codecFlagUseImageBuffer = 1; public static final int codecFlagUseScreenBuffer = 2; public static final int codecFlagUpdatePrevious = 4; public static final int codecFlagNoScreenUpdate = 8; public static final int codecFlagWasCompressed = 16; public static final int codecFlagDontOffscreen = 32; public static final int codecFlagUpdatePreviousComp = 64; public static final int codecFlagForceKeyFrame = 128; public static final int codecFlagOnlyScreenUpdate = 256; public static final int codecFlagLiveGrab = 512; public static final int codecFlagDontUseNewImageBuffer = 1024; public static final int codecFlagInterlaceUpdate = 2048; public static final int codecFlagCatchUpDiff = 4096; public static final int codecFlagSupportDisable = 8192; public static final int codecFlagReenable = 16384; public static final int codecFlagOutUpdateOnDataSourceChange = 1024; public static final int codecFlagSequenceSensitive = 2048; public static final int codecFlagOutUpdateOnTimeChange = 4096; public static final int codecFlagImageBufferNotSourceImage = 8192; public static final int codecFlagUsedNewImageBuffer = 16384; public static final int codecFlagUsedImageBuffer = 32768; public static final int codecMinimumDataSize = 32768; public static final int kDeleteCurFile = 0x80000000; public static final int defaultProgressFuntion = -1; public static final int kMimeInfoMimeTypeTag = 0x6d696d65; public static final int kMimeInfoFileExtensionTag = 0x65787420; public static final int kMimeInfoFileTypeTag = 0x66747970; public static final int kMimeInfoDescriptionTag = 0x64657363; public static final int kMimeInfoGroupTag = 0x67726f70; public static final int kMimeInfoDoNotOverrideExistingFileTypeAssociation = 0x6e6f6661; public static final int kDataRefMimeTypeTag = 0x6d696d65; public static final int kDataRefFileExtensionTag = 0x65787420; public static final int kDataRefQTFileTypeTag = 0x66747970; public static final int kDataRefExtensionChokeSpeed = 0x63686f6b; public static final int kDataRefExtensionMIMEType = 0x6d696d65; public static final int kDataRefExtensionMacOSFileType = 0x66747970; public static final int kDataRefExtensionInitializationData = 0x64617461; public static final int kQTFileTypeAIFF = 0x41494646; public static final int kQTFileTypeAIFC = 0x41494643; public static final int kQTFileTypeDVC = 0x64766321; public static final int kQTFileTypeMIDI = 0x4d696469; public static final int kQTFileTypePicture = 0x50494354; public static final int kQTFileTypeMovie = 0x4d6f6f56; public static final int kQTFileTypeText = 0x54455854; public static final int kQTFileTypeWave = 0x57415645; public static final int kQTFileTypeSystemSevenSound = 0x7366696c; public static final int kQTFileTypeMuLaw = 0x554c4157; public static final int kQTFileTypeAVI = 0x56665720; public static final int kQTFileTypeSoundDesignerII = 0x53643266; public static final int kQTFileTypeAudioCDTrack = 0x7472616b; public static final int kQTFileTypePICS = 0x50494353; public static final int kQTFileTypeGIF = 0x47494666; public static final int kQTFileTypePhotoShop = 0x38425053; public static final int kQTFileTypeSGIImage = 0x2e534749; public static final int kQTFileTypeBMP = 0x424d5066; public static final int kQTFileTypeJPEG = 0x4a504547; public static final int kQTFileTypeJFIF = 0x4a504547; public static final int kQTFileTypeMacPaint = 0x504e5447; public static final int kQTFileTypeTargaImage = 0x54504943; public static final int kQTFileTypeQuickDrawGXPicture = 0x71646778; public static final int kQTFileTypeQuickTimeImage = 0x71746966; public static final int kQTFileType3DMF = 0x33444d46; public static final int kMoviePlayer = 0x54564f44; public static final int kMShp = 0x4d536870; public static final int kVis3 = 0x56697333; public static final int kPhotoshop = 0x3842494d; public static final int kClarisWorks = 0x424f424f; public static final int kTeachText = 0x74746574; public static final int kPictureCompressor = 0x70707869; public static final int kGKON = 0x474b4f4e; public static final int createMovieFileDeleteCurFile = 0x80000000; public static final int createMovieFileDontCreateMovie = 0x40000000; public static final int createMovieFileDontOpenFile = 0x20000000; public static final int createMovieFileDontCreateResFile = 0x10000000; public static final int sfpItemPreviewAreaUser = 11; public static final int sfpItemPreviewStaticText = 12; public static final int sfpItemPreviewDividerUser = 13; public static final int sfpItemCreatePreviewButton = 14; public static final int sfpItemShowPreviewButton = 15; public static final int kMovieVersion = 0; public static final int kVersionCheckMin = 0; public static final int kVersionCheckMask = 1; public static final int kDataRate144ModemRate = 1400; public static final int kDataRate288ModemRate = 2800; public static final int kDataRateISDNRate = 5600; public static final int kDataRateDualISDNRate = 11200; public static final int kDataRateT1Rate = 0x249f0; public static final int kDataRateInfiniteRate = 0x7fffffff; public static final int trackEnable = 1; public static final int trackInMovie = 2; public static final int trackInPreview = 4; public static final int trackInPoster = 8; public static final int movieFileType = 0x4d6f6f56; public static final int movieScrapType = 0x6d6f6f76; public static final int movieResourceType = 0x6d6f6f76; public static final int movieForwardPointerResourceType = 0x666f7265; public static final int movieBackwardPointerResourceType = 0x6261636b; public static final int movieResourceAtomType = 0x6d6f6f76; public static final int movieDataAtomType = 0x6d646174; public static final int movieAID = 0x6d6f6f76; public static final int movieHeaderAID = 0x6d766864; public static final int clipAID = 0x636c6970; public static final int rgnClipAID = 0x6372676e; public static final int matteAID = 0x6d617474; public static final int matteCompAID = 0x6b6d6174; public static final int trackAID = 0x7472616b; public static final int userDataAID = 0x75647461; public static final int trackHeaderAID = 0x746b6864; public static final int editsAID = 0x65647473; public static final int editListAID = 0x656c7374; public static final int mediaAID = 0x6d646961; public static final int mediaHeaderAID = 0x6d646864; public static final int mediaInfoAID = 0x6d696e66; public static final int videoMediaInfoHeaderAID = 0x766d6864; public static final int soundMediaInfoHeaderAID = 0x736d6864; public static final int genericMediaInfoHeaderAID = 0x676d6864; public static final int genericMediaInfoAID = 0x676d696e; public static final int dataInfoAID = 0x64696e66; public static final int dataRefAID = 0x64726566; public static final int sampleTableAID = 0x7374626c; public static final int sTSampleDescAID = 0x73747364; public static final int sTTimeToSampAID = 0x73747473; public static final int sTSyncSampleAID = 0x73747373; public static final int sTSampleToChunkAID = 0x73747363; public static final int sTShadowSyncAID = 0x73747368; public static final int handlerAID = 0x68646c72; public static final int sTSampleSizeAID = 0x7374737a; public static final int sTChunkOffsetAID = 0x7374636f; public static final int sTChunkOffset64AID = 0x636f3634; public static final int sTSampleIDAID = 0x73746964; public static final int dataRefContainerAID = 0x64726663; public static final int trackReferenceAID = 0x74726566; public static final int colorTableAID = 0x63746162; public static final int loadSettingsAID = 0x6c6f6164; public static final int propertyAtomAID = 0x636f6465; public static final int inputMapAID = 0x696d6170; public static final int movieBufferHintsAID = 0x6d626668; public static final int movieDataRefAliasAID = 0x6d647261; public static final int soundLocalizationAID = 0x736c6f63; public static final int compressedMovieAID = 0x636d6f76; public static final int compressedMovieDataAID = 0x636d7664; public static final int dataCompressionAtomAID = 0x64636f6d; public static final int referenceMovieRecordAID = 0x726d7261; public static final int referenceMovieDescriptorAID = 0x726d6461; public static final int referenceMovieDataRefAID = 0x72647266; public static final int referenceMovieVersionCheckAID = 0x726d7663; public static final int referenceMovieDataRateAID = 0x726d6472; public static final int referenceMovieComponentCheckAID = 0x726d6364; public static final int referenceMovieQualityAID = 0x726d7175; public static final int kDataRefIsSelfContained = 1; public static final int kParentAtomIsContainer = 0; public static final int kITextRemoveEverythingBut = 0; public static final int kITextRemoveLeaveSuggestedAlternate = 2; public static final int kITextAtomType = 0x69747874; public static final int kITextStringAtomType = 0x74657874; public static final int fullScreenHideCursor = 1; public static final int fullScreenAllowEvents = 2; public static final int fullScreenDontChangeMenuBar = 4; public static final int fullScreenPreflightSize = 8; public static final int newMovieActive = 1; public static final int newMovieDontResolveDataRefs = 2; public static final int newMovieDontAskUnresolvedDataRefs = 4; public static final int newMovieDontAutoAlternates = 8; public static final int newMovieDontUpdateForeBackPointers = 16; public static final int keepInRam = 1; public static final int unkeepInRam = 2; public static final int flushFromRam = 4; public static final int loadForwardTrackEdits = 8; public static final int loadBackwardTrackEdits = 16; public static final int visualMediaCharacteristic = 0x65796573; public static final int audioMediaCharacteristic = 0x65617273; public static final int kCharacteristicCanSendVideo = 0x76736e64; public static final int kCharacteristicProvidesURLs = 0x75726c6c; public static final int kCharacteristicNonLinear = 0x6e6f6e6c; public static final int kCharacteristicProvidesActions = 0x6163746e; public static final int kUserDataMovieControllerType = 0x63747970; public static final int kUserDataName = 0x6e616d65; public static final int kUserDataTextFullName = 0xa96e616d; public static final int kUserDataTextCopyright = 0xa9637079; public static final int kUserDataTextInformation = 0xa9696e66; public static final int searchTextDontGoToFoundTime = 0x10000; public static final int searchTextDontHiliteFoundText = 0x20000; public static final int searchTextOneTrackOnly = 0x40000; public static final int searchTextEnabledTracksOnly = 0x80000; public static final int pasteInParallel = 1; public static final int showUserSettingsDialog = 2; public static final int movieToFileOnlyExport = 4; public static final int movieFileSpecValid = 8; public static final int movieInDataForkResID = -1; public static final int flattenAddMovieToDataFork = 1; public static final int flattenActiveTracksOnly = 4; public static final int flattenDontInterleaveFlatten = 8; public static final int flattenFSSpecPtrIsDataRefRecordPtr = 16; public static final int flattenCompressMovieResource = 32; public static final int flattenForceMovieResourceBeforeMovieData = 64; public static final int nextTimeMediaSample = 1; public static final int nextTimeMediaEdit = 2; public static final int nextTimeTrackEdit = 4; public static final int nextTimeSyncSample = 8; public static final int nextTimeStep = 16; public static final int nextTimeEdgeOK = 16384; public static final int nextTimeIgnoreActiveSegment = 32768; public static final int movieScrapDontZeroScrap = 1; public static final int movieScrapOnlyPutMovie = 2; public static final int hintsScrubMode = 1; public static final int hintsLoop = 2; public static final int hintsDontPurge = 4; public static final int hintsUseScreenBuffer = 32; public static final int hintsAllowInterlace = 64; public static final int hintsUseSoundInterp = 128; public static final int hintsHighQuality = 256; public static final int hintsPalindrome = 512; public static final int hintsInactive = 2048; public static final int hintsOffscreen = 4096; public static final int hintsDontDraw = 8192; public static final int hintsAllowBlacklining = 16384; public static final int hintsDontUseVideoOverlaySurface = 0x10000; public static final int hintsIgnoreBandwidthRestrictions = 0x20000; public static final int hintsPlayingEveryFrame = 0x40000; public static final int hintsAllowDynamicResize = 0x80000; public static final int movieDrawingCallWhenChanged = 0; public static final int movieDrawingCallAlways = 1; public static final int movieTrackMediaType = 1; public static final int movieTrackCharacteristic = 2; public static final int movieTrackEnabledOnly = 4; public static final int movieControllerComponentType = 0x706c6179; public static final int mcTopLeftMovie = 1; public static final int mcScaleMovieToFit = 2; public static final int mcWithBadge = 4; public static final int mcNotVisible = 8; public static final int mcWithFrame = 16; public static final int mcFlagSuppressMovieFrame = 1; public static final int mcFlagSuppressStepButtons = 2; public static final int mcFlagSuppressSpeakerButton = 4; public static final int mcFlagsUseWindowPalette = 8; public static final int mcFlagsDontInvalidate = 16; public static final int mcFlagsUseCustomButton = 32; public static final int mcPositionDontInvalidate = 32; public static final int kMCIEEnabledButtonPicture = 1; public static final int kMCIEDisabledButtonPicture = 2; public static final int kMCIEDepressedButtonPicture = 3; public static final int kMCIEEnabledSizeBoxPicture = 4; public static final int kMCIEDisabledSizeBoxPicture = 5; public static final int kMCIEEnabledUnavailableButtonPicture = 6; public static final int kMCIEDisabledUnavailableButtonPicture = 7; public static final int kMCIESoundSlider = 128; public static final int kMCIESoundThumb = 129; public static final int kMCIEColorTable = 256; public static final int kMCIEIsFlatAppearance = 257; public static final int kMCIEDoButtonIconsDropOnDepress = 258; public static final int mcInfoUndoAvailable = 1; public static final int mcInfoCutAvailable = 2; public static final int mcInfoCopyAvailable = 4; public static final int mcInfoPasteAvailable = 8; public static final int mcInfoClearAvailable = 16; public static final int mcInfoHasSound = 32; public static final int mcInfoIsPlaying = 64; public static final int mcInfoIsLooping = 128; public static final int mcInfoIsInPalindrome = 256; public static final int mcInfoEditingEnabled = 512; public static final int mcInfoMovieIsInteractive = 1024; public static final int mcMenuUndo = 1; public static final int mcMenuCut = 3; public static final int mcMenuCopy = 4; public static final int mcMenuPaste = 5; public static final int mcMenuClear = 6; public static final int kControllerHeight = 16; public static final short mcActionIdle = 1; public static final short mcActionDraw = 2; public static final short mcActionActivate = 3; public static final short mcActionDeactivate = 4; public static final short mcActionMouseDown = 5; public static final short mcActionKey = 6; public static final short mcActionPlay = 8; public static final short mcActionGoToTime = 12; public static final short mcActionSetVolume = 14; public static final short mcActionGetVolume = 15; public static final short mcActionStep = 18; public static final short mcActionSetLooping = 21; public static final short mcActionGetLooping = 22; public static final short mcActionSetLoopIsPalindrome = 23; public static final short mcActionGetLoopIsPalindrome = 24; public static final short mcActionSetGrowBoxBounds = 25; public static final short mcActionControllerSizeChanged = 26; public static final short mcActionSetSelectionBegin = 29; public static final short mcActionSetSelectionDuration = 30; public static final short mcActionSetKeysEnabled = 32; public static final short mcActionGetKeysEnabled = 33; public static final short mcActionSetPlaySelection = 34; public static final short mcActionGetPlaySelection = 35; public static final short mcActionSetUseBadge = 36; public static final short mcActionGetUseBadge = 37; public static final short mcActionSetFlags = 38; public static final short mcActionGetFlags = 39; public static final short mcActionSetPlayEveryFrame = 40; public static final short mcActionGetPlayEveryFrame = 41; public static final short mcActionGetPlayRate = 42; public static final short mcActionShowBalloon = 43; public static final short mcActionBadgeClick = 44; public static final short mcActionMovieClick = 45; public static final short mcActionSuspend = 46; public static final short mcActionResume = 47; public static final short mcActionSetControllerKeysEnabled = 48; public static final short mcActionGetTimeSliderRect = 49; public static final short mcActionMovieEdited = 50; public static final short mcActionGetDragEnabled = 51; public static final short mcActionSetDragEnabled = 52; public static final short mcActionGetSelectionBegin = 53; public static final short mcActionGetSelectionDuration = 54; public static final short mcActionPrerollAndPlay = 55; public static final short mcActionGetCursorSettingEnabled = 56; public static final short mcActionSetCursorSettingEnabled = 57; public static final short mcActionSetColorTable = 58; public static final short mcActionLinkToURL = 59; public static final short mcActionCustomButtonClick = 60; public static final short mcActionForceTimeTableUpdate = 61; public static final short mcActionSetControllerTimeLimits = 62; public static final short mcActionExecuteAllActionsForQTEvent = 63; public static final short mcActionExecuteOneActionForQTEvent = 64; public static final short mcActionAdjustCursor = 65; public static final short mcActionUseTrackForTimeTable = 66; public static final short mcActionClickAndHoldPoint = 67; public static final short mcActionShowMessageString = 68; public static final short mcActionShowStatusString = 69; public static final short mcActionGetExternalMovie = 70; public static final short mcActionGetChapterTime = 71; public static final short mcActionPerformActionList = 72; public static final short mcActionEvaluateExpression = 73; public static final short mcActionFetchParameterAs = 74; public static final short mcActionGetCursorByID = 75; public static final short mcActionGetNextURL = 76; public static final int kActionMovieSetVolume = 1024; public static final int kActionMovieSetRate = 1025; public static final int kActionMovieSetLoopingFlags = 1026; public static final int kActionMovieGoToTime = 1027; public static final int kActionMovieGoToTimeByName = 1028; public static final int kActionMovieGoToBeginning = 1029; public static final int kActionMovieGoToEnd = 1030; public static final int kActionMovieStepForward = 1031; public static final int kActionMovieStepBackward = 1032; public static final int kActionMovieSetSelection = 1033; public static final int kActionMovieSetSelectionByName = 1034; public static final int kActionMoviePlaySelection = 1035; public static final int kActionMovieSetLanguage = 1036; public static final int kActionMovieChanged = 1037; public static final int kActionTrackSetVolume = 2048; public static final int kActionTrackSetBalance = 2049; public static final int kActionTrackSetEnabled = 2050; public static final int kActionTrackSetMatrix = 2051; public static final int kActionTrackSetLayer = 2052; public static final int kActionTrackSetClip = 2053; public static final int kActionSpriteSetMatrix = 3072; public static final int kActionSpriteSetImageIndex = 3073; public static final int kActionSpriteSetVisible = 3074; public static final int kActionSpriteSetLayer = 3075; public static final int kActionSpriteSetGraphicsMode = 3076; public static final int kActionSpritePassMouseToCodec = 3078; public static final int kActionSpriteClickOnCodec = 3079; public static final int kActionSpriteTranslate = 3080; public static final int kActionSpriteScale = 3081; public static final int kActionSpriteRotate = 3082; public static final int kActionSpriteStretch = 3083; public static final int kActionQTVRSetPanAngle = 4096; public static final int kActionQTVRSetTiltAngle = 4097; public static final int kActionQTVRSetFieldOfView = 4098; public static final int kActionQTVRShowDefaultView = 4099; public static final int kActionQTVRGoToNodeID = 4100; public static final int kActionMusicPlayNote = 5120; public static final int kActionMusicSetController = 5121; public static final int kActionCase = 6144; public static final int kActionWhile = 6145; public static final int kActionGoToURL = 6146; public static final int kActionSendQTEventToSprite = 6147; public static final int kActionDebugStr = 6148; public static final int kActionPushCurrentTime = 6149; public static final int kActionPushCurrentTimeWithLabel = 6150; public static final int kActionPopAndGotoTopTime = 6151; public static final int kActionPopAndGotoLabeledTime = 6152; public static final int kOperandExpression = 1; public static final int kOperandConstant = 2; public static final int kOperandMovieVolume = 1024; public static final int kOperandMovieRate = 1025; public static final int kOperandMovieIsLooping = 1026; public static final int kOperandMovieLoopIsPalindrome = 1027; public static final int kOperandMovieTime = 1028; public static final int kOperandTrackVolume = 2048; public static final int kOperandTrackBalance = 2049; public static final int kOperandTrackEnabled = 2050; public static final int kOperandTrackLayer = 2051; public static final int kOperandTrackWidth = 2052; public static final int kOperandTrackHeight = 2053; public static final int kOperandSpriteBoundsLeft = 3072; public static final int kOperandSpriteBoundsTop = 3073; public static final int kOperandSpriteBoundsRight = 3074; public static final int kOperandSpriteBoundsBottom = 3075; public static final int kOperandSpriteImageIndex = 3076; public static final int kOperandSpriteVisible = 3077; public static final int kOperandSpriteLayer = 3078; public static final int kOperandSpriteTrackVariable = 3079; public static final int kOperandSpriteTrackNumSprites = 3080; public static final int kOperandSpriteTrackNumImages = 3081; public static final int kOperandSpriteID = 3082; public static final int kOperandSpriteIndex = 3083; public static final int kOperandSpriteFirstCornerX = 3084; public static final int kOperandSpriteFirstCornerY = 3085; public static final int kOperandSpriteSecondCornerX = 3086; public static final int kOperandSpriteSecondCornerY = 3087; public static final int kOperandSpriteThirdCornerX = 3088; public static final int kOperandSpriteThirdCornerY = 3089; public static final int kOperandSpriteFourthCornerX = 3090; public static final int kOperandSpriteFourthCornerY = 3091; public static final int kOperandSpriteImageRegistrationPointX = 3092; public static final int kOperandSpriteImageRegistrationPointY = 3093; public static final int kOperandQTVRPanAngle = 4096; public static final int kOperandQTVRTiltAngle = 4097; public static final int kOperandQTVRFieldOfView = 4098; public static final int kOperandQTVRNodeID = 4099; public static final int kOperandMouseLocalHLoc = 5120; public static final int kOperandMouseLocalVLoc = 5121; public static final int kOperandKeyIsDown = 5122; public static final int kOperandRandom = 5123; public static final int kTargetMovie = 0x6d6f6f76; public static final int kTargetTrackName = 0x74726e61; public static final int kTargetTrackID = 0x74726964; public static final int kTargetTrackType = 0x74727479; public static final int kTargetTrackIndex = 0x7472696e; public static final int kTargetSpriteName = 0x73706e61; public static final int kTargetSpriteID = 0x73706964; public static final int kTargetSpriteIndex = 0x7370696e; public static final int kQTEventType = 0x65766e74; public static final int kAction = 0x6163746e; public static final int kWhichAction = 0x77686963; public static final int kActionParameter = 0x7061726d; public static final int kActionTarget = 0x74617267; public static final int kActionFlags = 0x666c6167; public static final int kActionParameterMinValue = 0x6d696e76; public static final int kActionParameterMaxValue = 0x6d617876; public static final int kActionListAtomType = 0x6c697374; public static final int kExpressionContainerAtomType = 0x65787072; public static final int kConditionalAtomType = 0x74657374; public static final int kOperatorAtomType = 0x6f706572; public static final int kOperandAtomType = 0x6f70726e; public static final int kCommentAtomType = 0x77687920; public static final int kQTEventMouseClick = 0x636c696b; public static final int kQTEventMouseClickEnd = 0x63656e64; public static final int kQTEventMouseClickEndTriggerButton = 0x74726967; public static final int kQTEventMouseEnter = 0x656e7472; public static final int kQTEventMouseExit = 0x65786974; public static final int kQTEventFrameLoaded = 0x6672616d; public static final int kQTEventIdle = 0x69646c65; public static final int kQTEventRequestToModifyMovie = 0x7265716d; public static final int kActionFlagActionIsDelta = 2; public static final int kActionFlagParameterWrapsAround = 4; public static final int kActionFlagActionIsToggle = 8; public static final int kOperatorAdd = 0x61646420; public static final int kOperatorSubtract = 0x73756220; public static final int kOperatorMultiply = 0x6d756c74; public static final int kOperatorDivide = 0x64697620; public static final int kOperatorOr = 0x6f722020; public static final int kOperatorAnd = 0x616e6420; public static final int kOperatorNot = 0x6e6f7420; public static final int kOperatorLessThan = 0x3c202020; public static final int kOperatorLessThanEqualTo = 0x3c3d2020; public static final int kOperatorEqualTo = 0x3d202020; public static final int kOperatorNotEqualTo = 0x213d2020; public static final int kOperatorGreaterThan = 0x3e202020; public static final int kOperatorGreaterThanEqualTo = 0x3e3d2020; public static final int kOperatorModulo = 0x6d6f6420; public static final int kOperatorIntegerDivide = 0x69646976; public static final int kOperatorAbsoluteValue = 0x61627320; public static final int kOperatorNegate = 0x6e656720; public static final int kMediaPropertyNonLinearAtomType = 0x6e6f6e6c; public static final int kMediaPropertyHasActions = 105; public static final int preloadAlways = 1; public static final int preloadOnlyIfEnabled = 2; public static final int trackUsageInMovie = 2; public static final int trackUsageInPreview = 4; public static final int trackUsageInPoster = 8; public static final int kTrackModifierInput = 26990; public static final int kTrackModifierType = 29817; public static final int kTrackModifierReference = 0x73737263; public static final int kTrackModifierObjectID = 0x6f626964; public static final int kTrackModifierInputName = 0x6e616d65; public static final int kTrackModifierTypeMatrix = 1; public static final int kTrackModifierTypeClip = 2; public static final int kTrackModifierTypeGraphicsMode = 5; public static final int kTrackModifierTypeVolume = 3; public static final int kTrackModifierTypeBalance = 4; public static final int kTrackModifierTypeImage = 0x76696465; public static final int kTrackModifierObjectMatrix = 6; public static final int kTrackModifierObjectGraphicsMode = 7; public static final int kTrackModifierType3d4x4Matrix = 8; public static final int kTrackModifierCameraData = 9; public static final int kTrackModifierSoundLocalizationData = 10; public static final int kTrackModifierObjectImageIndex = 11; public static final int kTrackModifierObjectLayer = 12; public static final int kTrackModifierObjectVisible = 13; public static final int kTrackModifierPanAngle = 0x70616e20; public static final int kTrackModifierTiltAngle = 0x74696c74; public static final int kTrackModifierVerticalFieldOfViewAngle = 0x666f7620; public static final int kTrackModifierObjectQTEventSend = 0x65766e74; public static final int videoMediaType = 0x76696465; public static final int soundMediaType = 0x736f756e; public static final int textMediaType = 0x74657874; public static final int baseMediaType = 0x676e7263; public static final int MPEGMediaType = 0x4d504547; public static final int musicMediaType = 0x6d757369; public static final int timeCodeMediaType = 0x746d6364; public static final int spriteMediaType = 0x73707274; public static final int tweenMediaType = 0x7477656e; public static final int threeDMediaType = 0x71643364; public static final int threeDeeMediaType = 0x71643364; public static final int DVCMediaType = 0x64766320; public static final int handleDataHandlerSubType = 0x686e646c; public static final int resourceDataHandlerSubType = 0x72737263; public static final int aliasDataHandlerSubType = 0x616c6973; public static final int urlDataHandlerSubType = 0x75726c20; public static final int mediaSampleNotSync = 1; public static final int mediaSampleShadowSync = 2; public static final int dataRefSelfReference = 1; public static final int dataRefWasNotResolved = 2; public static final int dataHandlerType = 0x64686c72; public static final int kDataHCanRead = 1; public static final int kDataHSpecialRead = 2; public static final int kDataHSpecialReadFile = 4; public static final int kDataHCanWrite = 8; public static final int kDataHSpecialWrite = 16; public static final int kDataHSpecialWriteFile = 32; public static final int kDataHCanStreamingWrite = 64; public static final int kDataHMustCheckDataRef = 128; public static final int kGetMovieImporterValidateToFind = 1; public static final int kGetMovieImporterAllowNewFile = 2; public static final int kGetMovieImporterDontConsiderGraphicsImporters = 4; public static final int mediaHandlerType = 0x6d686c72; public static final int kSpritePropertyImageIndex = 100; public static final int kSpriteTrackPropertyBackgroundColor = 101; public static final int kSpriteTrackPropertyOffscreenBitDepth = 102; public static final int kSpriteTrackPropertySampleFormat = 103; public static final int kSpriteTrackPropertyScaleSpritesToScaleWorld = 104; public static final int kSpriteTrackPropertyHasActions = 105; public static final int kSpriteTrackPropertyVisible = 106; public static final int kSpriteTrackPropertyQTIdleEventsFrequency = 107; public static final int kSpriteImagePropertyRegistrationPoint = 1000; public static final int kSpriteImagePropertyGroupID = 1001; public static final int kNoQTIdleEvents = -1; public static final int kKeyFrameAndSingleOverride = 2; public static final int kKeyFrameAndAllOverrides = 4; public static final int kSpriteAtomType = 0x73707274; public static final int kSpriteImagesContainerAtomType = 0x696d6374; public static final int kSpriteImageAtomType = 0x696d6167; public static final int kSpriteImageDataAtomType = 0x696d6461; public static final int kSpriteImageGroupIDAtomType = 0x696d6772; public static final int kSpriteImageRegistrationAtomType = 0x696d7267; public static final int kSpriteSharedDataAtomType = 0x64666c74; public static final int kSpriteNameAtomType = 0x6e616d65; public static final int kSpriteImageNameAtomType = 0x6e616d65; public static final int kSpriteUsesImageIDsAtomType = 0x75736573; public static final int findTextEdgeOK = 1; public static final int findTextCaseSensitive = 2; public static final int findTextReverseSearch = 4; public static final int findTextWrapAround = 8; public static final int findTextUseOffset = 16; public static final int dropShadowOffsetType = 0x6472706f; public static final int dropShadowTranslucencyType = 0x64727074; public static final int dfDontDisplay = 1; public static final int dfDontAutoScale = 2; public static final int dfClipToTextBox = 4; public static final int dfUseMovieBGColor = 8; public static final int dfShrinkTextBoxToFit = 16; public static final int dfScrollIn = 32; public static final int dfScrollOut = 64; public static final int dfHorizScroll = 128; public static final int dfReverseScroll = 256; public static final int dfContinuousScroll = 512; public static final int dfFlowHoriz = 1024; public static final int dfContinuousKaraoke = 2048; public static final int dfDropShadow = 4096; public static final int dfAntiAlias = 8192; public static final int dfKeyedText = 16384; public static final int dfInverseHilite = 32768; public static final int dfTextColorHilite = 0x10000; public static final int k3DMediaRendererEntry = 0x72656e64; public static final int k3DMediaRendererName = 0x6e616d65; public static final int k3DMediaRendererCode = 0x72636f64; public static final int kGetAtomicInstNoExpandedSamples = 1; public static final int kGetAtomicInstNoOriginalSamples = 2; public static final int kGetAtomicInstNoSamples = 3; public static final int kGetAtomicInstNoKnobList = 4; public static final int kGetAtomicInstNoInstrumentInfo = 8; public static final int kGetAtomicInstOriginalKnobList = 16; public static final int kGetAtomicInstAllKnobs = 32; public static final int kSetAtomicInstKeepOriginalInstrument = 1; public static final int kSetAtomicInstShareAcrossParts = 2; public static final int kSetAtomicInstCallerTosses = 4; public static final int kSetAtomicInstCallerGuarantees = 8; public static final int kSetAtomicInstInterruptSafe = 16; public static final int kSetAtomicInstDontPreprocess = 128; public static final int kInstrumentExactMatch = 2; public static final int kInstrumentRecommendedSubstitute = 1; public static final int kInstrumentRoland8BitQuality = 5; public static final int kGetInstrumentInfoNoBuiltIn = 1; public static final int kGetInstrumentInfoMidiUserInst = 2; public static final int kGetInstrumentInfoNoIText = 4; public static final int kBaseInstrumentSubType = 0x62617365; public static final int kInstrumentComponentType = 0x696e7374; public static final int kMusicComponentType = 0x6d757369; public static final int kSoftSynthComponentSubType = 0x73732020; public static final int kGMSynthComponentSubType = 0x676d2020; public static final int kaiToneDescType = 0x746f6e65; public static final int kaiNoteRequestInfoType = 0x6e747271; public static final int kaiKnobListType = 0x6b6e626c; public static final int kaiKeyRangeInfoType = 0x73696e66; public static final int kaiSampleDescType = 0x73647363; public static final int kaiSampleInfoType = 0x736d696e; public static final int kaiSampleDataType = 0x73646174; public static final int kaiSampleDataQUIDType = 0x71756964; public static final int kaiInstInfoType = 0x69696e66; public static final int kaiPictType = 0x70696374; public static final int kaiWriterType = 0x40777274; public static final int kaiCopyrightType = 0x40637079; public static final int kaiOtherStrType = 0x73747220; public static final int kaiInstrumentRefType = 0x69726566; public static final int kaiInstGMQualityType = 0x7175616c; public static final int kaiLibraryInfoType = 0x6c696e66; public static final int kaiLibraryDescType = 0x6c647363; public static final int kInstKnobMissingUnknown = 0; public static final int kInstKnobMissingDefault = 1; public static final int kMusicLoopTypeNormal = 0; public static final int kMusicLoopTypePalindrome = 1; public static final int instSamplePreProcessFlag = 1; public static final int kQTMIDIComponentType = 0x6d696469; public static final int kOMSComponentSubType = 0x4f4d5320; public static final int kFMSComponentSubType = 0x464d5320; public static final int kMIDIManagerComponentSubType = 0x6d6d6772; public static final int kAppleSysexID = 17; public static final int kAppleSysexCmdSampleSize = 1; public static final int kAppleSysexCmdSampleBreak = 2; public static final int kAppleSysexCmdAtomicInstrument = 16; public static final int kAppleSysexCmdDeveloper = 32512; public static final int kMusicPacketPortLost = 1; public static final int kMusicPacketPortFound = 2; public static final int kMusicPacketTimeGap = 3; public static final int kNoteAllocatorComponentType = 0x6e6f7461; public static final int kPickDontMix = 1; public static final int kPickSameSynth = 2; public static final int kPickUserInsts = 4; public static final int kPickEditAllowEdit = 8; public static final int kPickEditAllowPick = 16; public static final int kPickEditSynthGlobal = 32; public static final int kPickEditControllers = 64; public static final int kNoteRequestNoGM = 1; public static final int kNoteRequestNoSynthType = 2; public static final int kNoteRequestSynthMustMatch = 4; public static final int kVoiceCountDynamic = -1; public static final int kGeneralEventNoteRequest = 1; public static final int kGeneralEventPartKey = 4; public static final int kGeneralEventTuneDifference = 5; public static final int kGeneralEventAtomicInstrument = 6; public static final int kGeneralEventKnob = 7; public static final int kGeneralEventMIDIChannel = 8; public static final int kGeneralEventPartChange = 9; public static final int kGeneralEventNoOp = 10; public static final int kGeneralEventUsedNotes = 11; public static final int kGeneralEventPartMix = 12; public static final int kMarkerEventEnd = 0; public static final int kMarkerEventBeat = 1; public static final int kMarkerEventTempo = 2; public static final int kMIDINoteOn = 144; public static final int kMIDINoteOff = 128; public static final int kMIDIPolyPressure = 160; public static final int kMIDIControlChange = 176; public static final int kMIDIProgramChange = 192; public static final int kMIDIAftertouch = 208; public static final int kMIDIChannelPressure = 208; public static final int kMIDIPitchBend = 224; public static final int kMIDIBeginSystemExclusive = 240; public static final int kMIDIEndSystemExclusive = 247; public static final int kMIDIChannel1 = 0; public static final int kMIDIChannel2 = 1; public static final int kMIDIChannel3 = 2; public static final int kMIDIChannel4 = 3; public static final int kMIDIChannel5 = 4; public static final int kMIDIChannel6 = 5; public static final int kMIDIChannel7 = 6; public static final int kMIDIChannel8 = 7; public static final int kMIDIChannel9 = 8; public static final int kMIDIChannel10 = 9; public static final int kMIDIChannel11 = 10; public static final int kMIDIChannel12 = 11; public static final int kMIDIChannel13 = 12; public static final int kMIDIChannel14 = 13; public static final int kMIDIChannel15 = 14; public static final int kMIDIChannel16 = 15; public static final int kControllerModulationWheel = 1; public static final int kControllerBreath = 2; public static final int kControllerFoot = 4; public static final int kControllerPortamentoTime = 5; public static final int kControllerVolume = 7; public static final int kControllerBalance = 8; public static final int kControllerPan = 10; public static final int kControllerExpression = 11; public static final int kControllerLever1 = 16; public static final int kControllerLever2 = 17; public static final int kControllerLever3 = 18; public static final int kControllerLever4 = 19; public static final int kControllerLever5 = 80; public static final int kControllerLever6 = 81; public static final int kControllerLever7 = 82; public static final int kControllerLever8 = 83; public static final int kControllerPitchBend = 32; public static final int kControllerAfterTouch = 33; public static final int kControllerPartTranspose = 40; public static final int kControllerTuneTranspose = 41; public static final int kControllerPartVolume = 42; public static final int kControllerTuneVolume = 43; public static final int kControllerSustain = 64; public static final int kControllerPortamento = 65; public static final int kControllerSostenuto = 66; public static final int kControllerSoftPedal = 67; public static final int kControllerReverb = 91; public static final int kControllerTremolo = 92; public static final int kControllerChorus = 93; public static final int kControllerCeleste = 94; public static final int kControllerPhaser = 95; public static final int kControllerEditPart = 113; public static final int kControllerMasterTune = 114; public static final int kControllerMasterTranspose = 114; public static final int kControllerMasterVolume = 115; public static final int kControllerMasterCPULoad = 116; public static final int kControllerMasterPolyphony = 117; public static final int kControllerMasterFeatures = 118; public static final int kQTMSKnobStartID = 0x2000000; public static final int kQTMSKnobVolumeAttackTimeID = 0x2000001; public static final int kQTMSKnobVolumeDecayTimeID = 0x2000002; public static final int kQTMSKnobVolumeSustainLevelID = 0x2000003; public static final int kQTMSKnobVolumeRelease1RateID = 0x2000004; public static final int kQTMSKnobVolumeDecayKeyScalingID = 0x2000005; public static final int kQTMSKnobVolumeReleaseTimeID = 0x2000006; public static final int kQTMSKnobVolumeLFODelayID = 0x2000007; public static final int kQTMSKnobVolumeLFORampTimeID = 0x2000008; public static final int kQTMSKnobVolumeLFOPeriodID = 0x2000009; public static final int kQTMSKnobVolumeLFOShapeID = 0x200000a; public static final int kQTMSKnobVolumeLFODepthID = 0x200000b; public static final int kQTMSKnobVolumeOverallID = 0x200000c; public static final int kQTMSKnobVolumeVelocity127ID = 0x200000d; public static final int kQTMSKnobVolumeVelocity96ID = 0x200000e; public static final int kQTMSKnobVolumeVelocity64ID = 0x200000f; public static final int kQTMSKnobVolumeVelocity32ID = 0x2000010; public static final int kQTMSKnobVolumeVelocity16ID = 0x2000011; public static final int kQTMSKnobPitchTransposeID = 0x2000012; public static final int kQTMSKnobPitchLFODelayID = 0x2000013; public static final int kQTMSKnobPitchLFORampTimeID = 0x2000014; public static final int kQTMSKnobPitchLFOPeriodID = 0x2000015; public static final int kQTMSKnobPitchLFOShapeID = 0x2000016; public static final int kQTMSKnobPitchLFODepthID = 0x2000017; public static final int kQTMSKnobPitchLFOQuantizeID = 0x2000018; public static final int kQTMSKnobStereoDefaultPanID = 0x2000019; public static final int kQTMSKnobStereoPositionKeyScalingID = 0x200001a; public static final int kQTMSKnobPitchLFOOffsetID = 0x200001b; public static final int kQTMSKnobExclusionGroupID = 0x200001c; public static final int kQTMSKnobSustainTimeID = 0x200001d; public static final int kQTMSKnobSustainInfiniteID = 0x200001e; public static final int kQTMSKnobVolumeLFOStereoID = 0x200001f; public static final int kQTMSKnobVelocityLowID = 0x2000020; public static final int kQTMSKnobVelocityHighID = 0x2000021; public static final int kQTMSKnobVelocitySensitivityID = 0x2000022; public static final int kQTMSKnobPitchSensitivityID = 0x2000023; public static final int kQTMSKnobVolumeLFODepthFromWheelID = 0x2000024; public static final int kQTMSKnobPitchLFODepthFromWheelID = 0x2000025; public static final int kQTMSKnobVolumeExpOptionsID = 0x2000026; public static final int kQTMSKnobEnv1AttackTimeID = 0x2000027; public static final int kQTMSKnobEnv1DecayTimeID = 0x2000028; public static final int kQTMSKnobEnv1SustainLevelID = 0x2000029; public static final int kQTMSKnobEnv1SustainTimeID = 0x200002a; public static final int kQTMSKnobEnv1SustainInfiniteID = 0x200002b; public static final int kQTMSKnobEnv1ReleaseTimeID = 0x200002c; public static final int kQTMSKnobEnv1ExpOptionsID = 0x200002d; public static final int kQTMSKnobEnv2AttackTimeID = 0x200002e; public static final int kQTMSKnobEnv2DecayTimeID = 0x200002f; public static final int kQTMSKnobEnv2SustainLevelID = 0x2000030; public static final int kQTMSKnobEnv2SustainTimeID = 0x2000031; public static final int kQTMSKnobEnv2SustainInfiniteID = 0x2000032; public static final int kQTMSKnobEnv2ReleaseTimeID = 0x2000033; public static final int kQTMSKnobEnv2ExpOptionsID = 0x2000034; public static final int kQTMSKnobPitchEnvelopeID = 0x2000035; public static final int kQTMSKnobPitchEnvelopeDepthID = 0x2000036; public static final int kQTMSKnobFilterKeyFollowID = 0x2000037; public static final int kQTMSKnobFilterTransposeID = 0x2000038; public static final int kQTMSKnobFilterQID = 0x2000039; public static final int kQTMSKnobFilterFrequencyEnvelopeID = 0x200003a; public static final int kQTMSKnobFilterFrequencyEnvelopeDepthID = 0x200003b; public static final int kQTMSKnobFilterQEnvelopeID = 0x200003c; public static final int kQTMSKnobFilterQEnvelopeDepthID = 0x200003d; public static final int kQTMSKnobReverbThresholdID = 0x200003e; public static final int kQTMSKnobVolumeAttackVelScalingID = 0x200003f; public static final int kQTMSKnobLastIDPlus1 = 0x2000040; public static final int kFirstGMInstrument = 1; public static final int kLastGMInstrument = 128; public static final int kFirstGSInstrument = 129; public static final int kLastGSInstrument = 16383; public static final int kFirstROMInstrument = 32768; public static final int kLastROMInstrument = 65535; public static final int kFirstUserInstrument = 0x10000; public static final int kLastUserInstrument = 0x1ffff; public static final int kInstrumentMatchSynthesizerType = 1; public static final int kInstrumentMatchSynthesizerName = 2; public static final int kInstrumentMatchName = 4; public static final int kInstrumentMatchNumber = 8; public static final int kInstrumentMatchGMNumber = 16; public static final int kInstrumentMatchGSNumber = 32; public static final int kKnobBasic = 8; public static final int kKnobReadOnly = 16; public static final int kKnobInterruptUnsafe = 32; public static final int kKnobKeyrangeOverride = 64; public static final int kKnobGroupStart = 128; public static final int kKnobFixedPoint8 = 1024; public static final int kKnobFixedPoint16 = 2048; public static final int kKnobTypeNumber = 0; public static final int kKnobTypeGroupName = 4096; public static final int kKnobTypeBoolean = 8192; public static final int kKnobTypeNote = 12288; public static final int kKnobTypePan = 16384; public static final int kKnobTypeInstrument = 20480; public static final int kKnobTypeSetting = 24576; public static final int kKnobTypeMilliseconds = 28672; public static final int kKnobTypePercentage = 32768; public static final int kKnobTypeHertz = 36864; public static final int kKnobTypeButton = 40960; public static final int kUnknownKnobValue = 0x7fffffff; public static final int kDefaultKnobValue = 0x7ffffffe; public static final short kControllerMaximum = 32767; public static final short kControllerMinimum = -32768; public static final int kNoDrumKit = 16384; public static final int kFirstDrumkit = 16385; public static final int kLastDrumkit = 16512; public static final int kSynthesizerConnectionMono = 1; public static final int kSynthesizerConnectionMMgr = 2; public static final int kSynthesizerConnectionOMS = 4; public static final int kSynthesizerConnectionQT = 8; public static final int kSynthesizerConnectionUnavailable = 256; public static final int kSynthesizerConnectionFMS = 16; public static final int kSynthesizerDynamicVoice = 1; public static final int kSynthesizerUsesMIDIPort = 2; public static final int kSynthesizerMicrotone = 4; public static final int kSynthesizerHasSamples = 8; public static final int kSynthesizerMixedDrums = 16; public static final int kSynthesizerSoftware = 32; public static final int kSynthesizerHardware = 64; public static final int kSynthesizerDynamicChannel = 128; public static final int kSynthesizerHogsSystemChannel = 256; public static final int kSynthesizerHasSystemChannel = 512; public static final int kSynthesizerSlowSetPart = 1024; public static final int kSynthesizerOffline = 4096; public static final int kSynthesizerGM = 16384; public static final int kSynthesizerDLS = 32768; public static final int kSynthesizerSoundLocalization = 0x10000; public static final int kTunePlayerComponentType = 0x74756e65; public static final int kTuneStartNow = 1; public static final int kTuneDontClipNotes = 2; public static final int kTuneExcludeEdgeNotes = 4; public static final int kTuneQuickStart = 8; public static final int kTuneLoopUntil = 16; public static final int kTunePlayDifference = 32; public static final int kTunePlayConcurrent = 64; public static final int kTuneStartNewMaster = 16384; public static final int kTuneStopFade = 1; public static final int kTuneStopSustain = 2; public static final int kTuneStopInstant = 4; public static final int kTuneStopReleaseChannels = 8; public static final int kTuneMixMute = 1; public static final int kTuneMixSolo = 2; public static final int kRestEventType = 0; public static final int kNoteEventType = 1; public static final int kControlEventType = 2; public static final int kMarkerEventType = 3; public static final int kUndefined1EventType = 8; public static final int kXNoteEventType = 9; public static final int kXControlEventType = 10; public static final int kKnobEventType = 11; public static final int kUndefined2EventType = 12; public static final int kUndefined3EventType = 13; public static final int kUndefined4EventType = 14; public static final int kGeneralEventType = 15; public static final int kXEventLengthBits = 2; public static final int kGeneralEventLengthBits = 3; public static final int kEventLen = 1; public static final int kXEventLen = 2; public static final int kRestEventLen = 1; public static final int kNoteEventLen = 1; public static final int kControlEventLen = 1; public static final int kMarkerEventLen = 1; public static final int kXNoteEventLen = 2; public static final int kXControlEventLen = 2; public static final int kGeneralEventLen = 2; public static final int kEventLengthFieldPos = 30; public static final int kEventLengthFieldWidth = 2; public static final int kEventTypeFieldPos = 29; public static final int kEventTypeFieldWidth = 3; public static final int kXEventTypeFieldPos = 28; public static final int kXEventTypeFieldWidth = 4; public static final int kEventPartFieldPos = 24; public static final int kEventPartFieldWidth = 5; public static final int kXEventPartFieldPos = 16; public static final int kXEventPartFieldWidth = 12; public static final int kRestEventDurationFieldPos = 0; public static final int kRestEventDurationFieldWidth = 24; public static final int kRestEventDurationMax = 0xffffff; public static final int kNoteEventPitchFieldPos = 18; public static final int kNoteEventPitchFieldWidth = 6; public static final int kNoteEventPitchOffset = 32; public static final int kNoteEventVolumeFieldPos = 11; public static final int kNoteEventVolumeFieldWidth = 7; public static final int kNoteEventVolumeOffset = 0; public static final int kNoteEventDurationFieldPos = 0; public static final int kNoteEventDurationFieldWidth = 11; public static final int kNoteEventDurationMax = 2047; public static final int kXNoteEventPitchFieldPos = 0; public static final int kXNoteEventPitchFieldWidth = 16; public static final int kXNoteEventDurationFieldPos = 0; public static final int kXNoteEventDurationFieldWidth = 22; public static final int kXNoteEventDurationMax = 0x3fffff; public static final int kXNoteEventVolumeFieldPos = 22; public static final int kXNoteEventVolumeFieldWidth = 7; public static final int kControlEventControllerFieldPos = 16; public static final int kControlEventControllerFieldWidth = 8; public static final int kControlEventValueFieldPos = 0; public static final int kControlEventValueFieldWidth = 16; public static final int kXControlEventControllerFieldPos = 0; public static final int kXControlEventControllerFieldWidth = 16; public static final int kXControlEventValueFieldPos = 0; public static final int kXControlEventValueFieldWidth = 16; public static final int kKnobEventValueHighFieldPos = 0; public static final int kKnobEventValueHighFieldWidth = 16; public static final int kKnobEventKnobFieldPos = 16; public static final int kKnobEventKnobFieldWidth = 14; public static final int kKnobEventValueLowFieldPos = 0; public static final int kKnobEventValueLowFieldWidth = 16; public static final int kMarkerEventSubtypeFieldPos = 16; public static final int kMarkerEventSubtypeFieldWidth = 8; public static final int kMarkerEventValueFieldPos = 0; public static final int kMarkerEventValueFieldWidth = 16; public static final int kGeneralEventSubtypeFieldPos = 16; public static final int kGeneralEventSubtypeFieldWidth = 14; public static final int kGeneralEventLengthFieldPos = 0; public static final int kGeneralEventLengthFieldWidth = 16; public static final int kCurrentlyNativeEndian = 1; public static final int kCurrentlyNotNativeEndian = 2; public static final int movieExportType = 0x73706974; public static final int kMovieExportTextOnly = 0; public static final int kMovieExportAbsoluteTime = 1; public static final int kMovieExportRelativeTime = 2; public static final int movieImportType = 0x65617420; public static final int movieImportCreateTrack = 1; public static final int movieImportInParallel = 2; public static final int movieImportMustUseTrack = 4; public static final int movieImportResultUsedMultipleTracks = 8; public static final int kMIDIImportSilenceBefore = 1; public static final int kMIDIImportSilenceAfter = 2; public static final int kMIDIImport20Playable = 4; public static final int kMIDIImportWantLyrics = 8; public static final int kQTSettingsEffect = 0x65666665; public static final int kQTSettingsMIDI = 0x4d494449; public static final int kQTSettingsMIDISettingFlags = 0x73747467; public static final int kQTSettingsText = 0x74657874; public static final int kQTSettingsTextDescription = 0x64657363; public static final int kQTSettingsTextSize = 0x73697a65; public static final int kQTSettingsTextSettingFlags = 0x73747467; public static final int kQTSettingsTextTimeFraction = 0x74696d66; public static final int kQTSettingsTime = 0x74696d65; public static final int kQTSettingsAudioCDTrack = 0x7472616b; public static final int kQTSettingsAudioCDTrackRateShift = 0x72736866; public static final int tcDropFrame = 1; public static final int tc24HourMax = 2; public static final int tcNegTimesOK = 4; public static final int tcCounter = 8; public static final int tcdfShowTimeCode = 1; public static final int tweenComponentType = 0x7477656e; public static final int kTweenEntry = 0x7477656e; public static final int kTweenData = 0x64617461; public static final int kTweenType = 0x74776e74; public static final int kTweenStartOffset = 0x74777374; public static final int kTweenDuration = 0x74776475; public static final int kTweenFlags = 0x666c6167; public static final int kTweenOutputMin = 0x6f6d696e; public static final int kTweenOutputMax = 0x6f6d6178; public static final int kTweenSequenceElement = 0x73657165; public static final int kTween3dInitialCondition = 0x69636e64; public static final int kTweenInterpolationID = 0x696e7472; public static final int kTweenInterpolateStyle = 0x69737479; public static final int kInputMapSubInputID = 0x73756269; public static final int kTweenRegionData = 0x71647267; public static final int kTweenPictureData = 0x50494354; public static final int kListElementType = 0x74797065; public static final int kListElementDataType = 0x64617479; public static final int kNameAtom = 0x6e616d65; public static final int kInitialRotationAtom = 0x696e726f; public static final int kNonLinearTweenHeader = 0x6e6c7468; public static final int kTweenReturnDelta = 1; public static final int kTweenTypeShort = 1; public static final int kTweenTypeLong = 2; public static final int kTweenTypeFixed = 3; public static final int kTweenTypeFloat = 3; public static final int kTweenTypePoint = 4; public static final int kTweenTypeQDRect = 5; public static final int kTweenTypeQDRegion = 6; public static final int kTweenTypeMatrix = 7; public static final int kTweenTypeRGBColor = 8; public static final int kTweenTypeGraphicsModeWithRGBColor = 9; public static final int kTweenTypeQTFloatSingle = 10; public static final int kTweenTypeQTFloatDouble = 11; public static final int kTweenTypeFixedPoint = 12; public static final int kTweenType3dScale = 0x33736361; public static final int kTweenType3dTranslate = 0x33747261; public static final int kTweenType3dRotate = 0x33726f74; public static final int kTweenType3dRotateAboutPoint = 0x33726170; public static final int kTweenType3dRotateAboutAxis = 0x33726178; public static final int kTweenType3dRotateAboutVector = 0x33727663; public static final int kTweenType3dQuaternion = 0x33717561; public static final int kTweenType3dMatrix = 0x336d6174; public static final int kTweenType3dCameraData = 0x3363616d; public static final int kTweenType3dSoundLocalizationData = 0x33736c63; public static final int kTweenTypePathToMatrixTranslation = 0x67786d74; public static final int kTweenTypePathToMatrixRotation = 0x67787072; public static final int kTweenTypePathToMatrixTranslationAndRotation = 0x67786d72; public static final int kTweenTypePathToFixedPoint = 0x67786670; public static final int kTweenTypePathXtoY = 0x67787879; public static final int kTweenTypePathYtoX = 0x67787978; public static final int kTweenTypeAtomList = 0x61746f6d; public static final int kTweenTypePolygon = 0x706f6c79; public static final int kTweenTypeMultiMatrix = 0x6d756c6d; public static final int kTweenTypeSpin = 0x7370696e; public static final int kTweenType3dMatrixNonLinear = 0x336e6c72; public static final int kTweenType3dVRObject = 0x3376726f; public static final int kParameterTypeDataLong = 2; public static final int kParameterTypeDataFixed = 3; public static final int kParameterTypeDataRGBValue = 8; public static final int kParameterTypeDataDouble = 11; public static final int seqGrabComponentType = 0x62617267; public static final int seqGrabChannelType = 0x73676368; public static final int seqGrabPanelType = 0x7367706e; public static final int seqGrabCompressionPanelType = 0x636d7072; public static final int seqGrabSourcePanelType = 0x736f7572; public static final int seqGrabUnpause = 0; public static final int seqGrabPause = 1; public static final int seqGrabPauseForMenu = 3; public static final int seqGrabToDisk = 1; public static final int seqGrabToMemory = 2; public static final int seqGrabDontUseTempMemory = 4; public static final int seqGrabAppendToFile = 8; public static final int seqGrabDontAddMovieResource = 16; public static final int seqGrabDontMakeMovie = 32; public static final int seqGrabPreExtendFile = 64; public static final int seqGrabDataProcIsInterruptSafe = 128; public static final int seqGrabDataProcDoesOverlappingReads = 256; public static final int seqGrabRecord = 1; public static final int seqGrabPreview = 2; public static final int seqGrabPlayDuringRecord = 4; public static final int seqGrabHasBounds = 1; public static final int seqGrabHasVolume = 2; public static final int seqGrabHasDiscreteSamples = 4; public static final int sgDeviceListWithIcons = 1; public static final int sgDeviceListDontCheckAvailability = 2; public static final int seqGrabWriteAppend = 0; public static final int seqGrabWriteReserve = 1; public static final int seqGrabWriteFill = 2; public static final int channelPlayNormal = 0; public static final int channelPlayFast = 1; public static final int channelPlayHighQuality = 2; public static final int channelPlayAllData = 4; public static final int channelFlagDontOpenResFile = 2; public static final int channelFlagHasDependency = 4; public static final int videoDigitizerComponentType = 0x76696467; public static final int vdigInterfaceRev = 2; public static final int ntscIn = 0; public static final int currentIn = 0; public static final int palIn = 1; public static final int secamIn = 2; public static final int ntscReallyIn = 3; public static final int compositeIn = 0; public static final int sVideoIn = 1; public static final int rgbComponentIn = 2; public static final int rgbComponentSyncIn = 3; public static final int yuvComponentIn = 4; public static final int yuvComponentSyncIn = 5; public static final int tvTunerIn = 6; public static final int sdiIn = 7; public static final int vdPlayThruOff = 0; public static final int vdPlayThruOn = 1; public static final int vdDigitizerBW = 0; public static final int vdDigitizerRGB = 1; public static final int vdBroadcastMode = 0; public static final int vdVTRMode = 1; public static final int vdUseAnyField = 0; public static final int vdUseOddField = 1; public static final int vdUseEvenField = 2; public static final int vdTypeBasic = 0; public static final int vdTypeAlpha = 1; public static final int vdTypeMask = 2; public static final int vdTypeKey = 3; public static final int digiInDoesNTSC = 1; public static final int digiInDoesPAL = 2; public static final int digiInDoesSECAM = 4; public static final int digiInDoesGenLock = 128; public static final int digiInDoesComposite = 256; public static final int digiInDoesSVideo = 512; public static final int digiInDoesComponent = 1024; public static final int digiInVTR_Broadcast = 2048; public static final int digiInDoesColor = 4096; public static final int digiInDoesBW = 8192; public static final int digiInSignalLock = 0x80000000; public static final int digiOutDoes1 = 1; public static final int digiOutDoes2 = 2; public static final int digiOutDoes4 = 4; public static final int digiOutDoes8 = 8; public static final int digiOutDoes16 = 16; public static final int digiOutDoes32 = 32; public static final int digiOutDoesDither = 64; public static final int digiOutDoesStretch = 128; public static final int digiOutDoesShrink = 256; public static final int digiOutDoesMask = 512; public static final int digiOutDoesDouble = 2048; public static final int digiOutDoesQuad = 4096; public static final int digiOutDoesQuarter = 8192; public static final int digiOutDoesSixteenth = 16384; public static final int digiOutDoesRotate = 32768; public static final int digiOutDoesHorizFlip = 0x10000; public static final int digiOutDoesVertFlip = 0x20000; public static final int digiOutDoesSkew = 0x40000; public static final int digiOutDoesBlend = 0x80000; public static final int digiOutDoesWarp = 0x100000; public static final int digiOutDoesHW_DMA = 0x200000; public static final int digiOutDoesHWPlayThru = 0x400000; public static final int digiOutDoesILUT = 0x800000; public static final int digiOutDoesKeyColor = 0x1000000; public static final int digiOutDoesAsyncGrabs = 0x2000000; public static final int digiOutDoesUnreadableScreenBits = 0x4000000; public static final int digiOutDoesCompress = 0x8000000; public static final int digiOutDoesCompressOnly = 0x10000000; public static final int digiOutDoesPlayThruDuringCompress = 0x20000000; public static final int digiOutDoesCompressPartiallyVisible = 0x40000000; public static final int dmaDepth1 = 1; public static final int dmaDepth2 = 2; public static final int dmaDepth4 = 4; public static final int dmaDepth8 = 8; public static final int dmaDepth16 = 16; public static final int dmaDepth32 = 32; public static final int dmaDepth2Gray = 64; public static final int dmaDepth4Gray = 128; public static final int dmaDepth8Gray = 256; public static final int kVDIGControlledFrameRate = -1; public static final int sgChannelAtom = 0x6368616e; public static final int sgChannelSettingsAtom = 0x63746f6d; public static final int sgChannelDescription = 0x63647363; public static final int sgChannelSettings = 0x63736574; public static final int sgDeviceNameType = 0x6e616d65; public static final int sgUsageType = 0x75736520; public static final int sgPlayFlagsType = 0x706c7966; public static final int sgClipType = 0x636c6970; public static final int sgMatrixType = 0x6d747278; public static final int sgVolumeType = 0x766f6c75; public static final int sgPanelSettingsAtom = 0x70746f6d; public static final int sgPanelDescription = 0x70647363; public static final int sgPanelSettings = 0x70736574; public static final int sgcSoundCompressionType = 0x73636d70; public static final int sgcSoundSampleRateType = 0x73726174; public static final int sgcSoundChannelCountType = 0x7363686e; public static final int sgcSoundSampleSizeType = 0x7373697a; public static final int sgcSoundInputType = 0x73696e70; public static final int sgcSoundGainType = 0x6761696e; public static final int sgcVideoHueType = 0x68756520; public static final int sgcVideoSaturationType = 0x73617472; public static final int sgcVideoContrastType = 0x74727374; public static final int sgcVideoSharpnessType = 0x73687270; public static final int sgcVideoBrigtnessType = 0x62726974; public static final int sgcVideoBlackLevelType = 0x626c6b6c; public static final int sgcVideoWhiteLevelType = 0x7768746c; public static final int sgcVideoInputType = 0x76696e70; public static final int sgcVideoFormatType = 0x76737464; public static final int sgcVideoFilterType = 0x76666c74; public static final int sgcVideoRectType = 0x76726374; public static final int sgcVideoDigitizerType = 0x76646967; public static final int kQTVODisplayModeItem = 0x71646d69; public static final int kQTVODimensions = 0x64696d6e; public static final int kQTVOResolution = 0x7265736c; public static final int kQTVORefreshRate = 0x72656672; public static final int kQTVOPixelType = 0x7069786c; public static final int kQTVOName = 0x6e616d65; public static final int kQTVODecompressors = 0x6465636f; public static final int kQTVODecompressorType = 0x64657479; public static final int kQTVODecompressorContinuous = 0x636f6e74; public static final int kQTVODecompressorComponent = 0x636d7074; public static final int canMovieImportHandles = 1; public static final int canMovieImportFiles = 2; public static final int hasMovieImportUserInterface = 4; public static final int canMovieExportHandles = 8; public static final int canMovieExportFiles = 16; public static final int hasMovieExportUserInterface = 32; public static final int dontAutoFileMovieImport = 64; public static final int canMovieExportAuxDataHandle = 128; public static final int canMovieImportValidateHandles = 256; public static final int canMovieImportValidateFile = 512; public static final int dontRegisterWithEasyOpen = 1024; public static final int canMovieImportInPlace = 2048; public static final int movieImportSubTypeIsFileExtension = 4096; public static final int canMovieImportPartial = 8192; public static final int hasMovieImportMIMEList = 16384; public static final int canMovieExportFromProcedures = 32768; public static final int canMovieExportValidateMovie = 0x10000; public static final int movieExportNeedsResourceFork = 0x20000; public static final int canMovieImportDataReferences = 0x40000; public static final int movieExportMustGetSourceMediaType = 0x80000; public static final int reservedForUseByGraphicsImporters = 0x800000; public static final int scPositionRect = 2; public static final int scPositionDialog = 3; public static final int scSetTestImagePictHandle = 4; public static final int scSetTestImagePictFile = 5; public static final int scSetTestImagePixMap = 6; public static final int scGetBestDeviceRect = 7; public static final int scRequestImageSettings = 10; public static final int scCompressImage = 11; public static final int scCompressPicture = 12; public static final int scCompressPictureFile = 13; public static final int scRequestSequenceSettings = 14; public static final int scCompressSequenceBegin = 15; public static final int scCompressSequenceFrame = 16; public static final int scCompressSequenceEnd = 17; public static final int scDefaultPictHandleSettings = 18; public static final int scDefaultPictFileSettings = 19; public static final int scDefaultPixMapSettings = 20; public static final int scGetInfo = 21; public static final int scSetInfo = 22; public static final int scNewGWorld = 23; } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/qtcomponents/0000755000175000017500000000000011377161311021525 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/qtcomponents/MovieImportInfo.java0000644000175000017500000000146211377161311025461 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.qtcomponents; import quicktime.std.movies.Track; public final class MovieImportInfo { public MovieImportInfo(Track track1, int i, int j) {} public Track track() {return null;} public int getDuration() {return 0;} public int getFlags(){return 0;} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/qtcomponents/MovieImporter.java0000644000175000017500000000164211377161311025174 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.qtcomponents; import quicktime.QTException; import quicktime.util.QTHandleRef; import quicktime.std.movies.Movie; import quicktime.std.movies.Track; public final class MovieImporter { public MovieImporter(int i) throws QTException {} public MovieImportInfo fromHandle(QTHandleRef qthandleref, Movie movie, Track track, int i, int j) throws QTException {return null;} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/sg/0000755000175000017500000000000011377161311017404 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/sg/SequenceGrabber.java0000644000175000017500000000254511377161311023312 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.sg; import quicktime.QTException; import quicktime.std.StdQTException; import quicktime.io.QTFile; public final class SequenceGrabber { public SequenceGrabber() throws QTException{} public boolean isRecordMode() throws StdQTException {return false;} public void stop() throws StdQTException {} public void setDataOutput(QTFile qtfile, int i) throws QTException {} public void setMaximumRecordTime(int i) throws StdQTException {} public void prepare(boolean flag, boolean flag1) throws StdQTException {} public void idle() throws StdQTException {} public boolean idleMore() throws StdQTException {return false;} public void disposeChannel(SGChannel sgchannel) throws StdQTException {} public void release() throws StdQTException {} public void startRecord() throws StdQTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/sg/SGChannel.java0000644000175000017500000000137511377161311022057 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.sg; import quicktime.std.StdQTException; public abstract class SGChannel { SGChannel(SequenceGrabber sequencegrabber, int i) throws StdQTException {} public void setUsage(int i) throws StdQTException{} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/sg/AudioChannel.java0000644000175000017500000000137111377161311022603 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.sg; import quicktime.std.StdQTException; public abstract class AudioChannel extends SGChannel { AudioChannel(SequenceGrabber sequencegrabber, int i) throws StdQTException {super(sequencegrabber, i);} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/sg/SGSoundChannel.java0000644000175000017500000000162711377161311023070 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.sg; import quicktime.std.StdQTException; public final class SGSoundChannel extends AudioChannel { public SGSoundChannel(SequenceGrabber sequencegrabber) throws StdQTException {super(sequencegrabber, 0);} public void setSoundInputRate(float f) throws StdQTException {} public void setSoundInputParameters(int i, int j, int k) throws StdQTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/movies/0000755000175000017500000000000011377161311020275 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/movies/TimeInfo.java0000644000175000017500000000115711377161311022656 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.movies; public class TimeInfo { public TimeInfo(int i, int j) {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/movies/Movie.java0000644000175000017500000000226111377161311022220 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.movies; import quicktime.QTObject; import quicktime.QTException; import quicktime.std.StdQTException; import quicktime.std.movies.media.DataRef; import quicktime.std.movies.TimeInfo; public final class Movie extends QTObject { public static Movie fromDataRef(DataRef dataref, int i) throws QTException {return null;} public Movie(int i) throws QTException {} public void setActive(boolean flag) throws StdQTException {} public void setTimeScale(int i) throws StdQTException {} public void setActiveSegment(TimeInfo timeinfo) throws StdQTException {} public void setDefaultDataRef(DataRef dataref) throws StdQTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/movies/Track.java0000644000175000017500000000117211377161311022205 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.movies; import quicktime.QTObject; public final class Track extends QTObject { } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/movies/media/0000755000175000017500000000000011377161311021354 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/movies/media/DataRef.java0000644000175000017500000000174311377161311023532 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std.movies.media; import quicktime.QTException; import quicktime.util.QTHandle; import quicktime.util.QTHandleRef; import quicktime.io.QTFile; public final class DataRef extends QTHandle { public DataRef(String s) throws QTException{} public DataRef(QTFile qtfile) throws QTException {} public DataRef(QTHandleRef qthandleref) throws QTException {} public DataRef(QTHandleRef qthandleref, int i, String s) throws QTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/std/StdQTException.java0000644000175000017500000000117111377161311022514 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.std; import quicktime.QTException; public class StdQTException extends QTException {} jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/0000755000175000017500000000000011377161311016761 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/view/0000755000175000017500000000000011377161311017733 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/view/QTFactory.java0000644000175000017500000000142511377161311022454 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.app.view; import quicktime.QTException; import quicktime.app.view.QTComponent; import quicktime.std.movies.Movie; public final class QTFactory { public static QTComponent makeQTComponent(Movie movie) throws QTException {return null;} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/view/QTComponent.java0000644000175000017500000000150211377161311023003 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.app.view; import java.awt.Component; import quicktime.QTException; import quicktime.std.movies.Movie; public interface QTComponent { public abstract void setMovie(Movie movie) throws QTException; public abstract Movie getMovie(); public abstract Component asComponent(); } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/view/MoviePlayer.java0000644000175000017500000000165411377161311023040 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.app.view; import quicktime.std.StdQTException; import quicktime.std.movies.Movie; public class MoviePlayer { public MoviePlayer(Movie movie) throws StdQTException {} public Movie getMovie(){return null;} public void setTime(int i) throws StdQTException {} public int getDuration() throws StdQTException {return 0;} public void setRate(float f) throws StdQTException {} } jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/time/0000755000175000017500000000000011377161311017717 5ustar jclic-0.2.1.0.orig/lib/qtjava-api/src/quicktime/app/time/TaskAllMovies.java0000644000175000017500000000124211377161311023277 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of the * QuickTime(TM) for Java library, based on the public API available at: * http://developer.apple.com/documentation/Java/Reference/1.4.1/Java141API_QTJ * * The information contained in this file is used only at compile-time to make * possible the complete build process of JClic without external non-free * dependencies. * * A full operational version of the library is available at: * http://developer.apple.com/quicktime/qtjava */ package quicktime.app.time; public class TaskAllMovies { public static void addMovieAndStart() {} public static void removeMovie() {} } jclic-0.2.1.0.orig/lib/servlet-api/0000755000175000017500000000000011377161311013615 5ustar jclic-0.2.1.0.orig/lib/servlet-api/README.txt0000644000175000017500000000121711377161311015314 0ustar SERVLET-API ----------------------------- This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of JSR-154 (Servlet 2.4), based on the public specification available at: http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html The files contained in this directory tree are used only at compile-time to make possible the build process of JClic without external dependencies. They will not be compiled, packaged nor included in the binary release of JClic obtained as a result of this build process. Full operational versions of this library are available at: http://java.sun.com/products/servlet/reference/api/index.html jclic-0.2.1.0.orig/lib/servlet-api/src/0000755000175000017500000000000011377161311014404 5ustar jclic-0.2.1.0.orig/lib/servlet-api/src/javax/0000755000175000017500000000000011377161311015515 5ustar jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/0000755000175000017500000000000011377161311017201 5ustar jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/Servlet.java0000644000175000017500000000176511377161311021501 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.IOException; public interface Servlet { public void init(ServletConfig config) throws ServletException; public ServletConfig getServletConfig(); public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletInfo(); public void destroy(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletRequest.java0000644000175000017500000000404611377161311023045 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.BufferedReader; import java.io.IOException; import java.util.Enumeration; import java.util.Locale; import java.util.Map; public interface ServletRequest { public Object getAttribute(String name); public Enumeration getAttributeNames(); public String getCharacterEncoding(); public void setCharacterEncoding(String env) throws java.io.UnsupportedEncodingException; public int getContentLength(); public String getContentType(); public ServletInputStream getInputStream() throws IOException; public String getParameter(String name); public Enumeration getParameterNames(); public String[] getParameterValues(String name); public Map getParameterMap(); public String getProtocol(); public String getScheme(); public String getServerName(); public int getServerPort(); public BufferedReader getReader() throws IOException; public String getRemoteAddr(); public String getRemoteHost(); public void setAttribute(String name, Object o); public void removeAttribute(String name); public Locale getLocale(); public Enumeration getLocales(); public boolean isSecure(); public RequestDispatcher getRequestDispatcher(String path); public String getRealPath(String path); public int getRemotePort(); public String getLocalName(); public String getLocalAddr(); public int getLocalPort(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletInputStream.java0000644000175000017500000000165111377161311023667 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.InputStream; import java.io.IOException; public abstract class ServletInputStream extends InputStream { protected ServletInputStream() { } public int readLine(byte[] b, int off, int len) throws IOException { return -1; } } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletContext.java0000644000175000017500000000401211377161311023032 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.util.Enumeration; import java.util.Set; public interface ServletContext { public String getContextPath(); public ServletContext getContext(String uripath); public int getMajorVersion(); public int getMinorVersion(); public String getMimeType(String file); public Set getResourcePaths(String path); public URL getResource(String path) throws MalformedURLException; public InputStream getResourceAsStream(String path); public RequestDispatcher getRequestDispatcher(String path); public RequestDispatcher getNamedDispatcher(String name); public Servlet getServlet(String name) throws ServletException; public Enumeration getServlets(); public Enumeration getServletNames(); public void log(String msg); public void log(Exception exception, String msg); public void log(String message, Throwable throwable); public String getRealPath(String path); public String getServerInfo(); public String getInitParameter(String name); public Enumeration getInitParameterNames(); public Object getAttribute(String name); public Enumeration getAttributeNames(); public void setAttribute(String name, Object object); public void removeAttribute(String name); public String getServletContextName(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/0000755000175000017500000000000011377161311020160 5ustar jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/HttpSessionContext.java0000644000175000017500000000151211377161311024652 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet.http; import java.util.Enumeration; public interface HttpSessionContext { public HttpSession getSession(String sessionId); public Enumeration getIds(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/HttpServletRequest.java0000644000175000017500000000403611377161311024663 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet.http; import javax.servlet.ServletRequest; import java.util.Enumeration; public interface HttpServletRequest extends ServletRequest { public static final String BASIC_AUTH = "BASIC"; public static final String FORM_AUTH = "FORM"; public static final String CLIENT_CERT_AUTH = "CLIENT_CERT"; public static final String DIGEST_AUTH = "DIGEST"; public String getAuthType(); public Cookie[] getCookies(); public long getDateHeader(String name); public String getHeader(String name); public Enumeration getHeaders(String name); public Enumeration getHeaderNames(); public int getIntHeader(String name); public String getMethod(); public String getPathInfo(); public String getPathTranslated(); public String getContextPath(); public String getQueryString(); public String getRemoteUser(); public boolean isUserInRole(String role); public java.security.Principal getUserPrincipal(); public String getRequestedSessionId(); public String getRequestURI(); public StringBuffer getRequestURL(); public String getServletPath(); public HttpSession getSession(boolean create); public HttpSession getSession(); public boolean isRequestedSessionIdValid(); public boolean isRequestedSessionIdFromCookie(); public boolean isRequestedSessionIdFromURL(); public boolean isRequestedSessionIdFromUrl(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/HttpSession.java0000644000175000017500000000273411377161311023314 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet.http; import java.util.Enumeration; import javax.servlet.ServletContext; public interface HttpSession { public long getCreationTime(); public String getId(); public long getLastAccessedTime(); public ServletContext getServletContext(); public void setMaxInactiveInterval(int interval); public int getMaxInactiveInterval(); public HttpSessionContext getSessionContext(); public Object getAttribute(String name); public Object getValue(String name); public Enumeration getAttributeNames(); public String[] getValueNames(); public void setAttribute(String name, Object value); public void putValue(String name, Object value); public void removeAttribute(String name); public void removeValue(String name); public void invalidate(); public boolean isNew(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/HttpServlet.java0000644000175000017500000000466511377161311023322 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet.http; import java.io.IOException; import java.io.PrintWriter; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.lang.reflect.Method; import java.text.MessageFormat; import java.util.Enumeration; import java.util.Locale; import java.util.ResourceBundle; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; public abstract class HttpServlet extends GenericServlet implements java.io.Serializable { public HttpServlet() { } protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected long getLastModified(HttpServletRequest req) { return -1; } protected void doHead(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected void doTrace(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {} public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {} } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/HttpServletResponse.java0000644000175000017500000000746311377161311025040 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet.http; import java.io.IOException; import javax.servlet.ServletResponse; public interface HttpServletResponse extends ServletResponse { public void addCookie(Cookie cookie); public boolean containsHeader(String name); public String encodeURL(String url); public String encodeRedirectURL(String url); public String encodeUrl(String url); public String encodeRedirectUrl(String url); public void sendError(int sc, String msg) throws IOException; public void sendError(int sc) throws IOException; public void sendRedirect(String location) throws IOException; public void setDateHeader(String name, long date); public void addDateHeader(String name, long date); public void setHeader(String name, String value); public void addHeader(String name, String value); public void setIntHeader(String name, int value); public void addIntHeader(String name, int value); public void setStatus(int sc); public void setStatus(int sc, String sm); public static final int SC_CONTINUE = 100; public static final int SC_SWITCHING_PROTOCOLS = 101; public static final int SC_OK = 200; public static final int SC_CREATED = 201; public static final int SC_ACCEPTED = 202; public static final int SC_NON_AUTHORITATIVE_INFORMATION = 203; public static final int SC_NO_CONTENT = 204; public static final int SC_RESET_CONTENT = 205; public static final int SC_PARTIAL_CONTENT = 206; public static final int SC_MULTIPLE_CHOICES = 300; public static final int SC_MOVED_PERMANENTLY = 301; public static final int SC_MOVED_TEMPORARILY = 302; public static final int SC_FOUND = 302; public static final int SC_SEE_OTHER = 303; public static final int SC_NOT_MODIFIED = 304; public static final int SC_USE_PROXY = 305; public static final int SC_TEMPORARY_REDIRECT = 307; public static final int SC_BAD_REQUEST = 400; public static final int SC_UNAUTHORIZED = 401; public static final int SC_PAYMENT_REQUIRED = 402; public static final int SC_FORBIDDEN = 403; public static final int SC_NOT_FOUND = 404; public static final int SC_METHOD_NOT_ALLOWED = 405; public static final int SC_NOT_ACCEPTABLE = 406; public static final int SC_PROXY_AUTHENTICATION_REQUIRED = 407; public static final int SC_REQUEST_TIMEOUT = 408; public static final int SC_CONFLICT = 409; public static final int SC_GONE = 410; public static final int SC_LENGTH_REQUIRED = 411; public static final int SC_PRECONDITION_FAILED = 412; public static final int SC_REQUEST_ENTITY_TOO_LARGE = 413; public static final int SC_REQUEST_URI_TOO_LONG = 414; public static final int SC_UNSUPPORTED_MEDIA_TYPE = 415; public static final int SC_REQUESTED_RANGE_NOT_SATISFIABLE = 416; public static final int SC_EXPECTATION_FAILED = 417; public static final int SC_INTERNAL_SERVER_ERROR = 500; public static final int SC_NOT_IMPLEMENTED = 501; public static final int SC_BAD_GATEWAY = 502; public static final int SC_SERVICE_UNAVAILABLE = 503; public static final int SC_GATEWAY_TIMEOUT = 504; public static final int SC_HTTP_VERSION_NOT_SUPPORTED = 505; } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/http/Cookie.java0000644000175000017500000000313211377161311022233 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet.http; import java.text.MessageFormat; import java.util.ResourceBundle; public class Cookie implements Cloneable { public Cookie(String name, String value) {} public void setComment(String purpose) {} public String getComment() { return null; } public void setDomain(String pattern) {} public String getDomain() { return null; } public void setMaxAge(int expiry) {} public int getMaxAge() { return -1; } public void setPath(String uri) {} public String getPath() { return null; } public void setSecure(boolean flag) {} public boolean getSecure() { return false; } public String getName() { return null; } public void setValue(String newValue) {} public String getValue() { return null; } public int getVersion() { return -1; } public void setVersion(int v) {} public Object clone() { return null; } } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletOutputStream.java0000644000175000017500000000332611377161311024071 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.OutputStream; import java.io.IOException; import java.io.CharConversionException; import java.text.MessageFormat; import java.util.ResourceBundle; public abstract class ServletOutputStream extends OutputStream { protected ServletOutputStream() { } public void print(String s) throws IOException {} public void print(boolean b) throws IOException {} public void print(char c) throws IOException {} public void print(int i) throws IOException {} public void print(long l) throws IOException {} public void print(float f) throws IOException {} public void print(double d) throws IOException {} public void println() throws IOException {} public void println(String s) throws IOException {} public void println(boolean b) throws IOException {} public void println(char c) throws IOException {} public void println(int i) throws IOException {} public void println(long l) throws IOException {} public void println(float f) throws IOException {} public void println(double d) throws IOException {} } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletResponse.java0000644000175000017500000000262311377161311023212 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Locale; public interface ServletResponse { public String getCharacterEncoding(); public String getContentType(); public ServletOutputStream getOutputStream() throws IOException; public PrintWriter getWriter() throws IOException; public void setCharacterEncoding(String charset); public void setContentLength(int len); public void setContentType(String type); public void setBufferSize(int size); public int getBufferSize(); public void flushBuffer() throws IOException; public void resetBuffer(); public boolean isCommitted(); public void reset(); public void setLocale(Locale loc); public Locale getLocale(); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletContextEvent.java0000644000175000017500000000160611377161311024042 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; public class ServletContextEvent extends java.util.EventObject { public ServletContextEvent(ServletContext source) { super(source); } public ServletContext getServletContext () { return null; } } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletException.java0000644000175000017500000000210611377161311023346 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; public class ServletException extends Exception { public ServletException() { super(); } public ServletException(String message) { super(message); } public ServletException(String message, Throwable rootCause) { super(message, rootCause); } public ServletException(Throwable rootCause) { super(rootCause); } public Throwable getRootCause() { return null; } } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/RequestDispatcher.java0000644000175000017500000000172111377161311023504 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.IOException; public interface RequestDispatcher { public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException; public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException; } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/GenericServlet.java0000644000175000017500000000324011377161311022764 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.io.IOException; import java.util.Enumeration; import java.util.ResourceBundle; public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { public GenericServlet() { } public void destroy() {} public String getInitParameter(String name) { return null; } public Enumeration getInitParameterNames() { return null; } public ServletConfig getServletConfig() { return null; } public ServletContext getServletContext() { return null; } public String getServletInfo() { return null; } public void init(ServletConfig config) throws ServletException {} public void init() throws ServletException {} public void log(String msg) {} public void log(String message, Throwable t) {} public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; public String getServletName() { return null; } } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletContextListener.java0000644000175000017500000000160511377161311024545 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.util.EventListener; public interface ServletContextListener extends EventListener { public void contextInitialized ( ServletContextEvent sce ); public void contextDestroyed ( ServletContextEvent sce ); } jclic-0.2.1.0.orig/lib/servlet-api/src/javax/servlet/ServletConfig.java0000644000175000017500000000163111377161311022617 0ustar /* * This is just an INCOMPLETE, EMPTY and NO-OPERATIONAL implementation of * JSR-154 (Servlet 2.4), based on the public specification available at: * http://jcp.org/aboutJava/communityprocess/final/jsr154/index.html * * The files contained in this directory tree are used only at compile-time to make * possible the build process of JClic without external dependencies. They will not be * compiled, packaged nor included in the binary release of JClic obtained as a result * of this build process. * * Full operational versions of this library are available at: * http://java.sun.com/products/servlet/reference/api/index.html */ package javax.servlet; import java.util.Enumeration; public interface ServletConfig { public String getServletName(); public ServletContext getServletContext(); public String getInitParameter(String name); public Enumeration getInitParameterNames(); } jclic-0.2.1.0.orig/src/0000755000175000017500000000000011377161311011403 5ustar jclic-0.2.1.0.orig/src/interface/0000755000175000017500000000000011377161311013343 5ustar jclic-0.2.1.0.orig/src/interface/edu/0000755000175000017500000000000011377161311014120 5ustar jclic-0.2.1.0.orig/src/interface/edu/xtec/0000755000175000017500000000000011377161311015063 5ustar jclic-0.2.1.0.orig/src/interface/edu/xtec/jclic/0000755000175000017500000000000011377161311016147 5ustar jclic-0.2.1.0.orig/src/interface/edu/xtec/jclic/Constants.java0000644000175000017500000002401311377161311020766 0ustar /* * File : Constants.java * Created : 31-jul-2002 09:35 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; /** * Definition of some global constants widely used in JClic. * @author Francesc Busquets (fbusquets@xtec.net) */ public interface Constants { /** * Path to the bundle of .properties files with the basic JClic messages */ public static final String DEFAULT_BUNDLE = "messages.JClicMessages"; /** * Path to the basic JClic settings */ public static final String COMMON_SETTINGS = "commonSettings"; /** * Path to the JClic logo */ public static final String LOGO_ICON="icons/logo.png"; /** * Name of the application (JClic) */ public static final String PROGRAM = "JClic"; // String constants used in applet parameters and common properties /** * Key for the parameter cookie, used in applets */ public static final String COOKIE = "cookie"; /** * Key for the parameter exitUrl, used in applets to specify the URL * where the browser should navigate when JClic executes an exit command. */ public static final String EXIT_URL = "exitUrl"; /** * Key for the parameter urlBase, used in applets to specify the * absolute base URL used to locate other files. */ public static final String URL_BASE = "urlBase"; /** * Key for the parameter infoUrlFrame, used in applets to specify the * name of the browser frame or window where the info content of the * activities will be displayed. */ public static final String INFO_URL_FRAME = "infoUrlFrame"; /** * Key for the boolean parameter compressImages. When false, * images larger than the cell will be cropped. Otherwise, JClic will compress it to fit * into the cell. */ public static final String COMPRESS_IMAGES = "compressImages"; /** * Key for the boolean parameter 'preDrawImages', used in past versions to activate a workaround to a Java graphics * bug. */ public static final String PRE_DRAW_IMAGES = "preDrawImages"; /** * Key for the parameter 'skin', used to specify the {@link edu.xtec.jclic.skins.Skin} to be * used. */ public static final String SKIN = "skin"; /** * Key for the parameter 'reporterClass', used to specify the type of * {@link edu.xtec.jclic.report.Reporter} to be used. */ public static final String REPORTER_CLASS = "reporter"; /** * Key for the parameter 'reporterParams', used to pass specific parametres to the * reporter. */ public static final String REPORTER_PARAMS = "reporterParams"; /** * Key for the boolean parameter 'systemSounds'. When false, no system sounds are * played. */ public static final String SYSTEM_SOUNDS = "systemSounds"; /** * Key for the boolean parameter 'audioEnabled'. When false, no * sounds or other media are played. */ public static final String AUDIO_ENABLED = "audioEnabled"; /** * Key for the boolean parameter 'navButtonsAlways'. When true, the * navigation buttons (next activity and previous activity) are always displayed. */ public static final String NAV_BUTTONS_ALWAYS = "navButtonsAlways"; /** * Key for the boolean parameter 'trace'. When true, debug messages are * displayed in the console. */ public static final String TRACE = "trace"; /** * String used to represent the boolean value true. */ public static final String TRUE = "true"; /** * String used to represent the boolean value false. */ public static final String FALSE = "false"; /** * String used to represent the default value */ public static final String DEFAULT = "default"; /** * String used to represent the enabled value */ public static final String ENABLED = "enabled"; /** * String used to represent the id value */ public static final String ID = "id"; /** * String used to represent the QuickTime for Java (pre-6.1) multimedia system */ public static final String QT = "QuickTime"; /** * String used to represent the QuickTime for Java (6.1 or later) multimedia system */ public static final String QT61 = "QuickTime 6.1"; /** * String used to represent the Java Media Framework system */ public static final String JMF = "Java Media Framework"; /** * Key for the runtime property mediaSystem. Possible values are JMF, QT, QT61 or null. */ public static final String MEDIA_SYSTEM = "mediaSystem"; /** * Key for the parameter or runtime property 'noMediaSystemWarn', used to indicate * that users should not be warned about the absence of multimedia extensions in * their Java system. */ public static final String NO_MEDIASYSTEM_WARN="NoMediaSystemWarn"; //CURRENT_PROJECT_VERSION="currentProjectVersion", /** * Array of strings containing the values of all the valid multimedia extensions */ public static final String[] MEDIA_SYSTEMS={DEFAULT, JMF, QT}; /** * Default rendering hints used with {@link Graphics2D} objects. */ public static final java.awt.RenderingHints DEFAULT_RENDERING_HINTS=new java.awt.RenderingHints(null); /** * Index of the hand (standard) cursor in the {@link edu.xtec.jclic.Player} member * cursors. */ public static final int HAND_CURSOR = 0; /** * Index of the ok cursor in the {@link edu.xtec.jclic.Player} member * cursors. */ public static final int OK_CURSOR = 1; // Constants for cursors /** * Index of the record (microphone) cursor in the {@link edu.xtec.jclic.Player} member * cursors. */ public static final int REC_CURSOR=2; /** * Default color used to fill backgrounds of graphic objects. */ public static final java.awt.Color BG_COLOR=new java.awt.Color(239, 247, 221); public static final int ACTION_PREV=0, ACTION_NEXT=1, ACTION_RETURN=2, ACTION_RESET=3, ACTION_INFO=4, ACTION_HELP=5, ACTION_AUDIO=6, ACTION_REPORTS=7, NUM_ACTIONS=8; /** * Array that contains integers representing all the dynamic actions, useful for operations * involving the actions member of {@link edu.xtec.jclic.Player}. */ public static final int[] DYNAMIC_ACTIONS={ACTION_PREV, ACTION_NEXT, ACTION_RETURN, ACTION_RESET, ACTION_INFO, ACTION_HELP}; /** * Array with the names of all the dynamic actions used in {@link edu.xtec.jclic.Player} * objects. */ public static final String[] ACTION_NAME={"prev", "next", "return", "reset", "info", "help", "audio", "about"}; /** * Index of the score counter. */ public static final int SCORE_COUNTER = 0; /** * Index of the actions counter. */ public static final int ACTIONS_COUNTER = 1; /** * Index of the time counter. */ public static final int TIME_COUNTER = 2; // Constants for counters /** * Number of counters used in JClic players (currently 3: score, actions and time) */ public static final int NUM_COUNTERS=3; /** * Names used to represent the counters (score, actions and time) */ public static final String[] counterNames={"score", "actions", "time"}; /** Minimal margin between the activity container internal frame and the activity window bounds. */ public static final int AC_MARGIN=6; /** Minimal value for both with and height of cells. */ public static final int MIN_CELL_SIZE=10; /** Names used to represent different kinds of objects. */ public static final String MEDIA_OBJECT="media", SEQUENCE_OBJECT="sequence", ACTIVITY_OBJECT="activity", URL_OBJECT="url", EXTERNAL_OBJECT="external", SKIN_OBJECT="skin", PROJECT_OBJECT="project"; /** Bit masks used to represent different types of resources. */ public static final int T_ACTIVITY=0x0001, T_SEQUENCE=0x0002, T_URL=0x0004, T_EXTERNAL=0x0008, T_IMAGE=0x0010, T_AUDIO=0x0020, T_MIDI=0x0040, T_VIDEO=0x0080, T_ANIM=0x0100, T_XML=0x0200, T_FONT=0x0400, T_JCLIC=0x0800, T_CLIC=0x1000, T_INST=0x2000, T_UNKNOWN_MEDIA=0x4000, T_TEXT=0x8000; /** Generic value used to represent all the supported media types. */ public static final int T_MEDIA=T_IMAGE|T_AUDIO|T_MIDI|T_VIDEO|T_ANIM|T_XML |T_FONT|T_UNKNOWN_MEDIA; } jclic-0.2.1.0.orig/src/interface/edu/xtec/jclic/PlayStation.java0000644000175000017500000002321311377161311021262 0ustar /* * File : PlayStation.java * Created : 16-sep-2002 12:31 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; /** * A PlayStation is a container for activities. All the classes capables of showing and running JClic activities must implement * this interface. It describes the necessary methods to make JClic * activities work. These methods are called by the activities to get resources, play * media or notify events. * @author Francesc Busquets (fbusquets@xtec.net) */ public interface PlayStation extends edu.xtec.util.ResourceBridge { /** * The action corresponding to this index. The indexes of actions are dfined as constants * in edu.xtec.jclic.Constants. * @param id The index for the requested action. * @return The action coresponding to this index, or null if does not exist. */ public javax.swing.Action getAction(int id); /** * Sets the content of the messages area of the player. * @param abc The content to show in the message box. */ public void setMsg(edu.xtec.jclic.boxes.ActiveBoxContent abc); /** * Performs or executes the media associated with the current content of the * player's message box, if any. */ public void playMsg(); /** * Sets the text of the system messages, usually displayed in the status bar of the * player. There are two system messages in JClic: The main message, that describes * the error or action being performed, and the secondary message, used to * complement the main information with filenames or other details. * @param msg1 Text of the main message. * @param msg2 Text of the secondary message. */ public void setSystemMessage(String msg1, String msg2); /** * Enables or disables the wait cursor (hourglass). This method uses a counter that * increments or decrements as called with true or false params. * The hourglass is maintained while the counter remains >0. * @param state To enable or disable the wait cursor. */ public void setWaitCursor(boolean state); /** * Obtains the Cursor resource of the specified type. Identifiers for all the available cursors are * defined in edu.xtec.jclic.Constants. * @param type The type of cursor requested (hand, stop, record...) * @return The {@link java.awt.Cursor} resource, or null if it does no exist. */ public java.awt.Cursor getCustomCursor(int type); /** * Provides an appropiated MediaPlayer suitable for a specific media. * @param mediaContent The MediaContent to be used in this MediaPlayer. * @return A MediaPlayer useful for this MediaContent. */ public edu.xtec.jclic.media.ActiveMediaPlayer getActiveMediaPlayer(edu.xtec.jclic.media.MediaContent mediaContent); /** * Plays, performs or executes a MediaContent. If the media has graphical content, * the specified ActiveBox will be * used to display it. * @param mediaContent The MediaContent to be performed. * @param mediaPlacement The ActiveBox where the graphical content of the media (if any) will be * displayed. */ public void playMedia(edu.xtec.jclic.media.MediaContent mediaContent, edu.xtec.jclic.boxes.ActiveBox mediaPlacement); /** * Stops all the media content currently playing that has a priority level equal or * below the specified. * @param level The priority level under wich all media contents will be halted, or -1 to stop * all media. */ public void stopMedia(int level); /** * Enables or disables the specified counter. * @param counterId The identifier of the counter to enable or disable, as specified in * edu.xtec.jclic.Constants. * @param bEnabled true to enable the counter, false otherwise. */ public void setCounterEnabled(int counterId, boolean bEnabled); /** * Changes the mode of operation of the specified counter to count down, starting * by the indicated value and stopping at zero. * @param counterId The identifier of the counter, as specified in * edu.xtec.jclic.Constants. * @param maxValue The value to initially assign to the counter. */ public void setCountDown(int counterId, int maxValue); /** * Increments the value of the specified counter, or decrements it when in * countDown mode. * @param counterId The identifier of the counter, as specified in * edu.xtec.jclic.Constants. */ public void incCounterValue(int counterId); /** * Sets the specified counter to a specific value. * @param counterId The identifier of the counter, as specified in * edu.xtec.jclic.Constants. * @param newValue The value to be assigned to the counter. */ public void setCounterValue(int counterId, int newValue); /** * Gets the current value of the specified counter. * @param counterId The identifier of the counter, as specified in * edu.xtec.jclic.Constants. * @return The current value of the conuter. */ public int getCounterValue(int counterId); /** * Turns on the specified {@link edu.xtec.jclic.Activity.Panel}. * @param actp The activity panel that will be started. */ public void startActivity(Activity.Panel actp); /** * Activity panels use this method to notify Players that the user has finished the * current activity. * @param completedOk true if the activity was successfully finished. */ public void activityFinished(boolean completedOk); /** * Notifies the player that the activity has been * started. * @param act The {@link Activity} that has been started. * @param currentScore The score at the beggining of the activity (usually zero, but can be different * in some cases) */ public void reportNewActivity(Activity act, int currentScore); /** * Notifies the {@link edu.xtec.jclic.report.Reporter} (if any) that an action has * been performed. This method is only used by activities that explicity have the * reportActions flag set. * @param act The activity in wich panel the action has been performed. * @param type The type of action, as defined in {@link Activity}. * @param source The description of the object (cell, word, letter...) in wich the action has * been performed. * @param dest If the action involves more than one object, the description of the second one. * @param ok true if the action was successful, false otherwise. * @param currentScore Score obtained just after the action. */ public void reportNewAction(Activity act, String type, String source, String dest, boolean ok, int currentScore); /** * Notifies the {@link edu.xtec.jclic.report.Reporter} (if any) that an action has * been finished. * @param act The Activity yhat has been finished. * @param solved true if the activity was solved, false otherwise. */ public void reportEndActivity(Activity act, boolean solved); /** * Instructs the Player to show a help dialog window displaying a content associated with the current * activity. * @param hlpComponent The {@link JComponent} to be placed in the help dialog, or null if no special * content must be used. Activities usually use {@link edu.xtec.jclic.HelpActivityComponent} objects for this param. * @param hlpMsg A message to be displayed on the help window, usually used in place of a * specific JComponent. This parameter can be null. * * @return true if the user clicks on the OK button of the help dialog, false otherwise. */ public boolean showHelp(javax.swing.JComponent hlpComponent, String hlpMsg); /** * Getter for property focusedItemsMarked. When this property is true, the item that has the focus * of user's interaction is visually marked on screen. * @return Value of property focusedItemsMarked. */ public boolean isFocusedItemMarked(); /** * Setter for property focusedItemsMarked. When this property is true, the item that has the focus * of user's interaction is visually marked on screen. * @param focusedItemsMarked New value of property focusedItemsMarked. */ public void setFocusedItemMarked(boolean focusedItemMarked); /** * When not null, this java.awt.Robot object can be used by JClic components to move the mouse pointer * and simulate clicks and keystrokes */ public java.awt.Robot getRobot(); } jclic-0.2.1.0.orig/src/interface/edu/xtec/jclic/RunnableComponent.java0000644000175000017500000000607611377161311022454 0ustar /* * File : RunnableComponent.java * Created : 26-jun-2002 11:57 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; /** * Interface used to represent complex objects that can be handled by containers of * type {@link edu.xtec.jclic.SingleInstanceJFrame}. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public interface RunnableComponent { /** * Instructs this RunnableComponent to be self-placed into the * specified {@link javax.swing.RootPaneContainer}. * @param cont The container in wich the component should be placed. * @param constraints The constraints used in the call to the add method of the Container. This parameter can be null. */ public void addTo(javax.swing.RootPaneContainer cont, Object constraints); /** * Instructs the RunnableComponent to start working. * @param param1 First parameter passed to the component. Can be null. * @param param2 Second parameter passed to the component. Can also be null. * @return true if the component has been turned on, false otherwise. */ public boolean start(String param1, String param2); /** * Instructs the RunnableComponent to stop working. */ public void stop(); /** * Notifies the component that the main program will be halted soon, and all resources must * be freed. */ public void end(); /** * This method is called when the container gains the focus for the first time or after have lost * it. */ public void activate(); /** * A new instance of the RunnableComponent has been requested by the user. * @param param1 First parameter passed to the component. Can be null. * @param param2 Second parameter passed to the component. Can also be null. * @return true if the request was successfull, false otherwise. */ public boolean newInstanceRequest(final String param1, final String param2); /** * Called by the main container when it receives a windowClosing event. * @return true if the component can be safely disposed, false otherwise. */ public boolean windowCloseRequested(); } jclic-0.2.1.0.orig/src/author/0000755000175000017500000000000011377161311012705 5ustar jclic-0.2.1.0.orig/src/author/edu/0000755000175000017500000000000011377161311013462 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/0000755000175000017500000000000011377161311014425 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/util/0000755000175000017500000000000011377161311015402 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/util/ResizerPanel.java0000644000175000017500000000376011377161311020656 0ustar /* * File : ResizerPanel.java * Created : 05-jun-2003 10:15 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Graphics; import javax.swing.JPanel; import java.awt.Graphics2D; import java.awt.TexturePaint; import java.awt.image.BufferedImage; import java.awt.Color; import java.awt.Rectangle; import javax.swing.ImageIcon; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ResizerPanel extends JPanel { public static final String DEFAULT_TEXTURE="textures/diagonal.gif"; TexturePaint tp; public ResizerPanel(){ this(DEFAULT_TEXTURE); } public ResizerPanel(String texture){ super(); ImageIcon img=edu.xtec.util.ResourceManager.getImageIcon(texture); int w=img.getIconWidth(); int h=img.getIconHeight(); BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB); Graphics2D big = bi.createGraphics(); big.setBackground(getBackground()); big.drawImage(img.getImage(), 0, 0, getBackground(), null); Rectangle r = new Rectangle(0, 0, w, h); tp=new TexturePaint(bi, r); } protected void paintComponent(Graphics g){ Graphics2D g2=(Graphics2D)g; g2.setPaint(tp); g2.fill(g2.getClipBounds()); } } jclic-0.2.1.0.orig/src/author/edu/xtec/util/JDomTreePanel.java0000644000175000017500000004253511377161311020707 0ustar /* * File : JDomTreePanel.java * Created : 05-dec-2002 10:46 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; import java.awt.Component; import java.awt.Dimension; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableModel; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.util.ResourceBridge; import edu.xtec.jclic.misc.Utils; import java.io.FileOutputStream; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JDomTreePanel extends javax.swing.JPanel { ResourceBridge rb; TreeSelectionListener treeSelectionListener; ListSelectionListener listSelectionListener; JDomTreeObject current; DefaultMutableTreeNode currentNode; FileSystem fs; String fileName; org.jdom.Element element; private DefaultMutableTreeNode clip; private boolean cut; /** Creates new form ProjectTreePanel */ public JDomTreePanel(org.jdom.Element element, ResourceBridge rb, FileSystem fs, String fileName) { this.rb=rb; this.fs=fs; this.fileName=fileName; this.element=element; initComponents(); initMembers(); tree.setModel(new DefaultTreeModel(JDomTreeObject.processNode(null, element, rb.getOptions()))); tree.addTreeSelectionListener(treeSelectionListener); table.getSelectionModel().addListSelectionListener(listSelectionListener); } private void initMembers(){ treeSelectionListener=new TreeSelectionListener() { public void valueChanged(TreeSelectionEvent e) { checkEnabled(); } }; listSelectionListener=new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e){ if(!e.getValueIsAdjusting()){ delAttributeBtn.setEnabled(e.getFirstIndex()>=0); } } }; } private void checkEnabled(){ current=null; currentNode=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent(); if (currentNode == null){ newElementBtn.setEnabled(false); delElementBtn.setEnabled(false); copyBtn.setEnabled(false); cutBtn.setEnabled(false); pasteBtn.setEnabled(false); } else{ current=(JDomTreeObject)currentNode.getUserObject(); setTableModel(); String s=current.getElement().getText(); boolean empty=(s==null || s.length()==0); boolean root=current.getElement().isRootElement(); newElementBtn.setEnabled(empty); delElementBtn.setEnabled(!root); copyBtn.setEnabled(!root); cutBtn.setEnabled(!root); pasteBtn.setEnabled(clip!=null && empty && clip!=currentNode && !clip.isNodeChild(currentNode)); } } private void setTableModel(){ AbstractTableModel model=current; if(model==null) model=new DefaultTableModel(); table.setModel(model); model.fireTableStructureChanged(); newAttributeBtn.setEnabled(current!=null); delAttributeBtn.setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JPanel buttonsPanel; javax.swing.JSplitPane split; javax.swing.JPanel tablePanel; javax.swing.JScrollPane tableScroll; javax.swing.JPanel treeButtonsPanel; javax.swing.JPanel treePanel; javax.swing.JScrollPane treeScroll; split = new javax.swing.JSplitPane(); treePanel = new javax.swing.JPanel(); treeScroll = new javax.swing.JScrollPane(); tree = new javax.swing.JTree(); treeButtonsPanel = new javax.swing.JPanel(); newElementBtn = new javax.swing.JButton(); delElementBtn = new javax.swing.JButton(); copyBtn = new javax.swing.JButton(); pasteBtn = new javax.swing.JButton(); cutBtn = new javax.swing.JButton(); saveBtn = new javax.swing.JButton(); tablePanel = new javax.swing.JPanel(); tableScroll = new javax.swing.JScrollPane(); table = new javax.swing.JTable(); buttonsPanel = new javax.swing.JPanel(); newAttributeBtn = new javax.swing.JButton(); delAttributeBtn = new javax.swing.JButton(); setLayout(new java.awt.BorderLayout()); treePanel.setLayout(new java.awt.BorderLayout()); treeScroll.setMinimumSize(new java.awt.Dimension(150, 22)); treeScroll.setViewportView(tree); treePanel.add(treeScroll, java.awt.BorderLayout.CENTER); newElementBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/new_element.gif"))); newElementBtn.setToolTipText(rb.getMsg("XML_NEW_ELEMENT")); newElementBtn.setEnabled(false); newElementBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newElementBtnActionPerformed(evt); } }); treeButtonsPanel.add(newElementBtn); delElementBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/delete.gif"))); delElementBtn.setToolTipText(rb.getMsg("XML_DEL_ELEMENT")); delElementBtn.setEnabled(false); delElementBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { delElementBtnActionPerformed(evt); } }); treeButtonsPanel.add(delElementBtn); copyBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/copy.gif"))); copyBtn.setToolTipText(rb.getMsg("COPY")); copyBtn.setEnabled(false); copyBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { copyBtnActionPerformed(evt); } }); treeButtonsPanel.add(copyBtn); pasteBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/paste.gif"))); pasteBtn.setToolTipText(rb.getMsg("PASTE")); pasteBtn.setEnabled(false); pasteBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pasteBtnActionPerformed(evt); } }); treeButtonsPanel.add(pasteBtn); cutBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/cut.gif"))); cutBtn.setToolTipText(rb.getMsg("CUT")); cutBtn.setEnabled(false); cutBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cutBtnActionPerformed(evt); } }); treeButtonsPanel.add(cutBtn); saveBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/file_save.gif"))); saveBtn.setToolTipText(rb.getMsg("FILE_SAVE")); saveBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveBtnActionPerformed(evt); } }); treeButtonsPanel.add(saveBtn); treePanel.add(treeButtonsPanel, java.awt.BorderLayout.SOUTH); split.setLeftComponent(treePanel); tablePanel.setLayout(new java.awt.BorderLayout()); table.setModel(new javax.swing.table.DefaultTableModel( new Object [][] { }, new String [] { } )); tableScroll.setViewportView(table); tablePanel.add(tableScroll, java.awt.BorderLayout.CENTER); newAttributeBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/new_attribute.gif"))); newAttributeBtn.setToolTipText(rb.getMsg("XML_NEW_ATTRIBUTE")); newAttributeBtn.setEnabled(false); newAttributeBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { newAttributeBtnActionPerformed(evt); } }); buttonsPanel.add(newAttributeBtn); delAttributeBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/delete.gif"))); delAttributeBtn.setToolTipText(rb.getMsg("XML_DEL_ATTRIBUTE")); delAttributeBtn.setEnabled(false); delAttributeBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { delAttributeBtnActionPerformed(evt); } }); buttonsPanel.add(delAttributeBtn); tablePanel.add(buttonsPanel, java.awt.BorderLayout.SOUTH); split.setRightComponent(tablePanel); add(split, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents private void cutBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cutBtnActionPerformed if(currentNode!=null && current!=null && !current.getElement().isRootElement()){ clip=currentNode; cut=true; checkEnabled(); } }//GEN-LAST:event_cutBtnActionPerformed private void pasteBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pasteBtnActionPerformed if(currentNode!=null && current!=null && clip!=null && clip!=currentNode && !clip.isNodeChild(currentNode)){ org.jdom.Element clipElement=((JDomTreeObject)clip.getUserObject()).getElement(); org.jdom.Element el=(org.jdom.Element)clipElement.clone(); current.getElement().addContent(el); TreeNode node=JDomTreeObject.processNode(currentNode, el, rb.getOptions()); ((DefaultTreeModel)tree.getModel()).nodeStructureChanged(currentNode); if(cut){ clipElement.detach(); ((DefaultTreeModel)tree.getModel()).removeNodeFromParent(clip); clip=null; } setTableModel(); checkEnabled(); } }//GEN-LAST:event_pasteBtnActionPerformed private void copyBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_copyBtnActionPerformed if(currentNode!=null && current!=null && !current.getElement().isRootElement()){ clip=currentNode; cut=false; checkEnabled(); } }//GEN-LAST:event_copyBtnActionPerformed private void saveBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveBtnActionPerformed if(fs==null) fs=new FileSystem(rb); int[] filters={Utils.JCLIC_FF}; String result=fs.chooseFile(fileName+".jclic", true, filters, rb.getOptions(), null, this, false); if(result!=null){ String fullFileName=fs.getFullFileNamePath(result); try{ FileOutputStream fos=fs.createSecureFileOutputStream(fullFileName); JDomUtility.saveDocument(fos, new org.jdom.Document(element)); fos.close(); //addRecentFile(fileName); } catch(Exception ex){ rb.getOptions().getMessages().showErrorWarning(this, "FILE_ERR_SAVING", fullFileName, ex, null); } } }//GEN-LAST:event_saveBtnActionPerformed private void delElementBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_delElementBtnActionPerformed if(currentNode!=null && current!=null && !current.getElement().isRootElement()){ if(clip==currentNode) clip=null; current.getElement().detach(); ((DefaultTreeModel)tree.getModel()).removeNodeFromParent(currentNode); setTableModel(); } }//GEN-LAST:event_delElementBtnActionPerformed private void newElementBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newElementBtnActionPerformed if(currentNode!=null && current!=null){ String s=current.getElement().getText(); if(s==null || s.length()==0){ JTextField[] fields=new JTextField[]{new JTextField()}; Dimension dim=new Dimension(100, 20); for(int i=0; i0){ org.jdom.Element el=new org.jdom.Element(elementName); current.getElement().addContent(el); JDomTreeObject te=new JDomTreeObject(el, rb.getOptions()); DefaultMutableTreeNode node=new DefaultMutableTreeNode(te); ((DefaultTreeModel)tree.getModel()).insertNodeInto(node, currentNode, currentNode.getChildCount()); setTableModel(); } } } } }//GEN-LAST:event_newElementBtnActionPerformed private void delAttributeBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_delAttributeBtnActionPerformed if(current!=null){ int r=table.getSelectedRow(); if(r>=0){ if(r==0){ java.util.List ls=current.getElement().getContent(); java.util.Iterator it=ls.iterator(); java.util.Vector v=new java.util.Vector(); while(it.hasNext()){ Object o=it.next(); if(o instanceof org.jdom.Text) v.add(o); } ls.removeAll(v); } else{ String s=(String)current.getValueAt(r, 0); if(s!=null) current.getElement().removeAttribute(s); } setTableModel(); } } }//GEN-LAST:event_delAttributeBtnActionPerformed private void newAttributeBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_newAttributeBtnActionPerformed if(current!=null){ JTextField[] fields=new JTextField[]{new JTextField(), new JTextField()}; Dimension dim=new Dimension(100, 20); for(int i=0; i0){ current.getElement().setAttribute(atrName, atrValue); setTableModel(); } } } }//GEN-LAST:event_newAttributeBtnActionPerformed public static org.jdom.Element editElement(Component parent, org.jdom.Element element, ResourceBridge rb, FileSystem fs, String fileName, String titleKey){ org.jdom.Element clon=(org.jdom.Element)element.clone(); boolean b=rb.getOptions().getMessages().showInputDlg(parent, new JDomTreePanel(clon, rb, fs, fileName), titleKey); return b ? clon : null; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton copyBtn; private javax.swing.JButton cutBtn; private javax.swing.JButton delAttributeBtn; private javax.swing.JButton delElementBtn; private javax.swing.JButton newAttributeBtn; private javax.swing.JButton newElementBtn; private javax.swing.JButton pasteBtn; private javax.swing.JButton saveBtn; private javax.swing.JTable table; private javax.swing.JTree tree; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/util/Resizer.java0000644000175000017500000001153011377161311017670 0ustar /* * File : Resizer.java * Created : 08-mai-2003 14:42 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.event.*; import javax.swing.JComponent; import java.awt.Rectangle; import java.awt.Cursor; import java.awt.Point; import edu.xtec.jclic.Constants; import java.awt.Dimension; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Resizer implements MouseListener, MouseMotionListener{ JComponent jc; Rectangle r; Cursor defaultCursor; boolean doGetBounds; boolean dragging; boolean dragCursorX, dragCursorY; ResizerListener rl; Dimension minSize; Dimension maxSize; boolean editable; boolean enabled; public static final int MARGIN=5; /** Creates a new instance of Resizer */ public Resizer(JComponent jc, Rectangle r, boolean editable, ResizerListener rl) { this.jc=jc; setRect(r); this.editable=editable; if(editable) defaultCursor=Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); this.rl=rl; jc.addMouseListener(this); jc.addMouseMotionListener(this); minSize=new Dimension(Constants.MIN_CELL_SIZE, Constants.MIN_CELL_SIZE); maxSize=new Dimension(jc.getPreferredSize()); setEnabled(true); } public void setEnabled(boolean enabled){ this.enabled=enabled; jc.setCursor(defaultCursor); } public boolean getEnabled(){ return enabled; } public void setMinSize(Dimension d){ minSize=d; } public void setMaxSize(Dimension d){ maxSize=d; } public void setRect(Rectangle r){ this.r=r; doGetBounds=(r==null); if(doGetBounds) r=jc.getBounds(); } public void mouseClicked(MouseEvent mouseEvent) { if(enabled && editable && rl!=null && r.contains(mouseEvent.getPoint())){ rl.editObject(r, jc, mouseEvent.getPoint()); } } public void mouseDragged(MouseEvent mouseEvent) { if(enabled && dragging) resizeByDrag(mouseEvent.getPoint()); } public void mouseEntered(MouseEvent mouseEvent) { } public void mouseExited(MouseEvent mouseEvent) { } public void mouseMoved(MouseEvent mouseEvent) { if(!dragging && enabled){ Point p=mouseEvent.getPoint(); Cursor newCursor=defaultCursor; if(doGetBounds) r=jc.getBounds(); dragCursorX=Math.abs(p.x-r.x-r.width)=r.y && p.y<(r.y+r.height+MARGIN); dragCursorY=Math.abs(p.y-r.y-r.height)=r.x && p.x<(r.x+r.width+MARGIN); if(dragCursorX && dragCursorY) newCursor=Cursor.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR); else if(dragCursorY) newCursor=Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR); else if(dragCursorX) newCursor=Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR); jc.setCursor(newCursor); } else if(dragging) mouseDragged(mouseEvent); } public void mousePressed(MouseEvent mouseEvent) { if(enabled && (dragCursorX || dragCursorY)){ dragging=true; resizeByDrag(mouseEvent.getPoint()); } } public void mouseReleased(MouseEvent mouseEvent) { if(enabled && dragging){ resizeByDrag(mouseEvent.getPoint()); dragging=false; } } private void resizeByDrag(Point p){ int w=r.width; int h=r.height; if(dragCursorX) w=Math.min(maxSize.width, Math.max(minSize.width, p.x-r.x)); if(dragCursorY) h=Math.min(maxSize.height, Math.max(minSize.height, p.y-r.y)); r=new Rectangle(r.x, r.y, w, h); if(rl!=null) rl.resizeObjectTo(r, jc); } public JComponent getComponent(){ return jc; } public interface ResizerListener{ public void resizeObjectTo(Rectangle r, JComponent jc); public void editObject(Rectangle r, JComponent jc, Point pt); } } jclic-0.2.1.0.orig/src/author/edu/xtec/util/JDomTreeObject.java0000644000175000017500000000727011377161311021053 0ustar /* * File : JDomTreeObject.java * Created : 05-dec-2002 11:19 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import javax.swing.table.AbstractTableModel; import javax.swing.tree.DefaultMutableTreeNode; import java.util.Iterator; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JDomTreeObject extends AbstractTableModel{ org.jdom.Element element; Options options; JDomTreeObject(org.jdom.Element element, Options options){ super(); this.element=element; this.options=options; } public String getColumnName(int column){ return options.getMsg(column==0 ? "XML_ATTRIBUTE" : "XML_VALUE"); } public boolean isCellEditable(int rowIndex, int columnIndex){ return (columnIndex!=0); } public void setValueAt(Object aValue, int rowIndex, int columnIndex){ if(aValue==null) return; if(rowIndex==0){ if(element.getChildren().isEmpty()) element.setText(aValue.toString()); else options.getMessages().showAlert(options.getMainComponent(), "XML_NOT_EDITABLE"); } else{ org.jdom.Attribute atr=(org.jdom.Attribute)element.getAttributes().get(rowIndex-1); atr.setValue(aValue.toString()); } } public int getRowCount(){ return 1+element.getAttributes().size(); } public int getColumnCount(){ return 2; } public Object getValueAt(int row, int column){ if(row==0){ return (column==0 ? options.getMsg("XML_TEXT") : element.getText()); } org.jdom.Attribute atr=(org.jdom.Attribute)element.getAttributes().get(row-1); return(column==0 ? atr.getName() : atr.getValue()); } public String toString(){ org.jdom.Attribute atr; StringBuffer result=new StringBuffer(element.getName()); if((atr=element.getAttribute(JDomUtility.NAME))!=null) result.append(" ").append(atr.getValue()); if((atr=element.getAttribute(JDomUtility.ID))!=null) result.append(" - ").append(atr.getValue()); if((atr=element.getAttribute(JDomUtility.TYPE))!=null) result.append(" - ").append(atr.getValue()); return result.substring(0); } public static DefaultMutableTreeNode processNode(DefaultMutableTreeNode parent, org.jdom.Element element, Options options){ JDomTreeObject te=new JDomTreeObject(element, options); DefaultMutableTreeNode node=new DefaultMutableTreeNode(te); Iterator iter =element.getChildren().iterator(); while(iter.hasNext()){ processNode(node, (org.jdom.Element)iter.next(), options); } if(parent!=null) parent.add(node); return node; } /** Getter for property element. * @return Value of property element. */ public org.jdom.Element getElement() { return element; } } jclic-0.2.1.0.orig/src/author/edu/xtec/util/JDomTreePanel.form0000644000175000017500000003551111377161311020725 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/0000755000175000017500000000000011377161311015511 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorFramePanel.java0000644000175000017500000007434711377161311023271 0ustar /* * File : ActivityEditorFramePanel.java * Created : 10-jun-2002 09:59 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.edit.*; import edu.xtec.util.Options; import edu.xtec.jclic.misc.Utils; import java.awt.Container; import javax.swing.JComponent; import java.awt.Color; import edu.xtec.jclic.misc.Gradient; import edu.xtec.jclic.misc.GradientEditor; import javax.swing.JPanel; import java.awt.Image; import java.awt.Point; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.border.BevelBorder; import java.awt.Dimension; import edu.xtec.jclic.beans.NullableObject; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import edu.xtec.jclic.beans.*; import java.util.EventObject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityEditorFramePanel extends ActivityEditorInternalPanel { edu.xtec.jclic.bags.MediaBagEditor mediaBagEditor; /** Creates new form MenuEditorPanel */ public ActivityEditorFramePanel(ActivityEditorPanel parent) { super(parent); initComponents(); setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel actBgColorLb; javax.swing.JLabel actGradientLb; javax.swing.JLabel bgColorLb; javax.swing.JPanel gameWindowPanel; javax.swing.JLabel gradientLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel imgLb; javax.swing.JPanel mainWindowPanel; javax.swing.JLabel marginLb; javax.swing.JPanel previewPanel0; javax.swing.JLabel spacer1; javax.swing.JLabel xLb; javax.swing.JLabel yLb; locationGroup = new javax.swing.ButtonGroup(); previewPanel0 = new javax.swing.JPanel(); previewPanel = new PreviewPanel(); mainWindowPanel = new javax.swing.JPanel(); bgColorLb = new javax.swing.JLabel(); bgColorBtn = new edu.xtec.jclic.beans.ColorButton(); bgColorBtn.setOptions(options); gradientLb = new javax.swing.JLabel(); gradientButton = new edu.xtec.jclic.beans.GradientButton(); gradientButton.setOptions(options); imgLb = new javax.swing.JLabel(); imgButton = new edu.xtec.jclic.beans.ImgButton(); imgButton.setOptions(options); tiledBgImgChk = new javax.swing.JCheckBox(); gameWindowPanel = new javax.swing.JPanel(); actBgColorLb = new javax.swing.JLabel(); actBgColorBtn = new edu.xtec.jclic.beans.ColorButton(); actBgColorBtn.setOptions(options); actGradientLb = new javax.swing.JLabel(); actGradientButton = new edu.xtec.jclic.beans.GradientButton(); actGradientButton.setOptions(options); transpChk = new javax.swing.JCheckBox(); borderChk = new javax.swing.JCheckBox(); marginLb = new javax.swing.JLabel(); marginInt = new edu.xtec.jclic.beans.SmallIntEditor(); spacer1 = new javax.swing.JLabel(); locationLb = new javax.swing.JLabel(); centeredBtn = new javax.swing.JRadioButton(); absoluteBtn = new javax.swing.JRadioButton(); xLb = new javax.swing.JLabel(); xInt = new edu.xtec.jclic.beans.SmallIntEditor(); yLb = new javax.swing.JLabel(); yInt = new edu.xtec.jclic.beans.SmallIntEditor(); setLayout(new java.awt.GridBagLayout()); previewPanel0.setLayout(new java.awt.BorderLayout()); previewPanel0.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_preview"))); previewPanel.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0))); previewPanel0.add(previewPanel, java.awt.BorderLayout.CENTER); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(previewPanel0, gridBagConstraints); mainWindowPanel.setLayout(new java.awt.GridBagLayout()); mainWindowPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_mainWindow"))); bgColorLb.setLabelFor(bgColorBtn); bgColorLb.setText(options.getMsg("edit_act_bgColor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mainWindowPanel.add(bgColorLb, gridBagConstraints); bgColorBtn.setToolTipText(options.getMsg("edit_act_bgColor_tooltip")); bgColorBtn.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mainWindowPanel.add(bgColorBtn, gridBagConstraints); gradientLb.setLabelFor(gradientButton); gradientLb.setText(options.getMsg("edit_act_gradient")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mainWindowPanel.add(gradientLb, gridBagConstraints); gradientButton.setToolTipText(options.getMsg("edit_act_gradient_tooltip")); gradientButton.addPropertyChangeListener(GradientButton.PROP_GRADIENT, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mainWindowPanel.add(gradientButton, gridBagConstraints); imgLb.setLabelFor(imgButton); imgLb.setText(options.getMsg("edit_act_image")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mainWindowPanel.add(imgLb, gridBagConstraints); imgButton.setToolTipText(options.getMsg("edit_act_image_tooltip")); imgButton.addPropertyChangeListener(ImgButton.PROP_IMG_NAME, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; mainWindowPanel.add(imgButton, gridBagConstraints); tiledBgImgChk.setToolTipText(options.getMsg("edit_act_tiledBgImg_tooltip")); tiledBgImgChk.setText(options.getMsg("edit_act_tiledBgImg")); tiledBgImgChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; mainWindowPanel.add(tiledBgImgChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(mainWindowPanel, gridBagConstraints); gameWindowPanel.setLayout(new java.awt.GridBagLayout()); gameWindowPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_gameWindow"))); actBgColorLb.setLabelFor(actBgColorBtn); actBgColorLb.setText(options.getMsg("edit_act_bgColor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gameWindowPanel.add(actBgColorLb, gridBagConstraints); actBgColorBtn.setToolTipText(options.getMsg("edit_act_bgColor_tooltip")); actBgColorBtn.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(actBgColorBtn, gridBagConstraints); actGradientLb.setLabelFor(actGradientButton); actGradientLb.setText(options.getMsg("edit_act_gradient")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gameWindowPanel.add(actGradientLb, gridBagConstraints); actGradientButton.setToolTipText(options.getMsg("edit_act_gradient_tooltip")); actGradientButton.addPropertyChangeListener(GradientButton.PROP_GRADIENT, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(actGradientButton, gridBagConstraints); transpChk.setToolTipText(options.getMsg("edit_act_transparent_tooltip")); transpChk.setText(options.getMsg("edit_act_transparent")); transpChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gameWindowPanel.add(transpChk, gridBagConstraints); borderChk.setToolTipText(options.getMsg("edit_act_border_tooltip")); borderChk.setText(options.getMsg("edit_act_border")); borderChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(borderChk, gridBagConstraints); marginLb.setLabelFor(marginInt); marginLb.setText(options.getMsg("edit_act_margin")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gameWindowPanel.add(marginLb, gridBagConstraints); marginInt.setToolTipText(options.getMsg("edit_act_margin_tooltip")); marginInt.setMax(999); marginInt.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(marginInt, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gameWindowPanel.add(spacer1, gridBagConstraints); locationLb.setText(options.getMsg("edit_act_location")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gameWindowPanel.add(locationLb, gridBagConstraints); centeredBtn.setToolTipText(options.getMsg("edit_act_centered_tooltip")); centeredBtn.setSelected(true); centeredBtn.setText(options.getMsg("edit_act_centered")); locationGroup.add(centeredBtn); centeredBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(centeredBtn, gridBagConstraints); absoluteBtn.setToolTipText(options.getMsg("edit_act_absolute_tooltip")); absoluteBtn.setText(options.getMsg("edit_act_absolute")); locationGroup.add(absoluteBtn); absoluteBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(absoluteBtn, gridBagConstraints); xLb.setLabelFor(xInt); xLb.setText(options.getMsg("edit_act_x")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gameWindowPanel.add(xLb, gridBagConstraints); xInt.setToolTipText(options.getMsg("edit_act_x_tooltip")); xInt.setMax(999); xInt.setMin(-999); xInt.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(xInt, gridBagConstraints); yLb.setLabelFor(yInt); yLb.setText(options.getMsg("edit_act_y")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gameWindowPanel.add(yLb, gridBagConstraints); yInt.setToolTipText(options.getMsg("edit_act_y_tooltip")); yInt.setMax(999); yInt.setMin(-999); yInt.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gameWindowPanel.add(yInt, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(gameWindowPanel, gridBagConstraints); }//GEN-END:initComponents public void setEnabled(boolean enabled){ super.setEnabled(enabled); marginInt.setEnabled(enabled); bgColorBtn.setEnabled(enabled); gradientButton.setEnabled(enabled); imgButton.setEnabled(enabled); tiledBgImgChk.setEnabled(enabled && imgButton.getObject()!=null); borderChk.setEnabled(enabled); transpChk.setEnabled(enabled); actBgColorBtn.setEnabled(enabled); actGradientButton.setEnabled(enabled); absoluteBtn.setEnabled(enabled); centeredBtn.setEnabled(enabled); xInt.setEnabled(enabled && absoluteBtn.isSelected()); yInt.setEnabled(enabled && absoluteBtn.isSelected()); } public boolean eventPerformed(EventObject ev){ Object cmp = ev==null ? null : ev.getSource(); if(cmp==null || cmp==imgButton){ tiledBgImgChk.setEnabled(imgButton.getObject()!=null); } if(cmp==null || cmp==centeredBtn || cmp==absoluteBtn){ xInt.setEnabled(absoluteBtn.isSelected()); yInt.setEnabled(absoluteBtn.isSelected()); } ((PreviewPanel)previewPanel).reset(); return ev!=null; } /* public void clear() { mediaBagEditor=null; marginInt.setValue(Activity.DEFAULT_MARGIN); ((ColorButton)bgColorBtn).setColor(Activity.DEFAULT_BG_COLOR); gradientButton.setGradient(null); imgButton.setImgName(null); imgButton.setMediaBagEditor(null); tiledBgImgChk.setSelected(true); borderChk.setSelected(true); transpChk.setSelected(false); ((ColorButton)actBgColorBtn).setColor(Activity.DEFAULT_BG_COLOR); actGradientButton.setGradient(null); centeredBtn.setSelected(true); absoluteBtn.setSelected(false); xInt.setValue(0); yInt.setValue(0); eventPerformed(null); } */ public void fillData() { Activity act=getActivity(); //if(act!=null){ //setInitializing(true); marginInt.setValue(act==null ? Activity.DEFAULT_MARGIN : act.margin); mediaBagEditor = act==null ? null : getActivityEditor().getMediaBagEditor(); ((ColorButton)bgColorBtn).setColor(act==null ? Activity.DEFAULT_BG_COLOR : act.bgColor); gradientButton.setGradient(act==null ? null : act.bgGradient); imgButton.setMediaBagEditor(mediaBagEditor); imgButton.setImgName(act==null ? null : act.bgImageFile); tiledBgImgChk.setSelected(act==null ? true : (act.tiledBgImg || act.bgImageFile==null)); ((PreviewPanel)previewPanel).reset(); borderChk.setSelected(act==null ? true : act.border); transpChk.setSelected(act==null ? false : act.transparentBg); ((ColorButton)actBgColorBtn).setColor(act==null ? Activity.DEFAULT_BG_COLOR : act.activityBgColor); actGradientButton.setGradient(act==null ? null : act.activityBgGradient); absoluteBtn.setSelected(act==null ? false : act.absolutePositioned); centeredBtn.setSelected(act==null ? true : !act.absolutePositioned); if(act!=null && act.absolutePosition!=null){ xInt.setValue(act.absolutePosition.x); yInt.setValue(act.absolutePosition.y); } else{ xInt.setValue(0); yInt.setValue(0); } //setInitializing(false); //} eventPerformed(null); } public void saveData(){ Activity act=getActivity(); if(act!=null){ act.margin=marginInt.getValue(); act.bgColor=((ColorButton)bgColorBtn).getColor(); act.bgGradient=gradientButton.getGradient(); act.bgImageFile=imgButton.getImgName(); act.tiledBgImg=tiledBgImgChk.isSelected() && act.bgImageFile!=null; act.border=borderChk.isSelected(); act.transparentBg=transpChk.isSelected(); act.activityBgColor=((ColorButton)actBgColorBtn).getColor(); act.activityBgGradient=actGradientButton.getGradient(); act.absolutePositioned=absoluteBtn.isSelected(); if(act.absolutePositioned){ act.absolutePosition=new Point(xInt.getValue(), yInt.getValue()); } else{ act.absolutePosition=null; } } } /* public boolean dataChanged(){ boolean result=false; Activity act=getActivity(); if(act!=null){ result = !act.bgColor.equals(((ColorButton)bgColorBtn).getColor()) || !Utils.compareObjects(act.bgGradient, gradientButton.getGradient()) || !Utils.compareObjects(act.bgImageFile, imgButton.getImgName()) || tiledBgImgChk.isSelected()!=act.tiledBgImg || marginInt.getValue()!=act.margin || !act.activityBgColor.equals(((ColorButton)actBgColorBtn).getColor()) || !Utils.compareObjects(act.activityBgGradient, actGradientButton.getGradient()) || transpChk.isSelected()!=act.transparentBg || borderChk.isSelected()!=act.border || centeredBtn.isSelected()==act.absolutePositioned || (absoluteBtn.isSelected() && (act.absolutePosition==null || xInt.getValue()!=act.absolutePosition.x || yInt.getValue()!=act.absolutePosition.y)); } return result; } */ protected javax.swing.Icon getIcon(){ return edu.xtec.util.ResourceManager.getImageIcon("icons/frame.gif"); } protected String getTitle() { return options.getMsg("edit_act_panels_frame"); } protected String getTooltip() { return options.getMsg("edit_act_panels_frame_tooltip"); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton absoluteBtn; private edu.xtec.jclic.beans.ColorButton actBgColorBtn; private edu.xtec.jclic.beans.GradientButton actGradientButton; private edu.xtec.jclic.beans.ColorButton bgColorBtn; private javax.swing.JCheckBox borderChk; private javax.swing.JRadioButton centeredBtn; private edu.xtec.jclic.beans.GradientButton gradientButton; private edu.xtec.jclic.beans.ImgButton imgButton; private javax.swing.ButtonGroup locationGroup; private javax.swing.JLabel locationLb; private edu.xtec.jclic.beans.SmallIntEditor marginInt; private javax.swing.JPanel previewPanel; private javax.swing.JCheckBox tiledBgImgChk; private javax.swing.JCheckBox transpChk; private edu.xtec.jclic.beans.SmallIntEditor xInt; private edu.xtec.jclic.beans.SmallIntEditor yInt; // End of variables declaration//GEN-END:variables class PreviewPanel extends JPanel{ InnerPreviewPane innerPane; Image bgImage; boolean tiledBgImg; Gradient bgGradient, actBgGradient; Point bgImageOrigin=new Point(); double scale=1.0; PreviewPanel(){ super(); setLayout(null); innerPane=new InnerPreviewPane(); add(innerPane); } class InnerPreviewPane extends JPanel{ InnerPreviewPane(){ super(); setLayout(null); } public void fitTo(Rectangle proposedRect, Rectangle maxRect){ Activity act=getActivity(); Dimension d=new Dimension( act==null ? Activity.DEFAULT_WIDTH : act.getWindowSize().width, act==null ? Activity.DEFAULT_HEIGHT : act.getWindowSize().height ); int w=Math.max(Activity.MINIMUM_WIDTH, Math.min(proposedRect.width, (int)(scale*d.width))); int h=Math.max(Activity.MINIMUM_HEIGHT, Math.min(proposedRect.height, (int)(scale*d.height))); boolean b=centeredBtn.isSelected(); int xp = (b ? 0 : bgImageOrigin.x) + Math.max(0, b ? proposedRect.x+(proposedRect.width-w)/2 : (int)(scale*xInt.getValue())); int yp = (b ? 0 : bgImageOrigin.y) + Math.max(0, b ? proposedRect.y+(proposedRect.height-h)/2 : (int)(scale*yInt.getValue())); if(xp>maxRect.width-Activity.MINIMUM_WIDTH) xp=maxRect.width-Activity.MINIMUM_WIDTH; if(xp+w>maxRect.width) w=maxRect.width-xp; if(yp>maxRect.height-Activity.MINIMUM_HEIGHT) yp=maxRect.height-Activity.MINIMUM_HEIGHT; if(yp+h>maxRect.height) h=maxRect.height-yp; setBounds(xp, yp, w, h); } public void paintComponent(Graphics g){ Graphics2D g2=(Graphics2D)g; Rectangle rBounds=new Rectangle(0, 0, getWidth(), getHeight()); if(!isOpaque() || actBgGradient==null || actBgGradient.hasTransparency()) super.paintComponent(g); RenderingHints rh=g2.getRenderingHints(); if(isOpaque() && actBgGradient!=null){ g2.setRenderingHints(edu.xtec.jclic.Constants.DEFAULT_RENDERING_HINTS); actBgGradient.paint(g2, rBounds); } if(getActivityEditor()!=null) //getActivityEditor().drawPreview(g2, rBounds, margin); getActivityEditor().drawPreview(g2, rBounds, marginInt.getValue()); g2.setRenderingHints(rh); } } public void reset(){ bgImage=null; bgGradient=null; actBgGradient=null; bgImage=null; tiledBgImg=true; if(mediaBagEditor!=null){ String bgImageFile=imgButton.getImgName(); if(bgImageFile!=null){ try{ bgImage=mediaBagEditor.getMediaBag().getImageElement(bgImageFile).getImage(); } catch(Exception ex){ options.getMessages().showErrorWarning(this, "ERROR", ex); } } tiledBgImg=tiledBgImgChk.isSelected(); } innerPane.setBorder( borderChk.isSelected() ? BorderFactory.createBevelBorder(BevelBorder.RAISED) : BorderFactory.createEmptyBorder() ); innerPane.setOpaque(!transpChk.isSelected()); innerPane.setBackground(actBgColorBtn.getColor()); actBgGradient=actGradientButton.getGradient(); bgGradient=gradientButton.getGradient(); setBackground(bgColorBtn.getColor()); revalidate(); repaint(); } public void doLayout(){ scale=1.0; bgImageOrigin.x=0; bgImageOrigin.y=0; Rectangle bounds=getBounds(); int margin=marginInt.getValue(); Rectangle proposedRect=new Rectangle(margin, margin, bounds.width-2*margin, bounds.height-2*margin); if(bgImage!=null && !tiledBgImg){ int w=bgImage.getWidth(this); int h=bgImage.getHeight(this); if(w>0 && h>0 && (w>getWidth() || h>getHeight())){ scale=Math.min((double)getWidth()/w, (double)getHeight()/h); w=(int)(scale*w); h=(int)(scale*h); } else scale=1.0; bgImageOrigin.x=(getWidth()-w)/2; bgImageOrigin.y=(getHeight()-h)/2; if(absoluteBtn.isSelected()){ proposedRect.x=bgImageOrigin.x; proposedRect.y=bgImageOrigin.y; proposedRect.width-=(bgImageOrigin.x-margin); proposedRect.height-=(bgImageOrigin.y-margin); proposedRect.width=Math.min(proposedRect.width, bounds.width); proposedRect.height=Math.min(proposedRect.height, bounds.height); } } innerPane.fitTo(proposedRect, bounds); } public void paintComponent(Graphics g){ Graphics2D g2=(Graphics2D)g; Rectangle rBounds=new Rectangle(0, 0, getWidth(), getHeight()); if(bgGradient==null || bgGradient.hasTransparency()) super.paintComponent(g); if(bgGradient!=null || bgImage!=null){ RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(edu.xtec.jclic.Constants.DEFAULT_RENDERING_HINTS); if(bgGradient!=null) bgGradient.paint(g2, rBounds); if(bgImage!=null){ Rectangle r=new Rectangle(0, 0, bgImage.getWidth(this), bgImage.getHeight(this)); Rectangle gBounds=g2.getClipBounds(); if(!tiledBgImg){ r.setLocation(bgImageOrigin); if(r.intersects(gBounds)){ if(scale==1.0) g2.drawImage(bgImage, bgImageOrigin.x, bgImageOrigin.y, this); else{ int w0=bgImage.getWidth(this); int h0=bgImage.getHeight(this); int w=(int)(scale*w0); int h=(int)(scale*h0); g2.drawImage(bgImage, bgImageOrigin.x, bgImageOrigin.y, bgImageOrigin.x + w, bgImageOrigin.y + h, 0, 0, w0, h0, this); } } } else{ Utils.tileImage(g2, bgImage, rBounds, r, this); } } g2.setRenderingHints(rh); } } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorMsgPanel.form0000644000175000017500000002420011377161311022766 0ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/0000755000175000017500000000000011377161311016425 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagElementEditorPanel.form0000644000175000017500000005633211377161311024415 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/NewActivityPanel.form0000644000175000017500000001272711377161311022551 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivityBagElementEditor.java0000644000175000017500000001664611377161311024174 0ustar /* * File : ActivityBagElementEditor.java * Created : 22-apr-2003 16:29 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.edit.Editor; import javax.swing.ImageIcon; import edu.xtec.util.Options; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.ActivityEditor; import javax.swing.Icon; import edu.xtec.jclic.Activity; import edu.xtec.jclic.edit.EditorAction; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.jclic.Player; import edu.xtec.jclic.TestPlayerContainer; import javax.swing.JInternalFrame; import edu.xtec.jclic.project.JClicProject; import edu.xtec.util.JDomUtility; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityBagElementEditor extends Editor { public static ImageIcon icon; public static EditorAction testActivityAction; //public static EditorAction newActivityBagElementAction; public static boolean actionsCreated; /** Creates a new instance of ActivityBagElementEditor */ public ActivityBagElementEditor(ActivityBagElement abe) { super(abe); } protected void createChildren() { } public EditorPanel createEditorPanel(Options options) { ActivityEditor ae=getActivityEditor(); return (ae==null ? null : ae.createEditorPanel(options)); } public Class getEditorPanelClass() { ActivityEditor ae=getActivityEditor(); return (ae==null ? null : ae.getEditorPanelClass()); } public ActivityBagElement getActivityBagElement(){ return (ActivityBagElement)getUserObject(); } public ActivityEditor getActivityEditor(){ ActivityEditor ae = getChildCount()>0 ? (ActivityEditor)getFirstChild() : null; if(ae==null){ try{ ActivityBagElement abel=getActivityBagElement(); JClicProject prj=((ActivityBagEditor)getEditorParent()).getActivityBag().getProject(); Activity act=Activity.getActivity(abel.getData(), prj); ae=(ActivityEditor)act.getEditor(this); } catch(Exception ex){ System.err.println("Error loading activity!\n"); ex.printStackTrace(System.err); } } return ae; } public void changeActivityClass(String newClassName) throws Exception{ ((ActivityBagEditor)getEditorParent()).changeActivityClass(this, newClassName); } public void forgetActivityEditor(){ if(getChildCount()>0){ ActivityEditor ae=(ActivityEditor)getFirstChild(); if(ae.isModified()) ae.saveData(); removeAllChildren(); } } public static Icon getIcon(){ if(icon==null) icon=edu.xtec.util.ResourceManager.getImageIcon("icons/miniclic.png"); return icon; } public javax.swing.Icon getIcon(boolean leaf, boolean expanded){ return getIcon(); } public String toString(){ return getActivityBagElement().getName(); } public boolean canBeParentOf(Editor e){ return (e instanceof ActivityEditor); } public boolean canBeSiblingOf(Editor e){ return (e instanceof ActivityBagElementEditor); } protected boolean canClone(){ return true; } protected Editor getClone() throws Exception{ ActivityBagElement abe=(ActivityBagElement)getActivityBagElement().clone(); return abe.getEditor(null); } protected void setActionsFlag(){ allowDelete = true; allowCut = true; allowCopy = true; allowPaste=true; } protected boolean delete(boolean changeSelection){ ActivityEditor aed=getActivityEditor(); String activityName=aed.getActivity().name; JClicProjectEditor projectEditor=aed.getProjectEditor(); boolean result=super.delete(changeSelection); if(result){ projectEditor.getActivitySequenceEditor().removeElementsWith(activityName); } return result; } public void setActionsOwner(){ setActionsFlag(); super.setActionsOwner(); if(actionsCreated){ testActivityAction.setActionOwner(this); ActivityBagEditor.newActivityBagElementAction.setActionOwner(this); ActivityBagEditor.copyActivityAttributesAction.setActionOwner(this); } } public void clearActionsOwner(){ super.clearActionsOwner(); testActivityAction.setActionOwner(null); ActivityBagEditor.newActivityBagElementAction.setActionOwner(getEditorParent()); ActivityBagEditor.copyActivityAttributesAction.setActionOwner(null); } public void testActivity(){ ActivityEditor ae=getActivityEditor(); ae.collectData(); JClicProjectEditor pe=ae.getProjectEditor(); if(pe!=null){ TestPlayerContainer tpc=pe.getTestPlayerContainer(); if(tpc!=null && tpc.getTestPlayer()!=null){ String activityName=ae.getActivity().name; ActivitySequenceEditor ased=pe.getActivitySequenceEditor(); if(ased.getActivitySequence().getElementByActivityName(activityName)==null){ ased.createNewSequenceElement(activityName, null, -1); } pe.collectData(); pe.getProject().skin=null; pe.getProject().realize(null, tpc.getTestPlayer()); tpc.getTestPlayer().load(null, null, activityName, null); tpc.test(); } } } public static void createActions(Options options){ createBasicActions(options); if(!actionsCreated){ testActivityAction=new EditorAction("edit_act_testAction", "icons/play.gif", "edit_act_testAction_tooltip", options){ protected void doAction(Editor e){ if(e instanceof ActivityBagElementEditor){ ((ActivityBagElementEditor)e).testActivity(); } else if(e instanceof ActivitySequenceElementEditor){ ((ActivitySequenceElementEditor)e).testActivity(); } } }; actionsCreated=true; } } public boolean nameChanged(int type, String oldName, String newName){ boolean result=false; boolean hasChild=getChildCount()>0; ActivityEditor ae=getActivityEditor(); if(ae!=null) result=ae.nameChanged(type, oldName, newName); if(!hasChild) forgetActivityEditor(); return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivityBagEditor.java0000644000175000017500000002702111377161311022647 0ustar /* * File : ActivityBagEditor.java * Created : 19-sep-2002 09:53 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.*; import edu.xtec.jclic.CopyActivityAttributesPanel; import edu.xtec.jclic.edit.*; import edu.xtec.util.Options; import java.awt.Component; import javax.swing.ImageIcon; import javax.swing.Icon; import javax.swing.tree.TreeNode; import java.util.Iterator; import javax.swing.tree.MutableTreeNode; import edu.xtec.jclic.project.JClicProjectEditor; import javax.swing.JComboBox; import javax.swing.JTextField; import javax.swing.JComponent; import edu.xtec.util.TripleString; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Messages; import edu.xtec.util.StrUtils; import java.util.Enumeration; import java.util.Vector; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityBagEditor extends Editor { public static ImageIcon icon; public static EditorAction newActivityBagElementAction; public static EditorAction copyActivityAttributesAction; public static boolean actionsCreated; private boolean initializing; private static NewActivityPanel newActivityPanel=null; /** Creates a new instance of ActivityBagEditor */ public ActivityBagEditor(ActivityBag ab) { super(ab); } protected void createChildren() { initializing=true; ActivityBag ab=getActivityBag(); if(ab!=null){ int s=ab.size(); for(int i=0; i=0){ getOptions().getMessages().showAlert(dlgParent, "edit_media_rename_exists"); continue; } break; } // ------------------ Activity act=null; try{ act=Activity.getActivity(actClassName, getProjectEditor().getProject()); act.name=actName; } catch(Exception ex){ getOptions().getMessages().showErrorWarning(dlgParent, "edit_act_newActivity_error_creating", ex); return false; } org.jdom.Element e=act.getJDomElement(); if(e==null){ getOptions().getMessages().showErrorWarning(dlgParent, "edit_act_newActivity_error_creating", null); return false; } ActivityBagElement abe=new ActivityBagElement(act.getJDomElement()); ActivityBagElementEditor abeed=(ActivityBagElementEditor)abe.getEditor(null); if(index<0) index=getChildCount(); else index=Math.min(index, getChildCount()); return insertEditor(abeed, true, index, true); } public void changeActivityClass(ActivityBagElementEditor abed, String newClassName) throws Exception{ abed.collectData(); ActivityBagElement abe=abed.getActivityBagElement(); abed.forgetActivityEditor(); Activity act=Activity.getActivity(newClassName, getProjectEditor().getProject()); act.setProperties(abe.getData(), null); abe.setData(act.getJDomElement()); setModified(true); } public void setActionsOwner() { allowDelete = allowCut = allowCopy = allowPaste = false; super.setActionsOwner(); if(actionsCreated){ newActivityBagElementAction.setActionOwner(this); } } public void clearActionsOwner(){ super.clearActionsOwner(); if(actionsCreated){ newActivityBagElementAction.setActionOwner(null); } } public static void createActions(Options options){ createBasicActions(options); if(!actionsCreated){ newActivityBagElementAction=new EditorAction("edit_act_newActivity", "icons/new_miniclic.png", "edit_act_newActivity_tooltip", options){ protected void doAction(Editor e){ Editor ch=null; if(e instanceof ActivityBagElementEditor){ ch=e; e=e.getEditorParent(); } if(e instanceof ActivityBagEditor) ((ActivityBagEditor)e).createNewActivityBagElement(e.getNearestIndex(ch, true), getComponentSrc()); } }; copyActivityAttributesAction=new EditorAction("edit_act_copyAttributes", "icons/copy_properties.gif", "edit_act_copyAttributes_tooltip", options){ protected void doAction(Editor e){ Editor ch=null; //if(e instanceof ActivityBagElementEditor){ // ch=e; // e=e.getEditorParent(); //} if(e instanceof ActivityBagElementEditor){ CopyActivityAttributesPanel catrp=new CopyActivityAttributesPanel(this.options, (ActivityBagElementEditor)e); catrp.showDialog(getComponentSrc()); } } }; actionsCreated=true; } } public void insert(MutableTreeNode newChild, int childIndex){ super.insert(newChild, childIndex); if(!initializing){ ActivityBagElement abe=((ActivityBagElementEditor)newChild).getActivityBagElement(); if(getActivityBag().getElementIndex(abe.getName())>=0){ String name=abe.getName(); int i=name.length()-1; while(i>=0 && Character.isDigit(name.charAt(i))) i--; name=name.substring(0, i+1); if(!name.endsWith("_")) name=name+"_"; int suffix=2; while(getActivityBag().getElementIndex(name+suffix)>=0) suffix++; abe.getData().setAttribute(Activity.NAME, name+suffix); } getActivityBag().insertElementAt(abe, childIndex); } } public void remove(int childIndex){ super.remove(childIndex); getActivityBag().removeElementAt(childIndex); } public boolean nameChanged(int type, String oldName, String newName){ boolean result=false; Enumeration en=children(); while(en.hasMoreElements()) result|=((ActivityBagElementEditor)en.nextElement()).nameChanged(type, oldName, newName); return result; } public int checkOrphanElements(Options options, Component parent, boolean prompt){ int result=Messages.YES; Vector v=new Vector(); ActivityBagElement[] abel=getActivityBag().getElements(); ActivitySequenceEditor ased=getProjectEditor().getActivitySequenceEditor(); ActivitySequenceElement[] asel=ased.getActivitySequence().getElements(); for(int i=0; i10 ? (Object)(new javax.swing.JScrollPane(new javax.swing.JList(v))) : (Object)v, options.getMsg("edit_project_orphanActivities_prompt"), }; result=options.getMessages().showQuestionDlgObj(parent, object, "edit_project_orphanActivities_title", "ync"); doIt=(result==Messages.YES); } if(doIt){ Iterator it=v.iterator(); while(it.hasNext()){ ased.createNewSequenceElement((String)it.next(), null, -1); } } } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivityBagEditorPanel.form0000644000175000017500000000635011377161311023653 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagElementEditor.java0000644000175000017500000002571611377161311023415 0ustar /* * File : MediaBagElementEditor.java * Created : 02-feb-2004 13:46 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Constants; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorAction; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.util.Messages; import edu.xtec.util.Options; import java.awt.Component; import java.awt.Image; import java.util.HashMap; import java.util.Vector; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JOptionPane; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaBagElementEditor extends Editor{ private static boolean actionsCreated ; private static Icon icon; public static EditorAction testMediaBagElementAction; // public static EditorAction newMediaBagElementAction; /** Creates a new instance of MediaBagElementEditor */ public MediaBagElementEditor(MediaBagElement el) { super(el); } protected void createChildren() { } public Class getEditorPanelClass() { return MediaBagElementEditorPanel.class; } public EditorPanel createEditorPanel(Options options) { return new MediaBagElementEditorPanel(options); } public MediaBagElement getMediaBagElement(){ return (MediaBagElement)getFirstObject(MediaBagElement.class); } public MediaBag getMediaBag(){ MediaBag result=null; if(getEditorParent() instanceof MediaBagEditor){ result=((MediaBagEditor)getParent()).getMediaBag(); } return result; } public String getName(){ return getMediaBagElement().getName(); } private static MediaPreviewPanel previewPanel=null; public void testMedia(java.awt.Component parent, Options options){ if(previewPanel==null){ previewPanel=new MediaPreviewPanel(this, options); options.getMessages().showInputDlg(parent, previewPanel, "edit_media_preview_tooltip", null); //JOptionPane.showMessageDialog(JOptionPane.getFrameForComponent(parent), previewPanel, "preview", javax.swing.JOptionPane.PLAIN_MESSAGE); previewPanel.end(); previewPanel=null; } } public boolean rename(String newName, Editor.EditorListener agent, Messages msg){ String oldName=getName(); String errMsg=null; newName=newName.trim(); Component parent=(agent instanceof Component) ? (Component)agent : null; boolean result=false; if(oldName.equals(newName)){ // do nothing } else if(newName.length()<1) errMsg="edit_media_rename_invalid"; else if(getMediaBag().getElement(newName)!=null) errMsg="edit_media_rename_exists"; else{ result=getProjectEditor().nameChanged( Utils.T_CODES[Utils.getFileType(getMediaBagElement().getFileName())], oldName, newName); //getMediaBagElement().setName(newName); //getMediaBag().fireMediaNameChanged(Constants.MEDIA_OBJECT, newName, oldName); //if(result) // fireEditorDataChanged(agent); } if(errMsg!=null && msg!=null && parent!=null){ msg.showAlert(parent, errMsg); } return result; } public void updateContent(Editor.EditorListener agent){ getMediaBagElement().setData(null); fireEditorDataChanged(/*agent*/null); } public boolean changeFileName(String newFileName, Editor.EditorListener agent, Messages msg){ boolean result=false; String errMsg=null; String oldFileName=getMediaBagElement().getFileName(); FileSystem fs=getMediaBag().getProject().getFileSystem(); newFileName=fs.stdFn(newFileName.trim()); Component parent=(agent instanceof Component) ? (Component)agent : null; if(oldFileName.equals(newFileName)){ // do nothing } else if(Utils.getFileType(oldFileName)!=Utils.getFileType(newFileName)){ errMsg="edit_media_chfile_different"; } else if(newFileName.length()<1) errMsg="edit_media_chfile_invalid"; else if(getMediaBag().getElementByFileName(newFileName)!=null){ if(msg!=null && parent!=null){ msg.showAlert(parent, new String[]{ msg.get("edit_media_exists_1"), newFileName, msg.get("edit_media_exists_2") }); } } else{ getMediaBagElement().setFileName(newFileName); result=true; fireEditorDataChanged(agent); } if(errMsg!=null && msg!=null && parent!=null){ msg.showAlert(parent, errMsg); } return result; } public String toString(){ return getName(); } protected void saveData(){ } protected boolean delete(boolean changeSelection){ MediaBagEditor mbe=(MediaBagEditor)getEditorParent(); boolean result=super.delete(changeSelection); if(result && mbe!=null){ result=mbe.getMediaBag().removeElement(getMediaBagElement()); mbe.fireEditorDataChanged(null); } return result; } protected boolean canClone(){ return false; } protected void setActionsFlag(){ // ATENCIO: allowDelete = true; allowCut = false; allowCopy = false; allowPaste=false; } public void setActionsOwner(){ setActionsFlag(); super.setActionsOwner(); if(actionsCreated){ testMediaBagElementAction.setActionOwner(this); //newMediaBagElementAction.setActionOwner(this); } } public void clearActionsOwner(){ super.clearActionsOwner(); if(actionsCreated){ //newMediaBagElementAction.setActionOwner(null); testMediaBagElementAction.setActionOwner(null); } } public static Icon getIcon(){ if(icon==null) icon=edu.xtec.util.ResourceManager.getImageIcon("icons/movie.gif"); return icon; } public Icon getIcon(boolean leaf, boolean expanded){ //return leaf ? getIcon() : null; return getIcon(); } public boolean canBeParentOf(Editor e){ return false; } public boolean canBeSiblingOf(Editor e){ return (e instanceof MediaBagElementEditor); } public JClicProjectEditor getProjectEditor(){ return (JClicProjectEditor)getFirstParent(JClicProjectEditor.class); } public static void createActions(Options opt){ createBasicActions(opt); if(!actionsCreated){ testMediaBagElementAction=new EditorAction("edit_media_preview", "icons/media_view.gif", "edit_media_preview_tooltip", opt){ protected void doAction(Editor e){ EditorPanel ep=getEditorPanelSrc(); if(ep!=null && e instanceof MediaBagElementEditor){ //MediaBagElement mbe=((MediaBagElementEditor)e).getMediaBagElement(); ((MediaBagElementEditor)e).testMedia(ep, ep.getOptions()); } } }; actionsCreated=true; } } public String getDescription(Options options){ MediaBagElement mbe=getMediaBagElement(); StringBuffer sb=new StringBuffer(); String fileName=mbe.getFileName(); if(fileName!=null){ int type=Utils.getFileType(fileName); sb.append(options.getMsg(Utils.TYPE_CODES[type])); if(type==Utils.TYPE_IMAGE){ if(mbe.animated) sb.append(" ").append(options.getMsg("ftype_animated")); try{ Image img=mbe.getImage(); if(img!=null){ sb.append(" (").append(img.getWidth(null)).append("x").append(img.getHeight(null)).append(")"); } } catch(Exception ex){ sb.append(" - ").append(options.getMsg("ERROR")); System.err.println("Error reading image "+fileName); } } } return sb.substring(0); } public long getFileSize(){ MediaBagElement mbe=getMediaBagElement(); long result=-1L; if(mbe!=null){ String fileName=mbe.getFileName(); if(fileName!=null && getMediaBag()!=null){ try{ result=getMediaBag().getProject().getFileSystem().getFileLength(fileName); } catch(Exception ex){ System.err.println("ERROR getting the size of "+fileName); } } } return result; } public boolean nameChanged(int type, String oldName, String newName){ boolean result=false; if((type & Constants.T_MEDIA)!=0 && oldName.equals(getMediaBagElement().getName())){ getMediaBagElement().setName(newName); setModified(true); result=true; } return result; } public Vector listReferences(){ Vector result=null; MediaBag mb=getMediaBag(); if(mb!=null){ HashMap hm=new HashMap(); mb.listReferencesTo(getName(), Constants.MEDIA_OBJECT, hm); result=new Vector(hm.keySet()); } allowDelete=(result==null || result.size()==0); deleteAction.setEnabled(allowDelete); return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceElementEditorPanel.java0000644000175000017500000010207211377161311026220 0ustar /* * File : ActivitySequenceElementEditorPanel.java * Created : 08-apr-2003 17:24 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.beans.NullableObject; import edu.xtec.jclic.beans.SmallIntEditor; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.util.ListComboModel; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.util.StrUtils; import java.awt.Component; import java.awt.Container; import java.util.EventObject; import javax.swing.Icon; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JTextField; import javax.swing.ListModel; import javax.swing.event.DocumentEvent; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceElementEditorPanel extends EditorPanel { String[] fwdOptions, backOptions; Icon[] fwdIcons, backIcons; protected ListComboModel actModel, jmpTagModel; protected JComboBox tagCombo; protected JTextField prjEdit; protected JComponent[] prompt_objects; protected String[] prompt_keys, prompt_msg; /** Creates new form ActivitySequenceElementEditorPanel */ public ActivitySequenceElementEditorPanel(Options options) { super(options); initObjects(); //ActivitySequenceElementEditor.createActions(options); initComponents(); postInit(250, false, false); setEnabled(false); } private static final String[] FWD_OPTIONS_KEYS={"edit_seq_action_fwd", "edit_seq_action_jump", "edit_seq_action_stop", "edit_seq_action_return", "edit_seq_action_exit"}, FWD_OPTIONS_ICONS={"seq_next", "seq_next_jump", "seq_next_stop", "seq_next_return", "seq_exit"}, BACK_OPTIONS_KEYS={"edit_seq_action_back", "edit_seq_action_jump", "edit_seq_action_stop", "edit_seq_action_return", "edit_seq_action_exit"}, BACK_OPTIONS_ICONS={"seq_prev", "seq_prev_jump", "seq_prev_stop", "seq_prev_return", "seq_exit"}; private void initObjects(){ int l=FWD_OPTIONS_KEYS.length; fwdOptions=new String[l]; fwdIcons=new Icon[l]; backOptions=new String[l]; backIcons=new Icon[l]; for(int i=0; i"); upperBtn.addPropertyChangeListener(NullableObject.PROP_CUSTOM_OBJECT, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); condJumpPanel.add(upperBtn, gridBagConstraints); lowerLb.setLabelFor(lowerBtn); lowerLb.setText(options.getMsg("edit_seq_condJump_lower")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); condJumpPanel.add(lowerLb, gridBagConstraints); lowerBtn.setToolTipText(options.getMsg("edit_seq_condJump_lower_tooltip")); lowerBtn.setText(""); lowerBtn.addPropertyChangeListener(NullableObject.PROP_CUSTOM_OBJECT, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); condJumpPanel.add(lowerBtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fwdPanel.add(condJumpPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(fwdPanel, gridBagConstraints); backPanel.setLayout(new java.awt.GridBagLayout()); backPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_seq_arrow_back"))); bkIcon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/prev.gif"))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); backPanel.add(bkIcon, gridBagConstraints); backEnabledChk.setToolTipText(options.getMsg("edit_seq_button_enabled_tooltip")); backEnabledChk.setText(options.getMsg("edit_seq_button_enabled")); backEnabledChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); backPanel.add(backEnabledChk, gridBagConstraints); backActionLb.setText(options.getMsg("edit_seq_action")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); backPanel.add(backActionLb, gridBagConstraints); backActionCombo.setToolTipText(options.getMsg("edit_seq_action_tooltip_bk")); backActionCombo.setRenderer(new edu.xtec.util.CustomListCellRenderer(backOptions, backIcons)); backActionCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); backPanel.add(backActionCombo, gridBagConstraints); backJumpBtn.setText("..."); backJumpBtn.setToolTipText(options.getMsg("edit_seq_jump_tooltip")); backJumpBtn.setMargin(new java.awt.Insets(0, 3, 0, 3)); backJumpBtn.setEnabled(false); backJumpBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); backPanel.add(backJumpBtn, gridBagConstraints); backJumpLb.setText(" "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); backPanel.add(backJumpLb, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(backPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; mainPanel.add(spacer, gridBagConstraints); add(mainPanel, java.awt.BorderLayout.WEST); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return e instanceof ActivitySequenceElementEditor; } protected ActivitySequenceElement getActivitySequenceElement(){ if(editor==null) return null; else return ((ActivitySequenceElementEditor)editor).getActivitySequenceElement(); } protected int getRealDelayValue(){ return autoChk.isSelected() ? delayEditor.getValue() : 0; } protected int getBtnValue(){ boolean fw=fwdEnabledChk.isSelected(); boolean bk=backEnabledChk.isSelected(); return fw ? (bk ? ActivitySequenceElement.NAV_BOTH : ActivitySequenceElement.NAV_FWD) : (bk ? ActivitySequenceElement.NAV_BACK : ActivitySequenceElement.NAV_NONE); } protected void fillData() { ActivitySequenceElement ase=getActivitySequenceElement(); JClicProjectEditor jcpe = ase==null ? null : ((ActivitySequenceElementEditor)getEditor()).getProjectEditor(); if(jcpe!=null){ ListModel lm=jcpe.getActivityBagEditor().getListModel(); if(actModel==null || actModel.getListModel()!=lm){ actModel=new ListComboModel(lm); actCombo.setModel(actModel); } actCombo.setSelectedItem(jcpe.getActivityBagEditor().getChildByName(ase.getActivityName())); } else{ actModel=new ListComboModel(); actCombo.setModel(actModel); actCombo.setSelectedItem(null); } fwdEnabledChk.setSelected(ase==null ? true : (ase.navButtons & ActivitySequenceElement.NAV_FWD)!=0); fwdActionCombo.setSelectedIndex((ase==null || ase.fwdJump==null) ? 0 : ase.fwdJump.action+1); backEnabledChk.setSelected(ase==null ? true : (ase.navButtons & ActivitySequenceElement.NAV_BACK)!=0); backActionCombo.setSelectedIndex((ase==null || ase.backJump==null) ? 0 : ase.backJump.action+1); tagText.setText(StrUtils.secureString(ase==null ? null : ase.getTag())); descText.setText(StrUtils.secureString(ase==null ? null : ase.getDescription())); autoChk.setSelected(ase!=null && ase.delay>0); delayEditor.setValue(Math.max(1, ase==null ? 0 : ase.delay)); ((CondJumpBtn)upperBtn).setConditionalJumpInfo(ase==null || ase.fwdJump==null ? null : ase.fwdJump.upperJump); ((CondJumpBtn)lowerBtn).setConditionalJumpInfo(ase==null || ase.fwdJump==null ? null : ase.fwdJump.lowerJump); setJumpLabels(); checkEnabled(); repaint(); } public boolean eventPerformed(EventObject ev){ Object src=(ev==null ? null : ev.getSource()); ActivitySequenceElement ase=getActivitySequenceElement(); if(src==null || ase==null) return false; if(src==tagCombo){ if(tagCombo.getSelectedIndex()>=0){ tagCombo.getEditor().setItem(tagCombo.getSelectedItem()); } return false; } else if(src==editActBtn && getEditor()!=null && actCombo.getSelectedItem()!=null){ JClicProjectEditor prjed=((ActivitySequenceElementEditor)getEditor()).getProjectEditor(); if(prjed!=null && prjed.getTestPlayerContainer()!=null){ prjed.getTestPlayerContainer().editActivity(actCombo.getSelectedItem().toString()); } return false; } else if(src==fwdActionCombo || src==fwdJumpBtn){ ase.fwdJump=(ActivitySequenceJump)checkJump(ase.fwdJump, fwdActionCombo, true, src==fwdJumpBtn); setJumpLabels(); } else if(src==backActionCombo || src==backJumpBtn){ ase.backJump=(ActivitySequenceJump)checkJump(ase.backJump, backActionCombo, true, src==backJumpBtn); setJumpLabels(); } checkEnabled(); repaint(); updateTable(); return true; } public boolean documentChangePerformed(DocumentEvent documentEvent){ if(documentEvent!=null && documentEvent.getDocument().equals(tagText.getDocument())) updateTable(); return true; } private void updateTable(){ Container cnt=getAWTAncestor(ActivitySequenceEditorPanel.class); if(cnt!=null){ setInitializing(true); saveData(); int row=((ActivitySequenceEditorPanel)cnt).seqTable.getSelectionModel().getAnchorSelectionIndex(); ((ActivitySequenceEditorPanel)cnt).tableModel.fireTableDataChanged(); ((ActivitySequenceEditorPanel)cnt).seqTable.getSelectionModel().setSelectionInterval(row, row); setInitializing(false); } } protected JumpInfo checkJump(JumpInfo ji, JComboBox combo, boolean allowNull, boolean forcePrompt){ int offset = allowNull ? 1 : 0; int v=combo.getSelectedIndex(); if(v==0 && allowNull) ji=null; else{ if(ji==null) ji=new ActivitySequenceJump(v-offset); else ji.action=v-offset; if(ji.action==JumpInfo.JUMP && (forcePrompt || (ji.sequence==null && ji.projectPath==null))){ boolean b=promptJumpParams(ji, this); if(!b || (ji.sequence==null && ji.projectPath==null)){ if(allowNull) ji=null; else ji.action=JumpInfo.RETURN; setInitializing(true); combo.setSelectedIndex(ji==null ? 0 : ji.action+offset); setInitializing(false); } } } return ji; } public void setEnabled(boolean enabled){ super.setEnabled(enabled); actCombo.setEnabled(enabled); fwdEnabledChk.setEnabled(enabled); backEnabledChk.setEnabled(enabled); tagText.setEnabled(enabled); descText.setEnabled(enabled); autoChk.setEnabled(enabled); checkEnabled(); } public void checkEnabled(){ boolean e = isEnabled(); boolean fw = fwdEnabledChk.isSelected() || autoChk.isSelected(); boolean fwBtn = fw && fwdActionCombo.getSelectedIndex()==JumpInfo.JUMP+1; boolean fwCond = fw && fwdActionCombo.getSelectedIndex()>0; boolean bk = backEnabledChk.isSelected(); boolean bkBtn = bk && backActionCombo.getSelectedIndex()==JumpInfo.JUMP+1; fwdActionCombo.setEnabled(e && fw); fwdJumpBtn.setEnabled(e && fwBtn); delayEditor.setEnabled(e && autoChk.isSelected()); backActionCombo.setEnabled(e && bk); backJumpBtn.setEnabled(e && bkBtn); upperBtn.setEnabled(e && fwCond); lowerBtn.setEnabled(e && fwCond); } protected void saveData() { ActivitySequenceElement ase=getActivitySequenceElement(); ActivityBagElementEditor abed=(ActivityBagElementEditor)actCombo.getSelectedItem(); if(ase!=null && abed!=null){ ase.setActivityName(abed.toString()); String tag=StrUtils.nullableString(tagText.getText()); if(!StrUtils.compareObjects(tag, ase.getTag())){ ActivitySequenceEditor ased=(ActivitySequenceEditor)getEditor().getEditorParent(); if(ase.getTag()!=null && ased!=null && ased.tagList!=null) ased.tagList.removeElement(ased.getTag(ase.getTag())); ase.setTag(tag); if(tag!=null && ased!=null && ased.tagList!=null) ased.tagList.addElement(tag); } ase.setTag(StrUtils.nullableString(tagText.getText())); ase.setDescription(StrUtils.nullableString(descText.getText())); ase.navButtons=getBtnValue(); ase.delay=getRealDelayValue(); if(ase.fwdJump!=null){ ase.fwdJump.upperJump=((CondJumpBtn)upperBtn).getConditionalJumpInfo(); ase.fwdJump.lowerJump=((CondJumpBtn)lowerBtn).getConditionalJumpInfo(); } } } protected Icon getIcon(){ return ActivitySequenceElementEditor.getIcon(); } protected String getTitle(){ return "Activity sequence element"; //return options.getMsg("library_dlg_title"); } protected boolean promptJumpParams(JumpInfo ji, Component parent){ boolean result=false; ActivitySequenceElement ase=getActivitySequenceElement(); if(ase!=null){ JClicProjectEditor jcpe=((ActivitySequenceElementEditor)getEditor()).getProjectEditor(); if(jcpe!=null){ ListModel lm=jcpe.getActivitySequenceEditor().getTagList(); if(jmpTagModel==null || jmpTagModel.getListModel()!=lm) jmpTagModel=new ListComboModel(lm); tagCombo.setModel(jmpTagModel); tagCombo.setSelectedItem(ji.sequence); String tx = ji.projectPath; prjEdit.setText(tx==null ? "" : tx); result=options.getMessages().showInputDlg(parent , prompt_msg, prompt_keys, prompt_objects , "edit_seq_jump_title"); if(result){ ji.sequence=StrUtils.nullableString(tagCombo.getEditor().getItem()); ji.projectPath=StrUtils.nullableString(prjEdit.getText()); } } } return result; } private void setJumpLabels(){ StringBuffer sb=new StringBuffer(); ActivitySequenceElement ase=getActivitySequenceElement(); if(ase!=null && ase.fwdJump!=null){ if(ase.fwdJump.sequence!=null) sb.append(ase.fwdJump.sequence); if(ase.fwdJump.projectPath!=null) sb.append(" (").append(ase.fwdJump.projectPath).append(")"); } fwdJumpLb.setText(sb.append(' ').substring(0)); sb.setLength(0); if(ase!=null && ase.backJump!=null){ if(ase.backJump.sequence!=null) sb.append(ase.backJump.sequence); if(ase.backJump.projectPath!=null) sb.append(" (").append(ase.backJump.projectPath).append(")"); } backJumpLb.setText(sb.append(' ').substring(0)); } class CondJumpBtn extends NullableObject{ boolean upper; ConditionalJumpPanel cjp; CondJumpBtn(boolean upper){ super(); this.upper=upper; setOptions(ActivitySequenceElementEditorPanel.this.options); } ConditionalJumpInfo getConditionalJumpInfo(){ return (ConditionalJumpInfo)getObject(); } void setConditionalJumpInfo(ConditionalJumpInfo cji){ setObject(cji); checkIcon(); } protected Object createObject(){ return new ConditionalJumpInfo(JumpInfo.RETURN, null, upper ? 80 : 20); } protected Object editObject(Object o){ if(o==null) o=createObject(); ConditionalJumpInfo cji=(ConditionalJumpInfo)o; if(cjp==null){ cjp=new ConditionalJumpPanel(options, ActivitySequenceElementEditorPanel.this, upper); } cjp.setJumpInfo((ConditionalJumpInfo)o, upper); boolean b=options.getMessages().showInputDlg(this, cjp, "edit_seq_condJump_" + (upper ? "upper" : "lower")); return b ? cjp.getJumpInfo() : null; }; public void changeObject(Object o){ super.changeObject(o); checkIcon(); } private void checkIcon(){ JumpInfo o=getConditionalJumpInfo(); if(o==null || fwdIcons==null) setIcon(null); else setIcon(fwdIcons[o.action+1]); repaint(); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JComboBox actCombo; private javax.swing.JCheckBox autoChk; private javax.swing.JComboBox backActionCombo; private javax.swing.JCheckBox backEnabledChk; private javax.swing.JButton backJumpBtn; private javax.swing.JLabel backJumpLb; private edu.xtec.jclic.beans.SmallIntEditor delayEditor; private javax.swing.JTextArea descText; private javax.swing.JButton editActBtn; private javax.swing.JComboBox fwdActionCombo; private javax.swing.JCheckBox fwdEnabledChk; private javax.swing.JButton fwdJumpBtn; private javax.swing.JLabel fwdJumpLb; private edu.xtec.jclic.beans.NullableObject lowerBtn; private javax.swing.JPanel mainPanel; private javax.swing.JScrollPane scroll; private javax.swing.JTextField tagText; private edu.xtec.jclic.beans.NullableObject upperBtn; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceElementEditorPanel.form0000644000175000017500000011747511377161311026257 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceEditorPanel.java0000644000175000017500000003270211377161311024710 0ustar /* * File : ActivitySequenceEditorPanel.java * Created : 10-jun-2002 16:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.util.SmallButton; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Font; import java.awt.event.FocusEvent; import javax.swing.Icon; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JTable; import javax.swing.ListSelectionModel; import javax.swing.UIManager; import javax.swing.border.Border; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceEditorPanel extends EditorPanel implements ListSelectionListener, ListDataListener { public static final int ICON_WIDTH=20; public ActivitySequenceElementEditor currentItem; protected SeqTableModel tableModel; /** Creates new form ProjectLibraryEditorPanel */ public ActivitySequenceEditorPanel(Options options) { super(options); tableModel=new SeqTableModel(); ActivitySequenceEditor.createActions(options); ActivitySequenceElementEditor.createActions(options); initComponents(); initTable(); postInit(250, false, true); setEnabled(false); } private void initTable(){ TableColumn column; for(int i=2; i<4; i++){ column=seqTable.getColumnModel().getColumn(i); column.setMaxWidth(ICON_WIDTH); column.setPreferredWidth(ICON_WIDTH); column.setWidth(ICON_WIDTH); column.setHeaderRenderer(headerIcoCellRenderer); } seqTable.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION); seqTable.getSelectionModel().addListSelectionListener(ActivitySequenceEditorPanel.this); } private TableCellRenderer headerIcoCellRenderer=new TableCellRenderer(){ JLabel lb; public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column){ if(lb==null){ lb=new JLabel(); Object o=UIManager.get("TableHeader.background"); if(o instanceof Color) lb.setBackground((Color)o); o=UIManager.get("TableHeader.cellBorder"); if(o instanceof Border) lb.setBorder((Border)o); o=UIManager.get("TableHeader.font"); if(o instanceof Font) lb.setFont((Font)o); o=UIManager.get("TableHeader.foreground"); if(o instanceof Color) lb.setForeground((Color)o); } if("prev".equals(value)){ lb.setText(""); lb.setIcon(ResourceManager.getImageIcon("icons/prev.gif")); lb.setToolTipText(options.getMsg("action_prev_tooltip")); } else if("next".equals(value)){ lb.setText(""); lb.setIcon(ResourceManager.getImageIcon("icons/next.gif")); lb.setToolTipText(options.getMsg("action_next_tooltip")); } return lb; } }; protected void currentItemChanged(){ if(!isInitializing()){ ActivitySequenceElementEditorPanel asep=(ActivitySequenceElementEditorPanel)edit; //asep.removeEditor(true); //if(currentItem!=null) asep.attachEditor(currentItem, true); } } public void valueChanged(ListSelectionEvent ev) { if(ev.getValueIsAdjusting() || getActivitySequenceEditor()==null) return; ActivitySequenceElementEditorPanel asep=(ActivitySequenceElementEditorPanel)edit; //if(currentItem!=null) // modified|=asep.dataChanged(); int row=seqTable.getSelectionModel().getAnchorSelectionIndex(); if(row>=0 && row0){ seqTable.getSelectionModel().setSelectionInterval(0, 0); ActivitySequenceElementEditorPanel asep=(ActivitySequenceElementEditorPanel)edit; asep.attachEditor((Editor)ased.getChildAt(0), true); } tableModel.fireTableDataChanged(); } } public void saveData(){ ActivitySequence as=getActivitySequence(); if(as!=null){ //p.settings.title=checkEmptyString(titleText.getText(), true, "UNNAMED"); //titleText.setText(p.settings.title); } } /* public boolean isModified(){ boolean result=super.isModified(); if(!result){ ActivitySequenceElementEditorPanel asep=(ActivitySequenceElementEditorPanel)edit; result=asep.isModified(); } return result; } */ protected Icon getIcon(){ return ActivitySequenceEditor.getIcon(); } protected String getTitle(){ return "Activity sequence"; //return options.getMsg("library_dlg_title"); } public ActivitySequenceEditor getActivitySequenceEditor(){ return (ActivitySequenceEditor)getEditor(); } protected void setEditor(Editor e){ if(getEditor()!=null) getEditor().getListModel().removeListDataListener(this); super.setEditor(e); if(getEditor()!=null) getEditor().getListModel().addListDataListener(this); } protected void addActionsTo(Container cnt){ cnt.add(new SmallButton(ActivitySequenceEditor.newActivitySequenceElementAction)); cnt.add(new SmallButton(ActivityBagElementEditor.testActivityAction)); cnt.add(new SmallButton(Editor.moveUpAction)); cnt.add(new SmallButton(Editor.moveDownAction)); cnt.add(new SmallButton(Editor.copyAction)); cnt.add(new SmallButton(Editor.cutAction)); cnt.add(new SmallButton(Editor.pasteAction)); cnt.add(new SmallButton(Editor.deleteAction)); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel edit; protected javax.swing.JTable seqTable; private javax.swing.JSplitPane split; // End of variables declaration//GEN-END:variables class SeqTableModel extends AbstractTableModel{ public boolean drawDivider(int row){ boolean result=false; ActivitySequenceEditor ase=getActivitySequenceEditor(); if(ase!=null){ //ActivitySequence as=ase.getActivitySequence(); ActivitySequenceElementEditor ased1=(ActivitySequenceElementEditor)ase.getChildAt(row); //ActivitySequenceElement e1 = as==null ? null : as.getElement(row, false); ActivitySequenceElementEditor ased2= (row==ase.getChildCount()-1) ? null : (ActivitySequenceElementEditor)ase.getChildAt(row+1); //ActivitySequenceElement e2 = (as==null || row==as.getSize()-1) ? null : as.getElement(row+1, false); result=(ased1!=null && ased1.getActivitySequenceElement().fwdJump!=null) ||(ased2!=null && ased2.getActivitySequenceElement().backJump!=null); //result=(e1!=null && e1.fwdJump!=null)||(e2!=null && e2.backJump!=null); } return result; } public int getRowCount(){ Editor e=getEditor(); return e==null ? 0 : e.getChildCount(); } public int getColumnCount(){ return 4; } public Class getColumnClass(int columnIndex){ if(columnIndex==2 || columnIndex==3) return ImageIcon.class; else return java.lang.String.class; } public Object getValueAt(int row, int column){ Object result=null; ActivitySequenceEditor ase=getActivitySequenceEditor(); if(ase!=null){ ActivitySequenceElementEditor ased=(ActivitySequenceElementEditor)ase.getChildAt(row); if(ased!=null){ switch(column){ case 0: result=ased.getTag(); break; case 1: result=ased.getActivitySequenceElement().getActivityName(); break; case 2: case 3: result=ActivitySequenceElementEditor.getElementIcon(ased.getActivitySequenceElement(), column==3); break; /* case 4: result=ActivitySequenceElementEditor.getElementJumpDescription(asel); break; */ } } } return result; } public String getColumnName(int column){ String result=""; switch(column){ case 0: result=options.getMsg("edit_seq_tag_header"); break; case 1: result=options.getMsg("edit_seq_activity_header"); break; case 2: result="prev"; break; case 3: result="next"; break; } return result; } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceEditor.java0000644000175000017500000002301111377161311023721 0ustar /* * File : ActivitySequenceEditor.java * Created : 08-apr-2003 12:51 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Constants; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorAction; import javax.swing.ImageIcon; import edu.xtec.util.Options; import edu.xtec.jclic.edit.EditorPanel; import javax.swing.Icon; import javax.swing.DefaultListModel; import javax.swing.ListModel; import javax.swing.tree.MutableTreeNode; import java.util.Enumeration; import edu.xtec.jclic.misc.Utils; import java.awt.Component; import javax.swing.JComboBox; import edu.xtec.util.ListComboModel; import javax.swing.JTextField; import javax.swing.JComponent; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.util.Messages; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceEditor extends Editor{ public static ImageIcon icon; protected DefaultListModel tagList; private boolean initializing; public static boolean actionsCreated; public static EditorAction newActivitySequenceElementAction; /** Creates a new instance of ActivitySequenceEditor */ public ActivitySequenceEditor(ActivitySequence ac) { super(ac); } protected void createChildren() { initializing=true; ActivitySequence as=getActivitySequence(); int n=as.getSize(); for(int i=0; i=0) v.add(activityClasses.get(p)); } } else{ v.addAll(activityClasses); } if(allowOther){ v.add(options.getMsg("edit_act_newActivity_other")); } classList.setListData(v); currentSet=v; setCurrentClassName(currentClassName); } private void updateSelection(){ Object o=classList.getSelectedValue(); boolean showPrompt=false; if(o instanceof TripleString){ TripleString ts=(TripleString)o; currentClassName=ts.getClassName(); descText.setContentType("text/html"); descText.setText(getFormattedHtmlText(ts.toString(), ts.getDescription(), ts.getClassName())); } else if(o!=null){ showPrompt=true; currentClassName=StrUtils.nullableString(classField.getText()); descText.setContentType("text/html"); descText.setText(getFormattedHtmlText(o.toString(), options.getMsg("edit_act_newActivity_info"), null)); } else{ currentClassName=null; descText.setContentType("text/html"); descText.setText(""); } promptPanel.setVisible(showPrompt); if(classList.getSelectedIndex()>=0){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ classList.ensureIndexIsVisible(classList.getSelectedIndex()); }}); } } private static final String TYPE_STYLE="font-family:Helvetica;font-size:12;font-weight:bold;"; private static final String DESC_STYLE="font-family:Helvetica;font-size:12;"; String getFormattedHtmlText(String type, String desc, String className){ StringBuffer sb=new StringBuffer(); sb.append(""); if(type!=null){ sb.append("

").append(type).append("

"); } if(desc!=null){ sb.append("

").append(desc).append("

"); } if(className!=null){ sb.append("

"); sb.append(options.getMsg("edit_act_newActivity_class")).append(" ").append(className); sb.append("

"); } sb.append(""); return sb.substring(0); } /** Getter for property currentClassName. * @return Value of property currentClassName. * */ public java.lang.String getCurrentClassName() { updateSelection(); return StrUtils.nullableString(currentClassName); } /** Setter for property currentClassName. * @param currentClassName New value of property currentClassName. * */ public void setCurrentClassName(java.lang.String currentClassName) { this.currentClassName = currentClassName; if(currentClassName!=null){ int p=TripleString.getFirstItemWithClass(currentSet, currentClassName); if(p>=0) classList.setSelectedIndex(p); else classField.setText(StrUtils.secureString(currentClassName)); } updateSelection(); } private JLabel alertLabel; public void setAlertMsg(String alertMsg){ if(alertLabel!=null) remove(alertLabel); alertLabel=new JLabel(alertMsg); add(alertLabel, BorderLayout.NORTH); } // Variables declaration - do not modify//GEN-BEGIN:variables protected javax.swing.JTextField classField; private javax.swing.JList classList; private javax.swing.JEditorPane descText; private javax.swing.JSplitPane jSplitPane1; private javax.swing.JPanel promptPanel; private javax.swing.JScrollPane scroll2; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagEditor.java0000644000175000017500000005353611377161311022104 0ustar /* * File : MediaBagEditor.java * Created : 17-sep-2002 16:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Constants; import edu.xtec.jclic.edit.*; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.awt.Component; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.fileSystem.ZipFileSystem; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.util.Messages; import edu.xtec.util.ProgressDialog; import edu.xtec.util.StreamIO; import edu.xtec.util.SwingWorker; import java.awt.Color; import java.awt.Cursor; import java.awt.Image; import java.awt.image.BufferedImage; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.util.Enumeration; import java.util.Iterator; import java.util.Vector; import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.SwingUtilities; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaBagEditor extends Editor{ public static final int DEFAULT_IMG_MAX_WIDTH=800; public static final int DEFAULT_IMG_MAX_HEIGHT=600; public static final int IMG_MIN_SIZE=10; public static final String RESIZED="resized"; //public static EditorAction newMediaAction; public static boolean actionsCreated; private boolean initializing; public static EditorAction newMediaBagElementAction, updateAllMediaAction, exportAllMediaAction; private static Icon icon; protected static int imgMaxWidth=DEFAULT_IMG_MAX_WIDTH; protected static int imgMaxHeight=DEFAULT_IMG_MAX_HEIGHT; /** Creates a new instance of MediaBagEditor */ public MediaBagEditor(MediaBag mb) { super(mb); } public Options getOptions(){ return getMediaBag().getProject().getBridge().getOptions(); } protected void createChildren() { initializing=true; Iterator it=getMediaBag().getElementsByName().iterator(); while(it.hasNext()){ ((MediaBagElement)it.next()).getEditor(this); } initializing=false; } public EditorPanel createEditorPanel(Options options) { return new MediaBagMultiEditorPanel(options); } public Class getEditorPanelClass() { return MediaBagMultiEditorPanel.class; } public String getTitleKey(){ return "edit_media"; } public MediaBag getMediaBag(){ return (MediaBag)getUserObject(); } public JClicProjectEditor getProjectEditor(){ return (JClicProjectEditor)getFirstParent(JClicProjectEditor.class); } public static String[] selectMediaFiles(MediaBag mediaBag, Options options, Component dlgOwner, int fileFilters, String defaultFile){ String[] result=null; FileSystem fs=mediaBag.getProject().getFileSystem(); //int[] filters=new int[]{fileFilters}; //if(fileFilters<0){ int[] filters=new int[]{Utils.ALL_IMAGES_FF, Utils.ALL_SOUNDS_FF, Utils.MIDI_FF, Utils.ALL_VIDEO_FF, Utils.ALL_ANIM_FF, Utils.FONTS_FF, Utils.SKINS_FF, Utils.ALL_MEDIA_FF}; //} result=fs.chooseFiles(defaultFile, false, filters, options, "edit_find_media", dlgOwner, true, true); if(result!=null){ for(int i=0; i imgMaxWidth || imgHeight > imgMaxHeight)) { int answer = msg.showQuestionDlgObj( dlgOwner, new String[]{StrUtils.replace( msg.get("img_resize_prompt"), "%s", new String[]{ fNames[i], "" + imgWidth + "x" + imgHeight, "" + imgMaxWidth + "x" + imgMaxHeight })}, "CONFIRM", "ync"); if (answer == Messages.CANCEL) { cancel = true; } else if (answer == Messages.YES) { // TODO: Process can be long. Display wait cursor String baseName = fNames[i]; int lastDot = baseName.lastIndexOf("."); if (lastDot > 0) { baseName = baseName.substring(0, lastDot); } String newName = baseName + "-" + RESIZED + ".jpg"; File destFile = new File(fs.getFullFileNamePath(newName)); int counter = 0; while (destFile.exists()) { newName = baseName + "-" + RESIZED + Integer.toString(++counter) + ".jpg"; destFile = new File(fs.getFullFileNamePath(newName)); } try { javax.swing.ImageIcon resizedImg = mbe.getThumbNail(imgMaxWidth, imgMaxHeight, fs); BufferedImage bimg=Utils.toBufferedImage(resizedImg.getImage(), Color.white, null); javax.imageio.ImageIO.write(bimg, "jpg", destFile); fNames[i] = newName; mbe = new MediaBagElement(fNames[i], null, getValidMediaName(fNames[i])); } catch (Exception ex) { cancel=true; msg.showErrorWarning(dlgOwner, "err_file_save", ex); } } } } } if(!cancel && mb.addElement(mbe)){ v.add(mbe.getEditor(this)); //fireEditorDataChanged(null); } } } if(v.size()>0){ result=new MediaBagElementEditor[v.size()]; v.copyInto(result); fireEditorDataChanged(null); } } return result; } public void updateAllElements(JComponent parent){ final ProgressDialog progressDialog=new ProgressDialog(parent, getOptions()); SwingWorker sw=new SwingWorker(){ public Object construct(){ FileSystem fs=getMediaBag().getProject().getFileSystem(); ZipFileSystem zfs=(fs instanceof ZipFileSystem) ? (ZipFileSystem)fs : null; int count=0; progressDialog.setProgressMax(getChildCount()); progressDialog.setProgressValue(count); Enumeration en=children(); while(en.hasMoreElements() && !isCancelled()){ MediaBagElementEditor mbeled=(MediaBagElementEditor)en.nextElement(); String fName=mbeled.getMediaBagElement().getFileName(); progressDialog.setFileLabel(fName); if(zfs!=null){ ZipFileSystem.ExtendedZipEntry ze=zfs.getEntry(fName); if(ze!=null && zfs.fileExists(fName)){ ze.ignore=true; } } mbeled.updateContent(null); progressDialog.setProgressValue(++count); } setModified(true); progressDialog.setFileLabel(null); fireEditorDataChanged(null); return null; } public void finished(){ progressDialog.setVisible(false); } }; progressDialog.start("edit_media_refreshAll", "edit_media_refreshAll_working", sw, true, true, false); } public void exportAllElements(final JComponent parent){ final Options options=getOptions(); final ProgressDialog progressDialog=new ProgressDialog(parent, options); SwingWorker sw=new SwingWorker(){ public Object construct(){ FileSystem fs=getMediaBag().getProject().getFileSystem(); ZipFileSystem zfs=(fs instanceof ZipFileSystem) ? (ZipFileSystem)fs : null; String dlgMsg=options.getMessages().get("filesystem_copyFile"); int count=0; progressDialog.setProgressMax(getChildCount()); progressDialog.setProgressValue(count); Enumeration en=children(); boolean overwriteAll=false; boolean overwriteNone=false; while(en.hasMoreElements() && !isCancelled()){ MediaBagElementEditor mbeled=(MediaBagElementEditor)en.nextElement(); String fName=mbeled.getMediaBagElement().getFileName(); if(zfs!=null){ ZipFileSystem.ExtendedZipEntry ze=zfs.getEntry(fName); if(ze!=null && !ze.ignore){ progressDialog.setFileLabel(fName); String fNameDest=zfs.getFullFileNamePath(fName); File fileDest=new File(fNameDest); boolean prompt=true; if(fileDest.exists()){ if(overwriteNone) continue; else if(!overwriteAll){ boolean next=false; boolean cancel=false; switch(options.getMessages().confirmOverwriteFile(parent, fileDest, "yYnNc")){ case Messages.NO_TO_ALL: overwriteNone=true; case Messages.NO: next=true; break; case Messages.YES_TO_ALL: overwriteAll=true; case Messages.YES: break; default: cancel=true; } if(next) continue; else if(cancel) break; } } try{ OutputStream os=zfs.createSecureFileOutputStream(fNameDest); //int len=(int)zfs.getFileLength(fName); InputStream is=zfs.getInputStream(fName); StreamIO.writeStreamTo(is, os); //StreamIO.writeStreamDlg(is, os, len, dlgMsg, progressDialog, options); } catch(Exception ex){ options.getMessages().showErrorWarning(progressDialog, "FILE_ERR_SAVING", ex); break; } } progressDialog.setProgressValue(++count); } } progressDialog.setFileLabel(null); return null; } public void finished(){ progressDialog.setVisible(false); } }; progressDialog.start("edit_media_refreshAll", "edit_media_refreshAll_working", sw, true, true, false); } public void setActionsOwner(){ allowDelete = allowCut = allowCopy = allowPaste = false; super.setActionsOwner(); if(actionsCreated){ newMediaBagElementAction.setActionOwner(this); FileSystem fs=getMediaBag().getProject().getFileSystem(); boolean isZipFileSystem=(fs instanceof ZipFileSystem); updateAllMediaAction.setActionOwner(isZipFileSystem ? this : null); exportAllMediaAction.setActionOwner(isZipFileSystem ? this : null); } } public void clearActionsOwner(){ super.clearActionsOwner(); if(actionsCreated){ newMediaBagElementAction.setActionOwner(null); updateAllMediaAction.setActionOwner(null); exportAllMediaAction.setActionOwner(null); } } public static void createActions(Options opt){ createBasicActions(opt); if(!actionsCreated){ newMediaBagElementAction=new EditorAction("edit_media_new", "icons/media_new.gif", "edit_media_new_tooltip", opt){ protected void doAction(Editor e){ Editor ch=null; if(e instanceof MediaBagElementEditor){ ch=e; e=e.getEditorParent(); } if(e instanceof MediaBagEditor){ EditorPanel ep=getEditorPanelSrc(); MediaBagMultiEditorPanel mbep=null; if(ep instanceof MediaBagMultiEditorPanel) mbep=(MediaBagMultiEditorPanel)ep; int filters=(mbep==null ? -1 : mbep.getFilters()); MediaBagElementEditor[] mbed=((MediaBagEditor)e).createNewMediaBagElements(options, getComponentSrc(), filters); if(mbed!=null && mbed.length>0 && mbep!=null){ mbep.setSelected(mbed[0]); } } } }; updateAllMediaAction=new EditorAction("edit_media_refreshAll", "icons/reset_all.gif", "edit_media_refreshAll_tooltip", opt){ protected void doAction(Editor e){ if(e instanceof MediaBagEditor){ ((MediaBagEditor)e).updateAllElements(getJComponentSrc()); } } }; exportAllMediaAction=new EditorAction("edit_media_exportAll", "icons/file_save_all.gif", "edit_media_exportAll_tooltip", opt){ protected void doAction(Editor e){ if(e instanceof MediaBagEditor){ ((MediaBagEditor)e).exportAllElements(getJComponentSrc()); } } }; actionsCreated=true; } } public MediaBagElementEditor getChildFor(MediaBagElement mbe){ MediaBagElementEditor result=null; if(mbe!=null){ Enumeration en=children(); while(en.hasMoreElements()){ Editor e=(Editor)en.nextElement(); if(e.getUserObject()==mbe){ result=(MediaBagElementEditor)e; break; } } } return result; } public Vector getChildrenList(int filters){ Vector v=new Vector(); Iterator it=getMediaBag().getElementsByName().iterator(); String[] extFilters=Utils.getFileFilterExtensions(filters); while(it.hasNext()){ MediaBagElement mbe=(MediaBagElement)it.next(); int i=0; String s=mbe.getFileName().toLowerCase(); if(extFilters!=null) while(i10 ? (Object)(new javax.swing.JScrollPane(new javax.swing.JList(v))) : (Object)v, options.getMsg("edit_project_orphanMedia_prompt"), }; result=options.getMessages().showQuestionDlgObj(parent, object, "edit_project_orphanMedia_title", "ync"); doIt=(result==Messages.YES); } if(doIt){ Iterator it=v.iterator(); while(it.hasNext()){ MediaBagElementEditor mbed=(MediaBagElementEditor)it.next(); mbed.delete(true); } } } return result; } public static int getImgMaxWidth(){ return imgMaxWidth; } public static void setImgMaxWidth(int width){ imgMaxWidth=Math.max(IMG_MIN_SIZE, width); } public static int getImgMaxHeight(){ return imgMaxHeight; } public static void setImgMaxHeight(int height){ imgMaxHeight=Math.max(IMG_MIN_SIZE, height); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagElementEditorPanel.java0000644000175000017500000005301711377161311024370 0ustar /* * File : MediaBagElementEditorPanel.java * Created : 02-feb-2004 13:50 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.fileSystem.ZipFileSystem; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ProgressDialog; import edu.xtec.util.StreamIO; import edu.xtec.util.SwingWorker; import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.util.EventObject; import java.util.Vector; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaBagElementEditorPanel extends EditorPanel { protected ZipFileSystem.ExtendedZipEntry zipEntry; protected ZipFileSystem zipFileSystem; /** Creates new form MediaBagElementEditorPanel */ public MediaBagElementEditorPanel(Options options) { super(options); //MediaBagEditor.createActions(options); //MediaBagElementEditor.createActions(options); initComponents(); refList.addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e){ if(!e.getValueIsAdjusting()){ editActBtn.setEnabled(e.getFirstIndex()>=0); } } }); postInit(250, false, false); } protected String getTitle(){ return options.getMsg("edit_media_title"); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // //GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; mainPanel = new javax.swing.JPanel(); settingsPanel = new javax.swing.JPanel(); javax.swing.JLabel nameLb = new javax.swing.JLabel(); nameText = new javax.swing.JLabel(); chNameBtn = new javax.swing.JButton(); chNameBtn.addActionListener(this); javax.swing.JLabel fileLb = new javax.swing.JLabel(); fileText = new javax.swing.JLabel(); chFileBtn = new javax.swing.JButton(); chFileBtn.addActionListener(this); saveFileBtn = new javax.swing.JButton(); refreshFileBtn = new javax.swing.JButton(); refreshFileBtn.addActionListener(this); javax.swing.JLabel typeLb = new javax.swing.JLabel(); typeTx = new javax.swing.JLabel(); javax.swing.JLabel sizeLb = new javax.swing.JLabel(); sizeTx = new javax.swing.JLabel(); zipIncludeChk = new javax.swing.JCheckBox(); zipIncludeChk.addActionListener(this); refPanel = new javax.swing.JPanel(); refScroll = new javax.swing.JScrollPane(); refList = new javax.swing.JList(); editActBtn = new javax.swing.JButton(); editActBtn.addActionListener(this); setLayout(new java.awt.BorderLayout()); mainPanel.setLayout(new java.awt.GridBagLayout()); settingsPanel.setLayout(new java.awt.GridBagLayout()); nameLb.setText(options.getMsg("edit_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(nameLb, gridBagConstraints); nameText.setBorder(javax.swing.BorderFactory.createTitledBorder("")); nameText.setMinimumSize(new java.awt.Dimension(200, 21)); nameText.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(nameText, gridBagConstraints); chNameBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/edit.gif"))); // NOI18N chNameBtn.setToolTipText(options.getMsg("edit_media_change_name")); chNameBtn.setText(""); chNameBtn.setMargin(new java.awt.Insets(2, 2, 2, 2)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(chNameBtn, gridBagConstraints); fileLb.setText(options.getMsg("edit_file")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(fileLb, gridBagConstraints); fileText.setBorder(javax.swing.BorderFactory.createTitledBorder("")); fileText.setMinimumSize(new java.awt.Dimension(200, 21)); fileText.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(fileText, gridBagConstraints); chFileBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/file_open.gif"))); // NOI18N chFileBtn.setToolTipText(options.getMsg("edit_media_change_file")); chFileBtn.setText(""); chFileBtn.setMargin(new java.awt.Insets(2, 2, 2, 2)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(chFileBtn, gridBagConstraints); saveFileBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/file_save.gif"))); // NOI18N saveFileBtn.setToolTipText(options.getMsg("edit_media_save_file")); saveFileBtn.setText(""); saveFileBtn.setMargin(new java.awt.Insets(2, 2, 2, 2)); saveFileBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(saveFileBtn, gridBagConstraints); refreshFileBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/reset.gif"))); // NOI18N refreshFileBtn.setToolTipText(options.getMsg("edit_media_refresh_file")); refreshFileBtn.setText(""); refreshFileBtn.setMargin(new java.awt.Insets(2, 2, 2, 2)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(refreshFileBtn, gridBagConstraints); typeLb.setText(options.getMsg("edit_media_type")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(typeLb, gridBagConstraints); typeTx.setText("-"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(typeTx, gridBagConstraints); sizeLb.setText(options.getMsg("edit_media_size")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(sizeLb, gridBagConstraints); sizeTx.setText("0 Kb"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(sizeTx, gridBagConstraints); zipIncludeChk.setText(options.getMsg("edit_media_includeInZip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); settingsPanel.add(zipIncludeChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(settingsPanel, gridBagConstraints); refPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(options.getMsg("edit_media_referencedBy"))); refPanel.setMinimumSize(new java.awt.Dimension(180, 100)); refPanel.setPreferredSize(new java.awt.Dimension(180, 100)); refPanel.setLayout(new java.awt.BorderLayout()); refList.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { refListMouseClicked(evt); } }); refScroll.setViewportView(refList); refPanel.add(refScroll, java.awt.BorderLayout.CENTER); editActBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/miniclic.png"))); // NOI18N editActBtn.setToolTipText(options.getMsg("edit_act_editActivity_tooltip")); editActBtn.setText(options.getMsg("edit_act_editActivity")); editActBtn.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); refPanel.add(editActBtn, java.awt.BorderLayout.SOUTH); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(refPanel, gridBagConstraints); add(mainPanel, java.awt.BorderLayout.CENTER); }// //GEN-END:initComponents private void refListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_refListMouseClicked if(refList.getSelectedValue()!=null && evt.getClickCount()==2){ editActivity(refList.getSelectedValue().toString()); } }//GEN-LAST:event_refListMouseClicked protected void editActivity(String activityName){ MediaBagElementEditor mbed=getMediaBagElementEditor(); if(mbed!=null && activityName!=null){ JClicProjectEditor prjed=(JClicProjectEditor)mbed.getFirstParent(JClicProjectEditor.class); if(prjed!=null && prjed.getTestPlayerContainer()!=null){ prjed.getTestPlayerContainer().editActivity(activityName); } } } public boolean checkIfEditorValid(Editor e) { return e instanceof MediaBagElementEditor; } protected MediaBagElementEditor getMediaBagElementEditor(){ return (MediaBagElementEditor)editor; } protected MediaBagElement getMediaBagElement(){ if(editor==null) return null; else return getMediaBagElementEditor().getMediaBagElement(); } protected MediaBag getMediaBag(){ if(editor==null) return null; else return getMediaBagElementEditor().getMediaBag(); } public void setEnabled(boolean enabled){ super.setEnabled(enabled); if(!enabled){ chNameBtn.setEnabled(false); chFileBtn.setEnabled(false); saveFileBtn.setEnabled(false); refreshFileBtn.setEnabled(false); zipIncludeChk.setEnabled(false); } refList.setEnabled(enabled); } protected FileSystem fileSystem; protected void fillData() { MediaBagElementEditor mbed=getMediaBagElementEditor(); String fileName=mbed==null ? "" : mbed.getMediaBagElement().getFileName(); //Vector references=null; fileSystem= (mbed==null || mbed.getMediaBag()==null ? null : mbed.getMediaBag().getProject().getFileSystem()); if(fileSystem instanceof edu.xtec.jclic.fileSystem.ZipFileSystem){ zipFileSystem=(edu.xtec.jclic.fileSystem.ZipFileSystem)fileSystem; zipEntry=zipFileSystem.getEntry(fileName); } else{ zipFileSystem=null; zipEntry=null; } String name=(mbed==null ? "" : mbed.getName()); nameText.setText(name); nameText.setToolTipText(name); chNameBtn.setEnabled(mbed!=null); fileText.setText(fileName); fileText.setToolTipText(fileName); chFileBtn.setEnabled(mbed!=null); saveFileBtn.setEnabled(zipEntry!=null); refreshFileBtn.setEnabled(mbed!=null); typeTx.setText(mbed==null ? "" : mbed.getDescription(options)); long fSize=-1; if(mbed!=null) fSize=mbed.getFileSize(); sizeTx.setText(fSize<0 ? "" : options.getMessages().fileSize(fSize)); zipIncludeChk.setSelected(mbed==null ? true : mbed.getMediaBagElement().saveFlag); zipIncludeChk.setEnabled(mbed!=null); checkReferences(); } protected void checkReferences(){ MediaBagElementEditor mbed=getMediaBagElementEditor(); Vector references=null; if(mbed!=null){ references=mbed.listReferences(); } refList.setListData(references==null ? new Vector() : references); refList.setSelectedIndex(-1); editActBtn.setEnabled(false); } /* public boolean isModified(){ MediaBagElement mbe=getMediaBagElement(); return mbe!=null && mbe.saveFlag!=zipIncludeChk.isSelected(); } */ protected void saveData(){ MediaBagElementEditor mbed=getMediaBagElementEditor(); if(mbed!=null){ mbed.getMediaBagElement().saveFlag=zipIncludeChk.isSelected(); } } public boolean eventPerformed(EventObject ev){ if(ev!=null){ if(ev.getSource()==refreshFileBtn) refreshFile(); else if(ev.getSource()==saveFileBtn) saveFile(); else if(ev.getSource()==chFileBtn) changeFileName(); else if(ev.getSource()==chNameBtn) changeName(); else if(ev.getSource()==editActBtn && refList.getSelectedValue()!=null){ editActivity(refList.getSelectedValue().toString()); return false; } } return true; } private void refreshFile(){ MediaBagElementEditor mbed=getMediaBagElementEditor(); if(mbed!=null){ if(zipEntry!=null){ if(!zipFileSystem.fileExists(getMediaBagElement().getFileName())){ options.getMessages().showAlert(this, "edit_media_warn_zipFileNotExternal"); return; } zipEntry.ignore=true; zipEntry=null; mbed.updateContent(this); notifyChangesToParentPanel(); getEditor().setModified(true); } getMediaBagElement().setData(null); //getEditor().fireEditorDataChanged(this); } } private void saveFile() { if(zipEntry!=null){ String fName=getMediaBagElement().getFileName(); String fNameDest=zipFileSystem.chooseFile(fName, true, null, options, "FILE_SAVE", this, false); if(fNameDest!=null){ try{ OutputStream os=zipFileSystem.createSecureFileOutputStream(fNameDest); int len=(int)zipFileSystem.getFileLength(fName); InputStream is=zipFileSystem.getInputStream(fName); StreamIO.writeStreamDlg(is, os, len, options.getMessages().get("filesystem_copyFile"), this, options); } catch(Exception ex){ options.getMessages().showErrorWarning(this, "FILE_ERR_SAVING", ex); } } } } private void changeFileName() { MediaBagElementEditor mbed=getMediaBagElementEditor(); if(mbed!=null){ MediaBagElement mbe=mbed.getMediaBagElement(); Messages msg=options.getMessages(); String oldFileName=mbe.getFileName(); FileSystem fs=mbed.getMediaBag().getProject().getFileSystem(); int [] fileFilters=new int[]{Utils.getFileFilterCode(oldFileName)}; String newFileName=fs.chooseFile(oldFileName.replace('/', File.separatorChar), false, fileFilters, options, "edit_find_media", this, true); if(newFileName!=null){ newFileName=newFileName.replace(File.separatorChar, '/'); if(mbed.changeFileName(newFileName, this, msg)){ notifyChangesToParentPanel(); } } } } private void changeName() { final MediaBagElementEditor mbed=getMediaBagElementEditor(); if(mbed!=null){ Messages msg=options.getMessages(); final String oldName=getMediaBagElement().getName(); final String newName=msg.showInputDlg(MediaBagElementEditorPanel.this, "edit_media_rename", "edit_media_rename_prompt", oldName, "edit_media_rename_title", false); if(newName!=null){ final ProgressDialog progressDialog=new ProgressDialog(this, options); SwingWorker sw=new SwingWorker(){ public Object construct(){ mbed.rename(newName, MediaBagElementEditorPanel.this, options.getMessages()); return null; } public void finished(){ notifyChangesToParentPanel(); progressDialog.setVisible(false); } }; progressDialog.start("edit_media_rename", "edit_media_renaming", sw, false, false, false); } } } private void notifyChangesToParentPanel(){ MediaBagMultiEditorPanel mbep=(MediaBagMultiEditorPanel)getAWTAncestor(MediaBagMultiEditorPanel.class); if(mbep!=null) mbep.editorDataChanged(getEditor()); } public void focusGained(java.awt.event.FocusEvent focusEvent) { super.focusGained(focusEvent); checkReferences(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton chFileBtn; private javax.swing.JButton chNameBtn; private javax.swing.JButton editActBtn; private javax.swing.JLabel fileText; private javax.swing.JPanel mainPanel; private javax.swing.JLabel nameText; private javax.swing.JList refList; private javax.swing.JPanel refPanel; private javax.swing.JScrollPane refScroll; private javax.swing.JButton refreshFileBtn; private javax.swing.JButton saveFileBtn; private javax.swing.JPanel settingsPanel; private javax.swing.JLabel sizeTx; private javax.swing.JLabel typeTx; private javax.swing.JCheckBox zipIncludeChk; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagSelector.java0000644000175000017500000002764411377161311022437 0ustar /* * File : MediaBagSelector.java * Created : 22-mar-2004 15:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import java.awt.Component; import java.util.Vector; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaBagSelector extends javax.swing.JPanel { // Modified: 14-09-2010 - suggested by Camille Manoury // The cell properties editor now allows to directly import images // and other files into the media library Options options; /** Creates new form MediaBagSelector */ public MediaBagSelector(Options options) { this.options=options; initComponents(); mediaList.addListSelectionListener(selListener); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // //GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; listPanel = new javax.swing.JPanel(); scrollList = new javax.swing.JScrollPane(); mediaList = new javax.swing.JList(); addMediaBtn = new javax.swing.JButton(); elementPanel = new javax.swing.JPanel(); previewLabel = new javax.swing.JLabel(); nameLb = new javax.swing.JLabel(); nameText = new javax.swing.JLabel(); fileLb = new javax.swing.JLabel(); fileText = new javax.swing.JLabel(); javax.swing.JLabel typeLb = new javax.swing.JLabel(); typeTx = new javax.swing.JLabel(); javax.swing.JLabel sizeLb = new javax.swing.JLabel(); sizeTx = new javax.swing.JLabel(); setLayout(new java.awt.GridBagLayout()); listPanel.setLayout(new java.awt.BorderLayout()); scrollList.setMinimumSize(new java.awt.Dimension(200, 400)); scrollList.setPreferredSize(new java.awt.Dimension(200, 400)); scrollList.setViewportView(mediaList); listPanel.add(scrollList, java.awt.BorderLayout.CENTER); addMediaBtn.setIcon(ResourceManager.getImageIcon("icons/media_new.gif")); addMediaBtn.setText(options.getMsg("edit_media_new")); addMediaBtn.setToolTipText(options.getMsg("edit_media_new_tooltip")); addMediaBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addMediaBtnActionPerformed(evt); } }); listPanel.add(addMediaBtn, java.awt.BorderLayout.PAGE_END); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; add(listPanel, gridBagConstraints); elementPanel.setLayout(new java.awt.GridBagLayout()); previewLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER); previewLabel.setBorder(javax.swing.BorderFactory.createEtchedBorder()); previewLabel.setMinimumSize(new java.awt.Dimension(100, 100)); previewLabel.setPreferredSize(new java.awt.Dimension(100, 100)); previewLabel.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { previewLabelMousePressed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 7, 3); elementPanel.add(previewLabel, gridBagConstraints); nameLb.setText(options.getMsg("edit_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(nameLb, gridBagConstraints); nameText.setMinimumSize(new java.awt.Dimension(200, 16)); nameText.setPreferredSize(new java.awt.Dimension(200, 17)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(nameText, gridBagConstraints); fileLb.setText(options.getMsg("edit_file")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(fileLb, gridBagConstraints); fileText.setMinimumSize(new java.awt.Dimension(200, 16)); fileText.setPreferredSize(new java.awt.Dimension(200, 17)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(fileText, gridBagConstraints); typeLb.setText(options.getMsg("edit_media_type")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(typeLb, gridBagConstraints); typeTx.setText("-"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(typeTx, gridBagConstraints); sizeLb.setText(options.getMsg("edit_media_size")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(sizeLb, gridBagConstraints); sizeTx.setText("0 Kb"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); elementPanel.add(sizeTx, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(elementPanel, gridBagConstraints); }// //GEN-END:initComponents private void previewLabelMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_previewLabelMousePressed if(current!=null) current.testMedia(this, options); }//GEN-LAST:event_previewLabelMousePressed private void addMediaBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addMediaBtnActionPerformed if(mbe!=null){ MediaBagElementEditor[] mbele=mbe.createNewMediaBagElements(options, this, filters); if(mbele!=null && mbele.length>0){ mediaList.setListData(mbe.getChildrenList(filters)); setSelected(mbele[0]); mediaList.setSelectedValue(mbele[0], true); } } }//GEN-LAST:event_addMediaBtnActionPerformed MediaBagEditor mbe; MediaBagElementEditor current; int filters; protected void setMediaBagEditor(MediaBagEditor mbe, int filters){ this.mbe=mbe; this.filters=filters; setSelected(null); mediaList.setListData(mbe==null ? new Vector() : mbe.getChildrenList(filters)); } protected void setSelected(MediaBagElementEditor mbed){ current=mbed; nameText.setText(current==null ? "" : current.getName()); fileText.setText(current==null ? "" : current.getMediaBagElement().getFileName()); typeTx.setText(mbed==null ? "" : mbed.getDescription(options)); long fSize=-1; if(mbed!=null) fSize=mbed.getFileSize(); sizeTx.setText(fSize<0 ? "" : options.getMessages().fileSize(fSize)); previewLabel.setIcon(mbed==null ? null : mbed.getMediaBagElement().getThumbNail(90, 90, mbed.getMediaBag().getProject().getFileSystem())); if(mbed!=null) mbed.getMediaBagElement().clearData(); } protected MediaBagElementEditor getSelected(){ return current; } private ListSelectionListener selListener=new ListSelectionListener(){ public void valueChanged(ListSelectionEvent evt){ if(evt!=null && !evt.getValueIsAdjusting()){ setSelected((MediaBagElementEditor)mediaList.getSelectedValue()); } } }; private static java.util.HashMap dlgPanels=new java.util.HashMap(1); public static String getMediaName(String initialValue, Options options, Component parent, MediaBagEditor mbe, int filters){ String result=null; Messages msg=options.getMessages(); MediaBagSelector mbs=(MediaBagSelector)dlgPanels.get(options); if(mbs==null){ mbs=new MediaBagSelector(options); //mbs.setPreferredSize(new java.awt.Dimension(400, 300)); dlgPanels.put(options, mbs); } mbs.setMediaBagEditor(mbe, filters); MediaBagElementEditor mbed=initialValue==null ? null : (MediaBagElementEditor)mbe.getChildByName(initialValue); mbs.setSelected(mbed); mbs.mediaList.setSelectedValue(mbed, true); boolean b=msg.showInputDlg(parent, mbs, "edit_media_dlg_title"); if(b){ MediaBagElementEditor mbele=mbs.getSelected(); if(mbele!=null) result=mbele.getName(); } mbs.setMediaBagEditor(null, -1); return result; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton addMediaBtn; private javax.swing.JPanel elementPanel; private javax.swing.JLabel fileLb; private javax.swing.JLabel fileText; private javax.swing.JPanel listPanel; private javax.swing.JList mediaList; private javax.swing.JLabel nameLb; private javax.swing.JLabel nameText; private javax.swing.JLabel previewLabel; private javax.swing.JScrollPane scrollList; private javax.swing.JLabel sizeTx; private javax.swing.JLabel typeTx; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ConditionalJumpPanel.java0000644000175000017500000002175511377161311023361 0ustar /* * File : ConditionalJumpPanel.java * Created : 19-mar-2004 11:44 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.jclic.beans.SmallIntEditor; import java.util.EventObject; import javax.swing.Icon; import javax.swing.JComboBox; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ConditionalJumpPanel extends edu.xtec.util.CtrlPanel { Options options; protected String[] jmpOptions; protected Icon[] jmpIcons; ActivitySequenceElementEditorPanel asep; ConditionalJumpInfo ji; String sType; /** Creates new form ConditionalJumpPanel */ public ConditionalJumpPanel(Options options, ActivitySequenceElementEditorPanel asep, boolean up) { this.options=options; this.asep=asep; sType = up ? "up" : "down"; ji=new ConditionalJumpInfo(JumpInfo.RETURN, null, 60); initObjects(); initComponents(); } private static final String[] OPTIONS_KEYS={"edit_seq_action_jump", "edit_seq_action_stop", "edit_seq_action_return", "edit_seq_action_exit"}, OPTIONS_ICONS={"seq_next_jump", "seq_next_stop", "seq_next_return", "seq_exit"}; private void initObjects(){ int l=OPTIONS_KEYS.length; jmpOptions=new String[l]; jmpIcons=new Icon[l]; for(int i=0; i=0) mbep.filterCombo.setEnabled(false); mbep.setSelected( initialValue==null ? null : (MediaBagElementEditor)mbe.getChildByName(initialValue)); boolean b=msg.showInputDlg(parent, mbep, "edit_media_dlg_title"); if(b){ MediaBagElementEditor mbele=mbep.getSelected(); if(mbele!=null) result=mbele.getName(); } mbep.filterCombo.setEnabled(true); mbep.removeEditor(true); return result; } protected void addActionsTo(Container cnt){ //cnt.add(new SmallButton(MediaBagElementEditor.newMediaBagElementAction)); cnt.add(new SmallButton(MediaBagEditor.newMediaBagElementAction)); cnt.add(new SmallButton(MediaBagElementEditor.testMediaBagElementAction)); cnt.add(new SmallButton(Editor.deleteAction)); cnt.add(new SmallButton(MediaBagEditor.updateAllMediaAction)); cnt.add(new SmallButton(MediaBagEditor.exportAllMediaAction)); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup bGroup; private javax.swing.JPanel elementEditPanel; private javax.swing.JComboBox filterCombo; private javax.swing.JLabel filterLb; private javax.swing.JPanel filterPanel; private javax.swing.JPanel mainPanel; private javax.swing.JPanel sPanel; private javax.swing.JScrollPane scrollPanel; private javax.swing.JLabel statusLb; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceEditorPanel.form0000644000175000017500000000632311377161311024732 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagMultiEditorPanel.form0000644000175000017500000001530611377161311024112 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceElementEditor.java0000644000175000017500000002442411377161311025244 0ustar /* * File : ActivitySequenceElementEditor.java * Created : 08-apr-2003 16:46 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Constants; import edu.xtec.jclic.edit.Editor; import javax.swing.ImageIcon; import edu.xtec.util.Options; import edu.xtec.jclic.edit.EditorPanel; import javax.swing.Icon; import edu.xtec.util.ResourceManager; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.jclic.edit.EditorAction; import edu.xtec.jclic.Player; import edu.xtec.jclic.TestPlayerContainer; import edu.xtec.util.StrUtils; import javax.swing.JInternalFrame; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceElementEditor extends Editor{ protected static ImageIcon icon; public static boolean actionsCreated=false; protected ActivitySequence activitySequence; //public static EditorAction testActivityAction; //public static EditorAction newActivitySequenceElementAction; /** Creates a new instance of ActivitySequenceElementEditor */ public ActivitySequenceElementEditor(ActivitySequenceElement el) { super(el); } protected void createChildren() { } public Class getEditorPanelClass() { return ActivitySequenceElementEditorPanel.class; } public EditorPanel createEditorPanel(Options options) { return new ActivitySequenceElementEditorPanel(options); } public ActivitySequenceElement getActivitySequenceElement(){ return (ActivitySequenceElement)getFirstObject(ActivitySequenceElement.class); } public String getTag(){ ActivitySequenceElement ase=getActivitySequenceElement(); return StrUtils.nullableString(ase.getTag()); } protected void saveData(){ } /* protected boolean delete(boolean changeSelection){ ActivitySequence as=getActivitySequenceElement().getParent(); boolean result=super.delete(changeSelection); if(result && as!=null) as.remove(getActivitySequenceElement()); return result; } */ protected boolean canClone(){ return true; } protected Editor getClone() throws Exception{ ActivitySequenceElement asel=(ActivitySequenceElement)getActivitySequenceElement().clone(); return asel.getEditor(null); } protected void setActionsFlag(){ allowDelete = true; allowCut = true; allowCopy = true; allowPaste=true; } public void setActionsOwner(){ setActionsFlag(); super.setActionsOwner(); /* if(basicActionsCreated){ setActionsFlag(); boolean eUp=false, eDown=false; ActivitySequence as=getActivitySequenceElement().getParent(); if(as!=null){ int i=as.getElementIndex(getActivitySequenceElement()); eUp=i>0; eDown=i=0){ TestPlayerContainer tpc=pe.getTestPlayerContainer(); if(tpc!=null && tpc.getTestPlayer()!=null){ tpc.getTestPlayer().load(null, Integer.toString(item), null, null); tpc.test(); } } } public static void createActions(Options options){ ActivityBagElementEditor.createActions(options); actionsCreated=true; } /* public boolean moveUp(boolean updateSelection){ boolean result=super.moveUp(updateSelection); if(result){ ActivitySequenceElement ase=getActivitySequenceElement(); ActivitySequence as=ase.getParent(); if(as!=null){ int index=as.getElementIndex(ase); if(index>0){ as.remove(ase); as.insertElementAt(ase, index-1); if(updateSelection) select(); } } } return result; } public boolean moveDown(boolean updateSelection){ boolean result=super.moveDown(updateSelection); if(result){ ActivitySequenceElement ase=getActivitySequenceElement(); ActivitySequence as=ase.getParent(); if(as!=null && ase!=null){ int index=as.getElementIndex(ase); if(index0){ StringBuffer sb=new StringBuffer(100); if(result!=null && result.length()>0) sb.append(result).append(" "); sb.append("* ").append(r2); result=sb.substring(0); } } return result; } public boolean nameChanged(int type, String oldName, String newName){ boolean result=false; ActivitySequenceElement ase=getActivitySequenceElement(); if((type & Constants.T_ACTIVITY)!=0 && oldName.equals(ase.getActivityName())){ ase.setActivityName(newName); setModified(true); result=true; } if((type & Constants.T_SEQUENCE)!=0){ if(oldName.equals(ase.getTag())){ ase.setTag(newName); result=true; } if(ase.fwdJump!=null){ result|=jumpInfoNameChanged(ase.fwdJump, oldName, newName) |jumpInfoNameChanged(ase.fwdJump.upperJump, oldName, newName) |jumpInfoNameChanged(ase.fwdJump.lowerJump, oldName, newName); } if(ase.backJump!=null){ result|=jumpInfoNameChanged(ase.backJump, oldName, newName) |jumpInfoNameChanged(ase.backJump.upperJump, oldName, newName) |jumpInfoNameChanged(ase.backJump.lowerJump, oldName, newName); } if(result) setModified(true); } return result; } private boolean jumpInfoNameChanged(JumpInfo ji, String oldName, String newName){ boolean result=false; if(ji!=null && ji.action==JumpInfo.JUMP && ji.projectPath==null && oldName.equals(ji.sequence)){ ji.sequence=newName; result=true; } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/NewActivityPanel.java0000644000175000017500000001110211377161311022511 0ustar /* * File : NewActivityPanel.java * Created : 28-apr-2003 17:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.util.Options; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditor; import edu.xtec.util.StrUtils; import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionEvent; import edu.xtec.util.TripleString; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class NewActivityPanel extends javax.swing.JPanel { Options options; SelectActivityClass sac; /** Creates new form NewActivityPanel */ public NewActivityPanel(Options options) { this.options=options; initComponents(); sac=(SelectActivityClass)classPanel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel nameLb; javax.swing.JPanel namePanel; classPanel = new SelectActivityClass(options); namePanel = new javax.swing.JPanel(); nameLb = new javax.swing.JLabel(); nameField = new javax.swing.JTextField(); setLayout(new java.awt.GridBagLayout()); classPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_prompt_class"))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(classPanel, gridBagConstraints); namePanel.setLayout(new java.awt.GridBagLayout()); namePanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_prompt_name"))); nameLb.setLabelFor(nameField); nameLb.setText(options.getMsg("edit_act_newActivity_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; namePanel.add(nameLb, gridBagConstraints); nameField.setToolTipText(options.getMsg("edit_act_newActivity_name_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; namePanel.add(nameField, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(namePanel, gridBagConstraints); }//GEN-END:initComponents public String gectActivityClassName(){ return sac.getCurrentClassName(); } public void setActivityClassName(String className){ sac.setCurrentClassName(className); } public String getActivityName(){ return StrUtils.nullableString(nameField.getText()); } public void setActivityName(String name){ nameField.setText(StrUtils.secureString(name)); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel classPanel; protected javax.swing.JTextField nameField; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ConditionalJumpPanel.form0000644000175000017500000002341211377161311023373 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/SelectActivityClass.form0000644000175000017500000001740011377161311023236 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivitySequenceTable.java0000644000175000017500000000701611377161311023531 0ustar /* * File : ActivitySequenceTable.java * Created : 11-apr-2003 16:09 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import javax.swing.JTable; import javax.swing.table.TableModel; import java.awt.Graphics; import java.awt.Rectangle; import java.awt.Point; import java.awt.Color; import java.awt.BasicStroke; import java.awt.Graphics2D; /** * Subclass of BasicTableUI * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceTable extends JTable{ public static final Color DIVIDER_COLOR=Color.red; public static final int DIVIDER_WIDTH=1; private BasicStroke stroke; /** Creates a new instance of ActivitySequenceTable */ public ActivitySequenceTable(TableModel model) { super(model); stroke=new BasicStroke((float)DIVIDER_WIDTH); } public void paintComponent(Graphics g){ super.paintComponent(g); ActivitySequenceEditorPanel.SeqTableModel model; if(getModel() instanceof ActivitySequenceEditorPanel.SeqTableModel) model=(ActivitySequenceEditorPanel.SeqTableModel)getModel(); else return; if (getRowCount() <= 0 || getColumnCount() <= 0) { return; } Rectangle clip = g.getClipBounds(); Point minLocation = clip.getLocation(); Point maxLocation = new Point(clip.x + clip.width - 1, clip.y + clip.height - 1); int rMin = rowAtPoint(minLocation); int rMax = rowAtPoint(maxLocation); // This should never happen. if (rMin == -1) { rMin = 0; } // If the table does not have enough rows to fill the view we'll get -1. // Replace this with the index of the last row. if (rMax == -1) { rMax = getRowCount()-1; } int cMin = columnAtPoint(minLocation); int cMax = columnAtPoint(maxLocation); // This should never happen. if (cMin == -1) { cMin = 0; } // If the table does not have enough columns to fill the view we'll get -1. // Replace this with the index of the last column. if (cMax == -1) { cMax = getColumnCount()-1; } // *************** //g.setColor(table.getGridColor()); g.setColor(DIVIDER_COLOR); ((Graphics2D)g).setStroke(stroke); Rectangle minCell = getCellRect(rMin, cMin, true); Rectangle maxCell = getCellRect(rMax, cMax, true); int tableWidth = maxCell.x + maxCell.width; int y = minCell.y; for (int row = rMin; row <= rMax; row++) { int rh=getRowHeight(row); y += rh; if(model.drawDivider(row)) g.drawLine(0, y - 1, tableWidth - 1, y - 1); } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/MediaBagSelector.form0000644000175000017500000003355311377161311022455 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/bags/ActivityBagEditorPanel.java0000644000175000017500000001732311377161311023633 0ustar /* * File : ProjectLibraryEditorPanel.java * Created : 10-jun-2002 16:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import edu.xtec.util.SmallButton; import java.awt.BorderLayout; import java.awt.Container; import java.awt.event.FocusEvent; import java.util.HashMap; import javax.swing.DefaultListModel; import javax.swing.Icon; import javax.swing.ListModel; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityBagEditorPanel extends EditorPanel implements ListSelectionListener{ boolean modified; public ActivityBagElementEditor currentItem; protected HashMap editPanels; protected EditorPanel currentPanel; /** Creates new form ProjectLibraryEditorPanel */ public ActivityBagEditorPanel(Options options) { super(options); editPanels=new HashMap(); ActivityBagEditor.createActions(options); ActivityBagElementEditor.createActions(options); initComponents(); postInit(250, false, true); list.getSelectionModel().addListSelectionListener(this); setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JScrollPane scroll; javax.swing.JSplitPane split; split = new javax.swing.JSplitPane(); scroll = new javax.swing.JScrollPane(); list = new javax.swing.JList(); edit = new javax.swing.JPanel(); setLayout(new java.awt.BorderLayout()); list.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); scroll.setViewportView(list); split.setLeftComponent(scroll); edit.setLayout(new java.awt.BorderLayout()); edit.setPreferredSize(new java.awt.Dimension(700, 600)); split.setRightComponent(edit); add(split, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents public void setEnabled(boolean enabled){ super.setEnabled(enabled); list.setEnabled(enabled); if(currentPanel!=null) currentPanel.setEnabled(enabled); } public boolean checkIfEditorValid(Editor e) { return e instanceof ActivityBagEditor; } protected ActivityBag getActivityBag(){ if(editor==null) return null; else return ((ActivityBagEditor)editor).getActivityBag(); } public void fillData(){ ActivityBagEditor abe=getActivityBagEditor(); list.setModel(abe==null ? new DefaultListModel() : abe.getListModel()); if(abe!=null) abe.setListSelectionModel(list.getSelectionModel()); else if(currentPanel!=null){ currentPanel.removeEditor(true); edit.remove(currentPanel); currentPanel=null; } } public void saveData(){ ActivityBag ab=getActivityBag(); if(ab!=null){ //p.settings.title=checkEmptyString(titleText.getText(), true, "UNNAMED"); //titleText.setText(p.settings.title); } } protected Icon getIcon(){ return ActivityBagEditor.getIcon(); } protected String getTitle(){ return "Activity bag"; //return options.getMsg("library_dlg_title"); } ActivityBagEditor getActivityBagEditor(){ return (ActivityBagEditor)getEditor(); } protected void currentItemChanged(){ if(edit!=null){ if(currentPanel!=null){ currentPanel.removeEditor(true); } if(currentItem!=null){ Class pc=currentItem.getEditorPanelClass(); EditorPanel ep=(EditorPanel)editPanels.get(pc); if(ep==null){ ep=currentItem.createEditorPanel(options); editPanels.put(pc, ep); } ep.attachEditor(currentItem.getActivityEditor(), true); if(currentPanel!=ep){ if(currentPanel!=null) edit.remove(currentPanel); edit.add(ep, BorderLayout.CENTER); edit.revalidate(); edit.repaint(); } currentPanel=ep; } } } public boolean editActivity(String activityName){ boolean result=false; if(activityName!=null && activityName.length()>0){ ListModel model=list.getModel(); int size=model.getSize(); for(int i=0; i=0 && row
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/misc/GradientEditor.java0000644000175000017500000003327611377161311022226 0ustar /* * File : GradientEditor.java * Created : 25-sep-2002 19:18 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.misc; import edu.xtec.jclic.beans.ColorButton; import edu.xtec.util.Options; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Component; import edu.xtec.util.Messages; import javax.swing.JComponent; import java.awt.RenderingHints; import java.awt.Rectangle; import java.util.HashMap; import edu.xtec.jclic.beans.NullableObject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class GradientEditor extends javax.swing.JPanel { Options options; Gradient gradient; /** Creates new form GradientEditor */ public GradientEditor(Options options, Gradient gradient) { this.options=options; initComponents(); setGradient(gradient); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel endColorLb; javax.swing.JLabel orientationLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel cyclesLb; javax.swing.JLabel startColorLb; previewPanel = new GradientPreview(); startColorLb = new javax.swing.JLabel(); startColorBtn = new edu.xtec.jclic.beans.ColorButton(); startColorBtn.setOptions(options); endColorLb = new javax.swing.JLabel(); endColorBtn = new edu.xtec.jclic.beans.ColorButton(); endColorBtn.setOptions(options); cyclesLb = new javax.swing.JLabel(); cyclesTxt = new javax.swing.JTextField(); cyclesSlider = new javax.swing.JSlider(); orientationLb = new javax.swing.JLabel(); orientationTxt = new javax.swing.JTextField(); orientationSlider = new javax.swing.JSlider(); setLayout(new java.awt.GridBagLayout()); previewPanel.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED)); previewPanel.setPreferredSize(new java.awt.Dimension(100, 100)); previewPanel.setMinimumSize(new java.awt.Dimension(100, 100)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridheight = 4; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; add(previewPanel, gridBagConstraints); startColorLb.setText(options.getMsg("edit_gradient_startColor")); startColorLb.setLabelFor(startColorBtn); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(startColorLb, gridBagConstraints); startColorBtn.setToolTipText(options.getMsg("edit_gradient_startColor_tooltip")); startColorBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { startColorBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(startColorBtn, gridBagConstraints); endColorLb.setText(options.getMsg("edit_gradient_endColor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(endColorLb, gridBagConstraints); endColorBtn.setToolTipText(options.getMsg("edit_gradient_endColor_tooltip")); endColorBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { endColorBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(endColorBtn, gridBagConstraints); cyclesLb.setText(options.getMsg("edit_gradient_cycles")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(cyclesLb, gridBagConstraints); cyclesTxt.setToolTipText(options.getMsg("edit_gradient_cycles_tooltip")); cyclesTxt.setPreferredSize(new java.awt.Dimension(40, 21)); cyclesTxt.setMinimumSize(new java.awt.Dimension(40, 21)); cyclesTxt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cyclesTxtActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(cyclesTxt, gridBagConstraints); cyclesSlider.setMinorTickSpacing(10); cyclesSlider.setPaintTicks(true); cyclesSlider.setMinimum(1); cyclesSlider.setMajorTickSpacing(10); cyclesSlider.setToolTipText(options.getMsg("edit_gradient_cycles_tooltip")); cyclesSlider.setMaximum(50); cyclesSlider.setPreferredSize(new java.awt.Dimension(100, 27)); cyclesSlider.setMinimumSize(new java.awt.Dimension(100, 27)); cyclesSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { cyclesSliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(cyclesSlider, gridBagConstraints); orientationLb.setText(options.getMsg("edit_gradient_orientation")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(orientationLb, gridBagConstraints); orientationTxt.setToolTipText(options.getMsg("edit_gradient_orientation_tooltip")); orientationTxt.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { orientationTxtActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(orientationTxt, gridBagConstraints); orientationSlider.setMinorTickSpacing(30); orientationSlider.setPaintTicks(true); orientationSlider.setMajorTickSpacing(90); orientationSlider.setToolTipText(options.getMsg("edit_gradient_orientation_tooltip")); orientationSlider.setMaximum(360); orientationSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { orientationSliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(orientationSlider, gridBagConstraints); }//GEN-END:initComponents private void endColorBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_endColorBtnActionPerformed gradient.setColors(((ColorButton)startColorBtn).getColor(), ((ColorButton)endColorBtn).getColor()); previewPanel.repaint(); }//GEN-LAST:event_endColorBtnActionPerformed private void startColorBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startColorBtnActionPerformed gradient.setColors(((ColorButton)startColorBtn).getColor(), ((ColorButton)endColorBtn).getColor()); previewPanel.repaint(); }//GEN-LAST:event_startColorBtnActionPerformed private void orientationSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_orientationSliderStateChanged int v=orientationSlider.getValue(); orientationTxt.setText(Integer.toString(v)); orientationSlider.setValue(v); gradient.setAngle(v); previewPanel.repaint(); }//GEN-LAST:event_orientationSliderStateChanged private void cyclesSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_cyclesSliderStateChanged int v=cyclesSlider.getValue(); cyclesTxt.setText(Integer.toString(v)); cyclesSlider.setValue(v); gradient.setCycles(v); previewPanel.repaint(); }//GEN-LAST:event_cyclesSliderStateChanged private void orientationTxtActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_orientationTxtActionPerformed int v=gradient.angle; try{ v=Math.max(0, Integer.parseInt(orientationTxt.getText()))%360; } catch(Exception ex){ options.getMessages().showErrorWarning(this, "ERROR", ex); } orientationTxt.setText(Integer.toString(v)); orientationSlider.setValue(v); gradient.setAngle(v); previewPanel.repaint(); }//GEN-LAST:event_orientationTxtActionPerformed private void cyclesTxtActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cyclesTxtActionPerformed int v=gradient.cycles; try{ v=Math.max(1, Integer.parseInt(cyclesTxt.getText())); } catch(Exception ex){ options.getMessages().showErrorWarning(this, "ERROR", ex); } cyclesTxt.setText(Integer.toString(v)); cyclesSlider.setValue(v); gradient.setCycles(v); previewPanel.repaint(); }//GEN-LAST:event_cyclesTxtActionPerformed public void setGradient(Gradient g){ if(g==null) g=new Gradient(); gradient=new Gradient(g.getColors()[0], g.getColors()[1], g.getAngle(), g.getCycles()); ((ColorButton)startColorBtn).setColor(gradient.c1); ((ColorButton)endColorBtn).setColor(gradient.c2); cyclesSlider.setValue(gradient.cycles); cyclesTxt.setText(Integer.toString(gradient.cycles)); orientationSlider.setValue(gradient.angle); orientationTxt.setText(Integer.toString(gradient.angle)); } class GradientPreview extends javax.swing.JPanel{ GradientPreview(){ super(); //setOpaque(false); } public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2=(Graphics2D)g; RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(edu.xtec.jclic.Constants.DEFAULT_RENDERING_HINTS); gradient.paint(g2, new Rectangle(0, 0, getWidth(), getHeight())); g2.setRenderingHints(rh); } } private static HashMap panels=new HashMap(); public static Gradient getGradient(Gradient initialGradient, Component parent, Options options){ Messages msg=options.getMessages(); GradientEditor ge=(GradientEditor)panels.get(options); if(ge==null){ ge=new GradientEditor(options, initialGradient); panels.put(options, ge); } else{ ge.setGradient(initialGradient); } boolean b=msg.showInputDlg(parent, ge, "edit_gradient_title"); return b ? ge.gradient : null; } // Variables declaration - do not modify//GEN-BEGIN:variables private edu.xtec.jclic.beans.ColorButton startColorBtn; private javax.swing.JTextField cyclesTxt; private edu.xtec.jclic.beans.ColorButton endColorBtn; private javax.swing.JSlider cyclesSlider; private javax.swing.JPanel previewPanel; private javax.swing.JSlider orientationSlider; private javax.swing.JTextField orientationTxt; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/0000755000175000017500000000000011377161311017671 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/AutoContentProviderEditor.java0000644000175000017500000000456711377161311025675 0ustar /* * File : AutoContentProviderEditor.java * Created : 04-mar-2004 10:32 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation; import edu.xtec.jclic.Activity; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import edu.xtec.util.TripleString; import javax.swing.Icon; import javax.swing.ImageIcon; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class AutoContentProviderEditor extends Editor{ protected static ImageIcon icon; /** Creates a new instance of AutoContentProviderEditor */ public AutoContentProviderEditor(AutoContentProvider acp) { super(acp); } protected void createChildren() { } public AutoContentProvider getAutoContentProvider(){ return (AutoContentProvider)userObject; } public String getTitleKey(){ return "edit_acp"; } public static Icon getIcon(){ if(icon==null) icon=edu.xtec.util.ResourceManager.getImageIcon("icons/miniclic.png"); return icon; } public static final String SYSTEM_LIST="automation.contentproviders"; public static java.util.Vector getSystemContentProvidersList(Options options){ java.util.Vector result=new java.util.Vector(); try{ result=TripleString.getTripleList(SYSTEM_LIST, options, true, true, true); } catch(Exception ex){ System.err.println("Error reading list of content providers!\n"+ex); } return result; } public Activity getActivity(){ return (Activity)getFirstObject(Activity.class); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/tagreplace/0000755000175000017500000000000011377161311022000 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/tagreplace/TagReplaceEditor.java0000644000175000017500000000323011377161311026017 0ustar /* * File : TagReplaceEditor.java * Created : 02-oct-2006 18:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2006 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.tagreplace; import edu.xtec.jclic.automation.AutoContentProviderEditor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import java.util.HashMap; /** * * @author fbusquet */ public class TagReplaceEditor extends AutoContentProviderEditor{ /** Creates a new instance of TagReplaceEditor */ public TagReplaceEditor(TagReplace tagReplace) { super(tagReplace); } private static HashMap panels=new HashMap(); public EditorPanel createEditorPanel(Options options){ EditorPanel panel=(EditorPanel)panels.get(options); if(panel==null){ panel=new TagReplaceEditorPanel(options); panels.put(options, panel); } return panel; } public Class getEditorPanelClass(){ return TagReplaceEditorPanel.class; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/tagreplace/TagReplaceEditorPanel.form0000644000175000017500000003353611377161311027035 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/tagreplace/TagReplaceEditorPanel.java0000644000175000017500000002352411377161311027007 0ustar /* * File : TagReplaceEditorPanel.java * Created : 02-oct-2006 18:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2006 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.tagreplace; import edu.xtec.jclic.Activity; import edu.xtec.jclic.automation.AutoContentProviderEditor; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.util.EventObject; /** * * @author fbusquet */ public class TagReplaceEditorPanel extends EditorPanel { /** Creates new form TagReplaceEditorPanel */ public TagReplaceEditorPanel(Options options) { super(options); initComponents(); postInit(250, false, false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; tagPanel = new javax.swing.JPanel(); tagStartLb = new javax.swing.JLabel(); tagStartTx = new javax.swing.JTextField(); tagEndLb = new javax.swing.JLabel(); tagEndTx = new javax.swing.JTextField(); filePanel = new javax.swing.JPanel(); fileLb = new javax.swing.JLabel(); fileTx = new javax.swing.JTextField(); browseBtn = new javax.swing.JButton(); charsetLb = new javax.swing.JLabel(); charsetCombo = new javax.swing.JComboBox(); setLayout(new java.awt.GridBagLayout()); tagPanel.setLayout(new java.awt.GridBagLayout()); tagPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_tagRep_tags"))); tagStartLb.setLabelFor(tagStartTx); tagStartLb.setText(options.getMsg("edit_tagRep_tagStart")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); tagPanel.add(tagStartLb, gridBagConstraints); tagStartTx.setColumns(5); tagStartTx.setText(TagReplace.DEFAULT_TAG_START); tagStartTx.setToolTipText(options.getMsg("edit_tagRep_tagStart_tooltip")); tagStartTx.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); tagPanel.add(tagStartTx, gridBagConstraints); tagEndLb.setLabelFor(tagEndTx); tagEndLb.setText(options.getMsg("edit_tagRep_tagEnd")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); tagPanel.add(tagEndLb, gridBagConstraints); tagEndTx.setColumns(5); tagEndTx.setText(TagReplace.DEFAULT_TAG_END); tagEndTx.setToolTipText(options.getMsg("edit_tagRep_tagEnd_tooltip")); tagEndTx.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); tagPanel.add(tagEndTx, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(tagPanel, gridBagConstraints); filePanel.setLayout(new java.awt.GridBagLayout()); filePanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_tagRep_file"))); fileLb.setLabelFor(fileTx); fileLb.setText(options.getMsg("edit_tagRep_fileName")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanel.add(fileLb, gridBagConstraints); fileTx.setText(TagReplace.DEFAULT_TAG_START); fileTx.setToolTipText(options.getMsg("edit_tagRep_fileName_tooltip")); fileTx.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanel.add(fileTx, gridBagConstraints); browseBtn.setText(options.getMsg("edit_tagRep_browseFile")); browseBtn.setToolTipText(options.getMsg("edit_tagRep_browseFile_tooltip")); browseBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanel.add(browseBtn, gridBagConstraints); charsetLb.setLabelFor(charsetCombo); charsetLb.setText(options.getMsg("edit_tagRep_charset")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanel.add(charsetLb, gridBagConstraints); charsetCombo.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "UTF8", "UTF-16", "ISO8859_1", "ASCII" })); charsetCombo.setSelectedItem(TagReplace.DEFAULT_CHARSET); charsetCombo.setToolTipText(options.getMsg("edit_tagRep_charset_tooltip")); charsetCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanel.add(charsetCombo, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(filePanel, gridBagConstraints); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return e instanceof TagReplaceEditor; } public TagReplaceEditor getTagReplaceEditor(){ return (TagReplaceEditor)getEditor(); } public TagReplace getTagReplace(){ TagReplaceEditor tred=getTagReplaceEditor(); return tred==null ? null : (TagReplace)tred.getAutoContentProvider(); } protected void fillData() { TagReplace tr=getTagReplace(); tagStartTx.setText(tr==null ? "" : tr.tagStart); tagEndTx.setText(tr==null ? "" : tr.tagEnd); fileTx.setText(tr==null ? "" : tr.mapFileName); charsetCombo.setSelectedItem(tr==null ? TagReplace.DEFAULT_CHARSET : tr.fileCharset); setModified(false); } protected void saveData() { TagReplace tr=getTagReplace(); if(tr!=null){ tr.tagStart=tagStartTx.getText(); tr.tagEnd=tagEndTx.getText(); tr.mapFileName=StrUtils.nullableString(fileTx.getText()); tr.fileCharset=(String)charsetCombo.getSelectedItem(); } } public boolean eventPerformed(EventObject ev){ Object cmp=ev==null ? null : ev.getSource(); boolean result=(cmp!=null); if(cmp==browseBtn){ selectTextFile(); } return result; } protected void selectTextFile(){ TagReplaceEditor tred=getTagReplaceEditor(); if(tred!=null){ Activity act=tred.getActivity(); if(act!=null){ FileSystem fs=act.getProject().getFileSystem(); int[] filters=new int[]{Utils.TEXT_FF}; String[] files=fs.chooseFiles(null, false, filters, options, "edit_find_media", this, true, false); if(files!=null && files.length>0 && files[0]!=null){ fileTx.setText(files[0]); setModified(true); } } } } protected javax.swing.Icon getIcon(){ return AutoContentProviderEditor.getIcon(); } protected String getTitle(){ return options.getMsg("edit_tagRep_title"); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton browseBtn; private javax.swing.JComboBox charsetCombo; private javax.swing.JLabel charsetLb; private javax.swing.JLabel fileLb; private javax.swing.JPanel filePanel; private javax.swing.JTextField fileTx; private javax.swing.JLabel tagEndLb; private javax.swing.JTextField tagEndTx; private javax.swing.JPanel tagPanel; private javax.swing.JLabel tagStartLb; private javax.swing.JTextField tagStartTx; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/arith/0000755000175000017500000000000011377161311021000 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/arith/ArithEditorPanel.form0000644000175000017500000011377411377161311025100 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/arith/OperatorEditorPanel.form0000644000175000017500000004146511377161311025621 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/arith/OperatorEditorPanel.java0000644000175000017500000003071011377161311025566 0ustar /* * File : OperatorEditorPanel.java * Created : 08-mar-2004 09:49 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.arith; import edu.xtec.jclic.automation.arith.Operator; import edu.xtec.jclic.beans.TextListEditor; import edu.xtec.util.Options; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.beans.PropertyChangeListener; import java.util.EventObject; import java.util.Iterator; import java.util.StringTokenizer; import java.util.Vector; import javax.swing.JComboBox; import javax.swing.event.ListSelectionListener; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class OperatorEditorPanel extends edu.xtec.util.CtrlPanel { protected static final Integer[] LIST_OF_VALUES=new Integer[Operator.LIMITS.length]; static{ for(int i=0; i0); StringBuffer sb=new StringBuffer(); for(int i=0; i B"); condGrp.add(agbOpt); agbOpt.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; condPanel.add(agbOpt, gridBagConstraints); albOpt.setToolTipText(options.getMsg("edit_arith_cond_alb")); albOpt.setText("A < B"); condGrp.add(albOpt); albOpt.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; condPanel.add(albOpt, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; rightPanel.add(condPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; rightPanel.add(sepright1, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; rightPanel.add(sepright, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(rightPanel, gridBagConstraints); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return e instanceof ArithEditor; } public ArithEditor getArithEditor(){ return (ArithEditor)getEditor(); } public Arith getArith(){ ArithEditor aed=getArithEditor(); return aed==null ? null : (Arith)aed.getAutoContentProvider(); } public void fillData(){ Arith a=getArith(); chkPlus.setSelected(a==null ? true : a.use_add); chkMinus.setSelected(a==null ? false : a.use_subst); chkMultiply.setSelected(a==null ? false : a.use_mult); chkDivide.setSelected(a==null ? false : a.use_div); chk_aobx.setSelected(a==null ? true : a.exp_abx); chk_aoxr.setSelected(a==null ? false : a.exp_axc); chk_xobr.setSelected(a==null ? false : a.exp_xbc); chk_axbr.setSelected(a==null ? false : a.exp_axbc); chk_invert.setSelected(a==null ? false : a.exp_caxb); firstOpPanel.setOperator(a==null ? new Operator() : a.opA); secondOpPanel.setOperator(a==null ? new Operator() : a.opB); fromCombo.setSelectedIndex(a==null ? 1 : a.resultLimInf); toCombo.setSelectedIndex(a==null ? Operator.LIMITS.length-1 : a.resultLimSup); notCarryChk.setSelected(a==null ? false : a.resultCarry); avoidDupChk.setSelected(a==null ? false : a.resultNoDup); orderCombo.setSelectedIndex(a==null ? 0 : a.resultOrder); int cond=(a==null ? 0 : a.opCond); indOpt.setSelected(cond==0); agbOpt.setSelected(cond==1); albOpt.setSelected(cond==2); setModified(false); } public void saveData(){ Arith a=getArith(); if(a!=null){ a.use_add=chkPlus.isSelected(); a.use_subst=chkMinus.isSelected(); a.use_mult=chkMultiply.isSelected(); a.use_div=chkDivide.isSelected(); a.exp_abx=chk_aobx.isSelected(); a.exp_axc=chk_aoxr.isSelected(); a.exp_xbc=chk_xobr.isSelected(); a.exp_axbc=chk_axbr.isSelected(); a.exp_caxb=chk_invert.isSelected(); a.opA=firstOpPanel.getOperator(); a.opB=secondOpPanel.getOperator(); a.resultLimInf=fromCombo.getSelectedIndex(); a.resultLimSup=toCombo.getSelectedIndex(); a.resultCarry=notCarryChk.isSelected(); a.resultNoDup=avoidDupChk.isSelected(); a.resultOrder=orderCombo.getSelectedIndex(); a.opCond=agbOpt.isSelected() ? 1 : albOpt.isSelected() ? 2 : 0; } } protected javax.swing.Icon getIcon(){ return AutoContentProviderEditor.getIcon(); } protected String getTitle(){ return options.getMsg("edit_arith_title"); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton agbOpt; private javax.swing.JRadioButton albOpt; private javax.swing.JCheckBox avoidDupChk; private javax.swing.JCheckBox chkDivide; private javax.swing.JCheckBox chkMinus; private javax.swing.JCheckBox chkMultiply; private javax.swing.JCheckBox chkPlus; private javax.swing.JCheckBox chk_aobx; private javax.swing.JCheckBox chk_aoxr; private javax.swing.JCheckBox chk_axbr; private javax.swing.JCheckBox chk_invert; private javax.swing.JCheckBox chk_xobr; private javax.swing.ButtonGroup condGrp; private javax.swing.JPanel condPanel; private javax.swing.JPanel firstOpPanelX; private javax.swing.JComboBox fromCombo; private javax.swing.JRadioButton indOpt; private javax.swing.JCheckBox notCarryChk; private javax.swing.JPanel operationsPanel; private javax.swing.JComboBox orderCombo; private javax.swing.JPanel resultPanel; private javax.swing.JPanel rightPanel; private javax.swing.JPanel secondOpPanelX; private javax.swing.JLabel sepright; private javax.swing.JLabel sepright1; private javax.swing.JComboBox toCombo; private javax.swing.JPanel unknownPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/automation/arith/ArithEditor.java0000644000175000017500000000316011377161311024061 0ustar /* * File : ArithEditor.java * Created : 04-mar-2004 10:32 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.arith; import edu.xtec.jclic.automation.*; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import java.util.HashMap; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ArithEditor extends AutoContentProviderEditor{ /** Creates a new instance of ArithEditor */ public ArithEditor(Arith arith) { super(arith); } private static HashMap panels=new HashMap(); public EditorPanel createEditorPanel(Options options){ EditorPanel panel=(EditorPanel)panels.get(options); if(panel==null){ panel=new ArithEditorPanel(options); panels.put(options, panel); } return panel; } public Class getEditorPanelClass(){ return ArithEditorPanel.class; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorPanel.form0000644000175000017500000000505511377161311022326 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorOptionsPanel.form0000644000175000017500000021066711377161311023711 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/0000755000175000017500000000000011377161311017157 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/RevisionEditPanel.form0000644000175000017500000002427211377161311023437 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/ProjectInstallerEditPanel.java0000644000175000017500000005116311377161311025102 0ustar /* * File : ProjectInstallerEditPanel.java * Created : 02-sep-2004 12:08 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.clic3.Clic3; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.JDomUtility; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; import java.io.FileOutputStream; import java.util.Vector; import javax.swing.DefaultListModel; import javax.swing.JList; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProjectInstallerEditPanel extends javax.swing.JPanel implements ListSelectionListener, ActionListener{ Options options; DefaultListModel availModel, filesModel; /** Creates new form ProjectInstallerEditPanel */ public ProjectInstallerEditPanel(Options options) { this.options=options; availModel=new DefaultListModel(); filesModel=new DefaultListModel(); initComponents(); availFiles.addListSelectionListener(this); includedFiles.addListSelectionListener(this); addBtn.addActionListener(this); removeBtn.addActionListener(this); checkButtons(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel authLb; javax.swing.JPanel buttonPanel; javax.swing.JLabel descLb; javax.swing.JPanel filesPanel; javax.swing.JLabel folderLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel iconLb; javax.swing.JLabel projectLb; javax.swing.JLabel titleLb; javax.swing.JLabel txtLb; titleLb = new javax.swing.JLabel(); titleFld = new javax.swing.JTextField(); authLb = new javax.swing.JLabel(); authFld = new javax.swing.JTextField(); folderLb = new javax.swing.JLabel(); folderFld = new javax.swing.JTextField(); filesPanel = new javax.swing.JPanel(); availFilesSP = new javax.swing.JScrollPane(); availFiles = new javax.swing.JList(); addBtn = new javax.swing.JButton(); removeBtn = new javax.swing.JButton(); includedFilesSP = new javax.swing.JScrollPane(); includedFiles = new javax.swing.JList(); buttonPanel = new javax.swing.JPanel(); projectLb = new javax.swing.JLabel(); projectFld = new javax.swing.JTextField(); txtLb = new javax.swing.JLabel(); textFld = new javax.swing.JTextField(); iconLb = new javax.swing.JLabel(); iconFld = new javax.swing.JTextField(); descLb = new javax.swing.JLabel(); descFld = new javax.swing.JTextField(); setLayout(new java.awt.GridBagLayout()); titleLb.setLabelFor(titleFld); titleLb.setText(options.getMsg("installer_title")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(titleLb, gridBagConstraints); titleFld.setToolTipText(options.getMsg("installer_title_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(titleFld, gridBagConstraints); authLb.setLabelFor(authFld); authLb.setText(options.getMsg("installer_authors")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(authLb, gridBagConstraints); authFld.setToolTipText(options.getMsg("installer_authors_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(authFld, gridBagConstraints); folderLb.setLabelFor(folderFld); folderLb.setText(options.getMsg("installer_folder")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(folderLb, gridBagConstraints); folderFld.setToolTipText(options.getMsg("installer_folder_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(folderFld, gridBagConstraints); filesPanel.setLayout(new java.awt.GridBagLayout()); filesPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("installer_files"))); filesPanel.setToolTipText(options.getMsg("installer_files_tooltip")); availFilesSP.setPreferredSize(new java.awt.Dimension(120, 100)); availFiles.setToolTipText(options.getMsg("installer_files_available")); availFiles.setModel(availModel); availFilesSP.setViewportView(availFiles); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); filesPanel.add(availFilesSP, gridBagConstraints); addBtn.setToolTipText(options.getMsg("installer_files_add_tooltip")); addBtn.setText(options.getMsg("installer_files_add")); addBtn.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); filesPanel.add(addBtn, gridBagConstraints); removeBtn.setToolTipText(options.getMsg("installer_files_tooltip")); removeBtn.setText(options.getMsg("installer_files_remove")); removeBtn.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); filesPanel.add(removeBtn, gridBagConstraints); includedFilesSP.setPreferredSize(new java.awt.Dimension(120, 100)); includedFiles.setToolTipText(options.getMsg("installer_files_selected")); includedFiles.setModel(filesModel); includedFilesSP.setViewportView(includedFiles); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 2; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); filesPanel.add(includedFilesSP, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(filesPanel, gridBagConstraints); buttonPanel.setLayout(new java.awt.GridBagLayout()); buttonPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("installer_button"))); buttonPanel.setToolTipText(options.getMsg("installer_button_tooltip")); projectLb.setLabelFor(projectFld); projectLb.setText(options.getMsg("installer_button_project")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(projectLb, gridBagConstraints); projectFld.setToolTipText(options.getMsg("installer_button_project_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(projectFld, gridBagConstraints); txtLb.setLabelFor(textFld); txtLb.setText(options.getMsg("installer_button_text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(txtLb, gridBagConstraints); textFld.setToolTipText(options.getMsg("installer_button_text_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(textFld, gridBagConstraints); iconLb.setLabelFor(iconFld); iconLb.setText(options.getMsg("installer_button_icon")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(iconLb, gridBagConstraints); iconFld.setToolTipText(options.getMsg("installer_button_icon_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(iconFld, gridBagConstraints); descLb.setLabelFor(descFld); descLb.setText(options.getMsg("installer_button_description")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(descLb, gridBagConstraints); descFld.setToolTipText(options.getMsg("installer_button_description_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); buttonPanel.add(descFld, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(buttonPanel, gridBagConstraints); }//GEN-END:initComponents private String suggestedFileName; public void setValues(JClicProject prj){ suggestedFileName=null; ProjectInstaller pi=null; ProjectInstaller.IconItem ii=null; FileSystem fs=prj.getFileSystem(); File base=new File(FileSystem.sysFn(fs.getFullFileNamePath(null))); try{ File[] files=base.listFiles(Utils.getFileFilter(Utils.INSTALL_FF, options.getMessages())); if(files!=null){ for(int i=0; i0) sb.append(", "); sb.append(prj.settings.authors[i].name); } } pi.authors=sb.substring(0); String projectFileName=prj.getFullPath(); if(projectFileName!=null) projectFileName=prj.getFileSystem().getFileNameOf(projectFileName); else projectFileName=prj.getName()+".jclic.zip"; pi.addFile(projectFileName); ii=pi.createIconItem(); ii.project=projectFileName; ii.text=prj.settings.title; ii.icon=prj.settings.iconFileName; } titleFld.setText(StrUtils.secureString(pi.projectTitle)); authFld.setText(StrUtils.secureString(pi.authors)); folderFld.setText(StrUtils.secureString(pi.baseFolder)); availModel.removeAllElements(); Vector v=new Vector(); FileSystem.exploreFiles(null, base, v, '/', null); for(int i=0; i
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/AuthorEditPanel.form0000644000175000017500000003474511377161311023111 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/ProjectSettingsEditor.java0000644000175000017500000000337411377161311024327 0ustar /* * File : ProjectSettingsEditor.java * Created : 27-feb-2004 11:39 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProjectSettingsEditor extends Editor{ /** Creates a new instance of ProjectSettingsEditor */ public ProjectSettingsEditor(ProjectSettings ps) { super(ps); } protected void createChildren() { } public EditorPanel createEditorPanel(Options options) { return new ProjectSettingsEditorPanel(options); } public Class getEditorPanelClass() { return ProjectSettingsEditorPanel.class; } public ProjectSettings getProjectSettings(){ return (ProjectSettings)getFirstObject(ProjectSettings.class); } public JClicProjectEditor getProjectEditor(){ return (JClicProjectEditor)getFirstParent(JClicProjectEditor.class); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/RevisionEditPanel.java0000644000175000017500000002067611377161311023421 0ustar /* * File : RevisionEditPanel.java * Created : 27-feb-2004 17:13 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.beans.TextListEditor; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.util.Date; import java.util.Vector; import javax.swing.JComponent; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class RevisionEditPanel extends javax.swing.JPanel { Options options; /** Creates new form AuthorEditPanel */ public RevisionEditPanel(Options options) { this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel authorLb; javax.swing.JLabel commentsLb; javax.swing.JScrollPane commentsScroll; javax.swing.JLabel dateLb; javax.swing.JLabel descLb; java.awt.GridBagConstraints gridBagConstraints; dateLb = new javax.swing.JLabel(); dateText = new javax.swing.JTextField(); descLb = new javax.swing.JLabel(); descText = new javax.swing.JTextField(); authorLb = new javax.swing.JLabel(); authorListEditor = new TextListEditor(options){ protected Object editItem(Object currentValue, boolean newValue){ return editAuthor(currentValue, newValue); } }; commentsLb = new javax.swing.JLabel(); commentsScroll = new javax.swing.JScrollPane(); commentsText = new javax.swing.JTextArea(); setLayout(new java.awt.GridBagLayout()); dateLb.setLabelFor(dateText); dateLb.setText(options.getMsg("edit_project_rev_date")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(dateLb, gridBagConstraints); dateText.setToolTipText(options.getMsg("edit_project_rev_date_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(dateText, gridBagConstraints); descLb.setLabelFor(descText); descLb.setText(options.getMsg("edit_project_rev_description")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(descLb, gridBagConstraints); descText.setToolTipText(options.getMsg("edit_project_rev_description_tooltip")); descText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(descText, gridBagConstraints); authorLb.setLabelFor(authorListEditor); authorLb.setText(options.getMsg("edit_project_rev_authors")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; add(authorLb, gridBagConstraints); authorListEditor.setToolTipText(options.getMsg("edit_project_rev_authors_tooltip")); authorListEditor.setPreferredSize(new java.awt.Dimension(400, 80)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; add(authorListEditor, gridBagConstraints); commentsLb.setLabelFor(commentsText); commentsLb.setText(options.getMsg("edit_project_rev_comments")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; add(commentsLb, gridBagConstraints); commentsScroll.setPreferredSize(new java.awt.Dimension(300, 60)); commentsText.setLineWrap(true); commentsText.setToolTipText(options.getMsg("edit_project_rev_comments_tooltip")); commentsText.setWrapStyleWord(true); commentsScroll.setViewportView(commentsText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; add(commentsScroll, gridBagConstraints); }//GEN-END:initComponents public void setRevision(Revision rev){ dateText.setText(options.getMessages().getShortDateStr(rev==null ? new Date() : rev.date)); descText.setText(rev!=null ? rev.description : ""); commentsText.setText(rev!=null ? rev.comments : ""); Vector v=new Vector(); if(rev!=null && rev.authors!=null){ for(int i=0; i
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/JClicProjectEditor.java0000644000175000017500000001013311377161311023502 0ustar /* * File : JClicProjctEditor.java * Created : 27-sep-2002 15:52 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.bags.ActivityBagEditor; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.util.Options; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.TestPlayerContainer; import edu.xtec.jclic.bags.ActivitySequenceEditor; import edu.xtec.util.Messages; import java.awt.Component; import javax.swing.Icon; import javax.swing.ImageIcon; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JClicProjectEditor extends Editor{ protected static ImageIcon icon; ActivityBagEditor abe; ActivitySequenceEditor ase; MediaBagEditor mbe; ProjectSettingsEditor pse; TestPlayerContainer testPlayerContainer; /** Creates a new instance of JClicProjectEditor */ public JClicProjectEditor(JClicProject project) { super(project); } protected void createChildren() { JClicProject jcp=getProject(); jcp.mediaBag.addListener(jcp.activityBag); abe=(ActivityBagEditor)jcp.activityBag.getEditor(this); ase=(ActivitySequenceEditor)jcp.activitySequence.getEditor(this); mbe=(MediaBagEditor)jcp.mediaBag.getEditor(this); pse=(ProjectSettingsEditor)jcp.settings.getEditor(this); } public EditorPanel createEditorPanel(Options options) { // todo: create editor panel return null; } public Class getEditorPanelClass() { // todo: create panel class return null; } public JClicProject getProject(){ return (JClicProject)getFirstObject(JClicProject.class); } public ActivityBagEditor getActivityBagEditor(){ return abe; } public ActivitySequenceEditor getActivitySequenceEditor(){ return ase; } public MediaBagEditor getMediaBagEditor(){ return mbe; } public ProjectSettingsEditor getProjectSettingsEditor(){ return pse; } public void setTestPlayerContainer(TestPlayerContainer tpc){ testPlayerContainer=tpc; } public TestPlayerContainer getTestPlayerContainer(){ return testPlayerContainer; } public boolean nameChanged(int type, String oldName, String newName){ boolean result= getActivityBagEditor().nameChanged(type, oldName, newName) | getActivitySequenceEditor().nameChanged(type, oldName, newName) | getMediaBagEditor().nameChanged(type, oldName, newName); return result; } public static Icon getIcon(){ if(icon==null) icon=edu.xtec.util.ResourceManager.getImageIcon("icons/project_settings.gif"); return icon; } public void saveProject(String fileName) throws Exception{ collectData(); getProject().setName(fileName); getProject().saveProject(fileName); setModified(false); } public boolean checkProject(Options options, Component parent, boolean prompt){ collectData(); return getActivityBagEditor().checkOrphanElements(options, parent, prompt)!=Messages.CANCEL && getMediaBagEditor().checkOrphanElements(options, parent, prompt)!=Messages.CANCEL; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/AuthorEditPanel.java0000644000175000017500000002261311377161311023056 0ustar /* * File : AuthorEditPanel.java * Created : 27-feb-2004 17:13 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class AuthorEditPanel extends javax.swing.JPanel { Options options; /** Creates new form AuthorEditPanel */ public AuthorEditPanel(Options options) { this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel commentsLb; javax.swing.JScrollPane commentsScroll; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel mailLb; javax.swing.JLabel nameLb; javax.swing.JLabel organizationLb; javax.swing.JLabel rolLb; javax.swing.JLabel urlLb; nameLb = new javax.swing.JLabel(); nameText = new javax.swing.JTextField(); rolLb = new javax.swing.JLabel(); rolText = new javax.swing.JTextField(); mailLb = new javax.swing.JLabel(); mailText = new javax.swing.JTextField(); urlLb = new javax.swing.JLabel(); urlText = new javax.swing.JTextField(); organizationLb = new javax.swing.JLabel(); organizationText = new javax.swing.JTextField(); commentsLb = new javax.swing.JLabel(); commentsScroll = new javax.swing.JScrollPane(); commentsText = new javax.swing.JTextArea(); setLayout(new java.awt.GridBagLayout()); nameLb.setLabelFor(nameText); nameLb.setText(options.getMsg("edit_project_author_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(nameLb, gridBagConstraints); nameText.setToolTipText(options.getMsg("edit_project_author_name_tooltip")); nameText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(nameText, gridBagConstraints); rolLb.setLabelFor(rolText); rolLb.setText(options.getMsg("edit_project_author_rol")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(rolLb, gridBagConstraints); rolText.setToolTipText(options.getMsg("edit_project_author_rol_tooltip")); rolText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(rolText, gridBagConstraints); mailLb.setLabelFor(mailText); mailLb.setText(options.getMsg("edit_project_author_mail")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(mailLb, gridBagConstraints); mailText.setToolTipText(options.getMsg("edit_project_author_mail_tooltip")); mailText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(mailText, gridBagConstraints); urlLb.setLabelFor(urlText); urlLb.setText(options.getMsg("edit_project_author_url")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(urlLb, gridBagConstraints); urlText.setToolTipText(options.getMsg("edit_project_author_url_tooltip")); urlText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(urlText, gridBagConstraints); organizationLb.setLabelFor(organizationText); organizationLb.setText(options.getMsg("edit_project_author_organization")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(organizationLb, gridBagConstraints); organizationText.setToolTipText(options.getMsg("edit_project_author_organization_tooltip")); organizationText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(organizationText, gridBagConstraints); commentsLb.setLabelFor(commentsText); commentsLb.setText(options.getMsg("edit_project_author_comments")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(commentsLb, gridBagConstraints); commentsScroll.setPreferredSize(new java.awt.Dimension(300, 60)); commentsText.setWrapStyleWord(true); commentsText.setToolTipText(options.getMsg("edit_project_author_comments_tooltip")); commentsText.setLineWrap(true); commentsScroll.setViewportView(commentsText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(commentsScroll, gridBagConstraints); }//GEN-END:initComponents public void setAuthor(Author author){ nameText.setText(author!=null ? author.name : ""); mailText.setText(author!=null ? author.mail : ""); urlText.setText(author!=null ? author.url : ""); organizationText.setText(author!=null ? author.organization : ""); commentsText.setText(author!=null ? author.comments : ""); rolText.setText(author!=null ? author.rol : ""); } public Author getAuthor(){ Author author=new Author(); author.name=nameText.getText().trim(); author.mail=StrUtils.nullableString(mailText.getText().trim()); author.url=StrUtils.nullableString(urlText.getText().trim()); author.organization=StrUtils.nullableString(organizationText.getText().trim()); author.comments=StrUtils.nullableString(commentsText.getText().trim()); author.rol=StrUtils.nullableString(rolText.getText().trim()); return author; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextArea commentsText; private javax.swing.JTextField mailText; private javax.swing.JTextField nameText; private javax.swing.JTextField organizationText; private javax.swing.JTextField rolText; private javax.swing.JTextField urlText; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/OrganizationEditPanel.java0000644000175000017500000003121511377161311024256 0ustar /* * File : OrganizationEditPanel.java * Created : 27-feb-2004 17:13 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class OrganizationEditPanel extends javax.swing.JPanel { Options options; /** Creates new form AuthorEditPanel */ public OrganizationEditPanel(Options options) { this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel addressLb; javax.swing.JLabel cityLb; javax.swing.JLabel commentsLb; javax.swing.JScrollPane commentsScroll; javax.swing.JLabel countryLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel mailLb; javax.swing.JLabel nameLb; javax.swing.JLabel pcLb; javax.swing.JLabel stateLb; javax.swing.JLabel urlLb; nameLb = new javax.swing.JLabel(); nameText = new javax.swing.JTextField(); mailLb = new javax.swing.JLabel(); mailText = new javax.swing.JTextField(); urlLb = new javax.swing.JLabel(); urlText = new javax.swing.JTextField(); addressLb = new javax.swing.JLabel(); addressText = new javax.swing.JTextField(); pcLb = new javax.swing.JLabel(); pcText = new javax.swing.JTextField(); cityLb = new javax.swing.JLabel(); cityText = new javax.swing.JTextField(); stateLb = new javax.swing.JLabel(); stateText = new javax.swing.JTextField(); countryLb = new javax.swing.JLabel(); countryText = new javax.swing.JTextField(); commentsLb = new javax.swing.JLabel(); commentsScroll = new javax.swing.JScrollPane(); commentsText = new javax.swing.JTextArea(); setLayout(new java.awt.GridBagLayout()); nameLb.setLabelFor(nameText); nameLb.setText(options.getMsg("edit_project_org_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(nameLb, gridBagConstraints); nameText.setToolTipText(options.getMsg("edit_project_org_name_tooltip")); nameText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(nameText, gridBagConstraints); mailLb.setLabelFor(mailText); mailLb.setText(options.getMsg("edit_project_org_mail")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(mailLb, gridBagConstraints); mailText.setToolTipText(options.getMsg("edit_project_org_mail_tooltip")); mailText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(mailText, gridBagConstraints); urlLb.setLabelFor(urlText); urlLb.setText(options.getMsg("edit_project_org_url")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(urlLb, gridBagConstraints); urlText.setToolTipText(options.getMsg("edit_project_org_url_tooltip")); urlText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(urlText, gridBagConstraints); addressLb.setLabelFor(addressText); addressLb.setText(options.getMsg("edit_project_org_address")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(addressLb, gridBagConstraints); addressText.setToolTipText(options.getMsg("edit_project_org_address_tooltip")); addressText.setPreferredSize(new java.awt.Dimension(300, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(addressText, gridBagConstraints); pcLb.setLabelFor(pcText); pcLb.setText(options.getMsg("edit_project_org_pc")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(pcLb, gridBagConstraints); pcText.setToolTipText(options.getMsg("edit_project_org_pc_tooltip")); pcText.setPreferredSize(new java.awt.Dimension(100, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(pcText, gridBagConstraints); cityLb.setLabelFor(cityText); cityLb.setText(options.getMsg("edit_project_org_city")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(cityLb, gridBagConstraints); cityText.setToolTipText(options.getMsg("edit_project_org_city_tooltip")); cityText.setPreferredSize(new java.awt.Dimension(100, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(cityText, gridBagConstraints); stateLb.setLabelFor(stateText); stateLb.setText(options.getMsg("edit_project_org_state")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(stateLb, gridBagConstraints); stateText.setToolTipText(options.getMsg("edit_project_org_state_tooltip")); stateText.setPreferredSize(new java.awt.Dimension(100, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(stateText, gridBagConstraints); countryLb.setLabelFor(countryText); countryLb.setText(options.getMsg("edit_project_org_country")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(countryLb, gridBagConstraints); countryText.setToolTipText(options.getMsg("edit_project_org_country_tooltip")); countryText.setPreferredSize(new java.awt.Dimension(100, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(countryText, gridBagConstraints); commentsLb.setLabelFor(commentsText); commentsLb.setText(options.getMsg("edit_project_org_comments")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; add(commentsLb, gridBagConstraints); commentsScroll.setPreferredSize(new java.awt.Dimension(300, 60)); commentsText.setLineWrap(true); commentsText.setToolTipText(options.getMsg("edit_project_org_comments_tooltip")); commentsText.setWrapStyleWord(true); commentsScroll.setViewportView(commentsText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; add(commentsScroll, gridBagConstraints); }//GEN-END:initComponents public void setOrganization(Organization org){ nameText.setText(org!=null ? org.name : ""); mailText.setText(org!=null ? org.mail : ""); urlText.setText(org!=null ? org.url : ""); addressText.setText(org!=null ? org.address : ""); pcText.setText(org!=null ? org.pc : ""); cityText.setText(org!=null ? org.city : ""); countryText.setText(org!=null ? org.country : ""); stateText.setText(org!=null ? org.state : ""); commentsText.setText(org!=null ? org.comments : ""); } public Organization getOrganization(){ Organization org=new Organization(); org.name=nameText.getText().trim(); org.mail=StrUtils.nullableString(mailText.getText().trim()); org.url=StrUtils.nullableString(urlText.getText().trim()); org.address=StrUtils.nullableString(addressText.getText().trim()); org.pc=StrUtils.nullableString(pcText.getText().trim()); org.city=StrUtils.nullableString(cityText.getText().trim()); org.country=StrUtils.nullableString(countryText.getText().trim()); org.state=StrUtils.nullableString(stateText.getText().trim()); org.comments=StrUtils.nullableString(commentsText.getText().trim()); return org; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField addressText; private javax.swing.JTextField cityText; private javax.swing.JTextArea commentsText; private javax.swing.JTextField countryText; private javax.swing.JTextField mailText; private javax.swing.JTextField nameText; private javax.swing.JTextField pcText; private javax.swing.JTextField stateText; private javax.swing.JTextField urlText; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/ProjectInstallerEditPanel.form0000644000175000017500000006024711377161311025127 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/ProjectSettingsEditorPanel.java0000644000175000017500000006671511377161311025317 0ustar /* * File : ProjectSettingsEditorPanel.java * Created : 27-feb-2004 10:33 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.beans.EventSoundsButton; import edu.xtec.jclic.beans.TextListEditor; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.util.Vector; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.ScrollPaneConstants; import javax.swing.SwingUtilities; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProjectSettingsEditorPanel extends EditorPanel { /** Creates new form JClicProjectEditorPanel */ public ProjectSettingsEditorPanel(Options options) { super(options); initComponents(); evSoundsBtn.setOptions(options); postInit(250, false, false); setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel areaLb; javax.swing.JLabel authorLb; javax.swing.JLabel descLb; javax.swing.JScrollPane descScroll; javax.swing.JLabel descriptorslLb; javax.swing.JLabel evSoundsLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel langLb; javax.swing.JLabel levelLb; javax.swing.JLabel orgLb; javax.swing.JLabel revLb; javax.swing.JLabel skinLb; javax.swing.JLabel spacer; javax.swing.JLabel titleLb; scroll = new javax.swing.JScrollPane(); mainPanel = new javax.swing.JPanel(); descrPanel = new edu.xtec.jclic.beans.RollPanel(); titleLb = new javax.swing.JLabel(); titleText = new javax.swing.JTextField(); descLb = new javax.swing.JLabel(); descScroll = new javax.swing.JScrollPane(); descText = new javax.swing.JTextPane(); authPanel = new edu.xtec.jclic.beans.RollPanel(); authorLb = new javax.swing.JLabel(); authorListEditor = new TextListEditor(options){ protected Object editItem(Object currentValue, boolean newValue){ return editAuthor(currentValue, newValue); } }; orgLb = new javax.swing.JLabel(); orgListEditor = new TextListEditor(options){ protected Object editItem(Object currentValue, boolean newValue){ return editOrg(currentValue, newValue); } }; revLb = new javax.swing.JLabel(); revListEditor = new TextListEditor(options){ protected Object editItem(Object currentValue, boolean newValue){ return editRevision(currentValue, newValue); } }; descPanel = new edu.xtec.jclic.beans.RollPanel(); levelLb = new javax.swing.JLabel(); levelText = new javax.swing.JTextField(); areaLb = new javax.swing.JLabel(); areaText = new javax.swing.JTextField(); descriptorslLb = new javax.swing.JLabel(); descriptorsText = new javax.swing.JTextField(); langLb = new javax.swing.JLabel(); langListEditor = new TextListEditor(options){ protected Object editItem(Object currentValue, boolean newValue){ return editLanguage(currentValue, newValue); } }; uiPanel = new edu.xtec.jclic.beans.RollPanel(); skinLb = new javax.swing.JLabel(); skinCombo = new javax.swing.JComboBox(edu.xtec.jclic.skins.Skin.getSystemSkinList(false)); skinCombo.setSelectedItem(null); evSoundsLb = new javax.swing.JLabel(); evSoundsBtn = new edu.xtec.jclic.beans.EventSoundsButton(); spacer = new javax.swing.JLabel(); setLayout(new java.awt.BorderLayout()); mainPanel.setLayout(new java.awt.GridBagLayout()); descrPanel.getMainPanel().setLayout(new java.awt.GridBagLayout()); descrPanel.setTitle(options.getMsg("edit_project_description_block")); titleLb.setLabelFor(titleText); titleLb.setText(options.getMsg("edit_project_title")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descrPanel.getMainPanel().add(titleLb, gridBagConstraints); titleText.setToolTipText(options.getMsg("edit_project_title_tooltip")); titleText.setPreferredSize(new java.awt.Dimension(400, 21)); titleText.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descrPanel.getMainPanel().add(titleText, gridBagConstraints); descLb.setText(options.getMsg("edit_project_description")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descrPanel.getMainPanel().add(descLb, gridBagConstraints); descScroll.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER); descScroll.setPreferredSize(new java.awt.Dimension(400, 100)); descText.setToolTipText(options.getMsg("edit_project_description_tooltip")); descText.getDocument().addDocumentListener(this); descScroll.setViewportView(descText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descrPanel.getMainPanel().add(descScroll, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(descrPanel, gridBagConstraints); authPanel.getMainPanel().setLayout(new java.awt.GridBagLayout()); authPanel.setTitle(options.getMsg("edit_project_author_group")); authorLb.setLabelFor(authorListEditor); authorLb.setText(options.getMsg("edit_project_authors")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); authPanel.getMainPanel().add(authorLb, gridBagConstraints); authorListEditor.setToolTipText(options.getMsg("edit_project_authors_tooltip")); authorListEditor.setPreferredSize(new java.awt.Dimension(400, 80)); authorListEditor.addPropertyChangeListener(TextListEditor.PROP_LIST, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; authPanel.getMainPanel().add(authorListEditor, gridBagConstraints); orgLb.setLabelFor(orgListEditor); orgLb.setText(options.getMsg("edit_project_org")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); authPanel.getMainPanel().add(orgLb, gridBagConstraints); orgListEditor.setToolTipText(options.getMsg("edit_project_org_tooltip")); orgListEditor.setPreferredSize(new java.awt.Dimension(400, 80)); orgListEditor.addPropertyChangeListener(TextListEditor.PROP_LIST, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; authPanel.getMainPanel().add(orgListEditor, gridBagConstraints); revLb.setLabelFor(revListEditor); revLb.setText(options.getMsg("edit_project_rev")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); authPanel.getMainPanel().add(revLb, gridBagConstraints); revListEditor.setToolTipText(options.getMsg("edit_project_rev_tooltip")); revListEditor.setPreferredSize(new java.awt.Dimension(400, 80)); revListEditor.addPropertyChangeListener(TextListEditor.PROP_LIST, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; authPanel.getMainPanel().add(revListEditor, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(authPanel, gridBagConstraints); descPanel.getMainPanel().setLayout(new java.awt.GridBagLayout()); descPanel.setTitle(options.getMsg("edit_project_descriptors_block")); levelLb.setLabelFor(levelText); levelLb.setText(options.getMsg("edit_project_level")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(levelLb, gridBagConstraints); levelText.setToolTipText(options.getMsg("edit_project_level_tooltip")); levelText.setPreferredSize(new java.awt.Dimension(400, 21)); levelText.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(levelText, gridBagConstraints); areaLb.setLabelFor(areaText); areaLb.setText(options.getMsg("edit_project_area")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(areaLb, gridBagConstraints); areaText.setToolTipText(options.getMsg("edit_project_area_tooltip")); areaText.setPreferredSize(new java.awt.Dimension(400, 21)); areaText.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(areaText, gridBagConstraints); descriptorslLb.setLabelFor(descriptorsText); descriptorslLb.setText(options.getMsg("edit_project_descriptors")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(descriptorslLb, gridBagConstraints); descriptorsText.setToolTipText(options.getMsg("edit_project_descriptors_tooltip")); descriptorsText.setPreferredSize(new java.awt.Dimension(400, 21)); descriptorsText.getDocument().addDocumentListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(descriptorsText, gridBagConstraints); langLb.setLabelFor(langListEditor); langLb.setText(options.getMsg("edit_project_languages")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); descPanel.getMainPanel().add(langLb, gridBagConstraints); langListEditor.setToolTipText(options.getMsg("edit_project_languages_tooltip")); langListEditor.setPreferredSize(new java.awt.Dimension(200, 80)); langListEditor.addPropertyChangeListener(TextListEditor.PROP_LIST, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; descPanel.getMainPanel().add(langListEditor, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(descPanel, gridBagConstraints); uiPanel.getMainPanel().setLayout(new java.awt.GridBagLayout()); uiPanel.setTitle(options.getMsg("edit_project_ui_block")); skinLb.setLabelFor(skinCombo); skinLb.setText(options.getMsg("settings_skin")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); uiPanel.getMainPanel().add(skinLb, gridBagConstraints); skinCombo.setToolTipText(options.getMsg("settings_skin_tooltip")); skinCombo.setEditable(true); skinCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); uiPanel.getMainPanel().add(skinCombo, gridBagConstraints); evSoundsLb.setLabelFor(revListEditor); evSoundsLb.setText(options.getMsg("edit_project_evsounds")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); uiPanel.getMainPanel().add(evSoundsLb, gridBagConstraints); evSoundsBtn.setToolTipText(options.getMsg("edit_project_evsounds_tooltip")); evSoundsBtn.addPropertyChangeListener(EventSoundsButton.PROP_EVSND_NAME, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); uiPanel.getMainPanel().add(evSoundsBtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(uiPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; mainPanel.add(spacer, gridBagConstraints); scroll.setViewportView(mainPanel); add(scroll, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return (e instanceof ProjectSettingsEditor); } protected ProjectSettingsEditor getProjectSettingsEditor(){ return (ProjectSettingsEditor)getEditor(); } protected ProjectSettings getProjectSettings(){ ProjectSettings result=null; ProjectSettingsEditor pse=getProjectSettingsEditor(); if(pse!=null) result=pse.getProjectSettings(); return result; } protected void fillData() { ProjectSettings ps=getProjectSettings(); JClicProjectEditor prjed=(ps==null ? null : getProjectSettingsEditor().getProjectEditor()); if(prjed!=null){ evSoundsBtn.setMediaBagEditor(prjed.getMediaBagEditor()); } evSoundsBtn.setEventSounds(ps==null ? null : ps.eventSounds); titleText.setText(ps==null || ps.title==null ? options.getMsg("UNNAMED") : ps.title); descText.setText(ps==null ? "" : StrUtils.secureString(ps.description)); areaText.setText(ps==null ? "" : StrUtils.secureString(ps.area)); levelText.setText(ps==null ? "" : StrUtils.secureString(ps.level)); descriptorsText.setText(ps==null ? "" : StrUtils.secureString(ps.descriptors)); skinCombo.setSelectedItem(ps==null ? null : ps.skinFileName); Vector v=new Vector(); if(ps!=null && ps.languages!=null){ for(int i=0; i5){ String code=ln.substring(p-3, p-1); ln=(String)Messages.getNamesToCodes().get(code); } ps.languages[i]=(ln==null ? langs[i] : ln); } ps.skinFileName=StrUtils.nullableString(skinCombo.getSelectedItem()); EventSounds evs=evSoundsBtn.getEventSounds(); ps.eventSounds=(evs==null ? new EventSounds(null) : evs); } } private static JScrollPane langListPanel; private static JList langList; private Object editLanguage(final Object currentValue, boolean newValue){ if(langList==null || langListPanel==null){ langList=new JList(options.getMessages().getDescriptiveLanguageCodes()); langListPanel=new JScrollPane(langList); } Object result=null; if(!newValue && currentValue!=null){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ langList.setSelectedValue(currentValue, true); } }); } else{ langList.setSelectedIndex(-1); } if(options.getMessages().showInputDlg( this, new String[] {"edit_project_languages_select"} , null, new JComponent[]{langListPanel} , (newValue ? "edit_project_languages_add" : "edit_project_languages_modify"))){ result=langList.getSelectedValue(); } return result; } private AuthorEditPanel authorEditPanel; private Object editAuthor(Object currentValue, boolean newValue){ Author result=null; if(authorEditPanel==null) authorEditPanel=new AuthorEditPanel(options); if(newValue) currentValue=null; authorEditPanel.setAuthor((Author)currentValue); if(options.getMessages().showInputDlg( this, new String[] {"edit_project_author_info"} , null, new JComponent[]{authorEditPanel} , (newValue ? "edit_project_author_add" : "edit_project_author_edit"))){ result=authorEditPanel.getAuthor(); if(result.name.length()<1) result=null; } return result; } private OrganizationEditPanel organizationEditPanel; private Object editOrg(Object currentValue, boolean newValue){ Organization result=null; if(organizationEditPanel==null) organizationEditPanel=new OrganizationEditPanel(options); if(newValue) currentValue=null; organizationEditPanel.setOrganization((Organization)currentValue); if(options.getMessages().showInputDlg( this, new String[] {"edit_project_org_info"} , null, new JComponent[]{organizationEditPanel} , (newValue ? "edit_project_org_add" : "edit_project_org_edit"))){ result=organizationEditPanel.getOrganization(); if(result.name.length()<1) result=null; } return result; } private RevisionEditPanel revisionEditPanel; private Object editRevision(Object currentValue, boolean newValue){ Revision result=null; if(revisionEditPanel==null) revisionEditPanel=new RevisionEditPanel(options); if(newValue) currentValue=null; revisionEditPanel.setRevision((Revision)currentValue); if(options.getMessages().showInputDlg( this, new String[] {"edit_project_rev_info"} , null, new JComponent[]{revisionEditPanel} , (newValue ? "edit_project_rev_add" : "edit_project_rev_edit"))){ result=revisionEditPanel.getRevision(); if(result!=null && result.description.length()<1) result=null; } return result; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField areaText; private edu.xtec.jclic.beans.RollPanel authPanel; private edu.xtec.jclic.beans.TextListEditor authorListEditor; private edu.xtec.jclic.beans.RollPanel descPanel; private javax.swing.JTextPane descText; private edu.xtec.jclic.beans.RollPanel descrPanel; private javax.swing.JTextField descriptorsText; private edu.xtec.jclic.beans.EventSoundsButton evSoundsBtn; private edu.xtec.jclic.beans.TextListEditor langListEditor; private javax.swing.JTextField levelText; private javax.swing.JPanel mainPanel; private edu.xtec.jclic.beans.TextListEditor orgListEditor; private edu.xtec.jclic.beans.TextListEditor revListEditor; private javax.swing.JScrollPane scroll; private javax.swing.JComboBox skinCombo; private javax.swing.JTextField titleText; private edu.xtec.jclic.beans.RollPanel uiPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/NewProjectDlg.java0000644000175000017500000002622011377161311022533 0ustar /* * File : NewProjectDlg.java * Created : 08-jul-2004 14:32 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.clic3.Clic3; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.project.JClicProject; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ResourceBridge; import edu.xtec.util.SimpleFileFilter; import edu.xtec.util.StrUtils; import java.awt.Component; import java.io.File; import java.io.FilenameFilter; import javax.swing.JComponent; import javax.swing.JFileChooser; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class NewProjectDlg extends javax.swing.JPanel { ResourceBridge rb; Options options; public String name; public String fileName; public String folder; String baseFolder; /** Creates new form NewProjectDlg */ public NewProjectDlg(ResourceBridge rb, String baseFolder) { this.rb=rb; options=rb.getOptions(); this.baseFolder=baseFolder.replace('/', File.separatorChar); folder=baseFolder; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; nameLb = new javax.swing.JLabel(); nameText = new javax.swing.JTextField(); nameText.getDocument().addDocumentListener(dl); spacer = new javax.swing.JLabel(); fileNameLb = new javax.swing.JLabel(); fileNameText = new javax.swing.JTextField(); fileNameText.getDocument().addDocumentListener(dl); extLb = new javax.swing.JLabel(); folderLb = new javax.swing.JLabel(); folderText = new javax.swing.JTextField(); folderBtn = new javax.swing.JButton(); setLayout(new java.awt.GridBagLayout()); nameLb.setLabelFor(nameText); nameLb.setText(options.getMsg("edit_new_project_name")); nameLb.setToolTipText(options.getMsg("edit_new_project_name_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(nameLb, gridBagConstraints); nameText.setToolTipText(options.getMsg("edit_new_project_name_tooltip")); nameText.setPreferredSize(new java.awt.Dimension(100, 20)); nameText.setMinimumSize(new java.awt.Dimension(100, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 1); add(nameText, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; add(spacer, gridBagConstraints); fileNameLb.setText(options.getMsg("edit_new_project_filename")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(fileNameLb, gridBagConstraints); fileNameText.setToolTipText(options.getMsg("edit_new_project_filename_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 1); add(fileNameText, gridBagConstraints); extLb.setText(".jclic.zip"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(4, 1, 4, 4); add(extLb, gridBagConstraints); folderLb.setLabelFor(folderText); folderLb.setText(options.getMsg("edit_new_project_folder")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(folderLb, gridBagConstraints); folderText.setToolTipText(options.getMsg("edit_new_project_folder_tooltip")); folderText.setPreferredSize(new java.awt.Dimension(280, 21)); folderText.setMinimumSize(new java.awt.Dimension(280, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(folderText, gridBagConstraints); folderBtn.setText(options.getMsg("edit_new_project_folder_browse")); folderBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { folderBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(4, 4, 4, 4); add(folderBtn, gridBagConstraints); }//GEN-END:initComponents private JFileChooser chooser; private void folderBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_folderBtnActionPerformed if(chooser==null){ chooser=new JFileChooser(baseFolder); chooser.setDialogType(JFileChooser.DIRECTORIES_ONLY); } if(chooser.showOpenDialog(this)==JFileChooser.APPROVE_OPTION){ baseFolder=chooser.getCurrentDirectory().getAbsolutePath(); folderText.setText(baseFolder); } }//GEN-LAST:event_folderBtnActionPerformed public void fillData(){ nameText.setText(name==null ? "" : name); fileNameText.setText(fileName==null ? "" :fileName); folderText.setText(folder==null ? "" :folder); } public void getData(){ name=StrUtils.nullableString(nameText.getText()); fileName=StrUtils.nullableString(fileNameText.getText()); folder=StrUtils.nullableString(folderText.getText()); } DocumentListener dl=new DocumentListener(){ public void changedUpdate(DocumentEvent e){ changeName(e); } public void insertUpdate(DocumentEvent e){ changeName(e); } public void removeUpdate(DocumentEvent e){ changeName(e); } protected void changeName(DocumentEvent e){ String s=null; boolean fromName=false; if(nameText.getDocument()==e.getDocument()){ s=nameText.getText(); fromName=true; } else s=fileNameText.getText(); s=FileSystem.getValidFileName(s.trim()); if(fromName) fileNameText.setText(s); if(s.length()>0){ StringBuffer sb=new StringBuffer(baseFolder); if(!baseFolder.endsWith(File.separator)) sb.append(File.separatorChar); sb.append(s); folderText.setText(sb.substring(0)); } } }; public static JClicProject prompt(ResourceBridge rb, Component parent, FileSystem baseFS){ JClicProject result=null; NewProjectDlg prjDlg=new NewProjectDlg(rb, baseFS.root); Messages msg=rb.getOptions().getMessages(); prjDlg.fillData(); while(result==null){ if(!msg.showInputDlg(parent, prjDlg, "edit_new_project_title")) break; prjDlg.getData(); if(prjDlg.name==null || prjDlg.fileName==null || prjDlg.folder==null){ msg.showErrorWarning(parent, "edit_new_project_err_empty", null); } else{ try{ boolean folderOk=true; File folderFile=new File(prjDlg.folder); if(folderFile.exists() && folderFile.isDirectory()){ FilenameFilter ff=((SimpleFileFilter)Utils.getFileFilter(Utils.ALL_JCLIC_CLIC_FF, msg)).getFilenameFilter(); if(folderFile.list(ff).length>0){ folderOk=msg.showQuestionDlg(parent, "edit_new_project_warning_noEmptyFolder", null, "yn")==Messages.YES; } } else{ if(!folderFile.mkdirs()){ msg.showErrorWarning(parent, "edit_new_project_err_folderCreation", null); folderOk=false; } } if(folderOk){ File projectFile=new File(folderFile, prjDlg.fileName+".jclic.zip"); if(msg.confirmOverwriteFile(parent, projectFile, "yn")==Messages.YES){ result=new JClicProject(rb, new FileSystem(folderFile.getAbsolutePath(), rb), projectFile.getAbsolutePath()); result.settings.title=prjDlg.name; result.setName(prjDlg.fileName); result.saveProject(projectFile.getAbsolutePath()); } } } catch(Exception ex){ msg.showErrorWarning(parent, "ERROR", ex); } } } return result; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel extLb; private javax.swing.JLabel fileNameLb; private javax.swing.JTextField fileNameText; private javax.swing.JButton folderBtn; private javax.swing.JLabel folderLb; private javax.swing.JTextField folderText; private javax.swing.JLabel nameLb; private javax.swing.JTextField nameText; private javax.swing.JLabel spacer; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/project/ProjectSettingsEditorPanel.form0000644000175000017500000011610011377161311025321 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorFramePanel.form0000644000175000017500000010454011377161311023300 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/CopyActivityAttributesPanel.java0000644000175000017500000004416111377161311024040 0ustar /* * File : CopyAttributesPanel.java * Created : 30-jun-2004 16:46 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.activities.text.TextActivityBase; import edu.xtec.jclic.activities.text.TextActivityDocument; import edu.xtec.jclic.bags.ActivityBagEditor; import edu.xtec.jclic.bags.ActivityBagElementEditor; import edu.xtec.jclic.beans.CheckBoxTreeObject; import edu.xtec.util.Options; import edu.xtec.util.ProgressDialog; import edu.xtec.util.SwingWorker; import javax.swing.text.StyleContext; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CopyActivityAttributesPanel extends javax.swing.JPanel { Options options; ActivityBagElementEditor abed; ActivityBagEditor abe; /** Creates new form CopyActivityAttributesPanel */ public CopyActivityAttributesPanel(Options options, ActivityBagElementEditor abed) { this.options=options; this.abed=abed; abe=(ActivityBagEditor)abed.getEditorParent(); initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JPanel actPanel; javax.swing.JScrollPane actScroll; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JScrollPane scroll; scroll = new javax.swing.JScrollPane(); checkBoxTree = new edu.xtec.jclic.beans.CheckBoxTree(); actPanel = new javax.swing.JPanel(); actScroll = new javax.swing.JScrollPane(); actList = new javax.swing.JList(); selectAllBtn = new javax.swing.JButton(); selectNoneBtn = new javax.swing.JButton(); setLayout(new java.awt.BorderLayout()); scroll.setPreferredSize(new java.awt.Dimension(300, 300)); checkBoxTree.setModel(getTreeModel()); int k=checkBoxTree.getRowCount(); for(int i=k+1; i>=0; i--){ checkBoxTree.expandRow(i); } scroll.setViewportView(checkBoxTree); add(scroll, java.awt.BorderLayout.CENTER); actPanel.setLayout(new java.awt.GridBagLayout()); actPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_copy_dest"))); actScroll.setPreferredSize(new java.awt.Dimension(200, 300)); actList.setModel(abe.getListModel()); actScroll.setViewportView(actList); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); actPanel.add(actScroll, gridBagConstraints); selectAllBtn.setText(options.getMsg("SELECT_ALL")); selectAllBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectAllBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); actPanel.add(selectAllBtn, gridBagConstraints); selectNoneBtn.setText(options.getMsg("SELECT_NONE")); selectNoneBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { selectNoneBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); actPanel.add(selectNoneBtn, gridBagConstraints); add(actPanel, java.awt.BorderLayout.EAST); }//GEN-END:initComponents private void selectNoneBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectNoneBtnActionPerformed actList.clearSelection(); }//GEN-LAST:event_selectNoneBtnActionPerformed private void selectAllBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_selectAllBtnActionPerformed actList.setSelectionInterval(0, actList.getModel().getSize()-1); }//GEN-LAST:event_selectAllBtnActionPerformed public boolean showDialog(java.awt.Component parent){ boolean result=false; if(options.getMessages().showInputDlg(parent, this, "edit_act_copy_title")){ final Object[] selectedItems=actList.getSelectedValues(); if(selectedItems==null || selectedItems.length==0){ options.getMessages().showAlert(this, "edit_act_copy_err_noSelection"); } else{ final ActivityEditor srcActEd=abed.getActivityEditor(); srcActEd.collectData(); final Activity srcAct=srcActEd.getActivity(); final ProgressDialog pd=new ProgressDialog(this, options); SwingWorker sw=new SwingWorker(){ public Object construct(){ int modifiedItems=0; for(int i=0; i0 && srcAct.abc[0]!=null && targetAct.abc!=null && targetAct.abc.length>0 && targetAct.abc[0]!=null) srcAct.abc[0].copyStyleTo(targetAct.abc[0]); if(gridB.isSelected() && srcAct.abc!=null && srcAct.abc.length>1 && srcAct.abc[1]!=null && targetAct.abc!=null && targetAct.abc.length>1 && targetAct.abc[1]!=null) srcAct.abc[1].copyStyleTo(targetAct.abc[1]); if(textGrid.isSelected() && srcAct.tgc!=null && targetAct.tgc!=null) srcAct.tgc.copyStyleTo(targetAct.tgc); if(srcAct instanceof TextActivityBase && targetAct instanceof TextActivityBase){ TextActivityBase txSrcAct=(TextActivityBase)srcAct; TextActivityBase txTargetAct=(TextActivityBase)targetAct; if(textFontFace.isSelected() || textFontSize.isSelected() || textStyle.isSelected() || textColour.isSelected() || targetColour.isSelected() || errorColour.isSelected() || tabSpace.isSelected()){ StyleContext sc=TextActivityDocument.copyStylesFrom( txSrcAct.getStyleContext(), txTargetAct.getStyleContext(), textFontFace.isSelected(), textFontSize.isSelected(), textStyle.isSelected(), textColour.isSelected(), targetColour.isSelected(), errorColour.isSelected()); if(sc!=null){ txTargetAct.setStyleContext(sc); } if(tabSpace.isSelected()) txTargetAct.getDocument().setTabSpc(txSrcAct.getDocument().getTabSpc()); } } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JList actList; private edu.xtec.jclic.beans.CheckBoxTree checkBoxTree; private javax.swing.JButton selectAllBtn; private javax.swing.JButton selectNoneBtn; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorMsgPanel.java0000644000175000017500000002561211377161311022754 0ustar /* * File : ActivityEditorMsgPanel.java * Created : 10-jun-2002 09:59 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.edit.*; import edu.xtec.util.Options; import edu.xtec.jclic.misc.Utils; import java.awt.Container; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.ActiveBoxContentEditor; import edu.xtec.jclic.boxes.ActiveBoxPreviewPanel; import javax.swing.JCheckBox; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.jclic.boxes.ActiveBox; import edu.xtec.jclic.bags.MediaBagEditor; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.EventObject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityEditorMsgPanel extends ActivityEditorInternalPanel { int NUM_MSG=3; ActiveBoxPreviewPanel[] abpp=new ActiveBoxPreviewPanel[NUM_MSG]; JCheckBox[] abppChk=new JCheckBox[NUM_MSG]; /** Creates new form MenuEditorPanel */ public ActivityEditorMsgPanel(ActivityEditorPanel parent) { super(parent); initComponents(); //abpp[0]=(ActiveBoxPreviewPanel)prevMsgPanel; //abppChk[0]=prevMsgChk; abpp[0]=(ActiveBoxPreviewPanel)initialMsgPanel; abppChk[0]=initialMsgChk; abpp[1]=(ActiveBoxPreviewPanel)finalMsgPanel; abppChk[1]=finalMsgChk; abpp[2]=(ActiveBoxPreviewPanel)errorMsgPanel; abppChk[2]=errorMsgChk; setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel spacer; initialMsgChk = new javax.swing.JCheckBox(); initialMsgPanel = new ActiveBoxPreviewPanel(null); finalMsgChk = new javax.swing.JCheckBox(); finalMsgPanel = new ActiveBoxPreviewPanel(null); errorMsgChk = new javax.swing.JCheckBox(); errorMsgPanel = new ActiveBoxPreviewPanel(null); spacer = new javax.swing.JLabel(); setLayout(new java.awt.GridBagLayout()); initialMsgChk.setToolTipText(options.getMsg("edit_act_msg_initial_tooltip")); initialMsgChk.setText(options.getMsg("edit_act_msg_initial")); initialMsgChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; add(initialMsgChk, gridBagConstraints); initialMsgPanel.setToolTipText(options.getMsg("edit_act_msg_initial_tooltip")); initialMsgPanel.setPreferredSize(new java.awt.Dimension(500, 40)); initialMsgPanel.setMinimumSize(new java.awt.Dimension(200, 40)); initialMsgPanel.setMaximumSize(new java.awt.Dimension(32767, 40)); initialMsgPanel.addMouseListener(getMouseClickListener()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(initialMsgPanel, gridBagConstraints); finalMsgChk.setToolTipText(options.getMsg("edit_act_msg_final_tooltip")); finalMsgChk.setText(options.getMsg("edit_act_msg_final")); finalMsgChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(finalMsgChk, gridBagConstraints); finalMsgPanel.setToolTipText(options.getMsg("edit_act_msg_final_tooltip")); finalMsgPanel.setPreferredSize(new java.awt.Dimension(500, 40)); finalMsgPanel.setMinimumSize(new java.awt.Dimension(200, 40)); finalMsgPanel.setMaximumSize(new java.awt.Dimension(32767, 40)); finalMsgPanel.addMouseListener(getMouseClickListener()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(finalMsgPanel, gridBagConstraints); errorMsgChk.setToolTipText(options.getMsg("edit_act_msg_error_tooltip")); errorMsgChk.setText(options.getMsg("edit_act_msg_error")); errorMsgChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(errorMsgChk, gridBagConstraints); errorMsgPanel.setToolTipText(options.getMsg("edit_act_msg_error_tooltip")); errorMsgPanel.setPreferredSize(new java.awt.Dimension(500, 40)); errorMsgPanel.setMinimumSize(new java.awt.Dimension(200, 40)); errorMsgPanel.setMaximumSize(new java.awt.Dimension(32767, 40)); errorMsgPanel.addMouseListener(getMouseClickListener()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; add(errorMsgPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; add(spacer, gridBagConstraints); }//GEN-END:initComponents public void setEnabled(boolean enabled){ super.setEnabled(enabled); for(int i=0; i
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/AppletHtmlCreator.java0000644000175000017500000004376011377161311021760 0ustar /* * File : AppletHtmlCreator.java * Created : 13-aug-2004 16:35 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.clic3.Clic3; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.project.JClicProject; import edu.xtec.util.BrowserLauncher; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.util.StrUtils; import java.awt.Color; import java.awt.Component; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.URL; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class AppletHtmlCreator extends javax.swing.JPanel implements ActionListener{ Options options; AuthorSettings settings; /** Creates new form AppletHtmlCreator */ public AppletHtmlCreator(Options options, AuthorSettings settings) { this.options=options; this.settings=settings; initComponents(); fullPageOption.addActionListener(this); mixedContentOption.addActionListener(this); checkEnabled(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel colorLb; javax.swing.JLabel exitUrlLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel heightLb; javax.swing.JScrollPane postTextScroll; javax.swing.JLabel postTxtLb; javax.swing.JScrollPane prevTextScroll; javax.swing.JLabel prevTxtLb; javax.swing.JLabel titleLb; javax.swing.JLabel widthLb; bg = new javax.swing.ButtonGroup(); titleLb = new javax.swing.JLabel(); titleTxt = new javax.swing.JTextField(); exitUrlLb = new javax.swing.JLabel(); exitUrlTxt = new javax.swing.JTextField(); fullPageOption = new javax.swing.JRadioButton(); mixedContentOption = new javax.swing.JRadioButton(); sizePanel = new javax.swing.JPanel(); colorLb = new javax.swing.JLabel(); colorButton = new edu.xtec.jclic.beans.ColorButton(); colorButton.setOptions(options); prevTxtLb = new javax.swing.JLabel(); prevTextScroll = new javax.swing.JScrollPane(); prevTextEdit = new javax.swing.JTextArea(); widthLb = new javax.swing.JLabel(); widthText = new javax.swing.JTextField(); heightLb = new javax.swing.JLabel(); heightText = new javax.swing.JTextField(); centeredChk = new javax.swing.JCheckBox(); postTxtLb = new javax.swing.JLabel(); postTextScroll = new javax.swing.JScrollPane(); postTextEdit = new javax.swing.JTextArea(); setLayout(new java.awt.GridBagLayout()); titleLb.setLabelFor(titleTxt); titleLb.setText(options.getMsg("applet_page_title")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(titleLb, gridBagConstraints); titleTxt.setToolTipText(options.getMsg("applet_page_title_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(titleTxt, gridBagConstraints); exitUrlLb.setLabelFor(exitUrlTxt); exitUrlLb.setText(options.getMsg("applet_exitUrl")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(exitUrlLb, gridBagConstraints); exitUrlTxt.setToolTipText(options.getMsg("applet_exitUrl_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(exitUrlTxt, gridBagConstraints); fullPageOption.setSelected(true); fullPageOption.setText(options.getMsg("applet_page_full")); bg.add(fullPageOption); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(fullPageOption, gridBagConstraints); mixedContentOption.setText(options.getMsg("applet_page_mixed")); bg.add(mixedContentOption); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(mixedContentOption, gridBagConstraints); sizePanel.setLayout(new java.awt.GridBagLayout()); sizePanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("applet_size"))); sizePanel.setToolTipText(options.getMsg("applet_size_tooltip")); colorLb.setLabelFor(colorButton); colorLb.setText(options.getMsg("applet_bgcolor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(colorLb, gridBagConstraints); colorButton.setToolTipText(options.getMsg("applet_bgcolor_tooltip")); colorButton.setColor(settings.appletBgColor); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(colorButton, gridBagConstraints); prevTxtLb.setLabelFor(prevTextEdit); prevTxtLb.setText(options.getMsg("applet_prev_text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(prevTxtLb, gridBagConstraints); prevTextScroll.setPreferredSize(new java.awt.Dimension(200, 60)); prevTextScroll.setMinimumSize(new java.awt.Dimension(200, 60)); prevTextEdit.setWrapStyleWord(true); prevTextEdit.setToolTipText(options.getMsg("applet_prev_text_tooltip")); prevTextEdit.setLineWrap(true); prevTextScroll.setViewportView(prevTextEdit); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weighty = 0.5; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(prevTextScroll, gridBagConstraints); widthLb.setLabelFor(widthText); widthLb.setText(options.getMsg("WIDTH")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(widthLb, gridBagConstraints); widthText.setToolTipText(options.getMsg("applet_width_tooltip")); widthText.setText(settings.appletWidth); widthText.setHorizontalAlignment(javax.swing.JTextField.RIGHT); widthText.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(widthText, gridBagConstraints); heightLb.setLabelFor(heightText); heightLb.setText(options.getMsg("HEIGHT")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(heightLb, gridBagConstraints); heightText.setToolTipText(options.getMsg("applet_height_tooltip")); heightText.setText(settings.appletHeight); heightText.setHorizontalAlignment(javax.swing.JTextField.RIGHT); heightText.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(heightText, gridBagConstraints); centeredChk.setToolTipText(options.getMsg("applet_centered_tooltip")); centeredChk.setSelected(true); centeredChk.setText(options.getMsg("applet_centered")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(centeredChk, gridBagConstraints); postTxtLb.setLabelFor(postTextEdit); postTxtLb.setText(options.getMsg("applet_post_text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(postTxtLb, gridBagConstraints); postTextScroll.setPreferredSize(new java.awt.Dimension(200, 60)); postTextScroll.setMinimumSize(new java.awt.Dimension(200, 60)); postTextEdit.setWrapStyleWord(true); postTextEdit.setToolTipText(options.getMsg("applet_post_text_tooltip")); postTextEdit.setLineWrap(true); postTextScroll.setViewportView(postTextEdit); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weighty = 0.5; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); sizePanel.add(postTextScroll, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(1, 2, 2, 2); add(sizePanel, gridBagConstraints); }//GEN-END:initComponents public void setValues(JClicProject prj){ titleTxt.setText(prj.settings.title); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup bg; private javax.swing.JCheckBox centeredChk; private edu.xtec.jclic.beans.ColorButton colorButton; private javax.swing.JTextField exitUrlTxt; private javax.swing.JRadioButton fullPageOption; private javax.swing.JTextField heightText; private javax.swing.JRadioButton mixedContentOption; private javax.swing.JTextArea postTextEdit; private javax.swing.JTextArea prevTextEdit; private javax.swing.JPanel sizePanel; private javax.swing.JTextField titleTxt; private javax.swing.JTextField widthText; // End of variables declaration//GEN-END:variables private static AppletHtmlCreator panel; public static void createHtml(JClicProject prj, AuthorSettings settings, Component parent){ Options options=prj.getBridge().getOptions(); Messages msg=options.getMessages(); if(panel==null) panel=new AppletHtmlCreator(options, settings); String prjFile=prj.getFileSystem().getFileNameOf(prj.getFullPath()); panel.setValues(prj); if(msg.showInputDlg(parent, panel, "applet_create_title")){ boolean full=panel.fullPageOption.isSelected(); String title=panel.titleTxt.getText(); String width=panel.widthText.getText(); String height=panel.heightText.getText(); String preApplet=panel.prevTextEdit.getText(); String postApplet=panel.postTextEdit.getText(); Color bgColor=panel.colorButton.getColor(); boolean centered=panel.centeredChk.isSelected(); StringBuffer optionalParams=new StringBuffer(); String ps=StrUtils.nullableString(panel.exitUrlTxt.getText()); if(ps!=null) optionalParams.append("\r\nsetExitUrl('").append(ps).append("');"); int[] filters={Utils.ALL_HTML_FF}; FileSystem fs=prj.getFileSystem(); String path="index.htm"; String fileName=fs.chooseFile(path, true, filters, options, null, parent, false); if(fileName!=null){ try{ File file=new File(prj.getFileSystem().getFullFileNamePath(fileName)); FileOutputStream fos=prj.getFileSystem().createSecureFileOutputStream(fileName); OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8"); PrintWriter pw=new PrintWriter(osw); String s=ResourceManager.getResourceText("html/applet.html", true); s=StrUtils.replace(s, "%ENCODING", /*osw.getEncoding()*/ "UTF-8"); s=StrUtils.replace(s, "%JAR_BASE", settings.appletCodeBase); s=StrUtils.replace(s, "%TITLE", title); StringBuffer sb=new StringBuffer(); if(full) sb.append("leftmargin=\"0\" topmargin=\"0\" marginwidth=\"0\" marginheight=\"0\" onLoad=\"window.focus();\""); else{ sb.append("bgcolor=#"); sb.append(Integer.toHexString(bgColor.getRed())); sb.append(Integer.toHexString(bgColor.getGreen())); sb.append(Integer.toHexString(bgColor.getBlue())); } s=StrUtils.replace(s, "%BODYPARAMS", sb.substring(0)); sb.setLength(0); if(!full){ if(centered) sb.append("
"); if(preApplet.length()>0) sb.append(preApplet).append("
"); } s=StrUtils.replace(s, "%PRE_APPLET", sb.substring(0)); s=StrUtils.replace(s, "%OTHER", optionalParams.substring(0)); s=StrUtils.replace(s, "%WIDTH", full ? "100%" : width); s=StrUtils.replace(s, "%HEIGHT", full ? "100%" : height); s=StrUtils.replace(s, "%PROJECT", prjFile); sb.setLength(0); if(!full){ if(postApplet.length()>0) sb.append("
").append(postApplet); if(centered) sb.append("
"); } s=StrUtils.replace(s, "%POST_APPLET", postApplet); pw.print(s); pw.flush(); pw.close(); String prompt=StrUtils.replace(msg.get("applet_created_info"), "%s", fileName); if(msg.showQuestionDlgObj(parent, prompt+"\n"+msg.get("applet_created_prompt"), null, "yn")==Messages.YES){ BrowserLauncher.openURL(prj.getFileSystem().getUrl(fileName)); } } catch(Exception ex){ options.getMessages().showErrorWarning(parent, "ERROR", ex); } } } } public void actionPerformed(java.awt.event.ActionEvent actionEvent) { checkEnabled(); } public void checkEnabled(){ boolean b=mixedContentOption.isSelected(); colorButton.setEnabled(b); widthText.setEnabled(b); heightText.setEnabled(b); centeredChk.setEnabled(b); prevTextEdit.setEnabled(b); postTextEdit.setEnabled(b); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/AuthorSettingsDlg.form0000644000175000017500000014023711377161311022017 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/0000755000175000017500000000000011377161311017655 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/0000755000175000017500000000000011377161311020641 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/BasicEvaluatorPanel.form0000644000175000017500000001040511377161311025412 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/IdentifyEditor.java0000644000175000017500000000606711377161311024437 0ustar /* * File : IdentifyEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; import edu.xtec.util.Messages; import java.util.HashMap; import edu.xtec.util.Options; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class IdentifyEditor extends TextActivityBaseEditor { /** Creates a new instance of IdentifyEditor */ public IdentifyEditor(Identify act) { super(act); } protected static HashMap panelMap=new HashMap(1); protected void editCheckOptions(Options options, Component parent){ Identify ident=(Identify)getTextActivity(); if(ident!=null){ CheckOptionsPanel checkPanel=(CheckOptionsPanel)panelMap.get(options); if(checkPanel==null){ checkPanel=new CheckOptionsPanel(options); panelMap.put(options, checkPanel); } checkPanel.setOptions(ident); if(options.getMessages().showInputDlg(parent, checkPanel, "edit_text_act_check_title")){ checkPanel.collectData(ident); setModified(true); } } } protected boolean hasType(){ return true; } protected boolean editType(Options options, Component parent){ boolean result=false; Identify ident=(Identify)getActivity(); int t=ident.type; result=IdentifyTypePanel.editIdentify(ident, options, parent); if(result){ if(ident.type!=t && ident.tad.tmb.size()>0){ if(options.getMessages().showQuestionDlg(parent, "edit_text_act_warnChangeType", null, "yn")==Messages.YES){ ident.tad.clearAllTargets(); } else{ result=false; ident.type=t; } } } if(result){ ident.tad.targetType=(ident.type==Identify.IDENTIFY_WORDS) ? TextActivityDocument.TT_WORD : TextActivityDocument.TT_CHAR; setModified(true); } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextActivityBaseEditor.java0000644000175000017500000002124611377161311026114 0ustar /* * File : TextActivityBaseEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.ActiveBoxContentEditor; import edu.xtec.jclic.boxes.JPanelActiveBox; import edu.xtec.util.Options; import java.awt.Component; import java.awt.Dimension; import javax.swing.text.AttributeSet; import javax.swing.text.StyleConstants; import javax.swing.text.BadLocationException; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextActivityBaseEditor extends ActivityEditor { /** Creates a new instance of TextActivityBaseEditor */ public TextActivityBaseEditor(TextActivityBase act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.TEXT_BASE, null, null); } protected TextActivityBase getTextActivity(){ return (TextActivityBase)getActivity(); } protected JPanelActiveBox createNewBox(int pos, Options options, Component parent){ JPanelActiveBox result=null; TextActivityBase tab=getTextActivity(); AttributeSet a = tab.tad.getCharacterElement(pos).getAttributes(); if(a.isDefined(TextActivityDocument.TARGET)){ options.getMessages().showAlert(parent, "edit_text_act_err_cellInTarget"); return null; } ActiveBoxContent ab=new ActiveBoxContent(); ab.setDimension(new Dimension(100, 40)); ab.setBoxBase(tab.tad.boxesContent.bb); ab=ActiveBoxContentEditor.getActiveBoxContent(ab, parent, options, getMediaBagEditor(), null); if(ab!=null){ try{ result=TextActivityDocument.insertBox(ab, pos, tab.tad, tab, null); } catch(Exception ex){ options.getMessages().showErrorWarning(parent, "ERROR", ex); } } return result; } protected int from, to; protected TargetMarker createNewTarget(int ifrom, int ito, Options options, Component parent){ TargetMarker tm=null; TextActivityBase tab=getTextActivity(); if(tab!=null){ from=ifrom; to=ito; if(!checkTargetSegment(options, parent)) return null; tm=new TargetMarker(tab.tad); tm.begOffset=from; tm.endOffset=to; tm.setPositions(); tab.tad.tmb.add(tm); tab.tad.applyStyleToTarget(tm, TextActivityDocument.TARGET, false, true); } return tm; } private boolean checkTargetSegment(Options options, Component parent){ String errMsg=null; if(getTextActivity()==null) return false; TextActivityDocument tad=getTextActivity().tad; String text=""; try{ text=tad.getText(0, tad.getLength()); } catch(Exception ex){ return false; } int len=text.length(); from=Math.min(Math.max(0, from), Math.max(0, len-1)); to=Math.min(Math.max(from, to), len); switch(tad.getTargetType()){ case TextActivityDocument.TT_FREE: int fromBk=from; int toBk=to; while(from=from && to>0 && Character.isWhitespace(text.charAt(to-1))) to--; if(from>=to){ from=fromBk; to=toBk; } break; case TextActivityDocument.TT_CHAR: while(from=0 && !Character.isWhitespace(text.charAt(from))) from--; from++; to=from; while(tofrom && (text.charAt(to)==0x0D || text.charAt(to)==0x0A)) to--; to++; } break; default: break; } if(to==from) errMsg="edit_text_act_err_noSelection"; else if(from>to) errMsg="ERROR"; else { try{ for(int i=from; i=0 && pos0){ if(options.getMessages().showQuestionDlg(parent, "edit_text_act_warnChangeType", null, "yn")==Messages.YES){ ord.tad.clearAllTargets(); } else{ result=false; ord.type=t; ord.amongParagraphs=b; } } } if(result){ ord.tad.targetType=(ord.type==Order.ORDER_PARAGRAPHS) ? TextActivityDocument.TT_PARAGRAPH : TextActivityDocument.TT_WORD; setModified(true); } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextPrevScreenEditorPanel.form0000644000175000017500000002764511377161311026614 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextActivityEditorTextPanel.java0000644000175000017500000010143411377161311027144 0ustar /* * File : TextActivityEditorTextPanel.java * Created : 10-jun-2002 09:59 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.*; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.beans.ColorButton; import edu.xtec.jclic.beans.SmallIntEditor; import edu.xtec.jclic.boxes.*; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.FontCheck; import edu.xtec.jclic.misc.Utils; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import edu.xtec.util.Resizer; import edu.xtec.util.ResizerPanel; import edu.xtec.util.ResourceManager; import edu.xtec.util.SmallButtonBorder; import java.awt.event.MouseMotionListener; import java.util.EventObject; import java.util.Vector; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextActivityEditorTextPanel extends ActivityEditorInternalPanel implements Resizer.ResizerListener { //protected boolean loading; protected Resizer resizer; protected boolean skipUpdate; protected String fontName; protected int fontSize; protected boolean changeCombos=true; /** Creates new form MenuEditorPanel */ public TextActivityEditorTextPanel(ActivityEditorPanel parent) { super(parent); initComponents(); textScroll.setBorder(BorderFactory.createEmptyBorder()); textScroll.getVerticalScrollBar().setBorder(BorderFactory.createLineBorder(Color.darkGray, 1)); textPane.addCaretListener(caretListener); resizer=new Resizer(previewPanel, null, false, this); } CaretListener caretListener = new CaretListener() { public void caretUpdate(CaretEvent e) { showAttributes(e.getDot()); } }; /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // //GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; alignGrp = new javax.swing.ButtonGroup(); mainScroll = new javax.swing.JScrollPane(); previewPanel = new PreviewPanel(); textScroll = new javax.swing.JScrollPane(); textPane = new javax.swing.JTextPane(); javax.swing.JTabbedPane ctrlPanel = new javax.swing.JTabbedPane(); javax.swing.JPanel actPanel = new javax.swing.JPanel(); targetBtn = new javax.swing.JToggleButton(); editTargetBtn = new javax.swing.JButton(); insertBoxBtn = new javax.swing.JButton(); prevScreenBtn = new javax.swing.JButton(); optionsBtn = new javax.swing.JButton(); typeBtn = new javax.swing.JButton(); javax.swing.JLabel widthLb = new javax.swing.JLabel(); widthEdit = new edu.xtec.jclic.beans.SmallIntEditor(); javax.swing.JLabel heightLb = new javax.swing.JLabel(); heightEdit = new edu.xtec.jclic.beans.SmallIntEditor(); javax.swing.JPanel stylePanel = new javax.swing.JPanel(); styleBtn = new javax.swing.JButton(); clearStylesBtn = new javax.swing.JButton(); fontFaceCombo = new JComboBox(FontCheck.getFontList(false)); fontSizeCombo = new JComboBox(FontCheck.fontSizes); boldBtn = new javax.swing.JToggleButton(); italicBtn = new javax.swing.JToggleButton(); underlineBtn = new javax.swing.JToggleButton(); alLeftBtn = new javax.swing.JToggleButton(); alCenterBtn = new javax.swing.JToggleButton(); alRightBtn = new javax.swing.JToggleButton(); javax.swing.JLabel textColorLb = new javax.swing.JLabel(); textColorBtn = new edu.xtec.jclic.beans.ColorButton(); textColorBtn.setOptions(options); javax.swing.JLabel bgColorLb = new javax.swing.JLabel(); bgColorBtn = new edu.xtec.jclic.beans.ColorButton(); bgColorBtn.setOptions(options); setLayout(new java.awt.BorderLayout()); previewPanel.setPreferredSize(new java.awt.Dimension(780, 580)); textPane.setPreferredSize(new java.awt.Dimension(Activity.DEFAULT_WIDTH, Activity.DEFAULT_HEIGHT)); textScroll.setViewportView(textPane); previewPanel.add(textScroll); mainScroll.setViewportView(previewPanel); add(mainScroll, java.awt.BorderLayout.CENTER); actPanel.setLayout(new java.awt.GridBagLayout()); targetBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/text_target.gif"))); // NOI18N targetBtn.setToolTipText(options.getMsg("edit_text_act_target_toggle")); targetBtn.setBorder(new SmallButtonBorder(targetBtn, true)); targetBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); actPanel.add(targetBtn, gridBagConstraints); editTargetBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/text_target_edit.gif"))); // NOI18N editTargetBtn.setToolTipText(options.getMsg("edit_text_act_edit_target")); editTargetBtn.setBorder(new SmallButtonBorder(editTargetBtn, true)); editTargetBtn.setEnabled(false); editTargetBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); actPanel.add(editTargetBtn, gridBagConstraints); insertBoxBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/insert_box.gif"))); // NOI18N insertBoxBtn.setToolTipText(options.getMsg("edit_text_act_insertCell")); insertBoxBtn.setBorder(new SmallButtonBorder(prevScreenBtn, true)); insertBoxBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 8); actPanel.add(insertBoxBtn, gridBagConstraints); prevScreenBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/prev_screen.gif"))); // NOI18N prevScreenBtn.setToolTipText(options.getMsg("edit_text_act_prevScreen_title")); prevScreenBtn.setBorder(new SmallButtonBorder(prevScreenBtn, true)); prevScreenBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 8); actPanel.add(prevScreenBtn, gridBagConstraints); optionsBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/check.gif"))); // NOI18N optionsBtn.setToolTipText(options.getMsg("edit_text_act_check_bt")); optionsBtn.setBorder(new SmallButtonBorder(optionsBtn, true)); optionsBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 8); actPanel.add(optionsBtn, gridBagConstraints); typeBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/type.gif"))); // NOI18N typeBtn.setToolTipText(options.getMsg("edit_text_act_typeBtn")); typeBtn.setBorder(new SmallButtonBorder(typeBtn, true)); typeBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 8); actPanel.add(typeBtn, gridBagConstraints); widthLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_width.gif"))); // NOI18N widthLb.setLabelFor(widthEdit); widthLb.setText(":"); widthLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 2); actPanel.add(widthLb, gridBagConstraints); widthEdit.setToolTipText(options.getMsg("edit_act_width_tooltip")); widthEdit.setMax(999); widthEdit.setMin(50); widthEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); actPanel.add(widthEdit, gridBagConstraints); heightLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_height.gif"))); // NOI18N heightLb.setLabelFor(heightEdit); heightLb.setText(":"); heightLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 2); actPanel.add(heightLb, gridBagConstraints); heightEdit.setToolTipText(options.getMsg("edit_act_height_tooltip")); heightEdit.setMax(999); heightEdit.setMin(50); heightEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); actPanel.add(heightEdit, gridBagConstraints); ctrlPanel.addTab(options.getMsg("edit_text_act_content"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/content.gif")), actPanel); // NOI18N stylePanel.setLayout(new java.awt.GridBagLayout()); styleBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/doc_styles.gif"))); // NOI18N styleBtn.setToolTipText(options.getMsg("edit_text_act_editStylesBtn")); styleBtn.setBorder(new SmallButtonBorder(styleBtn, true)); styleBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); stylePanel.add(styleBtn, gridBagConstraints); clearStylesBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/doc_styles_clear.gif"))); // NOI18N clearStylesBtn.setToolTipText(options.getMsg("edit_text_act_clearStylesBtn")); clearStylesBtn.setBorder(new SmallButtonBorder(styleBtn, true)); clearStylesBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); stylePanel.add(clearStylesBtn, gridBagConstraints); fontFaceCombo.setEditable(true); fontFaceCombo.setPreferredSize(new java.awt.Dimension(120, fontFaceCombo.getPreferredSize().height)); fontFaceCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 2); stylePanel.add(fontFaceCombo, gridBagConstraints); fontSizeCombo.setEditable(true); fontSizeCombo.setPreferredSize(new java.awt.Dimension(50, fontSizeCombo.getPreferredSize().height)); fontSizeCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); stylePanel.add(fontSizeCombo, gridBagConstraints); boldBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/font_bold.gif"))); // NOI18N boldBtn.setToolTipText(options.getMsg("edit_font_bold")); boldBtn.setBorder(new SmallButtonBorder(boldBtn, true)); boldBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 2); stylePanel.add(boldBtn, gridBagConstraints); italicBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/font_italic.gif"))); // NOI18N italicBtn.setToolTipText(options.getMsg("edit_font_italic")); italicBtn.setBorder(new SmallButtonBorder(italicBtn, true)); italicBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); stylePanel.add(italicBtn, gridBagConstraints); underlineBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/font_underline.gif"))); // NOI18N underlineBtn.setToolTipText(options.getMsg("edit_font_underline")); underlineBtn.setBorder(new SmallButtonBorder(underlineBtn, true)); underlineBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); stylePanel.add(underlineBtn, gridBagConstraints); alignGrp.add(alLeftBtn); alLeftBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/al_left.gif"))); // NOI18N alLeftBtn.setToolTipText(options.getMsg("edit_text_align_left")); alLeftBtn.setBorder(new SmallButtonBorder(alLeftBtn, true)); alLeftBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 2); stylePanel.add(alLeftBtn, gridBagConstraints); alignGrp.add(alCenterBtn); alCenterBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/al_center.gif"))); // NOI18N alCenterBtn.setToolTipText(options.getMsg("edit_text_align_center")); alCenterBtn.setBorder(new SmallButtonBorder(alCenterBtn, true)); alCenterBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); stylePanel.add(alCenterBtn, gridBagConstraints); alignGrp.add(alRightBtn); alRightBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/al_right.gif"))); // NOI18N alRightBtn.setToolTipText(options.getMsg("edit_text_align_right")); alRightBtn.setBorder(new SmallButtonBorder(alRightBtn, true)); alRightBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 8); stylePanel.add(alRightBtn, gridBagConstraints); textColorLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/fg.gif"))); // NOI18N textColorLb.setText(":"); textColorLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 8, 2, 2); stylePanel.add(textColorLb, gridBagConstraints); textColorBtn.setToolTipText(options.getMsg("edit_act_textColor_tooltip")); textColorBtn.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 6); stylePanel.add(textColorBtn, gridBagConstraints); bgColorLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/bg.gif"))); // NOI18N bgColorLb.setText(":"); bgColorLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 6, 2, 2); stylePanel.add(bgColorLb, gridBagConstraints); bgColorBtn.setToolTipText(options.getMsg("edit_act_bgColor_tooltip")); bgColorBtn.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); stylePanel.add(bgColorBtn, gridBagConstraints); ctrlPanel.addTab(options.getMsg("edit_text_act_style"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/styles.gif")), stylePanel); // NOI18N add(ctrlPanel, java.awt.BorderLayout.NORTH); }// //GEN-END:initComponents protected TextActivityBase getTextActivity(){ return (TextActivityBase)getActivity(); } protected TextActivityBaseEditor getTextActivityEditor(){ return (TextActivityBaseEditor)getActivityEditor(); } public void setEnabled(boolean enabled){ super.setEnabled(enabled); textPane.setEnabled(enabled); widthEdit.setEnabled(enabled); heightEdit.setEnabled(enabled); fontFaceCombo.setEnabled(enabled); fontSizeCombo.setEnabled(enabled); boldBtn.setEnabled(enabled); italicBtn.setEnabled(enabled); underlineBtn.setEnabled(enabled); textColorBtn.setEnabled(enabled); bgColorBtn.setEnabled(enabled); targetBtn.setEnabled(enabled); alCenterBtn.setEnabled(enabled); alRightBtn.setEnabled(enabled); alLeftBtn.setEnabled(enabled); resizer.setEnabled(enabled); if(!enabled){ editTargetBtn.setEnabled(false); typeBtn.setEnabled(false); } } private static final Dimension DEFAULT_SIZE=new Dimension(TextActivityBase.DEFAULT_WIDTH, TextActivityBase.DEFAULT_HEIGHT); public void fillData() { TextActivityBaseEditor tabe=getTextActivityEditor(); TextActivityBase act = tabe==null ? null : tabe.getTextActivity(); typeBtn.setEnabled(tabe!=null && tabe.hasType()); DefaultStyledDocument doc = act==null ? new DefaultStyledDocument() : act.tad; // Workaround for JRE 1.4+, part 1: Save a clean copy of the default style attributes Style defaultStyle=doc.getStyle(StyleContext.DEFAULT_STYLE); AttributeSet as=defaultStyle.copyAttributes(); // textPane.setStyledDocument(doc); // // Workaround for JRE 1.4+, part 2: Restore lost attributes defaultStyle.addAttributes(as); doc.addDocumentListener(this); Dimension d = act==null ? DEFAULT_SIZE : act.getWindowSize(); if(act==null || act.tad.getLength()==0) textPane.setBounds(0, 0, d.width, d.height); widthEdit.setValue(d.width); heightEdit.setValue(d.height); textPane.setBackground(act==null ? Color.white : StyleConstants.getBackground(textPane.getStyle(StyleContext.DEFAULT_STYLE))); textScroll.setBounds(0, 0, d.width, d.height); resizer.setRect(textScroll.getBounds()); resizer.setEnabled(act!=null); if(act!=null){ JPanelActiveBox[] boxes=act.tad.getPanelBoxes(); for(int i=0; i=1){ fontSize=fs; StyleConstants.setFontSize(attr, fontSize); charAttr=true; } } else if(src==boldBtn){ StyleConstants.setBold(attr, boldBtn.isSelected()); charAttr=true; } else if(src==italicBtn){ StyleConstants.setItalic(attr, italicBtn.isSelected()); charAttr=true; } else if(src==underlineBtn){ StyleConstants.setUnderline(attr, underlineBtn.isSelected()); charAttr=true; } else if(src==textColorBtn){ StyleConstants.setForeground(attr, textColorBtn.getColor()); charAttr=true; } else if(src==targetBtn){ boolean b=targetBtn.isSelected(); TargetMarker tm = b ? createNewTarget() : ta.tad.tmb.getElementByOffset(xFinish, true); if(tm==null) return false; if(!b && !deleteTarget(tm)) return true; textPane.setCaretPosition(xStart); SwingUtilities.invokeLater(new Runnable(){ public void run(){ showAttributes(-1); } }); } else if(tabe.canEditTarget() && src==editTargetBtn){ tabe.editTarget(xFinish, options, this); //if(tabe.editTarget(xFinish, options, this)) // setModified(true); } else if(src==insertBoxBtn){ JPanelActiveBox jpab=tabe.createNewBox(xStart, options, this); if(jpab!=null){ jpab.catchMouseEvents=false; new Resizer(jpab, null, true, this); } } else if(src==optionsBtn){ tabe.editCheckOptions(options, this); } else if(src==typeBtn && tabe.hasType()){ tabe.editType(options, this); } else if(src==bgColorBtn){ if(len==0){ } else{ StyleConstants.setBackground(attr, bgColorBtn.getColor()); charAttr=true; } } else if(src==alLeftBtn || src==alCenterBtn || src==alRightBtn){ int align = src==alCenterBtn ? StyleConstants.ALIGN_CENTER : src==alRightBtn ? StyleConstants.ALIGN_RIGHT : StyleConstants.ALIGN_LEFT; StyleConstants.setAlignment(attr, align); paragraphAttr=true; } else if(src==styleBtn){ StyleContext sc=TextStyleEditorPanel.editStyleContext(options, ta.tad.styleContext, this); if(sc!=null){ try{ ta.setStyleContext(sc); setInitializing(true); fillData(); setInitializing(false); } catch(Exception ex){ System.err.println("error applying styles:\n"+ex); } } } else if(src==clearStylesBtn){ int d=options.getMessages().showQuestionDlg(this, "edit_text_act_clearStylesPrompt", null, "yn"); if(d==Messages.YES) try{ ta.setTextActivityDocument(ta.tad.getJDomElementWithoutStyles()); setInitializing(true); fillData(); setInitializing(false); } catch(Exception ex) { System.err.println("Error cleaning styles:\n"+ex); } } else if(src==prevScreenBtn){ if(TextPrevScreenEditorPanel.editPrevScreen(options, (TextActivityBaseEditor)getActivityEditor(), this)) setModified(true); } else if(src==widthEdit || src==heightEdit){ ta.setWindowSize(new Dimension(widthEdit.getValue(), heightEdit.getValue())); previewPanel.revalidate(); } changeCombos=false; if (paragraphAttr) ta.tad.setParagraphAttributes(xStart, len, attr, replace); if(charAttr){ if(len>0) ta.tad.setCharacterAttributes(xStart, len, attr, replace); else { MutableAttributeSet inputAttributes=textPane.getInputAttributes(); inputAttributes.addAttributes(attr); } } textPane.grabFocus(); changeCombos=true; result=true; } return result; } protected TargetMarker createNewTarget(){ TargetMarker result=null; TextActivityBaseEditor tabe=getTextActivityEditor(); if(tabe!=null){ int from=textPane.getSelectionStart(); int to=textPane.getSelectionEnd(); result=tabe.createNewTarget(from, to, options, this); } return result; } protected boolean deleteTarget(TargetMarker tm){ boolean result=false; TextActivityBaseEditor tabe=getTextActivityEditor(); if(tabe!=null) result=tabe.deleteTarget(tm, options, this); return result; } protected void showAttributes(int p) { TextActivityBaseEditor tabe=getTextActivityEditor(); if(tabe!=null){ TextActivityBase ta=tabe.getTextActivity(); skipUpdate = true; if(p<0) p=Math.max(0, textPane.getCaretPosition()); AttributeSet a = ta.tad.getCharacterElement(p).getAttributes(); String name = StyleConstants.getFontFamily(a); if(!name.equals(fontName) && changeCombos) { fontName = name; fontFaceCombo.setSelectedItem(name); } int size = StyleConstants.getFontSize(a); if (fontSize!=size && changeCombos) { fontSize = size; fontSizeCombo.setSelectedItem(Integer.toString(fontSize)); } boldBtn.setSelected(StyleConstants.isBold(a)); italicBtn.setSelected(StyleConstants.isItalic(a)); underlineBtn.setSelected(StyleConstants.isUnderline(a)); Color c=StyleConstants.getForeground(a); if(!c.equals(textColorBtn.getColor())) textColorBtn.setColor(c); c=StyleConstants.getBackground(a); if(!c.equals(bgColorBtn.getColor())) bgColorBtn.setColor(c); targetBtn.setSelected(a.isDefined(TextActivityDocument.TARGET)); editTargetBtn.setEnabled(tabe.canEditTarget() && a.isDefined(TextActivityDocument.TARGET)); int alignment=StyleConstants.getAlignment(a); alCenterBtn.setSelected(alignment==StyleConstants.ALIGN_CENTER); alRightBtn.setSelected(alignment==StyleConstants.ALIGN_RIGHT); alLeftBtn.setSelected(alignment!=StyleConstants.ALIGN_RIGHT && alignment!=StyleConstants.ALIGN_CENTER); skipUpdate = false; } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JToggleButton alCenterBtn; private javax.swing.JToggleButton alLeftBtn; private javax.swing.JToggleButton alRightBtn; private javax.swing.ButtonGroup alignGrp; private edu.xtec.jclic.beans.ColorButton bgColorBtn; private javax.swing.JToggleButton boldBtn; private javax.swing.JButton clearStylesBtn; private javax.swing.JButton editTargetBtn; private javax.swing.JComboBox fontFaceCombo; private javax.swing.JComboBox fontSizeCombo; private edu.xtec.jclic.beans.SmallIntEditor heightEdit; private javax.swing.JButton insertBoxBtn; private javax.swing.JToggleButton italicBtn; private javax.swing.JScrollPane mainScroll; private javax.swing.JButton optionsBtn; private javax.swing.JButton prevScreenBtn; private javax.swing.JPanel previewPanel; private javax.swing.JButton styleBtn; private javax.swing.JToggleButton targetBtn; private edu.xtec.jclic.beans.ColorButton textColorBtn; private javax.swing.JTextPane textPane; private javax.swing.JScrollPane textScroll; private javax.swing.JButton typeBtn; private javax.swing.JToggleButton underlineBtn; private edu.xtec.jclic.beans.SmallIntEditor widthEdit; // End of variables declaration//GEN-END:variables protected class PreviewPanel extends ResizerPanel{ public void doLayout(){ if(textScroll!=null){ TextActivityBase act=getTextActivity(); Dimension d=(act!=null ? act.getWindowSize() : new Dimension(Activity.DEFAULT_WIDTH, Activity.DEFAULT_HEIGHT)); textScroll.setBounds(0, 0, d.width, d.height); } } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/CompleteCheckPanel.java0000644000175000017500000000772611377161311025206 0ustar /* * File : FillInBlanksOptionsPanel.java * Created : 25-jun-2003 17:48 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CompleteCheckPanel extends javax.swing.JPanel { Options options; BasicEvaluatorPanel basicPanel; ComplexEvaluatorPanel complexPanel; CheckOptionsPanel optionsPanel; /** Creates new form FillInBlanksOptionsPanel */ public CompleteCheckPanel(Options options) { this.options=options; initComponents(); optionsPanel=(CheckOptionsPanel)m_optionsPanel; basicPanel=(BasicEvaluatorPanel)m_basicPanel; complexPanel=(ComplexEvaluatorPanel)m_complexPanel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; m_optionsPanel = new CheckOptionsPanel(options); m_basicPanel = new BasicEvaluatorPanel(options); m_complexPanel = new ComplexEvaluatorPanel(options); setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(m_optionsPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(m_basicPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(m_complexPanel, gridBagConstraints); }//GEN-END:initComponents public void setOptions(Complete comp){ optionsPanel.setOptions(comp); if(comp.ev instanceof BasicEvaluator) basicPanel.setEvaluator((BasicEvaluator)comp.ev); if(comp.ev instanceof ComplexEvaluator) complexPanel.setEvaluator((ComplexEvaluator)comp.ev); } public void collectData(Complete comp){ optionsPanel.collectData(comp); if(comp.ev instanceof BasicEvaluator) basicPanel.collectData((BasicEvaluator)comp.ev); if(comp.ev instanceof ComplexEvaluator) complexPanel.collectData((ComplexEvaluator)comp.ev); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel m_basicPanel; private javax.swing.JPanel m_complexPanel; private javax.swing.JPanel m_optionsPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextStyleEditorPanel.java0000644000175000017500000006106411377161311025607 0ustar /* * File : TextStyleEditorPanel.java * Created : 05-jun-2003 12:49 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import javax.swing.text.StyleConstants; import javax.swing.text.StyleContext; import javax.swing.text.Style; import edu.xtec.util.Options; import javax.swing.JComboBox; import edu.xtec.util.FontCheck; import edu.xtec.jclic.beans.ColorButton; import java.awt.Color; import java.util.HashMap; import java.awt.Component; import edu.xtec.util.StreamIO; import java.awt.Dimension; import javax.swing.text.DefaultStyledDocument; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextStyleEditorPanel extends javax.swing.JPanel implements java.beans.PropertyChangeListener, java.awt.event.ActionListener, javax.swing.event.ChangeListener { Options options; StyleContext sc; private static StyleContext emptySc; /** Creates new form TextStyleEditorPanel */ public TextStyleEditorPanel(Options options, StyleContext sc) { this.options=options; initComponents(); setStyleContext(sc); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel bgColorLb; javax.swing.JLabel colorsLb; javax.swing.JLabel errorBgLb; javax.swing.JLabel errorFgLb; javax.swing.JLabel errorLb; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel mainLb; javax.swing.JPanel previewFrame; javax.swing.JScrollPane previewScroll; javax.swing.JLabel tabLb; javax.swing.JLabel targetBgLb; javax.swing.JLabel targetFgLb; javax.swing.JLabel targetLb; javax.swing.JLabel textColorLb; mainLb = new javax.swing.JLabel(); fontFaceCombo = new JComboBox(FontCheck.getFontList(false)); fontSizeCombo = new JComboBox(FontCheck.fontSizes); boldBtn = new javax.swing.JToggleButton(); italicBtn = new javax.swing.JToggleButton(); underlineBtn = new javax.swing.JToggleButton(); colorsLb = new javax.swing.JLabel(); textColorLb = new javax.swing.JLabel(); textColorBtn = new edu.xtec.jclic.beans.ColorButton(); textColorBtn.setOptions(options); bgColorLb = new javax.swing.JLabel(); bgColorBtn = new edu.xtec.jclic.beans.ColorButton(); bgColorBtn.setOptions(options); tabLb = new javax.swing.JLabel(); tabSlider = new javax.swing.JSlider(); targetLb = new javax.swing.JLabel(); targetFgLb = new javax.swing.JLabel(); targetFgColor = new edu.xtec.jclic.beans.ColorButton(); targetFgColor.setOptions(options); targetBgLb = new javax.swing.JLabel(); targetBgColor = new edu.xtec.jclic.beans.ColorButton(); targetBgColor.setOptions(options); errorLb = new javax.swing.JLabel(); errorFgLb = new javax.swing.JLabel(); errorFgColor = new edu.xtec.jclic.beans.ColorButton(); errorFgColor.setOptions(options); errorBgLb = new javax.swing.JLabel(); errorBgColor = new edu.xtec.jclic.beans.ColorButton(); errorBgColor.setOptions(options); previewFrame = new javax.swing.JPanel(); previewScroll = new javax.swing.JScrollPane(); previewPanel = new javax.swing.JTextPane(); setLayout(new java.awt.GridBagLayout()); mainLb.setText(options.getMsg("edit_text_act_mainStyle")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(mainLb, gridBagConstraints); fontFaceCombo.setEditable(true); fontFaceCombo.setPreferredSize(new Dimension(125, fontFaceCombo.getPreferredSize().height)); fontFaceCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 4; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(fontFaceCombo, gridBagConstraints); fontSizeCombo.setEditable(true); fontSizeCombo.setPreferredSize(new Dimension(50, fontSizeCombo.getPreferredSize().height)); fontSizeCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); add(fontSizeCombo, gridBagConstraints); boldBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/font_bold.gif"))); boldBtn.setToolTipText(options.getMsg("edit_font_bold")); boldBtn.setPreferredSize(new java.awt.Dimension(27, 27)); boldBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(boldBtn, gridBagConstraints); italicBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/font_italic.gif"))); italicBtn.setToolTipText(options.getMsg("edit_font_italic")); italicBtn.setPreferredSize(new java.awt.Dimension(27, 27)); italicBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(italicBtn, gridBagConstraints); underlineBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/font_underline.gif"))); underlineBtn.setToolTipText(options.getMsg("edit_font_italic")); underlineBtn.setPreferredSize(new java.awt.Dimension(27, 27)); underlineBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); add(underlineBtn, gridBagConstraints); colorsLb.setText(options.getMsg("edit_text_act_colors")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(colorsLb, gridBagConstraints); textColorLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/fg.gif"))); textColorLb.setText(":"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(textColorLb, gridBagConstraints); textColorBtn.setToolTipText(options.getMsg("edit_act_textColor_tooltip")); textColorBtn.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(textColorBtn, gridBagConstraints); bgColorLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/bg.gif"))); bgColorLb.setText(":"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(bgColorLb, gridBagConstraints); bgColorBtn.setToolTipText(options.getMsg("edit_act_bgColor_tooltip")); bgColorBtn.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); add(bgColorBtn, gridBagConstraints); tabLb.setText(options.getMsg("edit_text_act_tabSize")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(tabLb, gridBagConstraints); tabSlider.setMinorTickSpacing(5); tabSlider.setPaintLabels(true); tabSlider.setPaintTicks(true); tabSlider.setMajorTickSpacing(10); tabSlider.setMaximum(50); tabSlider.setValue(12); tabSlider.addChangeListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(tabSlider, gridBagConstraints); targetLb.setText(options.getMsg("edit_text_act_targetStyle")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(targetLb, gridBagConstraints); targetFgLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/fg.gif"))); targetFgLb.setText(":"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(targetFgLb, gridBagConstraints); targetFgColor.setToolTipText(options.getMsg("edit_act_textColor_tooltip")); targetFgColor.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(targetFgColor, gridBagConstraints); targetBgLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/bg.gif"))); targetBgLb.setText(":"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(targetBgLb, gridBagConstraints); targetBgColor.setToolTipText(options.getMsg("edit_act_bgColor_tooltip")); targetBgColor.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); add(targetBgColor, gridBagConstraints); errorLb.setText(options.getMsg("edit_text_act_errorStyle")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(errorLb, gridBagConstraints); errorFgLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/fg.gif"))); errorFgLb.setText(":"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(errorFgLb, gridBagConstraints); errorFgColor.setToolTipText(options.getMsg("edit_act_textColor_tooltip")); errorFgColor.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(errorFgColor, gridBagConstraints); errorBgLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/bg.gif"))); errorBgLb.setText(":"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); add(errorBgLb, gridBagConstraints); errorBgColor.setToolTipText(options.getMsg("edit_act_bgColor_tooltip")); errorBgColor.addPropertyChangeListener(ColorButton.PROP_COLOR, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); add(errorBgColor, gridBagConstraints); previewFrame.setLayout(new java.awt.BorderLayout()); previewFrame.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_text_act_preview"))); previewScroll.setPreferredSize(new java.awt.Dimension(300, 100)); previewPanel.setEditable(false); previewScroll.setViewportView(previewPanel); previewFrame.add(previewScroll, java.awt.BorderLayout.CENTER); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(previewFrame, gridBagConstraints); }//GEN-END:initComponents private static StyleContext getEmptySc(){ if(emptySc==null){ emptySc=new StyleContext(); TextActivityDocument.checkStyleContext(emptySc); } return emptySc; } public void setStyleContext(StyleContext styleContext){ sc = (styleContext==null ? getEmptySc() : styleContext); TextActivityDocument.checkStyleContext(sc); Style defaultStyle=sc.getStyle(StyleContext.DEFAULT_STYLE); fontFaceCombo.setSelectedItem(StyleConstants.getFontFamily(defaultStyle)); fontSizeCombo.setSelectedItem(Integer.toString(StyleConstants.getFontSize(defaultStyle))); boldBtn.setSelected(StyleConstants.isBold(defaultStyle)); italicBtn.setSelected(StyleConstants.isItalic(defaultStyle)); underlineBtn.setSelected(StyleConstants.isUnderline(defaultStyle)); bgColorBtn.setColor(StyleConstants.getBackground(defaultStyle)); textColorBtn.setColor(StyleConstants.getForeground(defaultStyle)); int tabSpc=TextActivityDocument.DEFAULT_TAB; Object o=defaultStyle.getAttribute(TextActivityDocument.TABSPC); if(o!=null){ try{ tabSpc=Math.max(1, Math.min(Integer.parseInt(o.toString()), 50)); } catch(Exception ex){ // ??? } } tabSlider.setValue(tabSpc); Style targetStyle=sc.getStyle(TextActivityDocument.TARGET); targetBgColor.setColor(StyleConstants.getBackground(targetStyle)); targetFgColor.setColor(StyleConstants.getForeground(targetStyle)); Style errorStyle=sc.getStyle(TextActivityDocument.TARGET_ERROR); errorBgColor.setColor(StyleConstants.getBackground(errorStyle)); errorFgColor.setColor(StyleConstants.getForeground(errorStyle)); updatePreview(null); } public StyleContext getStyleContext(java.util.EventObject evt){ Object src=(evt==null ? null : evt.getSource()); Style defaultStyle=sc.getStyle(StyleContext.DEFAULT_STYLE); if(src==null || src==fontFaceCombo){ String fontFace=(String)fontFaceCombo.getSelectedItem(); if(fontFace!=null && fontFace.length()>0 && !fontFace.equals(StyleConstants.getFontFamily(defaultStyle))) StyleConstants.setFontFamily(defaultStyle, fontFace); } if(src==null || src==fontSizeCombo){ String fontSize=(String)fontSizeCombo.getSelectedItem(); if(fontSize!=null && fontSize.length()>0){ try{ int fs=Integer.parseInt(fontSize); if(fs!=StyleConstants.getFontSize(defaultStyle)) StyleConstants.setFontSize(defaultStyle, fs); } catch(Exception ex){ // ignore } } } if(src==null || src==boldBtn){ boolean bold=boldBtn.isSelected(); if(bold!=StyleConstants.isBold(defaultStyle)) StyleConstants.setBold(defaultStyle, bold); } if(src==null || src==italicBtn){ boolean italic=italicBtn.isSelected(); if(italic!=StyleConstants.isItalic(defaultStyle)) StyleConstants.setItalic(defaultStyle, italic); } if(src==null || src==underlineBtn){ boolean underline=underlineBtn.isSelected(); if(underline!=StyleConstants.isUnderline(defaultStyle)) StyleConstants.setUnderline(defaultStyle, underline); } if(src==null || src==bgColorBtn){ Color c=bgColorBtn.getColor(); if(!c.equals(StyleConstants.getBackground(defaultStyle))) StyleConstants.setBackground(defaultStyle, c); } if(src==null || src==textColorBtn){ Color c=textColorBtn.getColor(); if(!c.equals(StyleConstants.getForeground(defaultStyle))) StyleConstants.setForeground(defaultStyle, c); } if(src==null || src==tabSlider){ String tabSpc=Integer.toString(Math.max(1, tabSlider.getValue())); if(!tabSpc.equals(defaultStyle.getAttribute(TextActivityDocument.TABSPC))){ defaultStyle.removeAttribute(TextActivityDocument.TABSPC); defaultStyle.addAttribute(TextActivityDocument.TABSPC, tabSpc); } } Style targetStyle=sc.getStyle(TextActivityDocument.TARGET); if(src==null || src==targetFgColor){ Color c=targetFgColor.getColor(); if(!c.equals(StyleConstants.getForeground(targetStyle))) StyleConstants.setForeground(targetStyle, c); } if(src==null || src==targetBgColor){ Color c=targetBgColor.getColor(); if(!c.equals(StyleConstants.getBackground(targetStyle))) StyleConstants.setBackground(targetStyle, c); } Style errorStyle=sc.getStyle(TextActivityDocument.TARGET_ERROR); if(src==null || src==errorFgColor){ Color c=errorFgColor.getColor(); if(!c.equals(StyleConstants.getForeground(errorStyle))) StyleConstants.setForeground(errorStyle, c); } if(src==null || src==errorBgColor){ Color c=errorBgColor.getColor(); if(!c.equals(StyleConstants.getBackground(errorStyle))) StyleConstants.setBackground(errorStyle, c); } return sc; } public void actionPerformed(java.awt.event.ActionEvent evt) { updatePreview(evt); } public void propertyChange(java.beans.PropertyChangeEvent evt) { updatePreview(evt); } public void stateChanged(javax.swing.event.ChangeEvent evt) { if(evt!=null && evt.getSource()==tabSlider && !tabSlider.getValueIsAdjusting()) updatePreview(evt); } private void updatePreview(java.util.EventObject evt){ if(evt!=null) getStyleContext(evt); try{ Style defaultStyle=sc.getStyle(StyleContext.DEFAULT_STYLE); DefaultStyledDocument dsd; dsd=new DefaultStyledDocument((StyleContext)StreamIO.cloneObject(sc)); Object tabObj=defaultStyle.getAttribute(TextActivityDocument.TABSPC); if(tabObj!=null){ int tabSpc=Math.max(1, Integer.parseInt(tabObj.toString())); TextActivityDocument.setStyledDocumentTabSpc(tabSpc, dsd, sc); } StringBuffer sb=new StringBuffer(); for(int i=0; i<5; i++) sb.append("T").append(i).append("\t"); dsd.insertString(0, sb.append("\n").toString(), defaultStyle); for(int i=0; i<2; i++){ sb.setLength(0); sb.append(options.getMsg("edit_text_act_styleSample_default_start")).append(" "); dsd.insertString(dsd.getLength(), sb.toString(), defaultStyle); sb.setLength(0); sb.append(options.getMsg("edit_text_act_styleSample_target")); dsd.insertString(dsd.getLength(), sb.toString(), sc.getStyle(TextActivityDocument.TARGET)); sb.setLength(0); sb.append(" ").append(options.getMsg("edit_text_act_styleSample_default_fill")).append(" "); dsd.insertString(dsd.getLength(), sb.toString(), defaultStyle); sb.setLength(0); sb.append(options.getMsg("edit_text_act_styleSample_error")); dsd.insertString(dsd.getLength(), sb.toString(), sc.getStyle(TextActivityDocument.TARGET_ERROR)); sb.setLength(0); sb.append(" ").append(options.getMsg("edit_text_act_styleSample_default_end")).append("\n"); dsd.insertString(dsd.getLength(), sb.toString(), defaultStyle); } previewPanel.setStyledDocument(dsd); previewPanel.setBackground(StyleConstants.getBackground(defaultStyle)); } catch(Exception ex){ System.err.println("Internal error:\n"+ex); } } // Variables declaration - do not modify//GEN-BEGIN:variables private edu.xtec.jclic.beans.ColorButton bgColorBtn; private javax.swing.JToggleButton boldBtn; private edu.xtec.jclic.beans.ColorButton errorBgColor; private edu.xtec.jclic.beans.ColorButton errorFgColor; private javax.swing.JComboBox fontFaceCombo; private javax.swing.JComboBox fontSizeCombo; private javax.swing.JToggleButton italicBtn; private javax.swing.JTextPane previewPanel; private javax.swing.JSlider tabSlider; private edu.xtec.jclic.beans.ColorButton targetBgColor; private edu.xtec.jclic.beans.ColorButton targetFgColor; private edu.xtec.jclic.beans.ColorButton textColorBtn; private javax.swing.JToggleButton underlineBtn; // End of variables declaration//GEN-END:variables private static HashMap panels=new HashMap(1); public static StyleContext editStyleContext(Options options, StyleContext sc, Component parent){ StyleContext result=null; StyleContext clon=null; if(sc!=null){ try{ clon=(StyleContext)StreamIO.cloneObject(sc); } catch(Exception ex){ System.err.println("Internal error: cannot clone object: "+sc+"\n"+ex); } } TextStyleEditorPanel tsep=(TextStyleEditorPanel)panels.get(options); if(tsep==null){ tsep=new TextStyleEditorPanel(options, clon); panels.put(options, tsep); } else tsep.setStyleContext(clon); if(options.getMessages().showInputDlg(parent, tsep, "edit_style_title")) result=tsep.getStyleContext(null); //tsep.setStyleContext(getEmptySc()); return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextPrevScreenEditorPanel.java0000644000175000017500000002533511377161311026564 0ustar /* * File : TextPrevScreenEditorPanel.java * Created : 18-jun-2003 15:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; import java.util.HashMap; import java.awt.Component; import edu.xtec.jclic.boxes.ActiveBoxPreviewPanel; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.jclic.boxes.ActiveBoxContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextPrevScreenEditorPanel extends javax.swing.JPanel implements java.awt.event.ActionListener { Options options; ActiveBoxPreviewPanel abpp; TextActivityBaseEditor tabe; /** Creates new form TextPrevScreenEditorPanel */ public TextPrevScreenEditorPanel(Options options) { this.options=options; initComponents(); styleBtn.setOptions(options); abpp=(ActiveBoxPreviewPanel)prevMsgPanel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JScrollPane scroll; javax.swing.JLabel prevMsgLb; javax.swing.JLabel styleLb; java.awt.GridBagConstraints gridBagConstraints; mainGroup = new javax.swing.ButtonGroup(); btnNo = new javax.swing.JRadioButton(); btnOriginal = new javax.swing.JRadioButton(); btnSpecial = new javax.swing.JRadioButton(); scroll = new javax.swing.JScrollPane(); textEdit = new javax.swing.JTextPane(); styleLb = new javax.swing.JLabel(); styleBtn = new edu.xtec.jclic.beans.BoxBaseButton(); prevMsgLb = new javax.swing.JLabel(); prevMsgPanel = new ActiveBoxPreviewPanel(null); timeLb = new javax.swing.JLabel(); timeEdit = new edu.xtec.jclic.beans.SmallIntEditor(); setLayout(new java.awt.GridBagLayout()); setMinimumSize(new java.awt.Dimension(200, 300)); btnNo.setText(options.getMsg("edit_text_act_prevScreen_no")); mainGroup.add(btnNo); btnNo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(btnNo, gridBagConstraints); btnOriginal.setText(options.getMsg("edit_text_act_prevScreen_original")); mainGroup.add(btnOriginal); btnOriginal.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(btnOriginal, gridBagConstraints); btnSpecial.setText(options.getMsg("edit_text_act_prevScreen_special")); mainGroup.add(btnSpecial); btnSpecial.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(btnSpecial, gridBagConstraints); scroll.setPreferredSize(new java.awt.Dimension(200, 100)); scroll.setMinimumSize(new java.awt.Dimension(100, 100)); scroll.setViewportView(textEdit); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(scroll, gridBagConstraints); styleLb.setText(options.getMsg("edit_style_title")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(styleLb, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(styleBtn, gridBagConstraints); prevMsgLb.setText(options.getMsg("edit_act_msg_prev")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(prevMsgLb, gridBagConstraints); prevMsgPanel.setBorder(new javax.swing.border.EtchedBorder()); prevMsgPanel.setToolTipText(options.getMsg("edit_act_msg_prev_tooltip")); prevMsgPanel.setPreferredSize(new java.awt.Dimension(200, 40)); prevMsgPanel.setMinimumSize(new java.awt.Dimension(100, 40)); prevMsgPanel.setMaximumSize(new java.awt.Dimension(32767, 40)); prevMsgPanel.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { prevMsgPanelMouseClicked(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(prevMsgPanel, gridBagConstraints); timeLb.setText(options.getMsg("edit_text_act_prevScreen_time")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(12, 2, 2, 2); add(timeLb, gridBagConstraints); timeEdit.setMax(999); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(12, 2, 2, 2); add(timeEdit, gridBagConstraints); }//GEN-END:initComponents private void prevMsgPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_prevMsgPanelMouseClicked if(tabe!=null && !btnNo.isSelected()){ ActiveBoxContent abc=ActiveBoxContentEditor.getActiveBoxContent(abpp.getActiveBoxContent(), this, options, tabe.getMediaBagEditor(), abpp.getActiveBox()); if(abc!=null) abpp.setActiveBoxContent(abc); } }//GEN-LAST:event_prevMsgPanelMouseClicked public void setTextActivityBaseEditor(TextActivityBaseEditor tabe){ this.tabe=tabe; if(tabe!=null){ TextActivityBase tab=(TextActivityBase)tabe.getActivity(); if(!tab.prevScreen) btnNo.setSelected(true); else if(tab.prevScreenText==null) btnOriginal.setSelected(true); else btnSpecial.setSelected(true); textEdit.setText(tab.prevScreenText!=null ? tab.prevScreenText : ""); timeEdit.setValue(tab.prevScreenMaxTime); styleBtn.setBoxBase(tab.prevScreenStyle); ActiveBoxContent abc=tab.getMessages()[0]; if(abc!=null) abpp.setActiveBoxContent(abc); else{ ActiveBoxContent nabc=new ActiveBoxContent(); nabc.setBoxBase(new BoxBase()); abpp.setActiveBoxContent(nabc); } checkEnabled(); } } public void checkEnabled(){ textEdit.setEnabled(btnSpecial.isSelected()); styleBtn.setEnabled(btnSpecial.isSelected()); timeEdit.setEnabled(!btnNo.isSelected()); } public void actionPerformed(java.awt.event.ActionEvent ev) { checkEnabled(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup mainGroup; private edu.xtec.jclic.beans.SmallIntEditor timeEdit; private javax.swing.JRadioButton btnSpecial; private javax.swing.JTextPane textEdit; private edu.xtec.jclic.beans.BoxBaseButton styleBtn; private javax.swing.JPanel prevMsgPanel; private javax.swing.JRadioButton btnOriginal; private javax.swing.JLabel timeLb; private javax.swing.JRadioButton btnNo; // End of variables declaration//GEN-END:variables private static HashMap panels=new HashMap(1); public static boolean editPrevScreen(Options options, TextActivityBaseEditor tabe, Component parent){ TextPrevScreenEditorPanel tpsep=(TextPrevScreenEditorPanel)panels.get(options); if(tpsep==null){ tpsep=new TextPrevScreenEditorPanel(options); panels.put(options, tpsep); } tpsep.setTextActivityBaseEditor(tabe); boolean result=options.getMessages().showInputDlg(parent, tpsep, "edit_text_act_prevScreen_title"); if(result){ TextActivityBase tab=(TextActivityBase)tabe.getActivity(); tab.prevScreen=!tpsep.btnNo.isSelected(); if(tab.prevScreen){ tab.prevScreenText=tpsep.btnOriginal.isSelected() ? null : tpsep.textEdit.getText(); tab.prevScreenStyle=tpsep.styleBtn.getBoxBase(); tab.prevScreenMaxTime=tpsep.timeEdit.getValue(); tab.getMessages()[0]=tpsep.abpp.getActiveBox().getContent(); } else tab.getMessages()[0]=null; } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextTargetEditorPanel.form0000644000175000017500000006375611377161311025771 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/CheckOptionsPanel.java0000644000175000017500000001122311377161311025054 0ustar /* * File : TextOptionsPanel.java * Created : 25-jun-2003 17:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CheckOptionsPanel extends javax.swing.JPanel { Options options; /** Creates new form TextOptionsPanel */ public CheckOptionsPanel(Options options) { this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel checkButtonTextLb; btnPanel = new javax.swing.JPanel(); checkButtonChk = new javax.swing.JCheckBox(); checkButtonTextLb = new javax.swing.JLabel(); checkButtonTxt = new javax.swing.JTextField(); setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.Y_AXIS)); btnPanel.setLayout(new java.awt.GridBagLayout()); btnPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_text_act_checkButton"))); checkButtonChk.setText(options.getMsg("edit_text_act_checkButton_show")); checkButtonChk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { checkButtonChkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); btnPanel.add(checkButtonChk, gridBagConstraints); checkButtonTextLb.setText(options.getMsg("edit_text_act_checkButtonText")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); btnPanel.add(checkButtonTextLb, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); btnPanel.add(checkButtonTxt, gridBagConstraints); add(btnPanel); }//GEN-END:initComponents private void checkButtonChkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_checkButtonChkActionPerformed checkButtonTxt.setEnabled(checkButtonChk.isSelected()); }//GEN-LAST:event_checkButtonChkActionPerformed public void setOptions(TextActivityBase tab){ checkButtonChk.setSelected(tab.hasCheckButton); String s=tab.checkButtonText; if(s==null || s.length()<1) s=options.getMsg("edit_text_act_defaultCheckButtonText"); checkButtonTxt.setText(s); checkButtonTxt.setEnabled(checkButtonChk.isSelected()); } public void collectData(TextActivityBase tab){ tab.hasCheckButton=checkButtonChk.isSelected(); String s=checkButtonTxt.getText(); if(s==null || s.length()<1) s=options.getMsg("edit_text_act_defaultCheckButtonText"); tab.checkButtonText=s; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel btnPanel; private javax.swing.JCheckBox checkButtonChk; private javax.swing.JTextField checkButtonTxt; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/FillInBlanksEditor.java0000644000175000017500000000572611377161311025175 0ustar /* * File : FillInBlanksEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; import edu.xtec.util.Messages; import edu.xtec.util.Options; import java.awt.Component; import java.util.HashMap; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class FillInBlanksEditor extends TextActivityBaseEditor { /** Creates a new instance of FillInBlanksEditor */ public FillInBlanksEditor(FillInBlanks act) { super(act); } protected TargetMarker createNewTarget(int ifrom, int ito, Options options, Component parent){ TargetMarker tm=super.createNewTarget(ifrom, ito, options, parent); if(tm!=null){ tm.target=new TextTarget(getTextActivity().tad, from, to); if(options!=null && parent!=null && !editTarget(from, options, parent)){ deleteTarget(tm, null, null); } } return tm; } protected boolean deleteTarget(TargetMarker tm, Options options, Component parent){ int d=0; if(options!=null) d=options.getMessages().showQuestionDlg(parent, "edit_text_act_warnDeleteTarget", null, "yn"); return d==Messages.YES ? super.deleteTarget(tm, options, parent) : false; } protected boolean canEditTarget(){ return true; } protected static HashMap panelMap=new HashMap(1); protected void editCheckOptions(Options options, Component parent){ FillInBlanks fib=(FillInBlanks)getTextActivity(); if(fib!=null){ FillInBlanksCheckPanel checkPanel=(FillInBlanksCheckPanel)panelMap.get(options); if(checkPanel==null){ checkPanel=new FillInBlanksCheckPanel(options); panelMap.put(options, checkPanel); } checkPanel.setOptions(fib); if(options.getMessages().showInputDlg(parent, checkPanel, "edit_text_act_check_title")){ checkPanel.collectData(fib); setModified(true); } } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/CheckOptionsPanel.form0000644000175000017500000001007711377161311025104 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextStyleEditorPanel.form0000644000175000017500000007224311377161311025632 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/OrderTypePanel.form0000644000175000017500000000526311377161311024431 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/OrderCheckPanel.java0000644000175000017500000000626411377161311024505 0ustar /* * File : FillInBlanksOptionPanel.java * Created : 25-jun-2003 17:48 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class OrderCheckPanel extends javax.swing.JPanel { Options options; BasicEvaluatorPanel basicPanel; CheckOptionsPanel optionsPanel; /** Creates new form FillInBlanksOptionsPanel */ public OrderCheckPanel(Options options) { this.options=options; initComponents(); optionsPanel=(CheckOptionsPanel)m_optionsPanel; basicPanel=(BasicEvaluatorPanel)m_basicPanel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; m_optionsPanel = new CheckOptionsPanel(options); m_basicPanel = new BasicEvaluatorPanel(options); setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(m_optionsPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(m_basicPanel, gridBagConstraints); }//GEN-END:initComponents public void setOptions(Order ord){ optionsPanel.setOptions(ord); if(ord.ev instanceof BasicEvaluator) basicPanel.setEvaluator((BasicEvaluator)ord.ev); } public void collectData(Order ord){ optionsPanel.collectData(ord); if(ord.ev instanceof BasicEvaluator) basicPanel.collectData((BasicEvaluator)ord.ev); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel m_basicPanel; private javax.swing.JPanel m_optionsPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/ComplexEvaluatorPanel.form0000644000175000017500000001506011377161311026002 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/ComplexEvaluatorPanel.java0000644000175000017500000001324211377161311025760 0ustar /* * File : ComplexEvaluatorPanel.java * Created : 25-jun-2003 13:07 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ComplexEvaluatorPanel extends javax.swing.JPanel { Options options; /** Creates new form ComplexEvaluatorPanel */ public ComplexEvaluatorPanel(Options options) { this.options=options; initComponents(); } public void setEvaluator(ComplexEvaluator ev){ detailChk.setSelected(ev.detail); detailSteps.setValue(ev.checkSteps); detailField.setValue(ev.checkScope); checkEnabled(); } public void collectData(ComplexEvaluator ev){ ev.detail=detailChk.isSelected(); ev.checkSteps=detailSteps.getValue(); ev.checkScope=detailField.getValue(); } protected void checkEnabled(){ detailSteps.setEnabled(detailChk.isSelected()); detailField.setEnabled(detailChk.isSelected()); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel detailLb; javax.swing.JLabel detailStepsLb; javax.swing.JLabel detailFieldLb; java.awt.GridBagConstraints gridBagConstraints; detailChk = new javax.swing.JCheckBox(); detailLb = new javax.swing.JLabel(); detailStepsLb = new javax.swing.JLabel(); detailSteps = new edu.xtec.jclic.beans.SmallIntEditor(); detailFieldLb = new javax.swing.JLabel(); detailField = new edu.xtec.jclic.beans.SmallIntEditor(); setLayout(new java.awt.GridBagLayout()); setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_text_act_advancedCorrectionOptions"))); detailChk.setText(options.getMsg("edit_text_act_checkDetail")); detailChk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { detailChkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(detailChk, gridBagConstraints); detailLb.setText(options.getMsg("edit_text_act_checkDetail_params")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(detailLb, gridBagConstraints); detailStepsLb.setText(options.getMsg("edit_text_act_checkDetail_steps")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(detailStepsLb, gridBagConstraints); detailSteps.setMax(99); detailSteps.setMin(1); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(detailSteps, gridBagConstraints); detailFieldLb.setText(options.getMsg("edit_text_act_checkDetail_field")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(detailFieldLb, gridBagConstraints); detailField.setMax(99); detailField.setMin(1); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(detailField, gridBagConstraints); }//GEN-END:initComponents private void detailChkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_detailChkActionPerformed checkEnabled(); }//GEN-LAST:event_detailChkActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private edu.xtec.jclic.beans.SmallIntEditor detailField; private javax.swing.JCheckBox detailChk; private edu.xtec.jclic.beans.SmallIntEditor detailSteps; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/FillInBlanksCheckPanel.java0000644000175000017500000001370311377161311025736 0ustar /* * File : FillInBlanksOptionsPanel.java * Created : 25-jun-2003 17:48 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class FillInBlanksCheckPanel extends javax.swing.JPanel { Options options; BasicEvaluatorPanel basicPanel; ComplexEvaluatorPanel complexPanel; CheckOptionsPanel optionsPanel; /** Creates new form FillInBlanksOptionsPanel */ public FillInBlanksCheckPanel(Options options) { this.options=options; initComponents(); optionsPanel=(CheckOptionsPanel)m_optionsPanel; basicPanel=(BasicEvaluatorPanel)m_basicPanel; complexPanel=(ComplexEvaluatorPanel)m_complexPanel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; m_optionsPanel = new CheckOptionsPanel(options); m_basicPanel = new BasicEvaluatorPanel(options); progressPanel = new javax.swing.JPanel(); autoJumpChk = new javax.swing.JCheckBox(); forceOkChk = new javax.swing.JCheckBox(); m_complexPanel = new ComplexEvaluatorPanel(options); setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(m_optionsPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(m_basicPanel, gridBagConstraints); progressPanel.setLayout(new java.awt.GridBagLayout()); progressPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_text_act_checkProgress"))); autoJumpChk.setText(options.getMsg("edit_text_act_checkAutoJump")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); progressPanel.add(autoJumpChk, gridBagConstraints); forceOkChk.setText(options.getMsg("edit_text_act_checkForceOk")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); progressPanel.add(forceOkChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(progressPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(m_complexPanel, gridBagConstraints); }//GEN-END:initComponents public void setOptions(FillInBlanks fib){ autoJumpChk.setSelected(fib.autoJump); forceOkChk.setSelected(fib.forceOkToAdvance); optionsPanel.setOptions(fib); if(fib.ev instanceof BasicEvaluator) basicPanel.setEvaluator((BasicEvaluator)fib.ev); if(fib.ev instanceof ComplexEvaluator) complexPanel.setEvaluator((ComplexEvaluator)fib.ev); } public void collectData(FillInBlanks fib){ fib.autoJump=autoJumpChk.isSelected(); fib.forceOkToAdvance=forceOkChk.isSelected(); optionsPanel.collectData(fib); if(fib.ev instanceof BasicEvaluator) basicPanel.collectData((BasicEvaluator)fib.ev); if(fib.ev instanceof ComplexEvaluator) complexPanel.collectData((ComplexEvaluator)fib.ev); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel m_basicPanel; private javax.swing.JCheckBox autoJumpChk; private javax.swing.JCheckBox forceOkChk; private javax.swing.JPanel m_complexPanel; private javax.swing.JPanel m_optionsPanel; private javax.swing.JPanel progressPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextActivityEditorTextPanel.form0000644000175000017500000012555611377161311027201 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/FillInBlanksCheckPanel.form0000644000175000017500000001346411377161311025764 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/IdentifyTypePanel.form0000644000175000017500000000355111377161311025127 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/BasicEvaluatorPanel.java0000644000175000017500000001045711377161311025377 0ustar /* * File : BasicEvaluatorPanel.java * Created : 25-jun-2003 12:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BasicEvaluatorPanel extends javax.swing.JPanel { Options options; /** Creates new form BasicEvaluatorPanel */ public BasicEvaluatorPanel(Options options) { this.options=options; initComponents(); } public void setEvaluator(BasicEvaluator ev){ caseChk.setSelected(ev.checkCase); accentsChk.setSelected(ev.checkAccents); punctChk.setSelected(ev.checkPunctuation); doubleSpcChk.setSelected(ev.checkDoubleSpaces); } public void collectData(BasicEvaluator ev){ ev.checkCase=caseChk.isSelected(); ev.checkAccents=accentsChk.isSelected(); ev.checkPunctuation=punctChk.isSelected(); ev.checkDoubleSpaces=doubleSpcChk.isSelected(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; caseChk = new javax.swing.JCheckBox(); accentsChk = new javax.swing.JCheckBox(); punctChk = new javax.swing.JCheckBox(); doubleSpcChk = new javax.swing.JCheckBox(); setLayout(new java.awt.GridBagLayout()); setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_text_act_checkOptions"))); caseChk.setText(options.getMsg("edit_text_act_checkCase")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(caseChk, gridBagConstraints); accentsChk.setText(options.getMsg("edit_text_act_checkAccents")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(accentsChk, gridBagConstraints); punctChk.setText(options.getMsg("edit_text_act_checkPunct")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(punctChk, gridBagConstraints); doubleSpcChk.setText(options.getMsg("edit_text_act_checkDoubleSpc")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(doubleSpcChk, gridBagConstraints); }//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox punctChk; private javax.swing.JCheckBox caseChk; private javax.swing.JCheckBox doubleSpcChk; private javax.swing.JCheckBox accentsChk; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/WrittenAnswerEditor.java0000644000175000017500000000265111377161311025473 0ustar /* * File : WrittenAnswerEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class WrittenAnswerEditor extends ActivityEditor { /** Creates a new instance of SimpleAssociationEditor */ public WrittenAnswerEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.DOUBLE_REL_ALT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/OrderTypePanel.java0000644000175000017500000001066411377161311024410 0ustar /* * File : OrderTypePanel.java * Created : 26-jun-2003 16:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; import java.util.HashMap; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class OrderTypePanel extends javax.swing.JPanel { Options options; protected static final HashMap panels=new HashMap(1); /** Creates new form OrderTypePanel */ public OrderTypePanel(Options options) { this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents bGroup = new javax.swing.ButtonGroup(); orderParagraphsBtn = new javax.swing.JRadioButton(); orderWordsBtn = new javax.swing.JRadioButton(); amongstParChk = new javax.swing.JCheckBox(); setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.Y_AXIS)); orderParagraphsBtn.setText(options.getMsg("edit_text_act_orderParagraphs")); bGroup.add(orderParagraphsBtn); orderParagraphsBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { orderParagraphsBtnActionPerformed(evt); } }); add(orderParagraphsBtn); orderWordsBtn.setText(options.getMsg("edit_text_act_orderWords")); bGroup.add(orderWordsBtn); orderWordsBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { orderWordsBtnActionPerformed(evt); } }); add(orderWordsBtn); amongstParChk.setText(options.getMsg("edit_text_act_order_amongstPar")); amongstParChk.setEnabled(false); add(amongstParChk); }//GEN-END:initComponents private void orderParagraphsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_orderParagraphsBtnActionPerformed amongstParChk.setEnabled(!orderParagraphsBtn.isSelected()); }//GEN-LAST:event_orderParagraphsBtnActionPerformed private void orderWordsBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_orderWordsBtnActionPerformed amongstParChk.setEnabled(orderWordsBtn.isSelected()); }//GEN-LAST:event_orderWordsBtnActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton orderWordsBtn; private javax.swing.JCheckBox amongstParChk; private javax.swing.ButtonGroup bGroup; private javax.swing.JRadioButton orderParagraphsBtn; // End of variables declaration//GEN-END:variables public static boolean editOrder(Order ord, Options options, Component parent){ OrderTypePanel otp=(OrderTypePanel)panels.get(options); if(otp==null){ otp=new OrderTypePanel(options); panels.put(options, otp); } boolean p=(ord.type==Order.ORDER_PARAGRAPHS); otp.orderParagraphsBtn.setSelected(p); otp.orderWordsBtn.setSelected(!p); otp.amongstParChk.setSelected(ord.amongParagraphs); otp.amongstParChk.setEnabled(!p); boolean result=options.getMessages().showInputDlg(parent, otp, "edit_text_act_type_title"); if(result){ ord.type=otp.orderParagraphsBtn.isSelected() ? Order.ORDER_PARAGRAPHS : Order.ORDER_WORDS; ord.amongParagraphs=otp.amongstParChk.isSelected(); } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/OrderCheckPanel.form0000644000175000017500000000422311377161311024520 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/CompleteCheckPanel.form0000644000175000017500000000567311377161311025227 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/TextTargetEditorPanel.java0000644000175000017500000005553511377161311025743 0ustar /* * File : TextTargetEditorPanel.java * Created : 23-mai-2003 10:25 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; import edu.xtec.jclic.beans.TextListEditor; import edu.xtec.jclic.beans.SmallIntEditor; import edu.xtec.util.Resizer; import edu.xtec.jclic.boxes.JPanelActiveBox; import java.awt.Rectangle; import javax.swing.JComponent; import java.awt.Point; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.ActiveBoxContentEditor; import java.awt.Dimension; import java.util.Arrays; import edu.xtec.util.ResizerPanel; import edu.xtec.jclic.bags.MediaBagEditor; import java.awt.CardLayout; import java.util.HashMap; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextTargetEditorPanel extends javax.swing.JPanel implements java.beans.PropertyChangeListener, java.awt.event.ActionListener, Resizer.ResizerListener { protected Options options; TextTarget textTarget; //protected boolean modified; JPanelActiveBox jpab; Resizer resizer; //TextActivityEditorTextPanel parentPanel; MediaBagEditor mbe; protected static final int[] popValues={TextTarget.NO_INFO, TextTarget.INFO_ALWAYS, TextTarget.INFO_ON_ERROR, TextTarget.INFO_ON_DEMAND}; protected static final String[] popKeys={"no", "always", "onError", "onDemand"}; protected String[] popItems; protected static final HashMap panels=new HashMap(1); /** Creates new form TextTargetPanel */ public TextTargetEditorPanel(Options options, MediaBagEditor mbe) { this.options=options; this.mbe=mbe; popItems=new String[popKeys.length]; for(int i=0; i0); maxTimeEditor.setEnabled(textTarget!=null && v>0); onlyPlayChk.setEnabled(textTarget!=null && v>0); resizer.setEnabled(textTarget!=null && v>0); if(typeCombo.isEnabled() && typeCombo.getSelectedIndex()>0) ((CardLayout)cardPanel.getLayout()).last(cardPanel); else ((CardLayout)cardPanel.getLayout()).first(cardPanel); } public void collectData(){ if(textTarget!=null /*&& isModified()*/){ String[] answers=answerListEditor.getTextList(); if(answers.length>0) textTarget.answer=answers; if(listChk.isSelected()){ String[] options=listEditor.getTextList(); if(options.length>0){ textTarget.isList=true; textTarget.options=options; } } else{ textTarget.isList=false; textTarget.options=null; textTarget.numIniChars=Math.max(1, iniLenEditor.getValue()); textTarget.maxLenResp=Math.max(1, maxLenEditor.getValue()); textTarget.iniText=edu.xtec.util.StrUtils.nullableString(iniText.getText()); String s=fillingCh.getText(); textTarget.iniChar= (s!=null && s.length()>0) ? s.charAt(0) : '_'; } /* textTarget.infoMode = popupAlwaysOption.isSelected() ? TextTarget.INFO_ALWAYS : popupOnErrorOption.isSelected() ? TextTarget.INFO_ON_ERROR : popupOnDemandOption.isSelected() ? TextTarget.INFO_ON_DEMAND : TextTarget.NO_INFO; **/ textTarget.infoMode=popValues[Math.max(0, typeCombo.getSelectedIndex())]; textTarget.popupDelay=delayEditor.getValue(); textTarget.popupMaxTime=maxTimeEditor.getValue(); textTarget.onlyPlay=onlyPlayChk.isSelected(); if(textTarget.infoMode!=TextTarget.NO_INFO){ textTarget.popupContent=jpab.getActiveBoxContent(); } } } public void resizeObjectTo(Rectangle r, JComponent jc){ if(jc==jpab){ jpab.setBounds(r.x, r.y, r.width, r.height); Dimension d=new Dimension(r.width, r.height); jpab.getActiveBoxContent().setDimension(d); jpab.setPreferredSize(d); jpab.setMaximumSize(d); //setModified(true); } } public void editObject(Rectangle r, JComponent jc, Point pt){ if(jc==jpab){ ActiveBoxContent abc=ActiveBoxContentEditor.getActiveBoxContent( jpab.ab.getContent(), jpab, options, mbe, jpab.ab); if(abc!=null){ Dimension d=abc.getDimension(); jpab.setActiveBoxContent(abc); if(d!=null) jpab.setBounds(0, 0, d.width, d.height); //setModified(true); } } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JLabel answerLb; private edu.xtec.jclic.beans.TextListEditor answerListEditor; private javax.swing.JPanel cardPanel; private edu.xtec.jclic.beans.SmallIntEditor delayEditor; private javax.swing.JLabel delayLb; private javax.swing.JTextField fillingCh; private javax.swing.JLabel fillingChLb; private edu.xtec.jclic.beans.SmallIntEditor iniLenEditor; private javax.swing.JLabel iniLenLb; private javax.swing.JTextField iniText; private javax.swing.JLabel iniTextLb; private javax.swing.JCheckBox listChk; private edu.xtec.jclic.beans.TextListEditor listEditor; private edu.xtec.jclic.beans.SmallIntEditor maxLenEditor; private edu.xtec.jclic.beans.SmallIntEditor maxTimeEditor; private javax.swing.JLabel maxTimeLb; private javax.swing.JLabel maxlenLb; private javax.swing.JCheckBox onlyPlayChk; private javax.swing.ButtonGroup popupOptions; private javax.swing.JPanel popupPreview; private javax.swing.JComboBox typeCombo; // End of variables declaration//GEN-END:variables public static boolean editTextTarget(TextTarget tt, Options options, MediaBagEditor mbe, Component parent){ TextTargetEditorPanel ttep=(TextTargetEditorPanel)panels.get(options); if(ttep==null){ ttep=new TextTargetEditorPanel(options, mbe); panels.put(options, ttep); } ttep.setTextTarget(tt); boolean result=options.getMessages().showInputDlg(parent, ttep, "edit_text_act_target"); if(result) ttep.collectData(); ttep.setTextTarget(null); return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/IdentifyTypePanel.java0000644000175000017500000000604211377161311025103 0ustar /* * File : OrderTypePanel.java * Created : 26-jun-2003 16:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.Options; import java.util.HashMap; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class IdentifyTypePanel extends javax.swing.JPanel { Options options; protected static final HashMap panels=new HashMap(1); /** Creates new form OrderTypePanel */ public IdentifyTypePanel(Options options) { this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents bGroup = new javax.swing.ButtonGroup(); identWordsBtn = new javax.swing.JRadioButton(); identCharsBtn = new javax.swing.JRadioButton(); setLayout(new javax.swing.BoxLayout(this, javax.swing.BoxLayout.Y_AXIS)); identWordsBtn.setText(options.getMsg("edit_text_act_identWords")); bGroup.add(identWordsBtn); add(identWordsBtn); identCharsBtn.setText(options.getMsg("edit_text_act_identChars")); bGroup.add(identCharsBtn); add(identCharsBtn); }//GEN-END:initComponents // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton identWordsBtn; private javax.swing.ButtonGroup bGroup; private javax.swing.JRadioButton identCharsBtn; // End of variables declaration//GEN-END:variables public static boolean editIdentify(Identify ident, Options options, Component parent){ IdentifyTypePanel idp=(IdentifyTypePanel)panels.get(options); if(idp==null){ idp=new IdentifyTypePanel(options); panels.put(options, idp); } boolean p=(ident.type==Identify.IDENTIFY_WORDS); idp.identCharsBtn.setSelected(!p); idp.identWordsBtn.setSelected(p); boolean result=options.getMessages().showInputDlg(parent, idp, "edit_text_act_type_title"); if(result) ident.type=idp.identWordsBtn.isSelected() ? Identify.IDENTIFY_WORDS : Identify.IDENTIFY_CHARS; return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/text/CompleteEditor.java0000644000175000017500000000405511377161311024427 0ustar /* * File : CompleteEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; import java.util.HashMap; import edu.xtec.util.Options; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CompleteEditor extends TextActivityBaseEditor { /** Creates a new instance of SimpleAssociationEditor */ public CompleteEditor(Complete act) { super(act); } protected static HashMap panelMap=new HashMap(1); protected void editCheckOptions(Options options, Component parent){ Complete cmp=(Complete)getTextActivity(); if(cmp!=null){ CompleteCheckPanel checkPanel=(CompleteCheckPanel)panelMap.get(options); if(checkPanel==null){ checkPanel=new CompleteCheckPanel(options); panelMap.put(options, checkPanel); } checkPanel.setOptions(cmp); if(options.getMessages().showInputDlg(parent, checkPanel, "edit_text_act_check_title")){ checkPanel.collectData(cmp); setModified(true); } } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/memory/0000755000175000017500000000000011377161311021165 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/memory/MemoryGameEditor.java0000644000175000017500000000306611377161311025246 0ustar /* * File : MemoryGameEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.memory; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MemoryGameEditor extends ActivityEditor { // CANVIAR SISTEMA: EN COMPTES DE GRID 0 i GRID 1, GRID 0 i GRID 2 /** Creates a new instance of ExchangePuzzleEditor */ public MemoryGameEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ //panel.addInternalPanel(ActivityEditorPanel.GRID_A, null, null); panel.addInternalPanel(ActivityEditorPanel.SINGLE_ALT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/panels/0000755000175000017500000000000011377161311021137 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/panels/IdentifyEditor.java0000644000175000017500000000277311377161311024735 0ustar /* * File : IdentifyEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class IdentifyEditor extends ActivityEditor { /** Creates a new instance of ExchangePuzzleEditor */ public IdentifyEditor(Activity act) { super(act); if(act instanceof Identify && act.abc[0]!=null) act.abc[0].defaultIdValue=0; } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.SINGLE_BOOL_ALT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/panels/ExploreEditor.java0000644000175000017500000000274311377161311024575 0ustar /* * File : ExchangePuzzleEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ExploreEditor extends ActivityEditor { /** Creates a new instance of ExchangePuzzleEditor */ public ExploreEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ //panel.addInternalPanel(ActivityEditorPanel.GRID_A, null, null); panel.addInternalPanel(ActivityEditorPanel.DOUBLE_REL, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/panels/InformationScreenEditor.java0000644000175000017500000000265411377161311026605 0ustar /* * File : InformationScreenEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class InformationScreenEditor extends ActivityEditor { /** Creates a new instance of ExchangePuzzleEditor */ public InformationScreenEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.SINGLE, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/textGrid/0000755000175000017500000000000011377161311021447 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/textGrid/CrossWordEditor.java0000644000175000017500000000255211377161311025412 0ustar /* * File : CrossWordEditor.java * Created : 28-apr-2004 18:06 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.textGrid; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.ActivityEditorPanel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CrossWordEditor extends ActivityEditor{ /** Creates a new instance of CrossWordEditor */ public CrossWordEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.TEXTGRID_CRW, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/textGrid/WordSearchEditor.java0000644000175000017500000000255711377161311025533 0ustar /* * File : WordSearchEditor.java * Created : 20-apr-2004 11:54 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.textGrid; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.ActivityEditorPanel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class WordSearchEditor extends ActivityEditor{ /** Creates a new instance of WordSearchEditor */ public WordSearchEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.TEXTGRID_ALT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/associations/0000755000175000017500000000000011377161311022354 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/associations/SimpleAssociationEditor.java0000644000175000017500000000267111377161311030022 0ustar /* * File : SimpleAssociationEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.associations; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class SimpleAssociationEditor extends ActivityEditor { /** Creates a new instance of SimpleAssociationEditor */ public SimpleAssociationEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.DOUBLE_ALT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/associations/ComplexAssociationEditor.java0000644000175000017500000000255511377161311030201 0ustar /* * File : ComplexAssociationEditor.java * Created : 10-oct-2002 15:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.associations; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ComplexAssociationEditor extends SimpleAssociationEditor { /** Creates a new instance of ComplexAssociationEditor */ public ComplexAssociationEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.DOUBLE_REL_ALT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/puzzles/0000755000175000017500000000000011377161311021371 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/puzzles/ExchangePuzzleEditor.java0000644000175000017500000000264411377161311026345 0ustar /* * File : ExchangePuzzleEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.puzzles; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ExchangePuzzleEditor extends ActivityEditor { /** Creates a new instance of ExchangePuzzleEditor */ public ExchangePuzzleEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.SINGLE, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/puzzles/HolePuzzleEditor.java0000644000175000017500000000263711377161311025514 0ustar /* * File : HolePuzzleEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.puzzles; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class HolePuzzleEditor extends ActivityEditor { /** Creates a new instance of ExchangePuzzleEditor */ public HolePuzzleEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.SINGLE_LAYOUT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/activities/puzzles/DoublePuzzleEditor.java0000644000175000017500000000264511377161311026036 0ustar /* * File : DoublePuzzleEditor.java * Created : 10-oct-2002 14:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.puzzles; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.boxes.ActiveBagContentEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class DoublePuzzleEditor extends ActivityEditor { /** Creates a new instance of ExchangePuzzleEditor */ public DoublePuzzleEditor(Activity act) { super(act); } protected void createPanels(ActivityEditorPanel panel){ panel.addInternalPanel(ActivityEditorPanel.SINGLE_LAYOUT, null, null); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditorPanel.java0000644000175000017500000002166311377161311022307 0ustar /* * File : ActivityEditorPanel.java * Created : 10-jun-2002 10:15 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import java.awt.Container; import java.util.Vector; import java.util.Iterator; import java.awt.Component; import java.util.HashMap; import edu.xtec.jclic.boxes.ActiveBagContentEditor; import edu.xtec.jclic.activities.text.TextActivityEditorTextPanel; import edu.xtec.jclic.bags.ActivityBagElementEditor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityEditorPanel extends EditorPanel { Vector internalPanels; String currentActivityClass; HashMap panelStore; public static final String SINGLE="SINGLE", // puzzles and info SINGLE_ALT="SINGLE_ALT", // memory SINGLE_BOOL_ALT="SINGLE_BOOL_ALT", // identify SINGLE_LAYOUT="SINGLE_LAYOUT", // double puzzle DOUBLE_ALT="DOUBLE_ALT", // simple ass. DOUBLE_REL="DOUBLE_REL", // explore DOUBLE_REL_ALT="DOUBLE_REL_ALT", // complex ass. written answ. TEXTGRID_ALT="TEXTGRID_ALT", // word search TEXTGRID_CRW="TEXTGRID_CRW", // crossword TEXT_BASE="TEXT_BASE"; /** Creates new form MenuEditorPanel */ public ActivityEditorPanel(Options options) { super(options); internalPanels=new Vector(4); panelStore=new HashMap(); //ActivityBagElementEditor.createActions(options); initComponents(); //addInternalPanel(new ActivityEditorDescPanel(options, this)); postInit(250, false, false); setEnabled(false); } public void setEnabled(boolean enabled){ super.setEnabled(enabled); Iterator it=internalPanels.iterator(); while(it.hasNext()){ ((ActivityEditorInternalPanel)it.next()).setEnabled(enabled); } } public void addInternalPanel(ActivityEditorInternalPanel panel, String title, String tooltip){ if(title==null) title=panel.getTitle(); if(tooltip==null) tooltip=panel.getTooltip(); tabbedPane.addTab(title, panel.getIcon(), panel, tooltip); internalPanels.add(panel); } public void addInternalPanel(String storeKey, String title, String tooltip){ ActivityEditorInternalPanel panel=(ActivityEditorInternalPanel)panelStore.get(storeKey); if(panel==null){ if(SINGLE.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.SINGLE))); else if(SINGLE_LAYOUT.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.SINGLE_LAYOUT))); else if(SINGLE_ALT.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.SINGLE_ALT))); else if(SINGLE_BOOL_ALT.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.SINGLE_BOOL_ALT))); else if(DOUBLE_ALT.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.DOUBLE_ALT))); else if(DOUBLE_REL.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.DOUBLE_REL))); else if(DOUBLE_REL_ALT.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.DOUBLE_REL_ALT))); else if(TEXTGRID_ALT.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.TEXTGRID_ALT))); else if(TEXTGRID_CRW.equals(storeKey)) panelStore.put(storeKey, (panel=new ActiveBagContentEditor(this, ActiveBagContentEditor.TEXTGRID_CRW))); else if(TEXT_BASE.equals(storeKey)) panelStore.put(storeKey, (panel=new TextActivityEditorTextPanel(this))); } if(panel!=null) addInternalPanel(panel, title, tooltip); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents mainPanel = new javax.swing.JPanel(); tabbedPane = new javax.swing.JTabbedPane(); setLayout(new java.awt.BorderLayout()); setToolTipText(options.getMsg("edit_act_descriptionTab_tooltip")); mainPanel.setLayout(new java.awt.BorderLayout()); mainPanel.add(tabbedPane, java.awt.BorderLayout.CENTER); add(mainPanel, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents protected synchronized void setEditor(Editor e){ //System.out.println("SET EDITOR"); if(e instanceof ActivityEditor){ ActivityEditor ae=(ActivityEditor)e; MediaBagEditor mbe=ae.getMediaBagEditor(); if(mbe!=null && Utils.lowMemoryCondition()) mbe.getMediaBag().clearData(); String s=ae.getActivity().getClass().getName(); if(!s.equals(currentActivityClass)){ int cs=Math.max(tabbedPane.getSelectedIndex(), 0); //tabbedPane.setSelectedIndex(0); int c=tabbedPane.getTabCount(); for(int i=c-1; i>=ActivityEditor.COMMON_PANELS; i--){ //internalPanels.remove(i); //tabbedPane.remove(i); tabbedPane.remove((Component)internalPanels.remove(i)); } ae.createPanels(this); final int csx=Math.min(cs, internalPanels.size()-1); //tabbedPane.setSelectedIndex(csx); javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){ if(internalPanels.size()>=csx) tabbedPane.setSelectedIndex(csx); } }); } currentActivityClass=s; } super.setEditor(e); } public boolean checkIfEditorValid(Editor e) { return e instanceof ActivityEditor; } protected ActivityEditor getActivityEditor(){ return (ActivityEditor)editor; } protected Activity getActivity(){ if(editor==null) return null; else return getActivityEditor().getActivity(); } /* public void clear() { super.clear(); Iterator it=internalPanels.iterator(); while(it.hasNext()) ((ActivityEditorInternalPanel)it.next()).clear(); } */ public void fillData() { Activity act=getActivity(); if(act!=null){ Iterator it=internalPanels.iterator(); while(it.hasNext()) ((ActivityEditorInternalPanel)it.next()).fillData(); } } public void saveData(){ Activity act=getActivity(); if(act!=null){ Iterator it=internalPanels.iterator(); while(it.hasNext()) ((ActivityEditorInternalPanel)it.next()).saveData(); getActivityEditor().saveData(); } } protected javax.swing.Icon getIcon(){ return ActivityEditor.getIcon(); } protected String getTitle(){ return "activity"; //return options.getMsg("menu_dlg_title"); } public void focusLost(java.awt.event.FocusEvent focusEvent) { if(editor!=null) editor.collectData(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel mainPanel; private javax.swing.JTabbedPane tabbedPane; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/AppletHtmlCreator.form0000644000175000017500000005670311377161311022003 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/0000755000175000017500000000000011377161311016601 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/RepeaterButton.java0000644000175000017500000000015611377161311022411 0ustar package edu.xtec.jclic.beans; // TO REMOVE public class RepeaterButton extends javax.swing.JButton{ } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/RollPanel.java0000644000175000017500000001104611377161311021336 0ustar /* * File : RollPanel.java * Created : 10-mar-2004 09:50 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class RollPanel extends javax.swing.JPanel { /** Creates new form RollPanel */ public RollPanel() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents mainPanel = new javax.swing.JPanel(); titleBarPanel = new javax.swing.JPanel(); rollBtn = new javax.swing.JToggleButton(); titleLb = new javax.swing.JLabel(); separator = new javax.swing.JSeparator(); setLayout(new java.awt.BorderLayout()); setBorder(new javax.swing.border.EtchedBorder()); add(mainPanel, java.awt.BorderLayout.CENTER); titleBarPanel.setLayout(new java.awt.BorderLayout()); titleBarPanel.setBackground(edu.xtec.util.LFUtil.getColor("TableHeader.background", getBackground())); rollBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/panel_opened.gif"))); rollBtn.setBorder(null); rollBtn.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/panel_closed.gif"))); rollBtn.setFocusPainted(false); rollBtn.setContentAreaFilled(false); rollBtn.setBorderPainted(false); rollBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { rollBtnActionPerformed(evt); } }); titleBarPanel.add(rollBtn, java.awt.BorderLayout.WEST); titleLb.setText("title"); titleLb.setForeground(edu.xtec.util.LFUtil.getColor("TableHeader.foreground", getForeground())); titleLb.setFont(edu.xtec.util.LFUtil.getFont("TableHeader.font", getFont())); titleBarPanel.add(titleLb, java.awt.BorderLayout.CENTER); titleBarPanel.add(separator, java.awt.BorderLayout.SOUTH); add(titleBarPanel, java.awt.BorderLayout.NORTH); }//GEN-END:initComponents private void rollBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_rollBtnActionPerformed mainPanel.setVisible(!rollBtn.isSelected()); separator.setVisible(!rollBtn.isSelected()); }//GEN-LAST:event_rollBtnActionPerformed /** Getter for property mainPanel. * @return Value of property mainPanel. * */ public javax.swing.JPanel getMainPanel() { return mainPanel; } public void setTitle(String title){ titleLb.setText(title); } public String getTitle(){ return titleLb.getText(); } public void setIcon(javax.swing.Icon icon){ titleLb.setIcon(icon); } public javax.swing.Icon getIcon(){ return titleLb.getIcon(); } public boolean isOpened(){ return !rollBtn.isSelected(); } public void setOpened(boolean value){ rollBtn.setSelected(!value); rollBtnActionPerformed(null); } public void setToolTipText(String text){ super.setToolTipText(text); mainPanel.setToolTipText(text); titleBarPanel.setToolTipText(text); titleLb.setToolTipText(text); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel mainPanel; private javax.swing.JToggleButton rollBtn; private javax.swing.JSeparator separator; private javax.swing.JPanel titleBarPanel; private javax.swing.JLabel titleLb; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/GradientButton.java0000644000175000017500000000537011377161311022402 0ustar /* * File : GradientButton.java * Created : 27-sep-2002 11:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.util.Options; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.Rectangle; import edu.xtec.jclic.misc.Gradient; import edu.xtec.jclic.misc.GradientEditor; import javax.swing.AbstractButton; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class GradientButton extends NullableObject{ public static final String PROP_GRADIENT="gradient"; /** Creates a new instance of GradientPanel */ public GradientButton() { super(); } protected String getObjectType(){ return PROP_GRADIENT; } public Gradient getGradient(){ return (Gradient)getObject(); } public void setGradient(Gradient g){ setObject(g); } protected AbstractButton buildButton() { return new JButton(){ public void paintComponent(Graphics g){ super.paintComponent(g); Gradient gradient=getGradient(); if(gradient!=null){ Rectangle r=new Rectangle(0, 0, getWidth(), getHeight()); r.grow(-3, -3); Graphics2D g2=(Graphics2D)g; RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(edu.xtec.jclic.Constants.DEFAULT_RENDERING_HINTS); //if(gradient.hasTransparency()) // super.paintComponent(g); gradient.paint(g2, r); g2.setRenderingHints(rh); } } }; } protected Object createObject() { return new Gradient(); } protected Object editObject(Object o){ Gradient g=(Gradient)(o==null ? createObject() : o); return GradientEditor.getGradient(g, this, options); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/CheckBoxTree.java0000644000175000017500000000763111377161311021761 0ustar /* * File : CheckBoxTree.java * Created : 15-jul-2004 14:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import java.awt.Color; import java.awt.Component; import java.awt.Graphics; import java.awt.Point; import javax.swing.JCheckBox; import javax.swing.JTree; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.TreePath; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CheckBoxTree extends javax.swing.JTree { /** Creates new form BeanForm */ public CheckBoxTree() { initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents setCellRenderer(new CellRenderer()); addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(java.awt.event.MouseEvent evt) { treeMouseClicked(evt); } }); }//GEN-END:initComponents private void treeMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_treeMouseClicked Point pt=evt.getPoint(); TreePath tp=getPathForLocation(pt.x, pt.y); if(tp!=null && tp.getLastPathComponent() instanceof CheckBoxTreeObject){ ((CheckBoxTreeObject)tp.getLastPathComponent()).switchSelected(); repaint(getPathBounds(tp)); } }//GEN-LAST:event_treeMouseClicked class CellRenderer extends DefaultTreeCellRenderer{ JCheckBox checkBox=new JCheckBox(){ public void paint(Graphics g){ if(hasFocus){ Color bsColor=getBorderSelectionColor(); if(bsColor!=null){ g.setColor(bsColor); g.drawRect(0, 0, getWidth()-1, getHeight()-1); } } super.paint(g); } }; public CellRenderer(){ super(); checkBox.setBackground(getBackground()); checkBox.setOpaque(isOpaque()); checkBox.setFont(getFont()); checkBox.setForeground(getForeground()); } public Component getTreeCellRendererComponent(JTree tree, Object value, boolean selected, boolean expanded, boolean leaf, int row, boolean hasFocus){ Component result=super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus); if(value instanceof CheckBoxTreeObject){ CheckBoxTreeObject cho=(CheckBoxTreeObject)value; checkBox.setText(cho.getLabel()); checkBox.setSelected(cho.isSelected()); checkBox.setEnabled(tree.isEnabled()); checkBox.setComponentOrientation(tree.getComponentOrientation()); result=checkBox; } return result; } } // Variables declaration - do not modify//GEN-BEGIN:variables // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/CheckBoxTreeObject.java0000644000175000017500000000440211377161311023101 0ustar /* * File : CheckBoxTreeObject.java * Created : 15-jul-2004 14:14 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import javax.swing.tree.DefaultMutableTreeNode; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CheckBoxTreeObject extends DefaultMutableTreeNode{ protected String label; protected boolean selected; /** Creates a new instance of CheckBoxTreeObject */ public CheckBoxTreeObject(String label, boolean selected) { super(); this.label=label; this.selected=selected; } /** Creates a new instance of CheckBoxTreeObject */ public CheckBoxTreeObject() { this("", false); } public void switchSelected(){ selected=!selected; } public String toString(){ return label==null ? "" : label; } /** * Getter for property selecetd. * @return Value of property selected. */ public boolean isSelected() { return selected; } /** * Setter for property selected. * @param selected New value of property selected. */ public void setSelected(boolean selected) { this.selected = selected; } /** * Getter for property label. * @return Value of property label. */ public java.lang.String getLabel() { return label; } /** * Setter for property label. * @param label New value of property label. */ public void setLabel(java.lang.String label) { this.label = label; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/Compass.java0000644000175000017500000000665111377161311021061 0ustar /* * File : Compass.java * Created : 04-nov-2002 09:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import java.beans.*; import javax.swing.JPanel; import javax.swing.ButtonGroup; import javax.swing.JToggleButton; import javax.swing.ImageIcon; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Compass extends JPanel { public static final String PROP_DIRECTION = "direction"; public static final String[] BT_NAMES={"nw", "n", "ne", "w", "c", "e", "sw", "s", "se"}; public static final java.awt.Dimension BT_DIMENSION=new java.awt.Dimension(16, 16); private JToggleButton[] buttons; private int direction; /** Creates new Compass */ public Compass() { super(new java.awt.GridLayout(3, 3)); setOpaque(false); direction=-1; ActionListener lst=new ActionListener(){ public void actionPerformed(ActionEvent ev){ String c=ev.getActionCommand(); for(int i=0; i<9; i++){ if(BT_NAMES[i].equals(c)){ setDirection(i); break; } } } }; ButtonGroup bg=new ButtonGroup(); buttons=new JToggleButton[9]; for(int i=0; i<9; i++){ JToggleButton btn=new JToggleButton(new ImageIcon(getClass().getResource("/edu/xtec/resources/icons/"+BT_NAMES[i]+".gif"))); btn.setPreferredSize(BT_DIMENSION); bg.add(btn); btn.setActionCommand(BT_NAMES[i]); btn.addActionListener(lst); btn.setFocusPainted(false); add(btn); buttons[i]=btn; } } public int getDirection() { return direction; } public void setDirection(int value) { int oldValue = direction; direction = value; firePropertyChange(PROP_DIRECTION, oldValue, direction); if(value>=0){ if(buttons[value]!=null && !buttons[value].isSelected()) buttons[value].setSelected(true); } else if(oldValue>=0) buttons[oldValue].setSelected(false); } public int[] getDoubleDirection(){ int[] result=new int[2]; int v=(direction<0 ? 4 : direction); result[0]=v%3; result[1]=v/3; return result; } public void setDoubleDirection(int[] value){ if(value==null || value.length!=2 || value[0]<0 || value[1]<0) setDirection(-1); else setDirection(3*value[1]+value[0]); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/RollPanel.form0000644000175000017500000001206711377161311021364 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/SmallIntEditor.java0000644000175000017500000002057711377161311022351 0ustar /* * File : SmallIntEditor.java * Created : 02-dec-2002 16:14 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import javax.swing.*; import java.awt.BorderLayout; import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.awt.Toolkit; import java.text.NumberFormat; import javax.swing.text.Document; import javax.swing.text.PlainDocument; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import java.text.ParseException; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class SmallIntEditor extends JPanel implements ActionListener{ public static final String PROP_VALUE = "value"; private JButton plusButton, minusButton; private NumberField textFld; private int max, min, lastValue; private Toolkit toolkit; private NumberFormat integerFormatter; private int[] values; boolean editable; /** Creates a new instance of SmallIntEditor */ public SmallIntEditor() { //super(new BorderLayout()); //super(new FlowLayout(FlowLayout.RIGHT, 0, 0)); setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); setOpaque(false); editable=true; toolkit = Toolkit.getDefaultToolkit(); integerFormatter = NumberFormat.getNumberInstance(); integerFormatter.setParseIntegerOnly(true); max=10; min=0; plusButton=new JButton(new ImageIcon(getClass().getResource("/edu/xtec/resources/icons/plus.gif"))); //plusButton=new RepeaterButton(new ImageIcon(getClass().getResource("/edu/xtec/resources/icons/plus.gif"))); plusButton.setMnemonic('+'); plusButton.addActionListener(this); plusButton.setPreferredSize(new java.awt.Dimension(16, 16)); //minusButton=new RepeaterButton(new ImageIcon(getClass().getResource("/edu/xtec/resources/icons/minus.gif"))); minusButton=new JButton(new ImageIcon(getClass().getResource("/edu/xtec/resources/icons/minus.gif"))); minusButton.setMnemonic('-'); minusButton.addActionListener(this); minusButton.setPreferredSize(new java.awt.Dimension(16, 16)); textFld=new NumberField(4); textFld.setColumns(4); //textFld.setPreferredSize(new java.awt.Dimension(32, 16)); textFld.setHorizontalAlignment(JTextField.CENTER); textFld.setText("0"); //textFld.setEnabled(false); textFld.addActionListener(this); add(minusButton, BorderLayout.WEST); add(textFld, BorderLayout.CENTER); add(plusButton, BorderLayout.EAST); } public void setToolTipText(String text){ super.setToolTipText(text); textFld.setToolTipText(text); plusButton.setToolTipText(text); minusButton.setToolTipText(text); } public void actionPerformed(ActionEvent ev){ int oldValue=lastValue; boolean btPlus=(plusButton==ev.getSource()); boolean btMinus=(minusButton==ev.getSource()); int delta= btPlus ? 1 : btMinus ? -1 : 0; if(delta!=0 && values!=null && values.length>0){ int p=0; while(pvalues[p]) p++; if(delta<0 || (p=0 && pmin); plusButton.setEnabled(isEnabled() && value0){ try { retVal = integerFormatter.parse(textFld.getText()).intValue(); } catch (ParseException e) { // This should never happen because insertString allows // only properly formatted data to get in the field. toolkit.beep(); e.printStackTrace(); } } return correctValue(retVal); } public void setValue(int value) { lastValue=correctValue(value); textFld.setText(integerFormatter.format(lastValue)); } public int correctValue(int value){ return Math.min(max, Math.max(min, value)); } private void checkValueRanges(){ int v=0; try { v = integerFormatter.parse(textFld.getText()).intValue(); } catch (ParseException e) { } if(vmax) setValue(correctValue(v)); } public void setEditColumns(int columns){ textFld.setColumns(columns); } public int getEditColumns(){ return textFld.getColumns(); } /** Getter for property max. * @return Value of property max. */ public int getMax() { return max; } /** Setter for property max. * @param max New value of property max. */ public void setMax(int max) { this.max = max; } /** Getter for property min. * @return Value of property min. */ public int getMin() { return min; } /** Setter for property min. * @param min New value of property min. */ public void setMin(int min) { this.min = min; } /** * Getter for property values. * @return Value of property values. */ public int[] getValues() { return this.values; } /** * Setter for property values. * @param values New value of property values. */ public void setValues(int[] values) { this.values = values; } /** * Getter for property editable. * @return Value of property editable. */ public boolean isEditable() { return editable; } /** * Setter for property editable. * @param editable New value of property editable. */ public void setEditable(boolean editable) { this.editable = editable; checkEnabled(); } class NumberField extends JTextField { public NumberField(int columns) { super(columns); } protected Document createDefaultModel() { return new WholeNumberDocument(); } protected class WholeNumberDocument extends PlainDocument { public void insertString(int offs, String str, AttributeSet a) throws BadLocationException { char[] source = str.toCharArray(); char[] result = new char[source.length]; int j = 0; for (int i = 0; i < result.length; i++) { if (Character.isDigit(source[i]) || source[i]=='-') result[j++] = source[i]; else { toolkit.beep(); } } super.insertString(offs, new String(result, 0, j), a); checkEnabled(); } public void remove(int offs, int len) throws BadLocationException{ super.remove(offs, len); checkEnabled(); } } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/ImgButton.java0000644000175000017500000000562011377161311021357 0ustar /* * File : ImgButton.java * Created : 27-sep-2002 15:34 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.util.Options; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.Dimension; import java.awt.Insets; import javax.swing.border.Border; import java.awt.Rectangle; import edu.xtec.jclic.bags.MediaBag; import edu.xtec.jclic.bags.MediaBagSelector; import edu.xtec.jclic.misc.Utils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ImgButton extends NullableObject{ public static final String PROP_IMG_NAME="imageName"; MediaBagEditor mbe; /** Creates a new instance of ImgPanel */ public ImgButton() { super(); } protected String getObjectType(){ return PROP_IMG_NAME; } public void setMediaBagEditor(MediaBagEditor mbe){ this.mbe=mbe; } public String getImgName(){ return (String)getObject(); } public void setImgName(String name){ setObject(name); } public void setObject(Object value) { super.setObject(value); if(nullValue || object==null || mbe==null) button.setIcon(null); else{ try{ Rectangle r=button.getVisibleRect(); int w=r.width-4; int h=r.height-4; if(w>0 && h>0){ String s=(String)object; MediaBag mb=mbe.getMediaBag(); button.setIcon(mb.getImageElement(s).getThumbNail(w, h, mb.getProject().getFileSystem())); } } catch(Exception ex){ System.err.println("Error reading image:\n"+ex); } } } protected Object createObject() { return null; } protected Object editObject(Object o){ if(options==null || mbe==null) return null; //return MediaBagEditorPanel.getMediaName((String)o, options, this, mbe, Utils.ALL_IMAGES_FF); return MediaBagSelector.getMediaName((String)o, options, this, mbe, Utils.ALL_IMAGES_FF); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/NullableObject.java0000644000175000017500000001235711377161311022341 0ustar /* * File : NullableObject.java * Created : 04-nov-2002 15:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import java.beans.*; import javax.swing.JPanel; import java.awt.event.ActionListener; import javax.swing.JCheckBox; import javax.swing.JButton; import java.awt.Dimension; import java.awt.event.ActionEvent; import edu.xtec.util.Options; import javax.swing.AbstractButton; import javax.swing.Icon; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class NullableObject extends JPanel implements ActionListener { public static final String PROP_CUSTOM_OBJECT = "customObject"; protected Object object; protected JCheckBox check; protected boolean nullValue; protected AbstractButton button; protected Options options; protected boolean modified; public static final int PANEL_HEIGHT=21, CHECK_WIDTH=14, BUTTON_WIDTH=31; public static final Dimension btDim=new Dimension(BUTTON_WIDTH, PANEL_HEIGHT); public static final Dimension checkDim=new Dimension(CHECK_WIDTH, PANEL_HEIGHT); public static final Dimension panelDim=new Dimension(BUTTON_WIDTH+CHECK_WIDTH, PANEL_HEIGHT); /** Creates new NullableObject */ public NullableObject() { super(new java.awt.BorderLayout()); setOpaque(false); nullValue=true; //setOpaque(false); check=new JCheckBox(); check.setPreferredSize(checkDim); check.setMinimumSize(checkDim); check.setFocusPainted(false); //check.setOpaque(false); check.setSelected(false); add(check, java.awt.BorderLayout.WEST); button=buildButton(); button.setPreferredSize(btDim); button.setMinimumSize(btDim); button.setFocusPainted(false); add(button, java.awt.BorderLayout.CENTER); check.addActionListener(this); button.addActionListener(this); } protected String getObjectType(){ return PROP_CUSTOM_OBJECT; } protected Object createObject(){ return new Object(); } protected AbstractButton buildButton(){ return new JButton(); } public boolean isModified(){ return modified; } public void setModified(boolean modified){ this.modified=modified; } protected Object editObject(Object o){ return o; }; public void setToolTipText(String text){ super.setToolTipText(text); if(button!=null) button.setToolTipText(text); if(check!=null) check.setToolTipText(text); } public void setEnabled(boolean enabled){ super.setEnabled(enabled); if(button!=null) button.setEnabled(enabled); if(check!=null) check.setEnabled(enabled); } public void setName(String name){ if(check!=null) check.setText(name); } public void setText(String text){ if(check!=null) check.setText(text); } public void setOptions(Options options){ this.options=options; } public Options getOptions(){ return options; } public Object getObject() { return nullValue ? null : object; } public void clear(){ setObject((object=null)); } public void setObject(Object value) { nullValue=(value==null); if(!nullValue) object=value; check.setSelected(!nullValue); button.repaint(); } public void changeObject(Object o){ Object oldValue=getObject(); setObject(o); Object newValue=getObject(); if((oldValue==null && newValue!=null) || (oldValue!=null && !oldValue.equals(newValue))) firePropertyChange(getObjectType(), oldValue, getObject()); } public void setIcon(Icon icon){ button.setIcon(icon); } public Icon getIcon(){ return button.getIcon(); } public void actionPerformed(ActionEvent ev){ if(ev!=null){ if(button.equals(ev.getSource())){ modified=true; Object o=editObject(object); if(o!=null) changeObject(o); } else if(check.equals(ev.getSource())){ changeObject(check.isSelected() ? (object==null ? createObject() : object) : null); modified=true; } } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/EventSoundsButton.java0000644000175000017500000000631411377161311023121 0ustar /* * File : EventSoundsButton.java * Created : 27-sep-2002 15:34 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.util.Options; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.Dimension; import java.awt.Insets; import javax.swing.border.Border; import java.awt.Rectangle; import edu.xtec.jclic.bags.MediaBag; import edu.xtec.jclic.media.EventSounds; import edu.xtec.jclic.media.EventSoundsEditorPanel; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.JDomUtility; import edu.xtec.util.ResourceManager; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class EventSoundsButton extends NullableObject{ public static final String PROP_EVSND_NAME="eventSounds"; MediaBagEditor mbe; EventSounds evs=new EventSounds(null); /** Creates a new instance of ImgPanel */ public EventSoundsButton() { super(); button.setIcon(ResourceManager.getImageIcon("icons/audio_off.gif")); } protected String getObjectType(){ return PROP_EVSND_NAME; } public void setMediaBagEditor(MediaBagEditor mbe){ this.mbe=mbe; } public EventSounds getEventSounds(){ //return (EventSounds)getObject(); evs.setEnabled(getObject()==null ? JDomUtility.FALSE : JDomUtility.DEFAULT); return evs; } public void setEventSounds(EventSounds evs){ if(evs==null) evs=new EventSounds(null); this.evs=evs; setObject(evs.getEnabled()==JDomUtility.FALSE ? null : evs); } public void setObject(Object value) { boolean preStatus=(object!=null); super.setObject(value); boolean status=(object!=null); if(preStatus!=status){ button.setIcon(ResourceManager.getImageIcon(status ? "icons/audio_on.gif" : "icons/audio_off.gif")); } if(value instanceof EventSounds) evs=(EventSounds)value; evs.setEnabled(status ? JDomUtility.DEFAULT : JDomUtility.FALSE); } protected Object createObject() { evs.setEnabled(JDomUtility.DEFAULT); return evs; } protected Object editObject(Object o){ if(options==null || mbe==null) return null; //return MediaBagEditorPanel.getMediaName((String)o, options, this, mbe, Utils.ALL_IMAGES_FF); return EventSoundsEditorPanel.getEventSounds(evs, options, this, mbe); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/ColorButton.java0000644000175000017500000000517411377161311021725 0ustar /* * File : ColorButton.java * Created : 26-sep-2002 13:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import javax.swing.JButton; import java.awt.event.ActionListener; import edu.xtec.util.Options; import java.awt.Component; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ColorButton extends JButton { Options options; public static final String PROP_COLOR="color"; public static final int BT_PREF_WIDTH=31, BT_PREF_HEIGHT=21; public static final int SAMPLE_WIDTH=21, SAMPLE_HEIGHT=14; Color color; /** Creates a new instance of ColorButton */ public ColorButton() { super(); setPreferredSize(new java.awt.Dimension(BT_PREF_WIDTH, BT_PREF_HEIGHT)); setMinimumSize(getPreferredSize()); setMaximumSize(getPreferredSize()); setColor(Color.lightGray); } public void setOptions(Options options){ this.options=options; } protected void fireActionPerformed(ActionEvent event){ if(options!=null){ Color c=AlphaColorChooserPanel.chooseColor(options, this, getColor()); if(c!=null) changeColor(c); } super.fireActionPerformed(event); } public void setColor(Color c){ color=c; repaint(); } public Color getColor(){ return color; } public void changeColor(Color c){ Color oldColor=getColor(); setColor(c); if(!oldColor.equals(c)) firePropertyChange(PROP_COLOR, oldColor, c); } public void paintComponent(Graphics g){ super.paintComponent(g); java.awt.Rectangle r=new java.awt.Rectangle(3, 3, getWidth()-6, getHeight()-6); g.setColor(color); g.fillRect(r.x, r.y, r.width, r.height); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/ImgPanel.java0000644000175000017500000000357711377161311021154 0ustar /* * File : ImgPanel.java * Created : 17-feb-2004 14:57 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import java.awt.Color; import java.awt.Dimension; import java.awt.Image; import java.awt.Rectangle; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionListener; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.Scrollable; import javax.swing.SwingConstants; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ImgPanel extends JLabel { private boolean missingPicture = false; public ImgPanel(Image img){ this(new ImageIcon(img)); } public ImgPanel(ImageIcon i) { super(i); if (i == null) { missingPicture = true; setText("No picture found."); setHorizontalAlignment(CENTER); setOpaque(true); //setBackground(Color.white); } setAutoscrolls(true); //enable synthetic drag events } public Dimension getPreferredSize() { if (missingPicture) { return new Dimension(320, 480); } else { return super.getPreferredSize(); } } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/AlphaColorChooserPanel.java0000644000175000017500000001576211377161311024006 0ustar /* * File : AlphaColorChooserPanel.java * Created : 25-sep-2002 16:51 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import javax.swing.colorchooser.ColorSelectionModel; import java.awt.Color; import javax.swing.JColorChooser; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JDialog; import edu.xtec.util.Options; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class AlphaColorChooserPanel extends javax.swing.colorchooser.AbstractColorChooserPanel { protected javax.swing.JColorChooser currentChooser = null; protected Options options; /** Creates new form AlphaColorChooserPanel */ public AlphaColorChooserPanel(Options options) { super(); this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel alphaLabel; java.awt.GridBagConstraints gridBagConstraints; alphaSlider = new javax.swing.JSlider(); alphaLabel = new javax.swing.JLabel(); alphaTxt = new javax.swing.JTextField(); setLayout(new java.awt.GridBagLayout()); alphaSlider.setMajorTickSpacing(50); alphaSlider.setMaximum(255); alphaSlider.setMinorTickSpacing(10); alphaSlider.setPaintLabels(true); alphaSlider.setPaintTicks(true); alphaSlider.setToolTipText(options.getMsg("edit_color_opacity_tooltip")); alphaSlider.setValue(0); alphaSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { alphaSliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(alphaSlider, gridBagConstraints); alphaLabel.setText(options.getMsg("edit_color_opacity")); alphaLabel.setLabelFor(alphaTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(alphaLabel, gridBagConstraints); alphaTxt.setText("0"); alphaTxt.setToolTipText(options.getMsg("edit_color_opacity_tooltip")); alphaTxt.setPreferredSize(new java.awt.Dimension(40, 21)); alphaTxt.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(alphaTxt, gridBagConstraints); }//GEN-END:initComponents private void alphaSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_alphaSliderStateChanged int v=alphaSlider.getValue(); alphaTxt.setText(Integer.toString(v)); ColorSelectionModel csm=getColorSelectionModel(); if(csm!=null){ Color c=csm.getSelectedColor(); Color nc=null; if(v<255) nc=new Color(c.getRed(), c.getGreen(), c.getBlue(), v); else nc=new Color(c.getRed(), c.getGreen(), c.getBlue()); csm.setSelectedColor(nc); } }//GEN-LAST:event_alphaSliderStateChanged public String getDisplayName() { return options.getMsg("edit_color_opacity"); } public javax.swing.Icon getLargeDisplayIcon() { return null; } public javax.swing.Icon getSmallDisplayIcon() { return null; } public void installChooserPanel(javax.swing.JColorChooser jColorChooser) { super.installChooserPanel(jColorChooser); currentChooser=jColorChooser; setColor(jColorChooser.getColor()); } protected void setColor(Color c){ int a=c.getAlpha(); alphaSlider.setValue(a); alphaTxt.setText(Integer.toString(a)); } public void updateChooser() { /* ColorSelectionModel csm=getColorSelectionModel(); if(csm!=null){ int a=csm.getSelectedColor().getAlpha(); alphaSlider.setValue(a); alphaTxt.setText(Integer.toString(a)); } */ } protected void buildChooser() { //initComponents(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JSlider alphaSlider; private javax.swing.JTextField alphaTxt; // End of variables declaration//GEN-END:variables static JColorChooser chooser; static AlphaColorChooserPanel accp; static ActionListener okListener; static ActionListener cancelListener; static Object[] result; public static Color chooseColor(Options options, java.awt.Component parent, Color initialColor){ if(chooser==null){ chooser=new JColorChooser(initialColor); accp=new AlphaColorChooserPanel(options); chooser.addChooserPanel(accp); result=new Object[1]; okListener = new ActionListener() { public void actionPerformed(ActionEvent e) { result[0] = chooser.getColor(); } }; cancelListener = new ActionListener() { public void actionPerformed(ActionEvent e) { result[0] = null; } }; } // 30-mai-2007 // Clear result between calls to chooseColor result[0]=null; chooser.setColor(initialColor); accp.setColor(initialColor); JColorChooser.createDialog(parent, options.getMsg("edit_color_dlgTitle"), true, chooser, okListener, cancelListener).setVisible(true); return (Color)result[0]; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/AlphaColorChooserPanel.form0000644000175000017500000001041611377161311024017 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/SoundButton.java0000644000175000017500000000517411377161311021737 0ustar /* * File : SoundButton.java * Created : 27-sep-2002 15:34 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.util.Options; import javax.swing.JButton; import java.awt.event.ActionEvent; import java.awt.Dimension; import java.awt.Insets; import javax.swing.border.Border; import java.awt.Rectangle; import edu.xtec.jclic.bags.MediaBag; import edu.xtec.jclic.bags.MediaBagSelector; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.ResourceManager; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class SoundButton extends NullableObject{ public static final String PROP_SND_NAME="soundName"; MediaBagEditor mbe; /** Creates a new instance of ImgPanel */ public SoundButton() { super(); button.setIcon(ResourceManager.getImageIcon("icons/audio_off.gif")); } protected String getObjectType(){ return PROP_SND_NAME; } public void setMediaBagEditor(MediaBagEditor mbe){ this.mbe=mbe; } public String getSoundName(){ return (String)getObject(); } public void setSoundName(String name){ setObject(name); } public void setObject(Object value) { boolean preStatus=(object!=null); super.setObject(value); boolean status=(object!=null); if(preStatus!=status) button.setIcon(ResourceManager.getImageIcon(status ? "icons/audio_on.gif" : "icons/audio_off.gif")); } protected Object createObject() { return null; } protected Object editObject(Object o){ if(options==null || mbe==null) return null; //return MediaBagEditorPanel.getMediaName((String)o, options, this, mbe, Utils.ALL_IMAGES_FF); return MediaBagSelector.getMediaName((String)o, options, this, mbe, Utils.ALL_SOUNDS_FF); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/RollPanelBeanInfo.java0000644000175000017500000000274411377161311022745 0ustar /* * File : RollPanelBeanInfo.java * Created : 10-mar-2004 11:35 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import java.beans.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class RollPanelBeanInfo extends SimpleBeanInfo{ /** * Gets the bean's BeanDescriptors. * * @return BeanDescriptor describing the editable * properties of this bean. May return null if the * information should be obtained by automatic analysis. */ public BeanDescriptor getBeanDescriptor() { BeanDescriptor beanDescriptor = new BeanDescriptor ( RollPanel.class , null ); beanDescriptor.setValue("containerDelegate", "getMainPanel"); return beanDescriptor; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/MediaContentButton.java0000644000175000017500000000614511377161311023220 0ustar /* * File : MediaContentButton.java * Created : 23-dec-2002 16:26 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.jclic.media.MediaContent; import javax.swing.UIManager; import edu.xtec.jclic.media.MediaContentEditor; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.util.ResourceManager; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaContentButton extends NullableObject { public static final String PROP_MEDIA_CONTENT="mediaContent"; public static final String[] MEDIA_ICONS={"icons/unknown_small.gif", "icons/audio_on.gif", "icons/movie.gif", "icons/music.gif", "icons/cdaudio.gif", "icons/speak.gif", "icons/play_speaked.gif", "icons/jump_to_activity.gif", "icons/jump_to_sequence.gif", "icons/run_external.gif", "icons/html_doc.gif", "icons/cancel.gif", "icons/return.gif"}; MediaBagEditor mbe; /** Creates a new instance of MediaContentButton */ public MediaContentButton() { super(); } protected String getObjectType(){ return PROP_MEDIA_CONTENT; } public MediaContent getMediaContent(){ return (MediaContent)getObject(); } public void setMediaContent(MediaContent mc){ setObject(mc); } public void setMediaBagEditor(MediaBagEditor mbe){ this.mbe=mbe; } public void setObject(Object value) { super.setObject(value); if(nullValue || object==null){ button.setBackground(UIManager.getColor("Button.background")); button.setForeground(UIManager.getColor("Button.foreground")); button.setIcon(null); } else{ MediaContent mc=(MediaContent)value; //button.setBackground(bb.backColor); //button.setForeground(bb.textColor); String imgName="unknown_small.gif"; if(mc.mediaType>=0 && mc.mediaType
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/BoxBaseButton.java0000644000175000017500000000710311377161311022164 0ustar /* * File : BoxBaseButton.java * Created : 12-oct-2002 18:51 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.util.Options; import javax.swing.JButton; import javax.swing.UIManager; import java.awt.event.ActionEvent; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.jclic.boxes.BoxBaseEditor; import edu.xtec.jclic.boxes.AbstractBox; import java.awt.FontMetrics; import java.awt.Graphics; import javax.swing.AbstractButton; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BoxBaseButton extends NullableObject{ public static final String PROP_BOX_BASE="boxBase"; public static final String SAMPLE_STR="abc"; AbstractBox preview; /** Creates a new instance of BoxBasePanel */ /* public BoxBaseButton(Options options, String tooltipKey) { super(options, tooltipKey); } */ public BoxBaseButton(){ super(); } protected String getObjectType(){ return PROP_BOX_BASE; } public BoxBase getBoxBase(){ return (BoxBase)getObject(); } public void setBoxBase(BoxBase bb){ setObject(bb); } public void setObject(Object value) { super.setObject(value); /* if(nullValue || object==null){ button.setBackground(UIManager.getColor("Button.background")); button.setForeground(UIManager.getColor("Button.foreground")); button.setText(""); } else{ BoxBase bb=(BoxBase)value; button.setBackground(bb.backColor); button.setForeground(bb.textColor); button.setText("S"); } */ } protected AbstractButton buildButton(){ return new JButton(){ public void paintComponent(Graphics g){ super.paintComponent(g); BoxBase bb=getBoxBase(); if(bb!=null){ java.awt.Rectangle r=new java.awt.Rectangle(0, 0, getWidth(), getHeight()); r.grow(-3, -3); g.setColor(bb.backColor); g.fillRect(r.x, r.y, r.width, r.height); g.setColor(bb.textColor); FontMetrics fm=g.getFontMetrics(); int y=r.y+r.height-(r.height-fm.getAscent())/2-fm.getDescent(); int x=r.x+(r.width-fm.stringWidth(SAMPLE_STR))/2; g.drawString(SAMPLE_STR, x, y); } } }; } public void setPreview(AbstractBox preview){ this.preview=preview; } protected Object createObject() { return new BoxBase(); } protected Object editObject(Object o){ BoxBase bb=(BoxBase)(o==null ? createObject() : o); return BoxBaseEditor.getBoxBase(bb, this, options, preview); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/TextListEditor.form0000644000175000017500000002001211377161311022410 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/beans/TextListEditor.java0000644000175000017500000003421211377161311022375 0ustar /* * File : TextListEditor.java * Created : 23-may-2003 11:19 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.beans; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.util.Vector; import javax.swing.DefaultListModel; import java.util.Enumeration; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextListEditor extends javax.swing.JPanel implements javax.swing.event.ListSelectionListener{ public static final String PROP_LIST="list"; Options options; DefaultListModel listModel; boolean modified; int maxItems=999; int minItems=0; boolean upperCase; /** Creates new form TextListEditor */ public TextListEditor() { this(null); } /** Creates new form TextListEditor */ public TextListEditor(Options options) { this.options=options; listModel=new DefaultListModel(); initComponents(); list.addListSelectionListener(this); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JScrollPane listScroll; listScroll = new javax.swing.JScrollPane(); list = new javax.swing.JList(); btnPanel = new javax.swing.JPanel(); addBtn = new javax.swing.JButton(); removeBtn = new javax.swing.JButton(); editBtn = new javax.swing.JButton(); upBtn = new javax.swing.JButton(); downBtn = new javax.swing.JButton(); setLayout(new java.awt.GridBagLayout()); listScroll.setPreferredSize(new java.awt.Dimension(100, 60)); list.setModel(listModel); list.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); listScroll.setViewportView(list); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(listScroll, gridBagConstraints); btnPanel.setLayout(new javax.swing.BoxLayout(btnPanel, javax.swing.BoxLayout.X_AXIS)); addBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/plus16.gif"))); addBtn.setToolTipText(options==null ? "" : options.getMsg("edit_list_newElement_tooltip")); addBtn.setMargin(new java.awt.Insets(0, 0, 0, 0)); addBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { addBtnActionPerformed(evt); } }); btnPanel.add(addBtn); removeBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/minus16.gif"))); removeBtn.setToolTipText(options==null ? "" : options.getMsg("edit_list_deleteElement_tooltip")); removeBtn.setMargin(new java.awt.Insets(0, 0, 0, 0)); removeBtn.setEnabled(false); removeBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { removeBtnActionPerformed(evt); } }); btnPanel.add(removeBtn); editBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/edit.gif"))); editBtn.setToolTipText(options==null ? "" : options.getMsg("edit_list_editElement_tooltip")); editBtn.setMargin(new java.awt.Insets(0, 0, 0, 0)); editBtn.setEnabled(false); editBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editBtnActionPerformed(evt); } }); btnPanel.add(editBtn); upBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/up.gif"))); upBtn.setToolTipText(options==null ? "" : options.getMsg("edit_list_upBtn_tooltip")); upBtn.setMargin(new java.awt.Insets(0, 0, 0, 0)); upBtn.setEnabled(false); upBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { upBtnActionPerformed(evt); } }); btnPanel.add(upBtn); downBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/down.gif"))); downBtn.setToolTipText(options==null ? "" : options.getMsg("edit_list_downBtn_tooltip")); downBtn.setMargin(new java.awt.Insets(0, 0, 0, 0)); downBtn.setEnabled(false); downBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { downBtnActionPerformed(evt); } }); btnPanel.add(downBtn); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 2, 2, 2); add(btnPanel, gridBagConstraints); }//GEN-END:initComponents private void addBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_addBtnActionPerformed int v=list.getSelectedIndex(); if(options!=null){ //String s=options.getMessages().showInputDlg(this, (String)null, "edit_list_newValue", "", "edit_list_addElement", false); Object s=editItem(null, true); if(s!=null && s.toString().length()>0){ if(upperCase) s=s.toString().toUpperCase(); listModel.add(v+1, s); list.setSelectedIndex(v+1); firePropertyChange(PROP_LIST, "", s); modified=true; } } }//GEN-LAST:event_addBtnActionPerformed private void editBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editBtnActionPerformed int v=list.getSelectedIndex(); if(v>=0 && options!=null){ Object s=listModel.getElementAt(v); //String r=options.getMessages().showInputDlg(this, (String)null, "edit_list_newValue", s, "edit_list_modifyValue", false); Object r=editItem(s, false); if(r!=null && r.toString().length()>0 && !r.equals(s)){ if(upperCase) r=r.toString().toUpperCase(); listModel.setElementAt(r, v); firePropertyChange(PROP_LIST, s, r); modified=true; } } }//GEN-LAST:event_editBtnActionPerformed private void downBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_downBtnActionPerformed int i=list.getSelectedIndex(); if(i>=0 && i0){ listModel.add(i-1, listModel.remove(i)); list.setSelectedIndex(i-1); firePropertyChange(PROP_LIST, i, i-1); modified=true; } }//GEN-LAST:event_upBtnActionPerformed private void removeBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_removeBtnActionPerformed Object o=list.getSelectedValue(); if(o!=null){ listModel.removeElement(o); firePropertyChange(PROP_LIST, o, null); modified=true; checkEnabled(); } }//GEN-LAST:event_removeBtnActionPerformed /** Getter for property options. * @return Value of property options. */ public edu.xtec.util.Options getOptions() { return options; } /** Setter for property options. * @param options New value of property options. */ public void setOptions(edu.xtec.util.Options options) { this.options = options; } public void valueChanged(javax.swing.event.ListSelectionEvent listSelectionEvent) { if(listSelectionEvent==null || !listSelectionEvent.getValueIsAdjusting()){ checkEnabled(); } } protected void checkEnabled(){ boolean enabled=isEnabled(); int v=list.getSelectedIndex(); int c=listModel.size(); addBtn.setEnabled(enabled && c0); downBtn.setEnabled(enabled && v>=0 && v=0 && c>minItems); editBtn.setEnabled(enabled && v>=0); } /** Getter for property listData. * @return Value of property listData. */ public java.util.Vector getListData() { Enumeration en=listModel.elements(); Vector result=new Vector(listModel.getSize()); while(en.hasMoreElements()) result.addElement(en.nextElement()); return result; } /** Setter for property listData. * @param listData New value of property listData. */ public void setListData(java.util.Vector listData) { listModel.removeAllElements(); if(listData!=null){ Enumeration en=listData.elements(); while(en.hasMoreElements()){ Object o=en.nextElement(); if(upperCase) o=o.toString().toUpperCase(); listModel.addElement(o); } } modified=false; checkEnabled(); } /** Setter for property listData. * @param listData New value of property listData. */ public void setTextList(String[] textList) { listModel.removeAllElements(); if(textList!=null){ for(int i=0; i0); b = e && timeCounterChk.isSelected(); maxTimeInt.setEnabled(b); countdownTimeChk.setEnabled(b && maxTimeInt.getValue()>0); b = e && actionsCounterChk.isSelected(); maxActionsInt.setEnabled(b); countdownActionsChk.setEnabled(b && maxActionsInt.getValue()>0); b = e && helpBtnChk.isSelected(); helpBtnSolution.setEnabled(b); helpBtnMsg.setEnabled(b); helpBtnMsgText.setEnabled(b && helpBtnMsg.isSelected()); helpBtnMsgScroll.setEnabled(b && helpBtnMsg.isSelected()); b = e && infoBtnChk.isSelected(); infoBtnUrlChk.setEnabled(b); infoBtnUrlTxt.setEnabled(b && infoBtnUrlChk.isSelected()); infoBtnCmdChk.setEnabled(b); infoBtnCmdTxt.setEnabled(b && infoBtnCmdChk.isSelected()); } private void checkContentProviders(){ Activity act=getActivity(); if(contentProviders==null){ contentProviders=new Vector(allContentProviders.size()); } else{ contentProviders.clear(); } autoCpCombo.removeAllItems(); Iterator it=allContentProviders.iterator(); while(it.hasNext()){ TripleString ts=(TripleString)it.next(); boolean isOk= (ts.getClassName()==null); if(!isOk && act!=null) isOk=AutoContentProvider.checkClient(ts.getClassName(), act.getClass()); if(isOk){ contentProviders.add(ts); autoCpCombo.addItem(ts); } } } public void fillData() { Activity act=getActivity(); nameText.setText(act==null ? options.getMsg("UNNAMED") : act.name); descText.setText(act==null ? "" : act.description==null ? "" : act.description); String s= act==null ? "" : act.getShortClassName(); if(s.startsWith(Activity.BASE_CLASS_TAG)) s=s.substring(1); className.setText(s); bIncludeInReportsChk.setSelected(act==null ? true : act.includeInReports); bRegisterActionsChk.setSelected(act==null ? false : act.reportActions); codeText.setText(act==null ? "" : act.code); skinCombo.setSelectedItem(act==null ? null : act.skinFileName); evSoundsBtn.setMediaBagEditor(act==null ? null : getActivityEditor().getProjectEditor().getMediaBagEditor()); evSoundsBtn.setEventSounds(act==null ? null : act.eventSounds); evSoundsBtn.setModified(false); checkContentProviders(); String acpClassName=(act==null || act.acp==null) ? null : act.acp.getShortClassName(); int index=Math.max(0, TripleString.getFirstItemWithClass(contentProviders, acpClassName)); autoCpCombo.setSelectedIndex(index); timeCounterChk.setSelected(act==null ? true : act.bTimeCounter); maxTimeInt.setValue(act==null ? 0 : act.maxTime); countdownTimeChk.setSelected(act==null ? false : act.countDownTime); actionsCounterChk.setSelected(act==null ? false : act.bActionsCounter); maxActionsInt.setValue(act==null ? 0 : act.maxActions); countdownActionsChk.setSelected(act==null ? false : act.countDownActions); scoreCounterChk.setSelected(act==null ? true : act.bScoreCounter); helpBtnChk.setSelected(act==null ? true : act.helpWindow); boolean helpSolution = act!=null && (act.showSolution || act.helpMsg==null || act.helpMsg.length()==0); helpBtnSolution.setSelected(helpSolution); helpBtnMsg.setSelected(!helpSolution); helpBtnMsgText.setText(act==null ? "" : act.helpMsg); int v=0; if(act!=null && act.infoUrl!=null && act.infoUrl.length()>0) v=1; else if(act!=null && act.infoCmd!=null && act.infoCmd.length()>0) v=2; infoBtnChk.setSelected(v>0); infoBtnUrlChk.setSelected(v!=2); infoBtnCmdChk.setSelected(v==2); infoBtnUrlTxt.setText(act==null ? "" : act.infoUrl); infoBtnCmdTxt.setText(act==null ? "" : act.infoCmd); if(act!=null && act.hasRandom()){ scrambleTimesInt.setValue(act==null ? Activity.DEFAULT_SHUFFLES : act.shuffles); //behaviorPanel.setVisible(true); } else{ //behaviorPanel.setVisible(false); } dragCellsChk.setSelected(act==null ? false : act.dragCells); orderChk.setSelected(act==null ? false : act.useOrder); checkEnabled(); } public void saveData(){ Activity act=getActivity(); if(act!=null){ act.description=descText.getText(); act.includeInReports=bIncludeInReportsChk.isSelected(); act.reportActions=bRegisterActionsChk.isSelected(); act.code=codeText.getText(); act.skinFileName=(String)skinCombo.getSelectedItem(); act.eventSounds=evSoundsBtn.getEventSounds(); evSoundsBtn.setModified(false); act.bTimeCounter=timeCounterChk.isSelected(); act.maxTime=maxTimeInt.getValue(); act.countDownTime=countdownTimeChk.isSelected(); act.bActionsCounter=actionsCounterChk.isSelected(); act.maxActions= maxActionsInt.getValue(); act.countDownActions=countdownActionsChk.isSelected(); act.bScoreCounter=scoreCounterChk.isSelected(); act.helpWindow=helpBtnChk.isSelected(); act.showSolution=helpBtnSolution.isSelected(); act.helpMsg=StrUtils.nullableString(helpBtnMsgText.getText()); int v=0; if(infoBtnChk.isSelected()){ if(infoBtnUrlChk.isSelected()){ act.infoUrl=StrUtils.nullableString(infoBtnUrlTxt.getText()); act.infoCmd=null; } else{ act.infoUrl=null; act.infoCmd=StrUtils.nullableString(infoBtnCmdTxt.getText()); } } else{ act.infoUrl=null; act.infoCmd=null; } if(act.hasRandom()) act.shuffles=scrambleTimesInt.getValue(); act.dragCells=dragCellsChk.isSelected(); act.useOrder=orderChk.isSelected(); } } private static SelectActivityClass sac; public boolean eventPerformed(EventObject ev){ Object cmp=ev==null ? null : ev.getSource(); boolean result=(cmp!=null); final ActivityEditor aed=getActivityEditor(); if(cmp==chClassBtn && aed!=null){ if(sac==null){ sac=new SelectActivityClass(options); sac.setAlertMsg(options.getMsg("edit_act_changeType_warning")); } String oldClassName=getActivity().getShortClassName(); sac.setCurrentClassName(oldClassName); sac.setListFilter(getActivity().getSimilarActivityClasses(), true); if((result= getOptions().getMessages().showInputDlg(this, sac, "edit_act_changeType") && sac.getCurrentClassName()!=null && !oldClassName.equals(sac.getCurrentClassName()))){ ActivityBagElementEditor abed=aed.getActivityBagElementEditor(); aed.collectData(); aed.saveData(); try{ abed.changeActivityClass(sac.getCurrentClassName()); abed.reselect(); } catch(Exception ex){ options.getMessages().showErrorWarning(this, "ERROR", ex); } } } else if(cmp==chNameBtn && aed!=null){ final String oldName=getActivity().name; final String newName=options.getMessages().showInputDlg(this, "edit_media_rename", "edit_media_rename_prompt", oldName, "edit_media_rename_title", false); if((result=newName!=null && !newName.equals(oldName))){ final ProgressDialog progressDialog=new ProgressDialog(this, options); SwingWorker sw=new SwingWorker(){ public Object construct(){ aed.rename(newName, ActivityEditorOptionsPanel.this, options.getMessages()); aed.getActivityBagElementEditor().reselect(); return null; } public void finished(){ //nameText.setText(newName); progressDialog.setVisible(false); } }; progressDialog.start("edit_media_rename", "edit_media_renaming", sw, false, false, false); } } else if(cmp==autoCpCombo && aed!=null){ AutoContentProviderEditor acped=aed.getAutoContentProviderEditor(); TripleString ts=(TripleString)autoCpCombo.getSelectedItem(); String acpClassName=ts==null ? null : ts.getClassName(); if(acped!=null){ if(acped.getAutoContentProvider().getShortClassName().equals(acpClassName)) return false; acped.removeFromParent(); aed.getActivity().acp=null; } if(acpClassName!=null){ try{ AutoContentProvider acp=AutoContentProvider.getAutoContentProvider(acpClassName); aed.getActivity().acp=acp; acp.getEditor(aed); } catch(Exception ex){ options.getMessages().showErrorWarning(this, "edit_acp_err_creating", ex); aed.getActivity().acp=null; } } } else if(cmp==autoCpEditBtn && aed!=null){ AutoContentProviderEditor acped=(AutoContentProviderEditor)aed.getFirstChild(AutoContentProviderEditor.class); if(acped!=null) acped.editData(this, options); } if(result) checkEnabled(); return result; } protected javax.swing.Icon getIcon(){ return edu.xtec.util.ResourceManager.getImageIcon("icons/options.gif"); } protected String getTitle() { return options.getMsg("edit_act_panels_options"); } protected String getTooltip() { return options.getMsg("edit_act_panels_options_tooltip"); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox actionsCounterChk; private javax.swing.JComboBox autoCpCombo; private javax.swing.JButton autoCpEditBtn; private edu.xtec.jclic.beans.RollPanel autoCpPanel; private javax.swing.JCheckBox bIncludeInReportsChk; private javax.swing.JCheckBox bRegisterActionsChk; private edu.xtec.jclic.beans.RollPanel behaviorPanel; private edu.xtec.jclic.beans.RollPanel buttonsPanel; private javax.swing.JButton chClassBtn; private javax.swing.JButton chNameBtn; private javax.swing.JLabel className; private javax.swing.JTextField codeText; private javax.swing.JCheckBox countdownActionsChk; private javax.swing.JCheckBox countdownTimeChk; private edu.xtec.jclic.beans.RollPanel countersPanel; private edu.xtec.jclic.beans.RollPanel descPanel; private javax.swing.JScrollPane descScroll; private javax.swing.JTextPane descText; private javax.swing.JCheckBox dragCellsChk; private edu.xtec.jclic.beans.EventSoundsButton evSoundsBtn; private javax.swing.JCheckBox helpBtnChk; private javax.swing.JRadioButton helpBtnMsg; private javax.swing.JScrollPane helpBtnMsgScroll; private javax.swing.JTextArea helpBtnMsgText; private javax.swing.JRadioButton helpBtnSolution; private javax.swing.JCheckBox infoBtnChk; private javax.swing.JRadioButton infoBtnCmdChk; private javax.swing.JTextField infoBtnCmdTxt; private javax.swing.JRadioButton infoBtnUrlChk; private javax.swing.JTextField infoBtnUrlTxt; private edu.xtec.jclic.beans.SmallIntEditor maxActionsInt; private edu.xtec.jclic.beans.SmallIntEditor maxTimeInt; private javax.swing.JLabel nameText; private javax.swing.JCheckBox orderChk; private edu.xtec.jclic.beans.RollPanel reportPanel; private javax.swing.JCheckBox scoreCounterChk; private edu.xtec.jclic.beans.SmallIntEditor scrambleTimesInt; private javax.swing.JScrollPane scroll; private javax.swing.JComboBox skinCombo; private javax.swing.JCheckBox timeCounterChk; private edu.xtec.jclic.beans.RollPanel uiPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/ActivityEditor.java0000644000175000017500000003456011377161311021327 0ustar /* * File : ActivityEditor.java * Created : 18-sep-2002 17:28 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.automation.AutoContentProviderEditor; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.bags.*; import edu.xtec.jclic.boxes.ActiveBagContentEditor; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.ActiveBoxContentEditor; import edu.xtec.jclic.media.EventSoundsEditorPanel; import edu.xtec.jclic.media.MediaContent; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Options; import javax.swing.ImageIcon; import edu.xtec.jclic.project.JClicProject; import javax.swing.Icon; import edu.xtec.jclic.project.JClicProjectEditor; import edu.xtec.jclic.skins.Skin; import edu.xtec.util.Messages; import edu.xtec.util.TripleString; import java.awt.BasicStroke; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Color; import java.awt.Component; import java.awt.Stroke; import javax.swing.JInternalFrame; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityEditor extends Editor{ protected static ImageIcon icon; /** Creates a new instance of ActivityEditor */ public ActivityEditor(Activity act) { super(act); } protected void createChildren() { Activity act=getActivity(); if(act.acp!=null) act.acp.getEditor(this); } public AutoContentProviderEditor getAutoContentProviderEditor(){ return (AutoContentProviderEditor)getFirstChild(AutoContentProviderEditor.class); } public Class getEditorPanelClass() { return ActivityEditorPanel.class; } protected static final int COMMON_PANELS=3; public synchronized EditorPanel createEditorPanel(Options options) { ActivityEditorPanel panel=new ActivityEditorPanel(options); //panel.addInternalPanel(new ActivityEditorDescPanel(panel), null, null); panel.addInternalPanel(new ActivityEditorOptionsPanel(panel), null, null); //panel.addInternalPanel(new ActivityEditorControlsPanel(panel), null, null); panel.addInternalPanel(new ActivityEditorFramePanel(panel), null, null); panel.addInternalPanel(new ActivityEditorMsgPanel(panel), null, null); createPanels(panel); return panel; } public String getTitleKey(){ return "edit_act"; } protected void createPanels(ActivityEditorPanel panel){ } public Activity getActivity(){ return (Activity)getFirstObject(Activity.class); } public JClicProjectEditor getProjectEditor(){ return (JClicProjectEditor)getFirstParent(JClicProjectEditor.class); } public MediaBagEditor getMediaBagEditor(){ JClicProjectEditor jcpe=getProjectEditor(); return jcpe==null ? null : jcpe.getMediaBagEditor(); } public Options getOptions(){ return getActivity().getProject().getBridge().getOptions(); } public ActivityBagElementEditor getActivityBagElementEditor(){ return (ActivityBagElementEditor)getFirstParent(ActivityBagElementEditor.class); } public ActivityBagEditor getActivityBagEditor(){ return (ActivityBagEditor)getFirstParent(ActivityBagEditor.class); } public boolean rename(String newName, Component parent, Messages msg){ String oldName=getActivity().name; String errMsg=null; newName=newName.trim(); boolean result=false; if(oldName.equals(newName)){ // do nothing } else if(newName.length()<1) errMsg="edit_media_rename_invalid"; else if(getActivityBagEditor().getActivityBag().getElementByName(newName)!=null) errMsg="edit_media_rename_exists"; else{ result=getProjectEditor().nameChanged(Constants.T_ACTIVITY, oldName, newName); } if(errMsg!=null && msg!=null && parent!=null){ msg.showAlert(parent, errMsg); } return result; } public synchronized void saveData(){ //System.out.println("saving data!"); ActivityBagElementEditor abee=getActivityBagElementEditor(); if(abee!=null){ ActivityBagElement abe=abee.getActivityBagElement(); String name=abe.getName(); abe.setData(getActivity().getJDomElement()); if(!abe.getName().equals(name)){ // FIRE NAME CHANGE } if(isModified()) abee.setModified(true); } //else System.out.println("abee is null!!!"); /* ActivityBag ab=getActivityBag(); Activity act=getActivity(); if(ab!=null && act!=null){ //if(currentName!=null) // ab.remove(currentName); ab.addActivity(act); currentName=act.name; } */ } /* protected boolean delete(boolean changeSelection){ ActivityBag ab=getActivityBag(); boolean result=super.delete(changeSelection); if(result) ab.removeElementByName(currentName); return result; } */ /* public ActivityBag getActivityBag(){ Activity act=getActivity(); return act==null ? null : act.getProject().activityBag; } */ public String toString(){ return getActivity().name; } public void setActionsOwner(){ if(getEditorParent()!=null) getEditorParent().setActionsOwner(); } /* protected boolean canClone(){ return false; } */ /* protected void setActionsFlag(){ allowDelete = true; allowCut = true; allowCopy = true; allowPaste=true; } */ /* public void setActionsOwner(){ if(basicActionsCreated){ setActionsFlag(); boolean eUp=false, eDown=false; ActivityBag ab=getActivityBag(); if(ab!=null){ int i=ab.getElementIndex(getActivity().name); eUp=i>0; eDown=i0){ ab.insertElementAt(ab.remove(index), index-1); result=true; if(updateSelection) select(); } } return result; } public boolean moveDown(boolean updateSelection){ boolean result=false; ActivityBag ab=getActivityBag(); if(ab!=null){ int index=ab.getElementIndex(getActivity().name); if(index
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/shapers/JigSawEditorPanel.java0000644000175000017500000002310211377161311023332 0ustar /* * File : JigSawEditor.java * Created : 03-dec-2002 10:03 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import edu.xtec.util.Options; import java.awt.*; import javax.swing.JPanel; import edu.xtec.jclic.boxes.ActiveBoxGrid; import edu.xtec.jclic.Constants; import edu.xtec.util.Messages; import java.util.Vector; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.jclic.edit.EditorPanel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JigSawEditorPanel extends javax.swing.JPanel { Options options; JigSaw shaper; Image img; Rectangle previewArea; BoxBase previewBb; boolean modified; static final int MARGIN=40; /** Creates new form JigSawEditor */ public JigSawEditorPanel(Options options, JigSaw shaper, Dimension previewDim, Image img, BoxBase previewBb) { this.options=options; this.shaper=shaper; this.img=img; previewArea=new Rectangle(img==null ? previewDim : new Dimension(img.getWidth(this), img.getHeight(this))); this.previewBb=previewBb; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel toothWidthLb; javax.swing.JLabel toothHeightLb; java.awt.GridBagConstraints gridBagConstraints; controlPanel = new javax.swing.JPanel(); toothHeightLb = new javax.swing.JLabel(); toothHeightSlider = new javax.swing.JSlider(); toothWidthLb = new javax.swing.JLabel(); toothWidthSlider = new javax.swing.JSlider(); randomChk = new javax.swing.JCheckBox(); previewPanel = new PreviewPanel(); setLayout(new java.awt.BorderLayout()); controlPanel.setLayout(new java.awt.GridBagLayout()); toothHeightLb.setText(options.getMsg("edit_act_toothHeightFactor")); toothHeightLb.setLabelFor(toothHeightSlider); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); controlPanel.add(toothHeightLb, gridBagConstraints); toothHeightSlider.setMinorTickSpacing(5); toothHeightSlider.setPaintLabels(true); toothHeightSlider.setPaintTicks(true); toothHeightSlider.setMajorTickSpacing(25); toothHeightSlider.setMaximum(50); toothHeightSlider.setValue((int)(shaper.toothHeightFactor*50/shaper.getBaseFactor()*100)); toothHeightSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { toothHeightSliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); controlPanel.add(toothHeightSlider, gridBagConstraints); toothWidthLb.setText(options.getMsg("edit_act_toothWidthFactor")); toothWidthLb.setLabelFor(toothWidthSlider); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); controlPanel.add(toothWidthLb, gridBagConstraints); toothWidthSlider.setMinorTickSpacing(5); toothWidthSlider.setPaintLabels(true); toothWidthSlider.setPaintTicks(true); toothWidthSlider.setMajorTickSpacing(25); toothWidthSlider.setValue((int)(shaper.baseWidthFactor*100)); toothWidthSlider.addChangeListener(new javax.swing.event.ChangeListener() { public void stateChanged(javax.swing.event.ChangeEvent evt) { toothWidthSliderStateChanged(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); controlPanel.add(toothWidthSlider, gridBagConstraints); randomChk.setSelected(shaper.randomLines); randomChk.setText(options.getMsg("edit_act_toothRandom")); randomChk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { randomChkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); controlPanel.add(randomChk, gridBagConstraints); add(controlPanel, java.awt.BorderLayout.NORTH); previewPanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_act_preview"))); previewPanel.setPreferredSize(new Dimension(previewArea.width+MARGIN, previewArea.height+MARGIN)); add(previewPanel, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents private void toothHeightSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_toothHeightSliderStateChanged shaper.toothHeightFactor=((double)toothHeightSlider.getValue()*shaper.getBaseFactor()/50)/100; ((PreviewPanel)previewPanel).updateView(); }//GEN-LAST:event_toothHeightSliderStateChanged private void toothWidthSliderStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_toothWidthSliderStateChanged shaper.baseWidthFactor=((double)toothWidthSlider.getValue())/100; ((PreviewPanel)previewPanel).updateView(); }//GEN-LAST:event_toothWidthSliderStateChanged private void randomChkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_randomChkActionPerformed shaper.randomLines=randomChk.isSelected(); ((PreviewPanel)previewPanel).updateView(); }//GEN-LAST:event_randomChkActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox randomChk; private javax.swing.JSlider toothHeightSlider; private javax.swing.JPanel controlPanel; private javax.swing.JPanel previewPanel; private javax.swing.JSlider toothWidthSlider; // End of variables declaration//GEN-END:variables class PreviewPanel extends JPanel{ Vector shapes=new Vector(); public void updateView(){ shapes.removeAllElements(); shaper.reset(); for(int i=0; i=0) ase=project.activitySequence.getElement(i, true); } // load new sequence (only with Clic3 files) if(ase==null && project!=null){ boolean firstPac=(project.activitySequence.getSize()==0); boolean isPcc=seqName.endsWith(".pcc"); boolean isPac=seqName.endsWith(".pac"); if(isPcc || isPac){ imported=true; if(isPcc){ String path=fileSystem.root+seqName; fileSystem=FileSystem.createFileSystem(path, thisAuthor); if(firstPac){ project.setFileSystem(fileSystem); project.setFullPath(path); } else setProject(new JClicProject(thisAuthor, fileSystem, path)); firstPac=true; Clic3.readPccFile(project); ase=project.activitySequence.getCurrentAct(); } else if(isPac){ Clic3.addPacToSequence(project, seqName); ase=project.activitySequence.getElementByTag(seqName, true); } if(firstPac){ project.setName(seqName); } } } //if(ase==null) // throw new Exception("Unable to load sequence: "+seqName); if(ase!=null) activityName=ase.getActivityName(); } // load activity if(activityName!=null && project!=null){ String actName=FileSystem.stdFn(activityName); abe=project.activityBag.getElement(actName); } //if(abe==null) // throw new Exception("Unable to load activity: "+activityName); fullPath=null; sequence=null; activityName=null; if(project!=null) project.activitySequence.checkAllElements(); if(project!=null){ java.util.HashMap hm=new java.util.HashMap(); //project.activitySequence.listReferences(null, hm); project.activityBag.listReferences(SEQUENCE_OBJECT, hm); project.activityBag.listReferences(ACTIVITY_OBJECT, hm); project.activitySequence.listReferences(null, hm); java.util.Iterator it=hm.keySet().iterator(); while(it.hasNext() && !isCancelled()){ String s=(String)it.next(); if(SEQUENCE_OBJECT.equals(hm.get(s))){ if(project.activitySequence.getElementByTag(s, false)==null){ sequence=Clic3.pacNameToLowerCase(s); break; } } else if(!project.activityBag.activityExists(s)){ activityName=s; break; } } } if(fullPath==null && sequence==null && activityName==null){ exit=true; break; } else{ if(!prompted){ prompted=(messages.showQuestionDlg(progressDialog, "msg_prompt_loadReferences", null, "yn")==Messages.YES); if(!prompted){ exit=true; break; } } abe=null; } } if(project!=null && !isCancelled()) project.mediaBag.waitForAllImages(); //System.gc(); } catch(Exception ex){ exception=ex; System.err.println("Exception:"+ex); //if(project==null) //setProject(new JClicProject(thisAuthor, createFileSystem(), null)); } attachProject(); if(imported && projectEditor!=null) projectEditor.setModified(true); return abe; } public void finished(){ progressDialog.setVisible(false); setCursor(null); if(/*abe==null || */ worker==null || exception!=null){ String sType=null; Vector v=new Vector(); if(fullPath!=null){ v.add(fullPath); sType="msg_error_loading_project"; } if(sequence!=null){ v.add(sequence); if(sType==null) sType="msg_error_loading_sequence"; } if(activityName!=null){ v.add(activityName); if(sType==null) sType="msg_error_loading_activity"; } if(sType==null) sType=Messages.ERROR; messages.showErrorWarning(thisAuthor, "err_reading_data", v, exception, null); } // unlock events worker=null; setEnabled(true); } }; // finalization process setCursor(null); // lock events setEnabled(false); // Done by progressDialog! //worker.start(); progressDialog.start("WORKING", "msg_loading_project", worker, true, true, false); } protected void setProject(JClicProject p) { if(project!=null) project.end(); project=p; java.awt.Frame fr=JOptionPane.getFrameForComponent(AuthorSingleFrame.this); if(fr!=null){ StringBuffer sb=new StringBuffer("JClic author"); if(project!=null) sb.append(" - ").append(project.getName()); fr.setTitle(sb.substring(0)); } checkActions(); } protected void checkActions(){ if(projectActions!=null) for(int i=0; i=0){ JMenuItem jmi; int itemsToRemove=recentFilesMenu.getItemCount()-recentFilesOffset; for(int i=0; i=0) s=s.substring(k+1); createMenuItem(recentFilesMenu, Integer.toString(i+1)+". "+s, "recent"+i, true, KeyStroke.getKeyStroke(KeyEvent.VK_1+i, ActionEvent.ALT_MASK)); } } } } JMenuItem createMenuItem(JComponent parent, String text, String actionCommand, boolean mnemonic, KeyStroke accelerator){ JMenuItem jmi=new JMenuItem(text); if(actionCommand!=null){ jmi.setActionCommand(actionCommand); jmi.addActionListener(this); } if(mnemonic) jmi.setMnemonic(jmi.getText().charAt(0)); if(accelerator!=null) jmi.setAccelerator(accelerator); parent.add(jmi); return jmi; } public static final int ACTION_OPEN_FILE=0, ACTION_OPEN_URL=1, ACTION_SAVE_FILE=2, ACTION_SAVE_FILE_AS=3, ACTION_EXIT=4, ACTION_SETTINGS=5, ACTION_DOCTREE=6, ACTION_ABOUT=7, ACTION_NEW_PROJECT=8, ACTION_EDIT_PROJECT=9, ACTION_EDIT_MEDIA=10, ACTION_EDIT_ACTIVITIES=11, ACTION_EDIT_SEQ=12, ACTION_CREATE_HTML=13, ACTION_CREATE_INSTALLER=14, ACTION_IMPORT_ACTIVITIES=15, NUM_ACTIONS=16; public static final String[] ACTION_NAME={ "openFile", "openUrl", "saveFile", "saveFileAs", "exit", "settings", "docTree", "helpAbout", "newProject", "editProject", "editMedia", "editActivities", "editSeq", "createHTML", "createInstaller", "importActivities" }; public static final String[] ACTION_ICONS={ "icons/file_open.gif", "icons/world.gif", "icons/file_save.gif", "icons/file_save_as.gif", "icons/exit_small.gif", "icons/settings.gif", "icons/tree.gif", "icons/help.gif", "icons/project_new.gif", "icons/project_settings.gif", "icons/media_bag.gif", "icons/miniclic.png", "icons/sequence.gif", "icons/html_doc.gif", "icons/installer.gif", "icons/import_act.png" }; protected int getNumActions(){ return NUM_ACTIONS; } protected void buildActions(){ actions=new Action[getNumActions()]; actions[ACTION_OPEN_FILE]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(checkSaveChanges()){ int[] filters={Utils.ALL_CLIC_FF, Utils.INSTALL_FF, Utils.ALL_JCLIC_FF}; FileSystem fs=settings.fileSystem; String result=fs.chooseFile(null, false, filters, options, null, AuthorSingleFrame.this, false); if(result!=null){ String fileName=fs.getFullFileNamePath(result); if(load(fileName, null)) addRecentFile(fileName); } } } }; actions[ACTION_OPEN_URL]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(checkSaveChanges()){ String url=messages.showInputDlg(AuthorSingleFrame.this, "URL_OPEN", "URL", "http://", "URL_OPEN", false); if(url!=null){ url=url.trim(); if(url.startsWith("http://http://")) url=url.substring(7); if(url.length()>0 && !url.equals("http://")){ if(load(url, null)) addRecentFile(url); } } } } }; actions[ACTION_SAVE_FILE]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ saveFile(false); } }; actions[ACTION_SAVE_FILE_AS]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ saveFile(true); } }; actions[ACTION_EXIT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ exit(); } }; actions[ACTION_SETTINGS]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ String currentLook=options.getString(LFUtil.LOOK_AND_FEEL); String currentLanguage=options.getString(Messages.LANGUAGE); String currentCountry=options.getString(Messages.COUNTRY); String currentVariant=options.getString(Messages.VARIANT); String currentMediaSystem=settings.mediaSystem; if(settings.edit(AuthorSingleFrame.this)){ settings.save(); options.syncProperties(settings.getProperties(), false); boolean recreateMenu=false; if(!settings.lookAndFeel.equals(currentLook)){ options.setLookAndFeel(); recreateMenu=true; } if(settings.language!=null && (!StrUtils.compareObjects(settings.language, currentLanguage) || !StrUtils.compareObjects(settings.country, currentCountry) || !StrUtils.compareObjects(settings.variant, currentVariant))){ setMessages(); recreateMenu=true; } if(recreateMenu){ checkMenu(true); } if(!currentMediaSystem.equals(settings.mediaSystem)){ options.put(MEDIA_SYSTEM, settings.mediaSystem); edu.xtec.jclic.media.CheckMediaSystem.check(options, false); } } } }; actions[ACTION_DOCTREE]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(project!=null){ org.jdom.Element e=JDomTreePanel.editElement(AuthorSingleFrame.this, project.getJDomElement(), AuthorSingleFrame.this, project.getFileSystem(), project.getName(), "edit_docTree_title"); if(e!=null){ try{ //JClicProject prj=JClicProject.getJClicProject(e, Author.this, project.getFileSystem(), project.getFullPath()); String fullPath=project.getFullPath(); JClicProject prj=JClicProject.getJClicProject(e, AuthorSingleFrame.this, FileSystem.createFileSystem(fullPath, AuthorSingleFrame.this), fullPath); if(prj!=null){ setProject(prj); attachProject(); projectEditor.setModified(true); } } catch(Exception ex){ messages.showErrorWarning(AuthorSingleFrame.this, "edit_tree_badFormat", ex); } } } } }; actions[ACTION_IMPORT_ACTIVITIES]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(project!=null){ int[] filters={Utils.ALL_JCLIC_FF}; FileSystem fs=settings.fileSystem; String result=fs.chooseFile(null, false, filters, options, "import_selectProject", AuthorSingleFrame.this, false); if(result!=null){ String fullPath=fs.getFullFileNamePath(result); if((new File(project.getFileSystem().getFullRoot())).equals(new File(fullPath))){ messages.showAlert(AuthorSingleFrame.this, "import_warn_samefile"); } else{ doImportActivities(fullPath); } } } } }; actions[ACTION_ABOUT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ AboutWindow aw=new AboutWindow(AuthorSingleFrame.this, AuthorSingleFrame.this, new Dimension(500, 400)); try{ aw.buildAboutTab("JClic author", getMsg("AUTHOR_VERSION"), "logo_author_small.png", null, null, null, null); aw.buildStandardTab(aw.getHtmlSystemInfo(), "about_window_systemInfo", "about_window_lb_system", "icons/system_small.gif"); aw.setVisible(true); } catch(Exception ex){ System.err.println("Error building about window: "+ex); } } }; actions[ACTION_NEW_PROJECT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(checkSaveChanges()){ JClicProject prj=NewProjectDlg.prompt(AuthorSingleFrame.this, AuthorSingleFrame.this, createFileSystem()); if(prj!=null){ setProject(prj); //setProject(new JClicProject(AuthorSingleFrame.this, createFileSystem(), null)); attachProject(); } } } }; actions[ACTION_EDIT_PROJECT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(tabbedPane!=null) tabbedPane.setSelectedComponent(projectSettingsEditorPanel); } }; actions[ACTION_EDIT_MEDIA]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(tabbedPane!=null) tabbedPane.setSelectedComponent(mediaBagEditorPanel); } }; actions[ACTION_EDIT_ACTIVITIES]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(tabbedPane!=null) tabbedPane.setSelectedComponent(activityBagEditorPanel); } }; actions[ACTION_EDIT_SEQ]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(tabbedPane!=null) tabbedPane.setSelectedComponent(activitySequenceEditorPanel); } }; actions[ACTION_CREATE_HTML]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(checkSaveChanges()) AppletHtmlCreator.createHtml(project, settings, AuthorSingleFrame.this); } }; actions[ACTION_CREATE_INSTALLER]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(checkSaveChanges()) ProjectInstallerEditPanel.createInstaller(project, AuthorSingleFrame.this); } }; projectActions=new Action[]{actions[ACTION_SAVE_FILE], actions[ACTION_SAVE_FILE_AS], actions[ACTION_DOCTREE], actions[ACTION_EDIT_SEQ], actions[ACTION_EDIT_ACTIVITIES], actions[ACTION_EDIT_MEDIA], actions[ACTION_EDIT_PROJECT], actions[ACTION_CREATE_HTML], actions[ACTION_CREATE_INSTALLER], actions[ACTION_IMPORT_ACTIVITIES]}; checkActions(); } protected boolean saveFile(boolean saveAs){ boolean ok=false; if(project!=null && projectEditor.checkProject(options, this, true)){ int[] filters={Utils.JCLIC_ZIP_FF}; FileSystem fs=project.getFileSystem(); String path=StrUtils.secureString(project.getFullPath(), project.getName()+".jclic.zip"); String pLower=path.toLowerCase(); if(!pLower.endsWith(".jclic.zip")){ if(pLower.endsWith(".jclic")) path=path+".zip"; else if(pLower.endsWith(".pac") || pLower.endsWith(".pcc")){ int dot=path.lastIndexOf('.'); if(dot>=1){ path=path.substring(0, dot); } path=path+".jclic.zip"; } } String result=null; File f=new File(path); if(!saveAs && f.exists() && f.canWrite()) result=path; else result=fs.chooseFile(path, true, filters, options, null, AuthorSingleFrame.this, false); if(result!=null){ /* try{ projectEditor.saveProject(result); addRecentFile(project.getFullPath()); ok=true; } catch(Exception ex){ messages.showErrorWarning(AuthorSingleFrame.this, "FILE_ERR_SAVING", result, ex, null); } */ ok=doSaveFile(result); } } return ok; } static boolean saveResult; protected boolean doSaveFile(final String fName){ if(worker!=null){ return false; } saveResult=false; //System.gc(); worker=new edu.xtec.util.SwingWorker(){ Exception exception=null; AuthorSingleFrame thisAuthor=AuthorSingleFrame.this; public Object construct(){ Object o=null; setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try{ projectEditor.saveProject(fName); saveResult=true; addRecentFile(project.getFullPath()); o=new Boolean(true); } catch(Exception ex){ exception=ex; } return o; } public void finished(){ progressDialog.setVisible(false); setCursor(null); if(worker==null || exception!=null){ messages.showErrorWarning(thisAuthor, "FILE_ERR_SAVING", fName, exception, null); } // unlock events worker=null; setEnabled(true); } }; setCursor(null); setEnabled(false); progressDialog.start("WORKING", "msg_saving_project", worker, true, false, true); return saveResult; } protected void doImportActivities(final String fullPath){ if(worker!=null){ return; } System.gc(); worker=new edu.xtec.util.SwingWorker(){ Exception exception=null; AuthorSingleFrame thisAuthor=AuthorSingleFrame.this; public Object construct(){ Object o=null; setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); try{ JClicProject jcp=JClicProject.getJClicProject(thisAuthor, fullPath, progressDialog); if(jcp!=null){ progressDialog.setText(messages.get("import_importing")); // Select activities to import JClicProjectEditor jcped=(JClicProjectEditor)jcp.getEditor(null); javax.swing.JList actList=new javax.swing.JList(jcp.activityBag.getElements()); // Error: setpreferedSize must be called on the JScrollPane, not on the JList //actList.setPreferredSize(new java.awt.Dimension(200, 300)); javax.swing.JScrollPane pane=new javax.swing.JScrollPane(actList); pane.setPreferredSize(new java.awt.Dimension(300, 300)); if(messages.showInputDlg(thisAuthor, new String[]{"import_selectActivities"}, new String[]{}, new JComponent[]{pane}, "action_importActivities_caption") && actList.getSelectedIndices().length>0){ progressDialog.setText(messages.get("import_checkdep")); Object[] selection=actList.getSelectedValues(); // check media elements to import Vector mediaNames=new Vector(); for(int i=0; i=ACTION_NAME.length) return null; return ACTION_NAME[actionId]; } protected Icon getActionIcon(int actionId){ if(actionId<0 || actionId>=ACTION_ICONS.length) return null; return ResourceManager.getImageIcon(ACTION_ICONS[actionId]); } public Action getAction(int id) { if(actions==null || id<0 || id>=actions.length) return null; return actions[id]; } protected boolean processActionEvent(String ac){ if(ac.startsWith("recent") && ac.length()>6){ try{ int i=Integer.parseInt(ac.substring(6)); if(i>=0 && i
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBoxContentEditor.java0000644000175000017500000005061111377161311024065 0ustar /* * File : ActiveBoxContentEditor.java * Created : 02-oct-2002 12:53 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.jclic.Constants; import edu.xtec.util.Options; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.util.JDomUtility; import java.util.HashMap; import java.awt.Component; import edu.xtec.util.Messages; import java.awt.BorderLayout; import javax.swing.JComponent; import edu.xtec.jclic.misc.Utils; import javax.swing.event.DocumentListener; import javax.swing.event.DocumentEvent; import java.awt.event.ActionListener; import edu.xtec.jclic.beans.*; import edu.xtec.jclic.media.MediaContentEditor; import edu.xtec.util.StrUtils; import java.awt.Dimension; import java.util.EventObject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBoxContentEditor extends edu.xtec.util.CtrlPanel { Options options; ActiveBoxContent abc; MediaBagEditor mbe; boolean eventsEnabled=true; public static final String PROP_ABC="activeBoxContent"; ActiveBox preview; /** Creates new form ActiveBoxContentEditor */ public ActiveBoxContentEditor(Options options, ActiveBoxContent abc, MediaBagEditor mbe, ActiveBox ab) { this.options=options; initComponents(); setMediaBagEditor(mbe); setActiveBoxContent(abc); textArea.getDocument().addDocumentListener(this); setPreview(ab); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel imgLb; javax.swing.JSeparator sep1; javax.swing.JSeparator sep11; javax.swing.JSeparator sep2; javax.swing.JLabel textLb; hAlignGrp = new javax.swing.ButtonGroup(); vAlignGrp = new javax.swing.ButtonGroup(); textLb = new javax.swing.JLabel(); textScroll = new javax.swing.JScrollPane(); textArea = new javax.swing.JTextArea(); textCompass = new edu.xtec.jclic.beans.Compass(); sep1 = new javax.swing.JSeparator(); imgLb = new javax.swing.JLabel(); imgButton = new edu.xtec.jclic.beans.ImgButton(); imgButton.setOptions(options); overlapChk = new javax.swing.JCheckBox(); imgCompass = new edu.xtec.jclic.beans.Compass(); sep2 = new javax.swing.JSeparator(); styleLb = new javax.swing.JLabel(); boxBaseButton = new edu.xtec.jclic.beans.BoxBaseButton(); boxBaseButton.setOptions(options); borderChk = new javax.swing.JCheckBox(); sep11 = new javax.swing.JSeparator(); mcLb = new javax.swing.JLabel(); mcButton = new edu.xtec.jclic.beans.MediaContentButton(); mcButton.setOptions(options); sizeSep = new javax.swing.JSeparator(); sizeLb = new javax.swing.JLabel(); sizePanel = new javax.swing.JPanel(); widthLb = new javax.swing.JLabel(); widthEdit = new edu.xtec.jclic.beans.SmallIntEditor(); heightLb = new javax.swing.JLabel(); heightEdit = new edu.xtec.jclic.beans.SmallIntEditor(); setLayout(new java.awt.GridBagLayout()); setBorder(new javax.swing.border.EtchedBorder()); textLb.setLabelFor(textArea); textLb.setText(options.getMsg("edit_act_text")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; add(textLb, gridBagConstraints); textScroll.setPreferredSize(new java.awt.Dimension(300, 3)); textArea.setWrapStyleWord(true); textArea.setLineWrap(true); textScroll.setViewportView(textArea); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(textScroll, gridBagConstraints); textCompass.addPropertyChangeListener(Compass.PROP_DIRECTION, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(textCompass, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(sep1, gridBagConstraints); imgLb.setText(options.getMsg("edit_act_image")); imgLb.setLabelFor(imgButton); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(imgLb, gridBagConstraints); imgButton.setToolTipText(options.getMsg("edit_act_image_tooltip")); imgButton.addPropertyChangeListener(ImgButton.PROP_IMG_NAME, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(imgButton, gridBagConstraints); overlapChk.setToolTipText(options.getMsg("edit_act_overlap_tooltip")); overlapChk.setText(options.getMsg("edit_act_overlap")); overlapChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = 2; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(overlapChk, gridBagConstraints); imgCompass.addPropertyChangeListener(Compass.PROP_DIRECTION, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.gridheight = 2; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(imgCompass, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(sep2, gridBagConstraints); styleLb.setText(options.getMsg("edit_act_style")); styleLb.setLabelFor(boxBaseButton); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(styleLb, gridBagConstraints); boxBaseButton.setToolTipText(options.getMsg("edit_style_tooltip")); boxBaseButton.addPropertyChangeListener(BoxBaseButton.PROP_BOX_BASE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(boxBaseButton, gridBagConstraints); borderChk.setToolTipText(options.getMsg("edit_act_border_tooltip")); borderChk.setText(options.getMsg("edit_act_border")); borderChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(borderChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 0; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(sep11, gridBagConstraints); mcLb.setLabelFor(mcButton); mcLb.setText(options.getMsg("edit_mc_label")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(mcLb, gridBagConstraints); mcButton.addPropertyChangeListener(MediaContentButton.PROP_MEDIA_CONTENT, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(mcButton, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(sizeSep, gridBagConstraints); sizeLb.setLabelFor(sizePanel); sizeLb.setText(options.getMsg("edit_cell_size")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(sizeLb, gridBagConstraints); sizePanel.setLayout(new java.awt.GridBagLayout()); widthLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_width.gif"))); widthLb.setLabelFor(widthEdit); widthLb.setText(":"); widthLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; sizePanel.add(widthLb, gridBagConstraints); widthEdit.setToolTipText(options.getMsg("edit_act_cell_width_tooltip")); widthEdit.setMax(999); widthEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE); widthEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 2, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; sizePanel.add(widthEdit, gridBagConstraints); heightLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_height.gif"))); heightLb.setLabelFor(widthEdit); heightLb.setText(":"); heightLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 12, 3, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; sizePanel.add(heightLb, gridBagConstraints); heightEdit.setToolTipText(options.getMsg("edit_act_cell_height_tooltip")); heightEdit.setMax(999); heightEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE); heightEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 2, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; sizePanel.add(heightEdit, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(sizePanel, gridBagConstraints); }//GEN-END:initComponents public void setPreview(ActiveBox ab){ preview=ab; boxBaseButton.setPreview(ab); } public boolean genericEvent(Object event){ Object src=(event instanceof EventObject) ? ((EventObject)event).getSource() : (event instanceof DocumentEvent) ? textArea : null; if(eventsEnabled && src!=null){ eventsEnabled=false; ActiveBoxContent oldAbc=getAbcClone(); boolean resetPreviewFont=false; if(src==textArea){ String txt=textArea.getText(); if(!StrUtils.compareTrimStringsIgnoreCase(txt, abc.rawText)){ abc.setTextContent(txt!=null && txt.length()>0 ? txt : null); if(abc.bb!=null) abc.bb.resetFont(); } } else if(src==imgButton){ if(abc.imgName!=null) abc.img=null; abc.imgName=imgButton.getImgName(); } else if(src==borderChk) abc.border=new Boolean(borderChk.isSelected()); else if(src==overlapChk){ abc.avoidOverlapping=overlapChk.isSelected(); resetPreviewFont=true; } else if(src==textCompass){ abc.txtAlign=textCompass.getDoubleDirection(); resetPreviewFont=true; } else if(src==imgCompass){ abc.imgAlign=imgCompass.getDoubleDirection(); resetPreviewFont=true; } else if(src==boxBaseButton){ abc.bb=boxBaseButton.getBoxBase(); resetPreviewFont=true; } else if(src==mcButton){ abc.mediaContent=mcButton.getMediaContent(); //resetPreviewFont=true; } else if(abc.dimension!=null && src==widthEdit ||src==heightEdit){ abc.setDimension(new Dimension(widthEdit.getValue(), heightEdit.getValue())); } if(mbe!=null && (src==textArea || src==imgButton)){ try{ abc.realizeContent(mbe.getMediaBag()); } catch(Exception ex){ options.getMessages().showErrorWarning(this, "ERROR", ex); } } if(preview!=null){ BoxBase bb=abc.bb; if(resetPreviewFont && bb!=null) bb.resetFont(); preview.setCurrentContent(abc); } checkAndFirePropertyChange(oldAbc); eventsEnabled=true; } return true; } public void setActiveBoxContent(ActiveBoxContent c){ if(c==null) c=new ActiveBoxContent(); eventsEnabled=false; abc=(ActiveBoxContent)c.clone(); textArea.setText(abc.text); imgButton.clear(); imgButton.setImgName(abc.imgName); borderChk.setSelected(abc.border==null ? false : abc.border.booleanValue()); textCompass.setDoubleDirection(abc.txtAlign); imgCompass.setDoubleDirection(abc.imgAlign); overlapChk.setSelected(abc.avoidOverlapping); boxBaseButton.setBoxBase(abc.bb); mcButton.clear(); mcButton.setMediaContent(abc.mediaContent); Dimension size=abc.getDimension(); sizeSep.setVisible(size!=null); sizeLb.setVisible(size!=null); sizePanel.setVisible(size!=null); widthEdit.setValue(size==null ? 0 : size.width); heightEdit.setValue(size==null ? 0 : size.height); if(preview!=null) preview.setCurrentContent(abc); eventsEnabled=true; } public ActiveBoxContent getAbc(){ if(abc.dimension!=null){ abc.setDimension(new Dimension(widthEdit.getValue(), heightEdit.getValue())); } return abc; } public ActiveBoxContent getAbcClone(){ return abc==null ? null : (ActiveBoxContent)abc.clone(); } private void checkAndFirePropertyChange(ActiveBoxContent oldAbc){ ActiveBoxContent currentAbc=getAbc(); boolean eq=((oldAbc==null && currentAbc==null) || (oldAbc!=null && oldAbc.equals(currentAbc))); if(!eq) firePropertyChange(PROP_ABC, oldAbc, currentAbc); } public void setMediaBagEditor(MediaBagEditor mbe){ this.mbe=mbe; imgButton.setMediaBagEditor(mbe); mcButton.setMediaBagEditor(mbe); } private static HashMap panels=new HashMap(); public static ActiveBoxContent getActiveBoxContent(ActiveBoxContent initialAbc, Component parent, Options options, MediaBagEditor mbe, ActiveBox preview){ if(initialAbc==null) initialAbc=new ActiveBoxContent(); Messages msg=options.getMessages(); ActiveBoxContentEditor abce=(ActiveBoxContentEditor)panels.get(options); if(abce==null){ abce=new ActiveBoxContentEditor(options, initialAbc, mbe, preview); panels.put(options, abce); } else{ abce.setPreview(null); abce.setMediaBagEditor(mbe); abce.setActiveBoxContent(initialAbc); abce.setPreview(preview); } ActiveBoxContent abcBackup=null, abcOriginal=null; if(preview!=null){ abcOriginal=preview.getCurrentContent(); if(abcOriginal!=null) abcBackup=(ActiveBoxContent)abcOriginal.clone(); } boolean b=msg.showInputDlg(parent, abce, "edit_cell_title"); if(!b && preview!=null){ //preview.setCurrentContent(abcBackup); if(abcOriginal!=null && abcBackup!=null){ abcOriginal.copyRawDataFrom(abcBackup); } preview.setCurrentContent(abcOriginal); } return b ? abce.getAbc() : null; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox borderChk; private edu.xtec.jclic.beans.BoxBaseButton boxBaseButton; private javax.swing.ButtonGroup hAlignGrp; private edu.xtec.jclic.beans.SmallIntEditor heightEdit; private javax.swing.JLabel heightLb; private edu.xtec.jclic.beans.ImgButton imgButton; private edu.xtec.jclic.beans.Compass imgCompass; private edu.xtec.jclic.beans.MediaContentButton mcButton; private javax.swing.JLabel mcLb; private javax.swing.JCheckBox overlapChk; private javax.swing.JLabel sizeLb; private javax.swing.JPanel sizePanel; private javax.swing.JSeparator sizeSep; private javax.swing.JLabel styleLb; private javax.swing.JTextArea textArea; private edu.xtec.jclic.beans.Compass textCompass; private javax.swing.JScrollPane textScroll; private javax.swing.ButtonGroup vAlignGrp; private edu.xtec.jclic.beans.SmallIntEditor widthEdit; private javax.swing.JLabel widthLb; // End of variables declaration//GEN-END:variables // Utility functions public static boolean nameChanged(ActiveBoxContent abc, int type, String oldName, String newName){ boolean result=false; if((type & Constants.T_IMAGE)!=0 && oldName.equals(abc.imgName)){ abc.imgName=newName; result=true; } if(abc.mediaContent!=null) result|=MediaContentEditor.nameChanged(abc.mediaContent, type, oldName, newName); return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentRelPanel.form0000644000175000017500000001244611377161311024330 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentControlPanel.java0000644000175000017500000006110311377161311025176 0ustar /* * File : ActiveBagContentControlPanel.java * Created : 01-apr-2003 10:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.util.Options; import edu.xtec.jclic.beans.*; import edu.xtec.jclic.ActivityEditorInternalPanel; import java.util.EventObject; import edu.xtec.jclic.Activity; import java.awt.Dimension; import edu.xtec.jclic.shapers.Shaper; import edu.xtec.util.TripleString; import javax.swing.ComboBoxModel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBagContentControlPanel extends edu.xtec.util.CtrlPanel { ActiveBagContentEditor parent; ActiveBagContent abc, altAbc; ActiveBagContentControlPanel syncPanel; boolean altNull; Options options; int index; int altIndex; int visualIndex; boolean simpleMode; /** Creates new form ActiveBagContentControlPanel */ public ActiveBagContentControlPanel(ActiveBagContentEditor parent, int index, int altIndex, int visualIndex, boolean simpleMode){ setInitializing(true); this.simpleMode=simpleMode; this.parent=parent; options=parent.getOptions(); this.index=index; this.altIndex=altIndex; this.visualIndex=visualIndex; altNull=altIndex>=0; initComponents(); if(altIndex<0 || simpleMode){ altChk.setEnabled(false); altChk.setVisible(false); toggleAlt.setEnabled(false); toggleAlt.setVisible(false); } if(simpleMode){ shaperLb.setVisible(false); shaperCombo.setVisible(false); shaperEditBtn.setVisible(false); scrambleChk.setVisible(false); nRowsLb.setVisible(false); nRowsEdit.setVisible(false); nColsLb.setVisible(false); nColsEdit.setVisible(false); imgLb.setVisible(false); imgButton.setVisible(false); } setInitializing(false); } protected void setSyncpanel(ActiveBagContentControlPanel syncPanel){ this.syncPanel=syncPanel; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel heightLb; javax.swing.JLabel spacer2; javax.swing.JLabel spacer3; javax.swing.JLabel styleLb; javax.swing.JLabel widthLb; spacer3 = new javax.swing.JLabel(); shaperLb = new javax.swing.JLabel(); shaperCombo = new javax.swing.JComboBox(edu.xtec.jclic.shapers.Shaper.getSystemShaperList(options)); shaperEditBtn = new javax.swing.JButton(); scrambleChk = new javax.swing.JCheckBox(); altChk = new javax.swing.JCheckBox(); toggleAlt = new javax.swing.JToggleButton(); spacer2 = new javax.swing.JLabel(); nRowsLb = new javax.swing.JLabel(); nRowsEdit = new edu.xtec.jclic.beans.SmallIntEditor(); nColsLb = new javax.swing.JLabel(); nColsEdit = new edu.xtec.jclic.beans.SmallIntEditor(); imgLb = new javax.swing.JLabel(); imgButton = new edu.xtec.jclic.beans.ImgButton(); imgButton.setOptions(options); widthLb = new javax.swing.JLabel(); widthEdit = new edu.xtec.jclic.beans.SmallIntEditor(); heightLb = new javax.swing.JLabel(); heightEdit = new edu.xtec.jclic.beans.SmallIntEditor(); styleLb = new javax.swing.JLabel(); boxBaseButton = new edu.xtec.jclic.beans.BoxBaseButton(); boxBaseButton.setOptions(options); borderChk = new javax.swing.JCheckBox(); setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; add(spacer3, gridBagConstraints); shaperLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/select_shaper.gif"))); shaperLb.setLabelFor(shaperCombo); shaperLb.setText(":"); shaperLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(shaperLb, gridBagConstraints); shaperCombo.setToolTipText(options.getMsg("edit_act_shaper_tooltip")); shaperCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 3; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(shaperCombo, gridBagConstraints); shaperEditBtn.setText("..."); shaperEditBtn.setMargin(new java.awt.Insets(0, 4, 0, 4)); shaperEditBtn.setEnabled(false); shaperEditBtn.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(shaperEditBtn, gridBagConstraints); scrambleChk.setText(options.getMsg("edit_act_scramble")); scrambleChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(scrambleChk, gridBagConstraints); altChk.setToolTipText(options.getMsg("edit_act_alt_tooltip")); altChk.setText(options.getMsg("edit_act_alt")); altChk.setHorizontalTextPosition(javax.swing.SwingConstants.LEFT); altChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(altChk, gridBagConstraints); toggleAlt.setToolTipText(options.getMsg("edit_act_alt_toggle_tooltip")); toggleAlt.setText(options.getMsg("edit_act_alt_toggle")); toggleAlt.setMargin(new java.awt.Insets(0, 4, 0, 4)); toggleAlt.setEnabled(false); toggleAlt.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(toggleAlt, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(spacer2, gridBagConstraints); nRowsLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_rows.gif"))); nRowsLb.setLabelFor(nRowsEdit); nRowsLb.setText(":"); nRowsLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(nRowsLb, gridBagConstraints); nRowsEdit.setToolTipText(options.getMsg("edit_act_num_rows_tooltip")); nRowsEdit.setMax(30); nRowsEdit.setMin(1); nRowsEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(nRowsEdit, gridBagConstraints); nColsLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_cols.gif"))); nColsLb.setLabelFor(nColsEdit); nColsLb.setText(":"); nColsLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(nColsLb, gridBagConstraints); nColsEdit.setToolTipText(options.getMsg("edit_act_num_cols_tooltip")); nColsEdit.setMax(30); nColsEdit.setMin(1); nColsEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(nColsEdit, gridBagConstraints); imgLb.setLabelFor(imgButton); imgLb.setText(options.getMsg("edit_act_image")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(imgLb, gridBagConstraints); imgButton.setToolTipText(options.getMsg("edit_act_image_tooltip")); imgButton.addPropertyChangeListener(ImgButton.PROP_IMG_NAME, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(imgButton, gridBagConstraints); widthLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_width.gif"))); widthLb.setLabelFor(widthEdit); widthLb.setText(":"); widthLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(widthLb, gridBagConstraints); widthEdit.setToolTipText(options.getMsg("edit_act_cell_width_tooltip")); widthEdit.setMax(999); widthEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE); widthEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(widthEdit, gridBagConstraints); heightLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_height.gif"))); heightLb.setLabelFor(heightEdit); heightLb.setText(":"); heightLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(heightLb, gridBagConstraints); heightEdit.setToolTipText(options.getMsg("edit_act_cell_height_tooltip")); heightEdit.setMax(999); heightEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE); heightEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(heightEdit, gridBagConstraints); styleLb.setLabelFor(boxBaseButton); styleLb.setText(options.getMsg("edit_act_style")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(styleLb, gridBagConstraints); boxBaseButton.setToolTipText(options.getMsg("edit_style_tooltip")); boxBaseButton.addPropertyChangeListener(BoxBaseButton.PROP_BOX_BASE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(boxBaseButton, gridBagConstraints); borderChk.setText(options.getMsg("edit_act_border")); borderChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(borderChk, gridBagConstraints); }//GEN-END:initComponents public boolean eventPerformed(EventObject ev){ boolean result=true; if(abc!=null && ev!=null && ev.getSource()!=null){ Object src=ev.getSource(); if(src==altChk) altChkActionPerformed(); else if(src==toggleAlt){ toggleAltActionPerformed(); result=false; } else if(src==shaperCombo){ shaperComboActionPerformed(); } else if(src==shaperEditBtn){ result=shaperEditBtnActionPerformed(); } else if(src==boxBaseButton){ boxBaseButtonActionPerformed(); } else if(src==imgButton){ imgButtonActionPerformed(); } else if(src==borderChk){ borderChkActionPerformed(); } if(src==widthEdit || src==heightEdit){ parent.abcpp.doResize(visualIndex, widthEdit.getValue(), heightEdit.getValue(), true); } else{ if(src==nColsEdit || src==nRowsEdit || src==shaperCombo || src==shaperEditBtn){ shaperChange(); sync(); } parent.abcpp.setActiveBagContent(visualIndex, abc, altNull ? null : altAbc, null); ActiveBoxBag abg=(ActiveBoxBag)parent.abcpp.getAbstractBox(visualIndex); if(abg!=null){ boxBaseButton.setPreview(abg); abg.setAlternative(toggleAlt.isSelected()); } } } return result; } protected void resized(){ if(abc!=null){ widthEdit.setValue((int)abc.w); heightEdit.setValue((int)abc.h); } } public void fillData(Activity act){ abc = (act!=null && act.abc!=null && act.abc.length>index ? act.abc[index] : null); altAbc=(act!=null && act.abc!=null && altIndex>=0 && altIndexindex ? act.scramble[index] : false))); scrambleChk.setEnabled(act!=null && !act.shuffleAlways()); } public void setActiveBagContent(ActiveBagContent abc, ActiveBagContent altAbc){ this.abc=abc; this.altAbc=altAbc; altNull=(altAbc==null); // ADDED // Modified to solve bug 38: Data lost when editing crosswords // ActiveBagContent.checkCells sets the number of cells to the values specified by the // Shaper. This can cause lost of data in Crossword activities, because they sould use // ActiveBagContent objects with more cells than the specified by the Shaper. if(abc!=null && !simpleMode) abc.checkCells(); if(altAbc!=null && !simpleMode) altAbc.checkCells(); // ----- altChk.setSelected(!altNull); altChk.setEnabled(abc!=null); toggleAlt.setSelected(false); toggleAlt.setEnabled(!altNull); imgButton.setMediaBagEditor(parent.mediaBagEditor); imgButton.setImgName(abc!=null ? abc.imgName : null); imgButton.setEnabled(abc!=null); boxBaseButton.setBoxBase(abc!=null ? abc.bb : null); parent.abcpp.setActiveBagContent(visualIndex, abc, altAbc, null); boxBaseButton.setPreview(parent.abcpp.getAbstractBox(visualIndex)); boxBaseButton.setEnabled(abc!=null); Shaper sh=(abc!=null ? abc.getShaper() : null); ComboBoxModel model=shaperCombo.getModel(); int modelSize=model.getSize(); int i=-1; if(sh!=null){ String s=sh.getClassName(); for(i=0; iindex){ act.abc[index]=abc; act.scramble[index]=scrambleChk.isSelected(); if(altIndex>=0 && altIndex
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/TextGridContentControlPanel.java0000644000175000017500000004035311377161311025107 0ustar /* * File : TextGridContentControlPanel.java * Created : 01-apr-2003 10:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.util.Options; import edu.xtec.jclic.beans.*; import edu.xtec.jclic.ActivityEditorInternalPanel; import java.util.EventObject; import edu.xtec.jclic.Activity; import edu.xtec.jclic.activities.textGrid.CrossWord; import edu.xtec.jclic.activities.textGrid.WordSearch; import java.awt.Dimension; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextGridContentControlPanel extends edu.xtec.util.CtrlPanel { ActiveBagContentEditor parent; TextGridContent tgc; Options options; boolean isWordSearch; int index; /** Creates new form ActiveBagContentControlPanel */ public TextGridContentControlPanel(ActiveBagContentEditor parent, int index, boolean isWordSearch){ setInitializing(true); this.isWordSearch=isWordSearch; this.parent=parent; options=parent.getOptions(); this.index=index; initComponents(); if(!isWordSearch){ wordListLb.setVisible(false); wordListEditor.setEnabled(false); wordListEditor.setVisible(false); useGridBChk.setEnabled(false); useGridBChk.setVisible(false); } else{ wildTransparentChk.setEnabled(false); wildTransparentChk.setVisible(false); } setInitializing(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel heightLb; javax.swing.JPanel leftPanel; javax.swing.JLabel nColsLb; javax.swing.JLabel nRowsLb; javax.swing.JLabel spacer; javax.swing.JLabel spacer2; javax.swing.JLabel styleLb; javax.swing.JLabel widthLb; leftPanel = new javax.swing.JPanel(); spacer = new javax.swing.JLabel(); useGridBChk = new javax.swing.JCheckBox(); nRowsLb = new javax.swing.JLabel(); nRowsEdit = new edu.xtec.jclic.beans.SmallIntEditor(); nColsLb = new javax.swing.JLabel(); nColsEdit = new edu.xtec.jclic.beans.SmallIntEditor(); wildTransparentChk = new javax.swing.JCheckBox(); spacer2 = new javax.swing.JLabel(); widthLb = new javax.swing.JLabel(); widthEdit = new edu.xtec.jclic.beans.SmallIntEditor(); heightLb = new javax.swing.JLabel(); heightEdit = new edu.xtec.jclic.beans.SmallIntEditor(); styleLb = new javax.swing.JLabel(); boxBaseButton = new edu.xtec.jclic.beans.BoxBaseButton(); boxBaseButton.setOptions(options); borderChk = new javax.swing.JCheckBox(); wordSearchPanel = new javax.swing.JPanel(); wordListLb = new javax.swing.JLabel(); wordListEditor = new TextListEditor(options); setLayout(new java.awt.GridBagLayout()); leftPanel.setLayout(new java.awt.GridBagLayout()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.weighty = 1.0; leftPanel.add(spacer, gridBagConstraints); useGridBChk.setToolTipText(options.getMsg("edit_act_wordSearch_panelB_tooltip")); useGridBChk.setText(options.getMsg("edit_act_wordSearch_panelB")); useGridBChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(useGridBChk, gridBagConstraints); nRowsLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_rows.gif"))); nRowsLb.setText(":"); nRowsLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(nRowsLb, gridBagConstraints); nRowsEdit.setToolTipText(options.getMsg("edit_act_num_rows_tooltip")); nRowsEdit.setMax(30); nRowsEdit.setMin(1); nRowsEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(nRowsEdit, gridBagConstraints); nColsLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_cols.gif"))); nColsLb.setText(":"); nColsLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(nColsLb, gridBagConstraints); nColsEdit.setToolTipText(options.getMsg("edit_act_num_cols_tooltip")); nColsEdit.setMax(30); nColsEdit.setMin(1); nColsEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(nColsEdit, gridBagConstraints); wildTransparentChk.setToolTipText(options.getMsg("edit_act_wildTransparent_tooltip")); wildTransparentChk.setText(options.getMsg("edit_act_wildTransparent")); wildTransparentChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 3; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(wildTransparentChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; leftPanel.add(spacer2, gridBagConstraints); widthLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_width.gif"))); widthLb.setLabelFor(widthEdit); widthLb.setText(":"); widthLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(widthLb, gridBagConstraints); widthEdit.setToolTipText(options.getMsg("edit_act_cell_width_tooltip")); widthEdit.setMax(999); widthEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE); widthEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(widthEdit, gridBagConstraints); heightLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/adjust_height.gif"))); heightLb.setLabelFor(heightEdit); heightLb.setText(":"); heightLb.setIconTextGap(0); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(heightLb, gridBagConstraints); heightEdit.setToolTipText(options.getMsg("edit_act_cell_height_tooltip")); heightEdit.setMax(999); heightEdit.setMin(edu.xtec.jclic.Constants.MIN_CELL_SIZE); heightEdit.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(heightEdit, gridBagConstraints); styleLb.setText(options.getMsg("edit_act_style")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(styleLb, gridBagConstraints); boxBaseButton.setToolTipText(options.getMsg("edit_style_tooltip")); boxBaseButton.addPropertyChangeListener(BoxBaseButton.PROP_BOX_BASE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(boxBaseButton, gridBagConstraints); borderChk.setText(options.getMsg("edit_act_border")); borderChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); leftPanel.add(borderChk, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(leftPanel, gridBagConstraints); wordSearchPanel.setLayout(new java.awt.GridBagLayout()); wordListLb.setText(options.getMsg("edit_act_hiddenWords")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHEAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); wordSearchPanel.add(wordListLb, gridBagConstraints); wordListEditor.setToolTipText(options.getMsg("edit_act_hiddenWords_tooltip")); wordListEditor.setPreferredSize(new java.awt.Dimension(160, 80)); wordListEditor.setUpperCase(true); wordListEditor.addPropertyChangeListener(TextListEditor.PROP_LIST, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.VERTICAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3); wordSearchPanel.add(wordListEditor, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; add(wordSearchPanel, gridBagConstraints); }//GEN-END:initComponents public boolean eventPerformed(EventObject ev){ boolean result=true; if(tgc!=null && ev!=null && ev.getSource()!=null){ Object src=ev.getSource(); if(src==boxBaseButton){ boxBaseButtonActionPerformed(); } else if(src==borderChk){ borderChkActionPerformed(); } else if(src==useGridBChk && isWordSearch){ parent.enableGridB(useGridBChk.isSelected()); return result; } if(src==widthEdit || src==heightEdit){ parent.abcpp.doResize(index, widthEdit.getValue(), heightEdit.getValue(), true); } else{ if(src==nColsEdit || src==nRowsEdit){ tgc.ncw=nColsEdit.getValue(); tgc.nch=nRowsEdit.getValue(); tgc.completeText(); } parent.abcpp.setActiveBagContent(index, null, null, tgc); AbstractBox abx=parent.abcpp.getAbstractBox(index); if(abx!=null){ boxBaseButton.setPreview(abx); } } } return result; } protected void resized(){ if(tgc!=null){ widthEdit.setValue((int)tgc.w); heightEdit.setValue((int)tgc.h); } } public void fillData(Activity act){ tgc=(act!=null ? act.tgc : null); boxBaseButton.setBoxBase(tgc!=null ? tgc.bb : null); parent.abcpp.setActiveBagContent(index, null, null, tgc); boxBaseButton.setPreview(parent.abcpp.getAbstractBox(index)); boxBaseButton.setEnabled(tgc!=null); nColsEdit.setValue(tgc!=null ? tgc.ncw : 1); nColsEdit.setEnabled(tgc!=null); nRowsEdit.setValue(tgc!=null ? tgc.nch : 1); nRowsEdit.setEnabled(tgc!=null); widthEdit.setValue(tgc!=null ? (int)tgc.w : 20); widthEdit.setEnabled(tgc!=null); heightEdit.setValue(tgc!=null ? (int)tgc.h : 20); heightEdit.setEnabled(tgc!=null); borderChk.setSelected(tgc!=null ? tgc.border : true); borderChk.setEnabled(tgc!=null); if(isWordSearch && (act instanceof WordSearch)){ useGridBChk.setSelected(act.abc!=null && act.abc[0]!=null); wordListEditor.setTextList(((WordSearch)act).getClues()); } else{ wordListEditor.setTextList(null); wordListEditor.setEnabled(false); } if(!isWordSearch && (act instanceof CrossWord)){ wildTransparentChk.setSelected(((CrossWord)act).wildTransparent); } else{ wildTransparentChk.setSelected(false); } } public void saveData(Activity act){ if(act!=null){ act.tgc=tgc; if(isWordSearch && (act instanceof WordSearch)){ ((WordSearch)act).setClues(wordListEditor.getTextList(), null); } else if(!isWordSearch && (act instanceof CrossWord)){ ((CrossWord)act).wildTransparent=wildTransparentChk.isSelected(); } } } private void boxBaseButtonActionPerformed(){ BoxBase bb=boxBaseButton.getBoxBase(); if(bb!=null && tgc!=null) tgc.bb=bb; } private void borderChkActionPerformed(){ if(tgc!=null) tgc.border=borderChk.isSelected(); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox borderChk; private edu.xtec.jclic.beans.BoxBaseButton boxBaseButton; private edu.xtec.jclic.beans.SmallIntEditor heightEdit; private edu.xtec.jclic.beans.SmallIntEditor nColsEdit; private edu.xtec.jclic.beans.SmallIntEditor nRowsEdit; private javax.swing.JCheckBox useGridBChk; private edu.xtec.jclic.beans.SmallIntEditor widthEdit; private javax.swing.JCheckBox wildTransparentChk; private edu.xtec.jclic.beans.TextListEditor wordListEditor; private javax.swing.JLabel wordListLb; private javax.swing.JPanel wordSearchPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentControlPanel.form0000644000175000017500000006002011377161311025215 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentEditor.form0000644000175000017500000000325111377161311024046 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentRelPanel.java0000644000175000017500000001421411377161311024301 0ustar /* * File : ActiveBagContentRelPanel.java * Created : 03-apr-2003 12:54 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import java.util.EventObject; import edu.xtec.jclic.Activity; import edu.xtec.jclic.activities.associations.ComplexAssociation; import edu.xtec.jclic.activities.text.WrittenAnswer; import edu.xtec.util.Options; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBagContentRelPanel extends edu.xtec.util.CtrlPanel { ActiveBagContentEditor parent=null; Options options=null; boolean isBoolean=false; /** Creates new form ActiveBagContentRelPanel */ public ActiveBagContentRelPanel(ActiveBagContentEditor parent, boolean isBoolean) { setInitializing(true); this.parent=parent; options=parent.getOptions(); this.isBoolean=isBoolean; initComponents(); if(isBoolean){ showAllArrowsChk.setVisible(false); arrowColorBtn.setVisible(false); arrowColorLb.setVisible(false); } setInitializing(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; layoutGroup = new javax.swing.ButtonGroup(); showAllArrowsChk = new javax.swing.JCheckBox(); showAllArrowsChk.addActionListener(this); arrowColorLb = new javax.swing.JLabel(); arrowColorBtn = new edu.xtec.jclic.beans.ColorButton(); arrowColorBtn.addActionListener(this); inverseResolutionChk = new javax.swing.JCheckBox(); inverseResolutionChk.addActionListener(this); setLayout(new java.awt.GridBagLayout()); showAllArrowsChk.setSelected(true); showAllArrowsChk.setText(options.getMsg("edit_act_showAllArrows")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(showAllArrowsChk, gridBagConstraints); arrowColorLb.setLabelFor(arrowColorBtn); arrowColorLb.setText(options.getMsg("edit_act_arrowColor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; add(arrowColorLb, gridBagConstraints); arrowColorBtn.setToolTipText(options.getMsg("edit_act_arrowColor_tooltip")); arrowColorBtn.setColor(BoxConnector.getXORColor(BoxConnector.DEFAULT_XOR_COLOR)); arrowColorBtn.setOptions(options); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; add(arrowColorBtn, gridBagConstraints); inverseResolutionChk.setToolTipText(options.getMsg("edit_act_inverseResolution_tooltip")); inverseResolutionChk.setText(options.getMsg("edit_act_inverseResolution")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(inverseResolutionChk, gridBagConstraints); }//GEN-END:initComponents public boolean eventPerformed(EventObject ev){ boolean result=true; if(ev!=null && ev.getSource()!=null){ Object src=ev.getSource(); if(src==showAllArrowsChk){ parent.abcpp.setShowAllArrows(showAllArrowsChk.isSelected()); result=false; } else if(src==arrowColorBtn){ parent.abcpp.arrowColor=BoxConnector.getXORColor(arrowColorBtn.getColor()); parent.abcpp.repaint(); result=false; } else if(src==inverseResolutionChk){ //parent.setModified(true); } } return result; } public void clear() { inverseResolutionChk.setSelected(false); } public void fillData(Activity act){ if(act!=null){ inverseResolutionChk.setSelected(act.invAss); inverseResolutionChk.setVisible(act instanceof ComplexAssociation || act instanceof WrittenAnswer); } } public void saveData(Activity act){ if(act!=null){ act.invAss=inverseResolutionChk.isSelected(); } } // Variables declaration - do not modify//GEN-BEGIN:variables private edu.xtec.jclic.beans.ColorButton arrowColorBtn; private javax.swing.JLabel arrowColorLb; private javax.swing.JCheckBox inverseResolutionChk; private javax.swing.ButtonGroup layoutGroup; private javax.swing.JCheckBox showAllArrowsChk; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentEditor.java0000644000175000017500000002706111377161311024031 0ustar /* * File : ActiveBagContentEditor.java * Created : 09-oct-2002 17:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.util.Options; import edu.xtec.jclic.bags.MediaBagEditor; import java.awt.event.ActionListener; import javax.swing.JComponent; import java.awt.BorderLayout; import java.awt.Dimension; import edu.xtec.jclic.ActivityEditorInternalPanel; import edu.xtec.jclic.ActivityEditorPanel; import edu.xtec.jclic.Activity; import edu.xtec.jclic.ActivityEditor; import edu.xtec.jclic.Constants; import edu.xtec.jclic.beans.NullableObject; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import java.util.EventObject; import edu.xtec.jclic.beans.ImgButton; import edu.xtec.jclic.beans.BoxBaseButton; import edu.xtec.jclic.shapers.Shaper; import edu.xtec.jclic.beans.SmallIntEditor; import javax.swing.JTabbedPane; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import edu.xtec.util.ResourceManager; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBagContentEditor extends ActivityEditorInternalPanel { JTabbedPane ctrlTab; ActiveBagContentPreviewPanel abcpp; ActiveBagContentControlPanel[] cp; TextGridContentControlPanel tgp; ActiveBagContentRelPanel rp; ActiveBagContentLayoutPanel lp; MediaBagEditor mediaBagEditor; //int abcIndex=0; //int altAbcIndex=-1; //ActiveBagContent abc, altAbc; boolean useRel=false; boolean useBoolRel=false; boolean crossWord=false; int relIndex=-1; public static final int SINGLE=0, // puzzles and info SINGLE_ALT=1, // memory SINGLE_BOOL_ALT=2, // identify SINGLE_LAYOUT=3, // double puzzle DOUBLE_ALT=4, // simple ass. DOUBLE_REL=5, // explore DOUBLE_REL_ALT=6, // complex ass. written answ. TEXTGRID_ALT=7, // wordsearch TEXTGRID_CRW=8; //crossWord /** Creates new form ActiveBagContentEditor */ public ActiveBagContentEditor(ActivityEditorPanel parent, int type) { super(parent); int altIndex=-1; int indexBis=-1; boolean showLayout=false; boolean useTextGrid=false; switch(type){ case SINGLE_BOOL_ALT: useBoolRel=true; altIndex=1; break; case SINGLE_ALT: showLayout=true; altIndex=1; break; case SINGLE_LAYOUT: showLayout=true; case SINGLE: break; case DOUBLE_REL_ALT: altIndex=2; case DOUBLE_REL: useRel=true; indexBis=1; showLayout=true; break; case DOUBLE_ALT: altIndex=2; indexBis=1; showLayout=true; break; case TEXTGRID_ALT: useTextGrid=true; indexBis=0; showLayout=true; break; case TEXTGRID_CRW: useTextGrid=true; indexBis=0; altIndex=1; showLayout=true; crossWord=true; break; } initComponents(); abcpp=(ActiveBagContentPreviewPanel)previewPanel; cp=new ActiveBagContentControlPanel[2]; if(useTextGrid) tgp=new TextGridContentControlPanel(this, 0, !crossWord); else cp[0]=new ActiveBagContentControlPanel(this, 0, altIndex, 0, crossWord); if(indexBis>=0){ cp[1]=new ActiveBagContentControlPanel(this, indexBis, crossWord ? 1 : -1, useTextGrid ? 1 : indexBis, crossWord); } if(cp[1]!=null || useRel || useBoolRel || showLayout){ ctrlTab=new JTabbedPane(); ctrlTab.addTab (options.getMsg("edit_act_grid"+(cp[1]==null ? "" : "_A")) , ResourceManager.getImageIcon("icons/grid.gif"), getFirstComponent()); if(cp[1]!=null) ctrlTab.addTab (options.getMsg("edit_act_grid_B") , ResourceManager.getImageIcon("icons/grid.gif"), cp[1]); if(showLayout){ lp=new ActiveBagContentLayoutPanel(this); ctrlTab.addTab (options.getMsg("edit_act_grid_layout") , ResourceManager.getImageIcon("icons/grid_layout.gif"), lp); } if(useRel || useBoolRel){ relIndex=ctrlTab.getTabCount(); rp=new ActiveBagContentRelPanel(this, useBoolRel); ctrlTab.addTab (options.getMsg("edit_act_grid_relationship") , ResourceManager.getImageIcon("icons/relationship.gif"), rp); } add(ctrlTab, BorderLayout.NORTH); ctrlTab.getModel().addChangeListener(new ChangeListener(){ public void stateChanged(ChangeEvent e){ abcpp.setEditMode( ctrlTab.getSelectedIndex()==relIndex ? useBoolRel ? ActiveBagContentPreviewPanel.EDIT_BOOL : ActiveBagContentPreviewPanel.EDIT_LINKS : ActiveBagContentPreviewPanel.EDIT_GRIDS); } }); } else add(getFirstComponent(), BorderLayout.NORTH); if(type==DOUBLE_ALT && cp[0]!=null && cp[1]!=null){ cp[0].setSyncpanel(cp[1]); cp[1].setSyncpanel(cp[0]); } } private JComponent getFirstComponent(){ JComponent result=tgp; if(result==null) result=cp[0]; return result; } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents previewScroll = new javax.swing.JScrollPane(); previewPanel = new ActiveBagContentPreviewPanel(this, crossWord); setLayout(new java.awt.BorderLayout()); previewPanel.setPreferredSize(new java.awt.Dimension(800, 600)); previewScroll.setViewportView(previewPanel); add(previewScroll, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents public void fillData() { saveBag=null; saveBagAlt=null; Activity act=getActivity(); mediaBagEditor = act==null ? null : getActivityEditor().getMediaBagEditor(); if(tgp!=null) tgp.fillData(act); if(cp[0]!=null) cp[0].fillData(act); if(cp[1]!=null) cp[1].fillData(act); if(rp!=null) rp.fillData(act); if(lp!=null) lp.fillData(act); checkTabs(); abcpp.setMediaBagEditor(mediaBagEditor); abcpp.setBoxGridPos(act==null ? Activity.AB : act.boxGridPos); } public void saveData(){ Activity act=getActivity(); if(act!=null){ if(tgp!=null) tgp.saveData(act); if(cp[0]!=null) cp[0].saveData(act); if(cp[1]!=null) cp[1].saveData(act); if(rp!=null) rp.saveData(act); if(lp!=null) lp.saveData(act); } } private ActiveBagContent saveBag, saveBagAlt; protected void enableGridB(boolean value){ Activity act=getActivity(); if(cp[1]!=null && act!=null && act.abc!=null){ int index=cp[1].index; if(value==false){ saveBag=cp[1].abc; saveBagAlt=cp[1].altAbc; act.abc[index]=null; } else{ if(saveBag!=null){ act.abc[index]=saveBag; if(cp[1].altIndex>=0) act.abc[cp[1].altIndex]=saveBagAlt; } else{ act.abc[index]=ActiveBagContent.initNew(2, 2, 'A'); } } cp[1].setInitializing(true); cp[1].fillData(act); cp[1].setInitializing(false); setModified(true); checkTabs(); } } protected void checkTabs(){ Activity act=getActivity(); if(act!=null && cp[1]!=null && lp!=null && ctrlTab!=null){ boolean visible=(cp[1].abc!=null); if(!visible && ctrlTab.getTabCount()==3){ ctrlTab.remove(lp); ctrlTab.remove(cp[1]); } else if(visible && ctrlTab.getTabCount()==1){ ctrlTab.addTab (options.getMsg("edit_act_grid_B") , ResourceManager.getImageIcon("icons/grid.gif"), cp[1]); ctrlTab.addTab (options.getMsg("edit_act_grid_layout") , ResourceManager.getImageIcon("icons/grid_layout.gif"), lp); } } } /* public boolean dataChanged(){ return false; } */ protected javax.swing.Icon getIcon(){ return edu.xtec.util.ResourceManager.getImageIcon("icons/panel.gif"); } protected String getTitle() { return options.getMsg("edit_act_panels_panel"); } protected String getTooltip() { return options.getMsg("edit_act_panels_panel_tooltip"); } // only called by abcpp; protected void panelSelected(int panel){ if(ctrlTab!=null && panel>=0 && panel=0 && (ctrlTab==null || panel
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/BoxBaseEditor.form0000644000175000017500000011256211377161311022217 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/ActiveBagContentPreviewPanel.java0000644000175000017500000007415111377161311025206 0ustar /* * File : ActiveBagContentPreviewPanel.java * Created : 10-oct-2002 10:57 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import javax.swing.JPanel; import edu.xtec.util.Options; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import edu.xtec.jclic.Constants; import edu.xtec.jclic.bags.MediaBagEditor; import java.awt.AWTEvent; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.awt.Rectangle; import java.awt.Point; import java.awt.Color; import java.awt.Cursor; import edu.xtec.jclic.Activity; import edu.xtec.jclic.activities.textGrid.CrossWord; import java.awt.geom.Rectangle2D; import edu.xtec.jclic.boxes.BoxConnector; import edu.xtec.jclic.shapers.Shaper; import edu.xtec.util.ResizerPanel; import java.awt.Dimension; import java.awt.event.FocusEvent; import java.awt.event.FocusListener; import java.awt.event.KeyEvent; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBagContentPreviewPanel extends ResizerPanel implements FocusListener { public static final int MARGIN=10; AbstractBox[] bg=new AbstractBox[2]; ActiveBoxBag[] abg=new ActiveBoxBag[2]; TextGrid[] grid=new TextGrid[2]; ActiveBagContent[] abc=new ActiveBagContent[2]; ActiveBagContent[] altAbc=new ActiveBagContent[2]; ActiveBagContent[][] allAbc=new ActiveBagContent[][]{abc, altAbc}; TextGridContent[] tgc=new TextGridContent[2]; MediaBagEditor mbe; boolean[] allowResize=new boolean[2]; boolean dragCursorX=false, dragCursorY=false; boolean dragging=false; int margin=MARGIN; private int cgrid=0; int boxGridPos=Activity.AB; ActiveBagContentEditor parent; int editMode; int currentLine, highlightLine; BoxConnector bc; boolean showAllArrows=true; boolean crossWord=false; ActiveBox hClue, vClue; Color softLineColor=Color.blue; Color activeLineColor=Color.red; Color arrowColor=BoxConnector.DEFAULT_XOR_COLOR; public static final int EDIT_GRIDS=0, EDIT_LINKS=1, EDIT_BOOL=2; public static final float ARROW_WIDTH=2.0F; /** Creates a new instance of ActiveBagContentPreviewPanel */ public ActiveBagContentPreviewPanel(ActiveBagContentEditor parent, boolean isCrossWord) { this.parent=parent; crossWord=isCrossWord; bc=new BoxConnector(this); bc.arrow=true; bc.line_width=ARROW_WIDTH; bc.lineColor=activeLineColor; currentLine=-1; highlightLine=-1; editMode=EDIT_GRIDS; enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.KEY_EVENT_MASK); addFocusListener(this); } /* * ATENCIO: DEPRECATED A Java 1.4!! * public boolean isFocusTraversable(){ if(grid[0]!=null || grid[1]!=null) return true; return super.isFocusTraversable(); } */ public AbstractBox getAbstractBox(int index){ return bg[index]; } public boolean isCrossWord(){ return crossWord; } public void setActiveBagContent(int index, ActiveBagContent abcx, ActiveBagContent altAbcx, TextGridContent tgcx){ abc[index]=abcx; altAbc[index]=altAbcx; tgc[index]=tgcx; bg[index]=null; grid[index]=null; abg[index]=null; if(tgc[index]!=null){ grid[index]=TextGrid.createEmptyGrid(null, this, margin, margin, tgc[index], false); bg[index]=grid[index]; grid[index].setChars(tgc[index].text); if(crossWord) grid[index].setCellAttributes(true, false); grid[index].setCursorAt(0, 0, false); grid[index].setCursorEnabled(true); checkCursor(false); allowResize[index]=true; } else if(crossWord && index==1 && abc[index]!=null && altAbc[index]!=null){ abg[1]=new ActiveBoxBag(null, this, abc[1].bb); bg[1]=abg[1]; ActiveBox ab=new ActiveBox(abg[1], this, null); ActiveBoxContent abct=new ActiveBoxContent(); abct.setImgContent(edu.xtec.util.ResourceManager.getImageIcon("buttons/textright.png").getImage(), null); ab.setContent(abct); abg[1].addActiveBox(ab); hClue=new ActiveBox(abg[1], this, null); abg[1].addActiveBox(hClue); ab=new ActiveBox(abg[1], this, null); abct=new ActiveBoxContent(); abct.setImgContent(edu.xtec.util.ResourceManager.getImageIcon("buttons/textdown.png").getImage(), null); ab.setContent(abct); abg[1].addActiveBox(ab); vClue=new ActiveBox(abg[1], this, null); abg[1].addActiveBox(vClue); abg[1].setBorder(true); resizeCrossWordPanel((int)abc[1].w, (int)abc[1].h); cursorPosChanged(); allowResize[1]=true; } else if(abc[index]!=null){ abg[index]=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[index]); bg[index]=abg[index]; abg[index].setContent(abc[index], altAbc[index]); allowResize[index]=(abc[index].img==null); } if(bg[index]!=null) bg[index].setVisible(true); /* if(index==0 && bg[index]!=null && abcx!=null){ activeLineColor=bg[index].getBoxBaseResolve().textColor; bc.lineColor=activeLineColor; } */ if(bc.active) bc.end(); currentLine=-1; highlightLine=-1; dragCursorX=false; dragCursorY=false; setCursor(null); revalidate(); BoxBase.resetAllFonts(); repaint(); } protected void resizeCrossWordPanel(int w, int h){ if(crossWord && abg[1]!=null && abg[1].getNumCells()==4){ boolean rowDist=(boxGridPos==Activity.AUB || boxGridPos==Activity.BUA); int x=(int)(abg[1].getX()); int y=(int)(abg[1].getY()); ActiveBox ab=abg[1].getActiveBox(0); ab.setBounds(x, y, CrossWord.LABEL_WIDTH, h); ab=abg[1].getActiveBox(1); ab.setBounds(x+CrossWord.LABEL_WIDTH, y, w, h); int x0 = rowDist ? x+CrossWord.LABEL_WIDTH+w : x; int y0 = rowDist ? y : y+h; ab=abg[1].getActiveBox(2); ab.setBounds(x0, y0, CrossWord.LABEL_WIDTH, h); ab=abg[1].getActiveBox(3); ab.setBounds(x0+CrossWord.LABEL_WIDTH, y0, w, h); abg[1].recalcSize(); /* abg[1].width = rowDist ? (2*CrossWord.LABEL_WIDTH)+2*w : CrossWord.LABEL_WIDTH+w; abg[1].height = rowDist ? h : 2*h; */ } } public void doLayout(){ if(bg[0]!=null){ if(bg[1]!=null) BoxBag.layoutDouble(getSize(), (Resizable)bg[0], (Resizable)bg[1], boxGridPos, margin); else BoxBag.layoutSingle(getSize(), (Resizable)bg[0], margin); } } public void paintComponent(Graphics g){ super.paintComponent(g); if(bg[0]!=null){ Graphics2D g2=(Graphics2D)g; RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(Constants.DEFAULT_RENDERING_HINTS); while(true){ BoxBase.flagFontReduced=false; for(int i=0; i<2; i++) if(bg[i]!=null) bg[i].update(g2, g2.getClipBounds(), this); if(!BoxBase.flagFontReduced) break; } if(editMode==EDIT_LINKS && abg[1]!=null && abc[0]!=null){ for(int i=0; i=0) drawArrow(g2, highlightLine); bc.update(g2, g2.getClipBounds(), this); } g2.setRenderingHints(rh); } } private void drawArrow(Graphics2D g2, int i){ if(abg[0]==null || abg[1]==null) return; ActiveBox bx=abg[0].getActiveBox(i); int id=abc[0].getActiveBoxContent(i).id; if(id>=0 && id=0 ? bg[index] : null; ActiveBoxBag xbg = (abg[0]==xbox ? abg[0] : (abg[1]==xbox ? abg[1] : null)); TextGrid xgrid = (grid[0]==xbox ? grid[0] : (grid[1]==xbox ? grid[1] : null)); switch(ev.getID()){ case MouseEvent.MOUSE_MOVED: if(!dragging){ Cursor newCursor=null; if(xbox!=null && allowResize[index]){ dragCursorX=Math.abs(p.x-xbox.x-xbox.width)<5 && p.y>=xbox.y && p.y<(xbox.y+xbox.height+5); dragCursorY=Math.abs(p.y-xbox.y-xbox.height)<5 && p.x>=xbox.x && p.x<(xbox.x+xbox.width+5); if(dragCursorX && dragCursorY) newCursor=Cursor.getPredefinedCursor(Cursor.NW_RESIZE_CURSOR); else if(dragCursorY) newCursor=Cursor.getPredefinedCursor(Cursor.N_RESIZE_CURSOR); else if(dragCursorX) newCursor=Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR); } if(newCursor==null && xbg!=null && xbg.findActiveBox(p)!=null) newCursor=Cursor.getPredefinedCursor(Cursor.HAND_CURSOR); setCursor(newCursor); } break; case MouseEvent.MOUSE_PRESSED: if(xbox!=null){ setPanelSelected(index); if(dragCursorX || dragCursorY){ dragging=true; resizeByDrag(p, false); } else if(xgrid!=null){ if(xgrid.contains(p)){ Point pt=xgrid.getLogicalCoords(p); if(pt!=null){ setCursorAt(pt.x, pt.y); } } } consumed=true; } break; case MouseEvent.MOUSE_RELEASED: if(xbox!=null){ if(dragging){ resizeByDrag(p, true); dragging=false; } else if(xbg!=null){ ActiveBox ab=xbg.findActiveBox(p); if(ab!=null){ ActiveBoxContent abxcnt=ab.getCurrentContent(); int group=-1; int bag=-1; int item=-1; for(int i=0; i=0){ bag=j; group=i; } } } } if(item>=0){ ActiveBoxContent abxc=ActiveBoxContentEditor.getActiveBoxContent( abxcnt, this, parent.getOptions(), mbe, ab); if(abxc!=null){ allAbc[group][bag].setActiveBoxContentAt(abxc, item); setModified(true); if(!ab.isAlternative()){ ab.setContent(abxc); } else{ ab.setAltContent(abxc); } //ab.setAlternative(alt); BoxBase.resetAllFonts(); repaint(); } } } } consumed=true; } break; case MouseEvent.MOUSE_DRAGGED: if(xbox!=null && dragging){ resizeByDrag(p, false); consumed=true; } break; } return consumed; } protected boolean processMouseLinks(MouseEvent ev){ boolean consumed=false; if(abg[0]!=null && abg[1]!=null){ Point pt=ev.getPoint(); switch(ev.getID()){ case MouseEvent.MOUSE_DRAGGED: case MouseEvent.MOUSE_MOVED: if(bc.active) bc.moveTo(pt); else{ int newLine=-1; ActiveBox bx=abg[0].findActiveBox(pt); if(bx!=null){ setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); newLine=bx.idOrder; } else setCursor(null); if(newLine!=highlightLine){ highlightLine=newLine; repaint(); } } consumed=true; break; case MouseEvent.MOUSE_PRESSED: if(bc.active){ bc.end(); ActiveBox bx=abg[1].findActiveBox(bc.dest); ActiveBoxContent bc0=abc[0].getActiveBoxContent(currentLine); bc0.id=(bx==null ? -1 : bx.idOrder); highlightLine=currentLine; currentLine=-1; setModified(true); repaint(); } else{ ActiveBox bx=abg[0].findActiveBox(pt); if(bx!=null){ highlightLine=-1; currentLine=bx.idOrder; repaint(); bc.begin(pt); } } consumed=true; break; } } return consumed; } private void resizeByDrag(Point p, boolean finish){ if(cgrid>=0 && bg[cgrid]!=null){ int ncw=0, nch=0; if(abg[cgrid]==bg[cgrid] && abc[cgrid]!=null){ if(crossWord){ ncw=1; nch=1; } else{ ncw=abc[cgrid].ncw; nch=abc[cgrid].nch; } } else if(grid[cgrid]==bg[cgrid] && tgc[cgrid]!=null){ ncw=tgc[cgrid].ncw; nch=tgc[cgrid].nch; } if(ncw>0 && nch>0){ int w=(int)(bg[cgrid].width/ncw); int h=(int)(bg[cgrid].height/nch); if(dragCursorX) w=(int)((p.x-bg[cgrid].x)/ncw); if(dragCursorY) h=(int)((p.y-bg[cgrid].y)/nch); if(crossWord && cgrid==1){ if(boxGridPos==Activity.AUB || boxGridPos==Activity.BUA){ w=(w-2*40)/2; } else{ w=w-40; h=h/2; } } if(w>10 && h>10){ doResize(cgrid, w, h, finish); if(finish && crossWord) cursorPosChanged(); } } } /* if(cgrid>=0 && bg[cgrid]!=null && ((abc[cgrid]!=null && abc[cgrid].ncw>0 && abc[cgrid].nch>0) || (tgc[cgrid]!=null && tgc[cgrid].ncw>0 && tgc[cgrid].nch>0))){ int ncw = tgc[cgrid]!=null ? tgc[cgrid].ncw : abc[cgrid].ncw; int nch = tgc[cgrid]!=null ? tgc[cgrid].nch : abc[cgrid].nch; int w=(int)(bg[cgrid].width/ncw); int h=(int)(bg[cgrid].height/nch); if(dragCursorX) w=(int)((p.x-bg[cgrid].x)/ncw); if(dragCursorY) h=(int)((p.y-bg[cgrid].y)/nch); if(w>10 && h>10){ doResize(cgrid, w, h, finish); } } */ } protected void doResize(int index, int w, int h, boolean finish){ AbstractBox xbox = (index>=0 ? bg[index] : null); if(xbox!=null){ setModified(true); if(tgc[index]!=null){ tgc[index].w=w; tgc[index].h=h; } else if(abc[index]!=null){ abc[index].w=w; abc[index].h=h; } if(crossWord && index==1){ altAbc[index].w=w; altAbc[index].h=h; resizeCrossWordPanel(w, h); } else{ int ncw = tgc[index]!=null ? tgc[index].ncw : abc[index].ncw; int nch = tgc[index]!=null ? tgc[index].nch : abc[index].nch; Rectangle r=new Rectangle((int)bg[index].getX(), (int)bg[index].getY(), w*ncw, h*nch); xbox.setBounds(r); } if(finish){ /* setActiveBagContent(index, abc[index], altAbc[index], tgc[index]); ActiveBoxBag xbg=(xbox==abg[0] ? abg[0] : (xbox==abg[1] ? abg[1] : null)); if(xbg!=null && xbg.isAlternative()) xbg.setAlternative(true); */ boolean xbgAlt=false; ActiveBoxBag xbg=(xbox==abg[0] ? abg[0] : (xbox==abg[1] ? abg[1] : null)); xbgAlt = xbg!=null && xbg.isAlternative(); setActiveBagContent(index, abc[index], altAbc[index], tgc[index]); if(xbgAlt && abg[index]!=null) abg[index].setAlternative(true); } parent.resized(index); } repaint(); } protected boolean processMouseBool(MouseEvent ev){ boolean consumed=false; if(abg[0]!=null){ ActiveBox bx=abg[0].findActiveBox(ev.getPoint()); switch(ev.getID()){ case MouseEvent.MOUSE_MOVED: setCursor(bx!=null ? Cursor.getPredefinedCursor(Cursor.HAND_CURSOR) : null); consumed=true; break; case MouseEvent.MOUSE_RELEASED: if(bx!=null){ int v=bx.getContent().id; v=v>0 ? 0 : 1; bx.getContent().id=v; bx.setInverted(v>0); bx.setMarked(v>0); setModified(true); consumed=true; } break; } } return consumed; } public void setModified(boolean modified) { parent.setModified(modified); } /** Getter for property boxGridPos. * @return Value of property boxGridPos. */ public int getBoxGridPos() { return boxGridPos; } /** Setter for property boxGridPos. * @param boxGridPos New value of property boxGridPos. */ public void setBoxGridPos(int boxGridPos) { this.boxGridPos = boxGridPos; if(crossWord && abc[1]!=null){ resizeCrossWordPanel((int)abc[1].w, (int)abc[1].h); } BoxBase.resetAllFonts(); revalidate(); } /** Getter for property editMode. * @return Value of property editMode. */ public int getEditMode() { return editMode; } /** Setter for property editMode. * @param editMode New value of property editMode. */ public void setEditMode(int editMode) { boolean checkBool=(editMode==EDIT_BOOL || this.editMode==EDIT_BOOL); this.editMode = editMode; if(checkBool && abg[0]!=null){ for(int i=0; i0 : false); bx.setMarked(editMode==EDIT_BOOL ? bx.getContent().id>0 : false); } } repaint(); } /** Getter for property showAllArrows. * @return Value of property showAllArrows. */ public boolean isShowAllArrows() { return showAllArrows; } /** Setter for property showAllArrows. * @param showAllArrows New value of property showAllArrows. */ public void setShowAllArrows(boolean showAllArrows) { this.showAllArrows = showAllArrows; repaint(); } protected void moveCursor(int dx, int dy){ if(cgrid>=0 && grid[cgrid]!=null){ grid[cgrid].moveCursor(dx, dy, false); cursorPosChanged(); } } protected void setCursorAt(int x, int y){ if(cgrid>=0 && grid[cgrid]!=null) grid[cgrid].setCursorAt(x, y, false); cursorPosChanged(); } protected void cursorPosChanged(){ if(crossWord && grid[0]!=null && hClue!=null && vClue!=null){ Point pt=grid[0].getCursor(); if(pt!=null){ Point items=grid[0].getItemFor(pt.x, pt.y); if(items!=null){ ActiveBoxContent abxc=abc[1].getActiveBoxContentWith(pt.y, items.x); if(abxc==null){ abc[1].insertActiveBoxContentWith(pt.y, items.x); abxc=abc[1].getActiveBoxContentWith(pt.y, items.x); } hClue.setContent(abxc); abxc=altAbc[1].getActiveBoxContentWith(pt.x, items.y); if(abxc==null){ altAbc[1].insertActiveBoxContentWith(pt.x, items.y); abxc=altAbc[1].getActiveBoxContentWith(pt.x, items.y); } vClue.setContent(abxc); } } } } public boolean processKey(KeyEvent e){ boolean consumed=false; if(cgrid>=0 && grid[cgrid]!=null && tgc[cgrid]!=null){ int dx=0, dy=0; boolean delete=false, moveFirst=false; Point cur=grid[cgrid].getCursor(); char ch1=0; switch(e.getID()){ case KeyEvent.KEY_PRESSED: switch(e.getKeyCode()){ case KeyEvent.VK_RIGHT: dx=1; break; case KeyEvent.VK_LEFT: dx=-1; break; case KeyEvent.VK_DOWN: dy=1; break; case KeyEvent.VK_UP: dy=-1; break; case KeyEvent.VK_BACK_SPACE: dx=-1; delete=true; moveFirst=true; break; case KeyEvent.VK_DELETE: delete=true; break; } break; case KeyEvent.KEY_TYPED: char ch0=e.getKeyChar(); int kk=e.getKeyCode(); if(cur!=null){ dx=1; if(Character.isLetterOrDigit(ch0)) ch1=Character.toUpperCase(ch0); else if(ch0==tgc[cgrid].wild || Character.isSpaceChar(ch0)) delete=true; else dx=0; } break; } if(moveFirst && (dx!=0 || dy!=0)){ moveCursor(dx, dy); cur=grid[cgrid].getCursor(); consumed=true; } if(delete) ch1=tgc[cgrid].wild; if(ch1!=0){ if(crossWord){ checkWildChanges(cur, ch1); } grid[cgrid].setCharAt(cur.x, cur.y, ch1); tgc[cgrid].setCharAt(cur.x, cur.y, ch1); setModified(true); consumed=true; } if(!moveFirst && (dx!=0 || dy!=0)){ moveCursor(dx, dy); consumed=true; } } return consumed; } protected void checkWildChanges(Point pt, char ch){ if(!crossWord) return; char oldCh=grid[cgrid].getCharAt(pt.x, pt.y); boolean deleteWild=(oldCh==tgc[cgrid].wild && ch!=oldCh); boolean addWild=(!deleteWild && ch==tgc[cgrid].wild && ch!=oldCh); if(addWild || deleteWild){ Point items=grid[cgrid].getItemFor(pt.x, pt.y); if(items!=null){ boolean intoWhitesH=grid[cgrid].isIntoWhites(pt, true); boolean intoWhitesV=grid[cgrid].isIntoWhites(pt, false); boolean intoBlacksH=grid[cgrid].isIntoBlacks(pt, true); boolean intoBlacksV=grid[cgrid].isIntoBlacks(pt, false); if(deleteWild){ if(intoWhitesH){ abc[1].deleteActiveBoxContentWith(pt.y, items.x); } else if(intoBlacksH){ abc[1].insertActiveBoxContentWith(pt.y, items.x); } if(intoWhitesV){ altAbc[1].deleteActiveBoxContentWith(pt.x, items.y); } else if(intoBlacksV){ altAbc[1].insertActiveBoxContentWith(pt.x, items.y); } } else{ if(intoWhitesH){ abc[1].insertActiveBoxContentWith(pt.y, items.x); } else if(intoBlacksH){ abc[1].deleteActiveBoxContentWith(pt.y, items.x); } if(intoWhitesV){ altAbc[1].insertActiveBoxContentWith(pt.x, items.y); } else if(intoBlacksV){ altAbc[1].deleteActiveBoxContentWith(pt.x, items.y); } } grid[cgrid].setCellLocked(pt.x, pt.y, addWild); } } } public void focusGained(FocusEvent e){ checkCursor(false); } public void focusLost(FocusEvent e){ checkCursor(true); } public void checkCursor(boolean forceLost){ for(int i=0; i<2; i++){ if(grid[i]!=null){ if(cgrid==i && !forceLost && hasFocus()) grid[i].startCursorBlink(); else grid[i].stopCursorBlink(); } } } private void setPanelSelected(int index){ cgrid=index; parent.panelSelected(cgrid); if(!hasFocus()) requestFocus(); else checkCursor(false); } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/boxes/BoxBaseEditor.java0000644000175000017500000006062411377161311022176 0ustar /* * File : BoxBaseEditor.java * Created : 02-oct-2002 13:45 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.util.Options; import javax.swing.JComboBox; import java.awt.Font; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.util.Vector; import javax.swing.event.ChangeListener; import javax.swing.event.ChangeEvent; import java.util.HashMap; import java.awt.Component; import edu.xtec.util.Messages; import edu.xtec.jclic.beans.NullableObject; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeEvent; import edu.xtec.jclic.beans.ColorButton; import edu.xtec.jclic.beans.GradientButton; import edu.xtec.jclic.beans.SmallIntEditor; import edu.xtec.util.FontCheck; import java.awt.Dimension; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BoxBaseEditor extends javax.swing.JPanel { Options options; BoxBase bb; //Vector listeners; /** Creates new form BoxBaseEditor */ public BoxBaseEditor(Options options, BoxBase bb) { this.options=options; //listeners=new Vector(); initComponents(); setBoxBase(bb); } /* public void addActionListener(ActionListener lst){ if(!listeners.contains(lst)) listeners.add(lst); } public void removeActionListener(ActionListener lst){ listeners.remove(lst); } protected void fireActionPerformed(ActionEvent event){ for(int i=0; i//GEN-BEGIN:initComponents private void initComponents() { java.awt.GridBagConstraints gridBagConstraints; javax.swing.ButtonGroup reportGroup = new javax.swing.ButtonGroup(); javax.swing.ButtonGroup mediaGroup = new javax.swing.ButtonGroup(); javax.swing.JTabbedPane mainPane = new javax.swing.JTabbedPane(); javax.swing.JPanel generalPane = new javax.swing.JPanel(); javax.swing.JLabel lookLb = new javax.swing.JLabel(); lookCombo = new javax.swing.JComboBox(edu.xtec.util.LFUtil.VALUES); javax.swing.JLabel langLb = new javax.swing.JLabel(); langCombo = new javax.swing.JComboBox(Messages.getDescriptiveLanguageCodes(msg.getLocale())); javax.swing.JLabel countryLb = new javax.swing.JLabel(); countryField = new javax.swing.JTextField(); javax.swing.JLabel variantLb = new javax.swing.JLabel(); variantField = new javax.swing.JTextField(); javax.swing.JLabel browserLb = new javax.swing.JLabel(); browserField = new javax.swing.JTextField(); imgSizePanel = new javax.swing.JPanel(); javax.swing.JLabel maxImgWidthLb = new javax.swing.JLabel(); maxImgWidthText = new javax.swing.JTextField(); javax.swing.JLabel maxImgHeightLb = new javax.swing.JLabel(); maxImgHeightText = new javax.swing.JTextField(); javax.swing.JPanel mediaPane = new javax.swing.JPanel(); javax.swing.JPanel mediaSystemPanel = new javax.swing.JPanel(); mDefaultBtn = new javax.swing.JRadioButton(); mJMFbtn = new javax.swing.JRadioButton(); mQTbtn = new javax.swing.JRadioButton(); javax.swing.JPanel htmlPane = new javax.swing.JPanel(); javax.swing.JLabel codebaseLb = new javax.swing.JLabel(); codebaseTxt = new javax.swing.JTextField(); javax.swing.JLabel colorLb = new javax.swing.JLabel(); colorButton = new edu.xtec.jclic.beans.ColorButton(); colorButton.setOptions(settings.rb.getOptions()); javax.swing.JLabel widthLb = new javax.swing.JLabel(); widthText = new javax.swing.JTextField(); javax.swing.JLabel heightLb = new javax.swing.JLabel(); heightText = new javax.swing.JTextField(); javax.swing.JPanel btPanel = new javax.swing.JPanel(); javax.swing.JButton okButton = new javax.swing.JButton(); javax.swing.JButton cancelButton = new javax.swing.JButton(); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); mainPane.setToolTipText(msg.get("settings_report_tooltip")); mainPane.setPreferredSize(new java.awt.Dimension(500, 400)); generalPane.setToolTipText(msg.get("settings_general_tooltip")); generalPane.setLayout(new java.awt.GridBagLayout()); lookLb.setLabelFor(lookCombo); lookLb.setText(msg.get("settings_look")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(lookLb, gridBagConstraints); lookCombo.setSelectedItem(settings.lookAndFeel); lookCombo.setToolTipText(msg.get("settings_look_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(lookCombo, gridBagConstraints); langLb.setLabelFor(langCombo); langLb.setText(msg.get("settings_language")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(langLb, gridBagConstraints); langCombo.setSelectedItem(Messages.getDescriptiveLanguageCode(settings.language)); langCombo.setToolTipText(msg.get("settings_language_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(langCombo, gridBagConstraints); countryLb.setLabelFor(countryField); countryLb.setText(msg.get("settings_country")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(countryLb, gridBagConstraints); countryField.setText(settings.country); countryField.setToolTipText(msg.get("settings_country_tooltip")); countryField.setMinimumSize(new java.awt.Dimension(75, 21)); countryField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(countryField, gridBagConstraints); variantLb.setLabelFor(variantField); variantLb.setText(msg.get("settings_variant")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(variantLb, gridBagConstraints); variantField.setText(settings.variant); variantField.setToolTipText(msg.get("settings_variant_tooltip")); variantField.setMinimumSize(new java.awt.Dimension(75, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(variantField, gridBagConstraints); browserLb.setText(msg.get("settings_browser")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(browserLb, gridBagConstraints); browserField.setText(settings.preferredBrowser); browserField.setToolTipText(msg.get("settings_browser_tooltip")); browserField.setMinimumSize(new java.awt.Dimension(75, 21)); browserField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(browserField, gridBagConstraints); imgSizePanel.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.get("img_max_size"))); imgSizePanel.setLayout(new java.awt.GridBagLayout()); maxImgWidthLb.setLabelFor(maxImgWidthText); maxImgWidthLb.setText(msg.get("WIDTH")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); imgSizePanel.add(maxImgWidthLb, gridBagConstraints); maxImgWidthText.setHorizontalAlignment(javax.swing.JTextField.RIGHT); maxImgWidthText.setText(Integer.toString(settings.imgMaxWidth)); maxImgWidthText.setToolTipText(msg.get("img_max_width_tooltip")); maxImgWidthText.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); imgSizePanel.add(maxImgWidthText, gridBagConstraints); maxImgHeightLb.setLabelFor(maxImgHeightText); maxImgHeightLb.setText(msg.get("HEIGHT")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); imgSizePanel.add(maxImgHeightLb, gridBagConstraints); maxImgHeightText.setHorizontalAlignment(javax.swing.JTextField.RIGHT); maxImgHeightText.setText(Integer.toString(settings.imgMaxHeight)); maxImgHeightText.setToolTipText(msg.get("img_max_height_tooltip")); maxImgHeightText.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); imgSizePanel.add(maxImgHeightText, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(imgSizePanel, gridBagConstraints); mainPane.addTab(msg.get("settings_general"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/settings.gif")), generalPane, ""); // NOI18N mediaPane.setToolTipText(msg.get("settings_media_tooltip")); mediaPane.setLayout(new java.awt.GridBagLayout()); mediaSystemPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(msg.get("settings_media_system"))); mediaSystemPanel.setLayout(new java.awt.GridBagLayout()); mediaGroup.add(mDefaultBtn); mDefaultBtn.setSelected(edu.xtec.jclic.Constants.DEFAULT.equals(settings.mediaSystem)); mDefaultBtn.setText(msg.get("settings_media_default")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3); mediaSystemPanel.add(mDefaultBtn, gridBagConstraints); mediaGroup.add(mJMFbtn); mJMFbtn.setSelected(edu.xtec.jclic.Constants.JMF.equals(settings.mediaSystem)); mJMFbtn.setText(msg.get("settings_media_jmf")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3); mediaSystemPanel.add(mJMFbtn, gridBagConstraints); mediaGroup.add(mQTbtn); mQTbtn.setSelected(edu.xtec.jclic.Constants.QT.equals(settings.mediaSystem)); mQTbtn.setText(msg.get("settings_media_qt")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); mediaSystemPanel.add(mQTbtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mediaPane.add(mediaSystemPanel, gridBagConstraints); mainPane.addTab(msg.get("settings_media"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/audio_on.gif")), mediaPane, ""); // NOI18N htmlPane.setToolTipText(msg.get("settings_applet_tooltip")); htmlPane.setLayout(new java.awt.GridBagLayout()); codebaseLb.setLabelFor(codebaseTxt); codebaseLb.setText(msg.get("applet_codebase")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(codebaseLb, gridBagConstraints); codebaseTxt.setToolTipText(msg.get("applet_codebase_tooltip")); codebaseTxt.setText(settings.appletCodeBase); codebaseTxt.setPreferredSize(new java.awt.Dimension(250, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(codebaseTxt, gridBagConstraints); colorLb.setLabelFor(colorButton); colorLb.setText(msg.get("applet_bgcolor")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(colorLb, gridBagConstraints); colorButton.setToolTipText(msg.get("applet_bgcolor_tooltip")); colorButton.setColor(settings.appletBgColor); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(colorButton, gridBagConstraints); widthLb.setLabelFor(widthText); widthLb.setText(msg.get("WIDTH")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(widthLb, gridBagConstraints); widthText.setHorizontalAlignment(javax.swing.JTextField.RIGHT); widthText.setText(settings.appletWidth); widthText.setToolTipText(msg.get("applet_width_tooltip")); widthText.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(widthText, gridBagConstraints); heightLb.setLabelFor(heightText); heightLb.setText(msg.get("HEIGHT")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(heightLb, gridBagConstraints); heightText.setHorizontalAlignment(javax.swing.JTextField.RIGHT); heightText.setText(settings.appletHeight); heightText.setToolTipText(msg.get("applet_height_tooltip")); heightText.setPreferredSize(new java.awt.Dimension(50, 20)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); htmlPane.add(heightText, gridBagConstraints); mainPane.addTab(msg.get("settings_applet"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/html_doc.gif")), htmlPane); // NOI18N getContentPane().add(mainPane, java.awt.BorderLayout.CENTER); okButton.setText(msg.get("OK")); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); btPanel.add(okButton); cancelButton.setText(msg.get("CANCEL")); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); btPanel.add(cancelButton); getContentPane().add(btPanel, java.awt.BorderLayout.SOUTH); pack(); }// //GEN-END:initComponents private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed result=false; closeDialog(null); }//GEN-LAST:event_cancelButtonActionPerformed private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed if(accept()){ result=true; closeDialog(null); } // Add your handling code here: }//GEN-LAST:event_okButtonActionPerformed public boolean accept(){ String p1=null; settings.lookAndFeel=(String)lookCombo.getSelectedItem(); settings.preferredBrowser=browserField.getText(); settings.language=Messages.getLanguageFromDescriptive((String)langCombo.getSelectedItem()); settings.country=StrUtils.nullableString(countryField.getText()); settings.variant=StrUtils.nullableString(variantField.getText()); if(mJMFbtn.isSelected()) settings.mediaSystem=edu.xtec.jclic.Constants.JMF; else if(mQTbtn.isSelected()) settings.mediaSystem=edu.xtec.jclic.Constants.QT; else settings.mediaSystem=edu.xtec.jclic.Constants.DEFAULT; settings.appletCodeBase=StrUtils.secureString(codebaseTxt.getText(), AuthorSettings.DEFAULT_APPLET_CODEBASE); settings.appletWidth=StrUtils.secureString(widthText.getText(), AuthorSettings.DEFAULT_APPLET_WIDTH); settings.appletHeight=StrUtils.secureString(heightText.getText(), AuthorSettings.DEFAULT_APPLET_HEIGHT); settings.appletBgColor=colorButton.getColor(); settings.imgMaxWidth=Integer.parseInt(StrUtils.secureString(maxImgWidthText.getText(), Integer.toString(MediaBagEditor.DEFAULT_IMG_MAX_WIDTH))); settings.imgMaxHeight=Integer.parseInt(StrUtils.secureString(maxImgHeightText.getText(), Integer.toString(MediaBagEditor.DEFAULT_IMG_MAX_HEIGHT))); return true; } /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog setVisible(false); dispose(); }//GEN-LAST:event_closeDialog // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField browserField; private javax.swing.JTextField codebaseTxt; private edu.xtec.jclic.beans.ColorButton colorButton; private javax.swing.JTextField countryField; private javax.swing.JTextField heightText; private javax.swing.JPanel imgSizePanel; private javax.swing.JComboBox langCombo; private javax.swing.JComboBox lookCombo; private javax.swing.JRadioButton mDefaultBtn; private javax.swing.JRadioButton mJMFbtn; private javax.swing.JRadioButton mQTbtn; private javax.swing.JTextField maxImgHeightText; private javax.swing.JTextField maxImgWidthText; private javax.swing.JTextField variantField; private javax.swing.JTextField widthText; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/media/0000755000175000017500000000000011377161311016570 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/media/MediaContentEditor.java0000644000175000017500000013273111377161311023163 0ustar /* * File : MediaContentEditor.java * Created : 23-dec-2002 11:58 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.media; import edu.xtec.jclic.Constants; import edu.xtec.util.Options; import edu.xtec.jclic.bags.MediaBagEditor; import java.util.Vector; import java.util.HashMap; import java.awt.Component; import edu.xtec.util.Messages; import java.util.EventObject; import javax.swing.JTextField; import javax.swing.event.DocumentEvent; import java.beans.PropertyChangeEvent; import javax.swing.text.Document; import edu.xtec.jclic.beans.SmallIntEditor; import java.awt.CardLayout; import java.util.Enumeration; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.bags.MediaBagSelector; import edu.xtec.jclic.beans.MediaContentButton; import edu.xtec.util.ResourceManager; import edu.xtec.util.StrUtils; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.JToggleButton; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaContentEditor extends edu.xtec.util.CtrlPanel { MediaContent mc; Options options; MediaBagEditor mbe; public static final String PROP_MC="mediaContent"; private static final String[] LOCATION_FROM_MSG_CODES={"box", "window", "frame"}; Vector locationFromNames; private JTextField[] textFields; /** Creates new form MediaContentEditor */ public MediaContentEditor(Options options, MediaContent mc, MediaBagEditor mbe) { this.options=options; pre_init(); initComponents(); post_init(); setMediaBagEditor(mbe); setMediaContent(mc); } private void pre_init(){ //mediaTypeNames=new Vector(); //for(int i=0; i=0 && mc.recBuffer<10); break; case MediaContent.RUN_CLIC_PACKAGE: result=StrUtils.nullableString(mc.mediaFileName)!=null || StrUtils.nullableString(mc.externalParam)!=null; break; case MediaContent.EXIT: case MediaContent.RETURN: result=true; break; } if(!result) options.getMessages().showAlert(parent, "edit_mc_err_nullContent"); return result; } public MediaContent getMc(){ return mc; } public MediaContent getMcClone(){ return mc==null ? null : (MediaContent)mc.clone(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JPanel filePanelCard0; javax.swing.JPanel filePanelCard1; javax.swing.JPanel filePanelCard2; javax.swing.JPanel fragmentPanelCard0; javax.swing.JPanel fragmentPanelCard1; javax.swing.JPanel fragmentPanelCard2; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JPanel locationPanelCard0; javax.swing.JPanel locationPanelCard1; javax.swing.JPanel lpanel; javax.swing.JToggleButton toggleType00; mediaTypes = new javax.swing.ButtonGroup(); posTypes = new javax.swing.ButtonGroup(); mediaTypePanel = new javax.swing.JPanel(); toggleType00 = new javax.swing.JToggleButton(); toggleType01 = new javax.swing.JToggleButton(); toggleType02 = new javax.swing.JToggleButton(); toggleType03 = new javax.swing.JToggleButton(); toggleType04 = new javax.swing.JToggleButton(); toggleType05 = new javax.swing.JToggleButton(); toggleType06 = new javax.swing.JToggleButton(); toggleType07 = new javax.swing.JToggleButton(); toggleType08 = new javax.swing.JToggleButton(); toggleType09 = new javax.swing.JToggleButton(); toggleType10 = new javax.swing.JToggleButton(); toggleType11 = new javax.swing.JToggleButton(); toggleType12 = new javax.swing.JToggleButton(); mainPanel = new javax.swing.JPanel(); lbLevel = new javax.swing.JLabel(); levelEditor = new edu.xtec.jclic.beans.SmallIntEditor(); loopChk = new javax.swing.JCheckBox(); autostartChk = new javax.swing.JCheckBox(); filePanel = new javax.swing.JPanel(); filePanelCard0 = new javax.swing.JPanel(); filePanelCard1 = new javax.swing.JPanel(); lbFile = new javax.swing.JLabel(); fileTxt = new javax.swing.JTextField(); findFileBtn = new javax.swing.JButton(); filePanelCard2 = new javax.swing.JPanel(); lbRecbuffer = new javax.swing.JLabel(); recBufferEditor = new edu.xtec.jclic.beans.SmallIntEditor(); lbLength = new javax.swing.JLabel(); lengthEditor = new edu.xtec.jclic.beans.SmallIntEditor(); fragmentPanel = new javax.swing.JPanel(); fragmentPanelCard0 = new javax.swing.JPanel(); fragmentPanelCard1 = new javax.swing.JPanel(); lbFrom = new javax.swing.JLabel(); fromTxt = new javax.swing.JTextField(); lbTo = new javax.swing.JLabel(); toTxt = new javax.swing.JTextField(); fragmentPanelCard2 = new javax.swing.JPanel(); lbExternal = new javax.swing.JLabel(); externalTxt = new javax.swing.JTextField(); locationPanel = new javax.swing.JPanel(); locationPanelCard0 = new javax.swing.JPanel(); locationPanelCard1 = new javax.swing.JPanel(); lpanel = new javax.swing.JPanel(); posCellRadio = new javax.swing.JRadioButton(); posWindowRadio = new javax.swing.JRadioButton(); posAbsoluteRadio = new javax.swing.JRadioButton(); lbX = new javax.swing.JLabel(); xTxt = new javax.swing.JTextField(); lbY = new javax.swing.JLabel(); yTxt = new javax.swing.JTextField(); lbLocFrom = new javax.swing.JLabel(); locFromCombo = new javax.swing.JComboBox(locationFromNames); catchMouseChk = new javax.swing.JCheckBox(); stretchChk = new javax.swing.JCheckBox(); setLayout(new java.awt.BorderLayout()); setBorder(new javax.swing.border.EtchedBorder()); mediaTypePanel.setLayout(new java.awt.GridBagLayout()); mediaTypePanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_mc_type"))); toggleType00.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[0])); toggleType00.setText(options.getMsg("edit_mc_type_unknown")); toggleType00.setToolTipText(options.getMsg("edit_mc_type_unknown")); mediaTypes.add(toggleType00); toggleType00.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType00, gridBagConstraints); toggleType01.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[1])); toggleType01.setText(options.getMsg("edit_mc_type_sound")); toggleType01.setToolTipText(options.getMsg("edit_mc_type_sound")); mediaTypes.add(toggleType01); toggleType01.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType01, gridBagConstraints); toggleType02.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[2])); toggleType02.setText(options.getMsg("edit_mc_type_video")); toggleType02.setToolTipText(options.getMsg("edit_mc_type_video")); mediaTypes.add(toggleType02); toggleType02.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType02, gridBagConstraints); toggleType03.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[3])); toggleType03.setText(options.getMsg("edit_mc_type_midi")); toggleType03.setToolTipText(options.getMsg("edit_mc_type_midi")); mediaTypes.add(toggleType03); toggleType03.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType03, gridBagConstraints); toggleType04.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[4])); toggleType04.setText(options.getMsg("edit_mc_type_cdaudio")); toggleType04.setToolTipText(options.getMsg("edit_mc_type_cdaudio")); mediaTypes.add(toggleType04); toggleType04.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); toggleType04.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType04, gridBagConstraints); toggleType05.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[5])); toggleType05.setText(options.getMsg("edit_mc_type_record")); toggleType05.setToolTipText(options.getMsg("edit_mc_type_record")); mediaTypes.add(toggleType05); toggleType05.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType05, gridBagConstraints); toggleType06.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[6])); toggleType06.setText(options.getMsg("edit_mc_type_play_recorded")); toggleType06.setToolTipText(options.getMsg("edit_mc_type_play_recorded")); mediaTypes.add(toggleType06); toggleType06.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType06, gridBagConstraints); toggleType07.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[7])); toggleType07.setText(options.getMsg("edit_mc_type_run_activity")); toggleType07.setToolTipText(options.getMsg("edit_mc_type_run_activity")); mediaTypes.add(toggleType07); toggleType07.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType07, gridBagConstraints); toggleType08.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[8])); toggleType08.setText(options.getMsg("edit_mc_type_run_sequence")); toggleType08.setToolTipText(options.getMsg("edit_mc_type_run_sequence")); mediaTypes.add(toggleType08); toggleType08.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType08, gridBagConstraints); toggleType09.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[9])); toggleType09.setText(options.getMsg("edit_mc_type_run_external")); toggleType09.setToolTipText(options.getMsg("edit_mc_type_run_external")); mediaTypes.add(toggleType09); toggleType09.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType09, gridBagConstraints); toggleType10.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[10])); toggleType10.setText(options.getMsg("edit_mc_type_url")); toggleType10.setToolTipText(options.getMsg("edit_mc_type_url")); mediaTypes.add(toggleType10); toggleType10.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType10, gridBagConstraints); toggleType11.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[11])); toggleType11.setText(options.getMsg("edit_mc_type_exit")); toggleType11.setToolTipText(options.getMsg("edit_mc_type_exit")); mediaTypes.add(toggleType11); toggleType11.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType11, gridBagConstraints); toggleType12.setIcon(ResourceManager.getImageIcon(MediaContentButton.MEDIA_ICONS[12])); toggleType12.setText(options.getMsg("edit_mc_type_return")); toggleType12.setToolTipText(options.getMsg("edit_mc_type_return")); mediaTypes.add(toggleType12); toggleType12.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mediaTypePanel.add(toggleType12, gridBagConstraints); add(mediaTypePanel, java.awt.BorderLayout.WEST); mainPanel.setLayout(new java.awt.GridBagLayout()); lbLevel.setText(options.getMsg("edit_mc_level")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(lbLevel, gridBagConstraints); levelEditor.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(levelEditor, gridBagConstraints); loopChk.setText(options.getMsg("edit_mc_loop")); loopChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(loopChk, gridBagConstraints); autostartChk.setText(options.getMsg("edit_mc_autostart")); autostartChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(autostartChk, gridBagConstraints); filePanel.setLayout(new java.awt.CardLayout()); filePanel.add(filePanelCard0, "card0"); filePanelCard1.setLayout(new java.awt.GridBagLayout()); lbFile.setText(options.getMsg("edit_mc_file")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanelCard1.add(lbFile, gridBagConstraints); fileTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanelCard1.add(fileTxt, gridBagConstraints); findFileBtn.setText("..."); findFileBtn.addActionListener(this); filePanelCard1.add(findFileBtn, new java.awt.GridBagConstraints()); filePanel.add(filePanelCard1, "card1"); filePanelCard2.setLayout(new java.awt.GridBagLayout()); lbRecbuffer.setText(options.getMsg("edit_mc_recBuffer")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanelCard2.add(lbRecbuffer, gridBagConstraints); recBufferEditor.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanelCard2.add(recBufferEditor, gridBagConstraints); lbLength.setText(options.getMsg("edit_mc_length")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanelCard2.add(lbLength, gridBagConstraints); lengthEditor.setMax(15); lengthEditor.setValue(5); lengthEditor.setMin(1); lengthEditor.addPropertyChangeListener(SmallIntEditor.PROP_VALUE, this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); filePanelCard2.add(lengthEditor, gridBagConstraints); filePanel.add(filePanelCard2, "card2"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(filePanel, gridBagConstraints); fragmentPanel.setLayout(new java.awt.CardLayout()); fragmentPanel.add(fragmentPanelCard0, "card0"); fragmentPanelCard1.setLayout(new java.awt.GridBagLayout()); lbFrom.setLabelFor(fromTxt); lbFrom.setText(options.getMsg("edit_mc_from")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fragmentPanelCard1.add(lbFrom, gridBagConstraints); fromTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); fromTxt.setPreferredSize(new java.awt.Dimension(60, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fragmentPanelCard1.add(fromTxt, gridBagConstraints); lbTo.setLabelFor(toTxt); lbTo.setText(options.getMsg("edit_mc_to")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fragmentPanelCard1.add(lbTo, gridBagConstraints); toTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); toTxt.setPreferredSize(new java.awt.Dimension(60, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fragmentPanelCard1.add(toTxt, gridBagConstraints); fragmentPanel.add(fragmentPanelCard1, "card1"); fragmentPanelCard2.setLayout(new java.awt.GridBagLayout()); lbExternal.setLabelFor(externalTxt); lbExternal.setText(options.getMsg("edit_mc_externalParam")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fragmentPanelCard2.add(lbExternal, gridBagConstraints); externalTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); fragmentPanelCard2.add(externalTxt, gridBagConstraints); fragmentPanel.add(fragmentPanelCard2, "card2"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(fragmentPanel, gridBagConstraints); locationPanel.setLayout(new java.awt.CardLayout()); locationPanel.add(locationPanelCard0, "card0"); locationPanelCard1.setLayout(new java.awt.GridBagLayout()); lpanel.setLayout(new java.awt.GridBagLayout()); lpanel.setBorder(new javax.swing.border.TitledBorder(options.getMsg("edit_mc_location"))); posCellRadio.setText(options.getMsg("edit_mc_pos_cell")); posTypes.add(posCellRadio); posCellRadio.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3); lpanel.add(posCellRadio, gridBagConstraints); posWindowRadio.setText(options.getMsg("edit_mc_pos_window")); posTypes.add(posWindowRadio); posWindowRadio.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(posWindowRadio, gridBagConstraints); posAbsoluteRadio.setText(options.getMsg("edit_mc_pos_absolute")); posTypes.add(posAbsoluteRadio); posAbsoluteRadio.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); lpanel.add(posAbsoluteRadio, gridBagConstraints); lbX.setText(options.getMsg("edit_mc_location_x")); lbX.setLabelFor(xTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(lbX, gridBagConstraints); xTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); xTxt.setPreferredSize(new java.awt.Dimension(60, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(xTxt, gridBagConstraints); lbY.setText(options.getMsg("edit_mc_location_y")); lbY.setLabelFor(yTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(lbY, gridBagConstraints); yTxt.setHorizontalAlignment(javax.swing.JTextField.RIGHT); yTxt.setPreferredSize(new java.awt.Dimension(60, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(yTxt, gridBagConstraints); lbLocFrom.setText(options.getMsg("edit_mc_location_from")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(lbLocFrom, gridBagConstraints); locFromCombo.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); lpanel.add(locFromCombo, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); locationPanelCard1.add(lpanel, gridBagConstraints); catchMouseChk.setText(options.getMsg("edit_mc_catchmouse")); catchMouseChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); locationPanelCard1.add(catchMouseChk, gridBagConstraints); stretchChk.setText(options.getMsg("edit_mc_stretch")); stretchChk.addActionListener(this); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); locationPanelCard1.add(stretchChk, gridBagConstraints); locationPanel.add(locationPanelCard1, "card1"); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mainPanel.add(locationPanel, gridBagConstraints); add(mainPanel, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents public boolean documentChangePerformed(DocumentEvent ev){ Document doc=ev.getDocument(); int v=0; for(;v0 ? s : null); } else if(src==externalTxt){ String s=externalTxt.getText(); mc.externalParam=(s.length()>0 ? s : null); } else if(src==fromTxt) mc.from=getIntValue(fromTxt, -1); else if(src==toTxt) mc.to=getIntValue(toTxt, -1); else if(src==stretchChk) mc.stretch=stretchChk.isSelected(); else if(src==posCellRadio){ mc.free=false; mc.absLocation=null; syncPointValues(); checkEnabled(); } else if(src==posWindowRadio){ mc.free=true; mc.absLocation=null; syncPointValues(); checkEnabled(); } else if(src==posAbsoluteRadio){ mc.free=false; mc.absLocation=new java.awt.Point(); syncPointValues(); checkEnabled(); } else if(src==locFromCombo) mc.absLocationFrom=Math.max(0, locFromCombo.getSelectedIndex()); else if(src==xTxt && mc.absLocation!=null) mc.absLocation.x=getIntValue(xTxt, 0); else if(src==yTxt && mc.absLocation!=null) mc.absLocation.y=getIntValue(yTxt, 0); else if(src==loopChk) mc.loop=loopChk.isSelected(); else if(src==autostartChk) mc.autoStart=autostartChk.isSelected(); else if(src==catchMouseChk) mc.catchMouseEvents=catchMouseChk.isSelected(); else if(src==findFileBtn){ selectBtnPressed(); } else if(src instanceof JToggleButton){ Enumeration en=mediaTypes.getElements(); int v=-1, j=0; while(en.hasMoreElements()){ JToggleButton rb=(JToggleButton)en.nextElement(); if(rb==src){ v=j; break; } j++; } if(v>=0){ int currentType=mc.mediaType; mc.mediaType=v; if(mc.mediaType!=currentType){ MediaContent mc2=new MediaContent(); mc2.mediaType=mc.mediaType; setMediaContent(mc2); } } } checkAndFirePropertyChange(oldMc); setInitializing(false); } return true; } protected void selectBtnPressed(){ String value=null; JList list=null; String dlgTitleKey=null; if(mc.mediaType==MediaContent.RUN_CLIC_ACTIVITY){ list=new JList(mbe.getProjectEditor().getActivityBagEditor().getListModel()); dlgTitleKey="edit_mc_activity_selection"; } else if(mc.mediaType==MediaContent.RUN_CLIC_PACKAGE){ list=new JList(mbe.getProjectEditor().getActivitySequenceEditor().getTagList()); dlgTitleKey="edit_mc_sequence_selection"; } if(list!=null){ JScrollPane pane=new JScrollPane(list); if(options.getMessages().showInputDlg(this, pane, dlgTitleKey)){ Object o=list.getSelectedValue(); if(o!=null) value=o.toString(); } } else{ int filter = mc.mediaType==MediaContent.PLAY_AUDIO ? Utils.ALL_SOUNDS_FF : mc.mediaType==MediaContent.PLAY_MIDI ? Utils.MIDI_FF : mc.mediaType==MediaContent.PLAY_VIDEO ? Utils.ALL_VIDEO_FF : Utils.ALL_MULTIMEDIA_FF; value=MediaBagSelector.getMediaName(mc.mediaFileName, options, this, mbe, filter); } if(value!=null){ mc.mediaFileName=value; fileTxt.setText(value); } } protected void checkEnabled(){ boolean bLevel=true, bRecBuffer=false, bLength=false, bFile=false; boolean bExternal=false, bFrom=false, bTo=false, bStretch=false; boolean bLocation=false; boolean bLoop=false, bAutostart=true, bCatchMouse=false; int filePanelItem=0, fragmentPanelItem=0, locationPanelItem=0; switch(mc.mediaType){ case MediaContent.PLAY_VIDEO: bStretch=true; bLocation=true; bCatchMouse=true; locationPanelItem=1; case MediaContent.PLAY_AUDIO: case MediaContent.PLAY_MIDI: bFile=true; bFrom=true; bTo=true; bLoop=true; filePanelItem=1; fragmentPanelItem=1; break; case MediaContent.PLAY_CDAUDIO: break; case MediaContent.RECORD_AUDIO: bLength=true; case MediaContent.PLAY_RECORDED_AUDIO: bRecBuffer=true; filePanelItem=2; break; case MediaContent.RUN_CLIC_ACTIVITY: case MediaContent.RUN_CLIC_PACKAGE: case MediaContent.RUN_EXTERNAL: bExternal=true; case MediaContent.URL: bFile=true; bLevel=false; filePanelItem=1; fragmentPanelItem=2; break; case MediaContent.EXIT: case MediaContent.RETURN: bLevel=false; break; default: bLevel=false; break; } levelEditor.setEnabled(bLevel); recBufferEditor.setEnabled(bRecBuffer); lengthEditor.setEnabled(bLength); fileTxt.setEnabled(bFile); findFileBtn.setEnabled(bFile); externalTxt.setEnabled(bExternal); fromTxt.setEnabled(bFrom); toTxt.setEnabled(bTo); stretchChk.setEnabled(bStretch); posCellRadio.setEnabled(bLocation); posWindowRadio.setEnabled(bLocation); posAbsoluteRadio.setEnabled(bLocation); locFromCombo.setEnabled(bLocation && mc.absLocation!=null); xTxt.setEnabled(bLocation && mc.absLocation!=null); yTxt.setEnabled(bLocation && mc.absLocation!=null); loopChk.setEnabled(bLoop); autostartChk.setEnabled(bAutostart); catchMouseChk.setEnabled(bCatchMouse); CardLayout cl=(CardLayout)filePanel.getLayout(); cl.show(filePanel, "card"+Integer.toString(filePanelItem)); if(filePanelItem==1){ String s = mc.mediaType==MediaContent.RUN_CLIC_ACTIVITY ? "edit_mc_activity" : mc.mediaType==MediaContent.RUN_CLIC_PACKAGE ? "edit_mc_sequence" : mc.mediaType==MediaContent.URL ? "edit_mc_url" : "edit_mc_file"; lbFile.setText(options.getMsg(s)); boolean b=(mc.mediaType!=MediaContent.URL && mc.mediaType!=MediaContent.RUN_EXTERNAL); findFileBtn.setVisible(b); filePanel.revalidate(); } cl=(CardLayout)fragmentPanel.getLayout(); cl.show(fragmentPanel, "card"+Integer.toString(fragmentPanelItem)); if(fragmentPanelItem==2){ String s= mc.mediaType==MediaContent.RUN_CLIC_ACTIVITY || mc.mediaType==MediaContent.RUN_CLIC_PACKAGE ? "edit_mc_project" : "edit_mc_externalParam"; lbExternal.setText(options.getMsg(s)); fragmentPanel.revalidate(); } cl=(CardLayout)locationPanel.getLayout(); cl.show(locationPanel, "card"+Integer.toString(locationPanelItem)); } private void syncPointValues(){ java.awt.Point p=mc.absLocation; if(p==null) p=new java.awt.Point(); xTxt.setText(Integer.toString(p.x)); yTxt.setText(Integer.toString(p.y)); locFromCombo.setSelectedIndex(mc.absLocationFrom); } protected int getIntValue(JTextField txf, int defaultValue){ String s=txf.getText(); int result=defaultValue; try{ result=Integer.parseInt(s); } catch(Exception ex){ } return result; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox autostartChk; private javax.swing.JCheckBox catchMouseChk; private javax.swing.JTextField externalTxt; private javax.swing.JPanel filePanel; private javax.swing.JTextField fileTxt; private javax.swing.JButton findFileBtn; private javax.swing.JPanel fragmentPanel; private javax.swing.JTextField fromTxt; private javax.swing.JLabel lbExternal; private javax.swing.JLabel lbFile; private javax.swing.JLabel lbFrom; private javax.swing.JLabel lbLength; private javax.swing.JLabel lbLevel; private javax.swing.JLabel lbLocFrom; private javax.swing.JLabel lbRecbuffer; private javax.swing.JLabel lbTo; private javax.swing.JLabel lbX; private javax.swing.JLabel lbY; private edu.xtec.jclic.beans.SmallIntEditor lengthEditor; private edu.xtec.jclic.beans.SmallIntEditor levelEditor; private javax.swing.JComboBox locFromCombo; private javax.swing.JPanel locationPanel; private javax.swing.JCheckBox loopChk; private javax.swing.JPanel mainPanel; private javax.swing.JPanel mediaTypePanel; private javax.swing.ButtonGroup mediaTypes; private javax.swing.JRadioButton posAbsoluteRadio; private javax.swing.JRadioButton posCellRadio; private javax.swing.ButtonGroup posTypes; private javax.swing.JRadioButton posWindowRadio; private edu.xtec.jclic.beans.SmallIntEditor recBufferEditor; private javax.swing.JCheckBox stretchChk; private javax.swing.JTextField toTxt; private javax.swing.JToggleButton toggleType01; private javax.swing.JToggleButton toggleType02; private javax.swing.JToggleButton toggleType03; private javax.swing.JToggleButton toggleType04; private javax.swing.JToggleButton toggleType05; private javax.swing.JToggleButton toggleType06; private javax.swing.JToggleButton toggleType07; private javax.swing.JToggleButton toggleType08; private javax.swing.JToggleButton toggleType09; private javax.swing.JToggleButton toggleType10; private javax.swing.JToggleButton toggleType11; private javax.swing.JToggleButton toggleType12; private javax.swing.JTextField xTxt; private javax.swing.JTextField yTxt; // End of variables declaration//GEN-END:variables private static HashMap panels=new HashMap(); public static MediaContent getMediaContent(MediaContent initialMc, Component parent, Options options, MediaBagEditor mbe){ MediaContent result=null; Messages msg=options.getMessages(); MediaContentEditor mce=(MediaContentEditor)panels.get(options); if(mce==null){ mce=new MediaContentEditor(options, initialMc, mbe); panels.put(options, mce); } else{ mce.setMediaBagEditor(mbe); mce.setMediaContent(initialMc); } if(msg.showInputDlg(parent, mce, "edit_mc_title") && mce.check(parent)) result=mce.getMc(); return result; } public static boolean nameChanged(MediaContent mc, int type, String oldName, String newName){ boolean result=false; if((type & (Constants.T_MEDIA | Constants.T_SEQUENCE | Constants.T_URL))!=0 && oldName.equals(mc.mediaFileName)){ mc.mediaFileName=newName; result=true; } return result; } } jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/media/MediaContentEditor.form0000644000175000017500000017757211377161311023221 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/media/EventSoundsEditorPanel.form0000644000175000017500000006046111377161311024070 0ustar
jclic-0.2.1.0.orig/src/author/edu/xtec/jclic/media/EventSoundsEditorPanel.java0000644000175000017500000004444211377161311024047 0ustar /* * File : EventSoundsEditorPanel.java * Created : 10-feb-2004 13:33 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.media; import edu.xtec.jclic.Constants; import edu.xtec.jclic.bags.MediaBagEditor; import edu.xtec.jclic.beans.SoundButton; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.JDomUtility; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.awt.Component; import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import javax.swing.JCheckBox; import javax.swing.JLabel; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class EventSoundsEditorPanel extends javax.swing.JPanel implements PropertyChangeListener, ActionListener { Options options; JLabel[] txFields; JCheckBox[] chkBoxes; SoundButton[] buttons; EventSounds evs; /** Creates new form EventSoundsEditorPanel */ public EventSoundsEditorPanel(Options options, MediaBagEditor mbe) { this.options=options; evs=new EventSounds(null); initComponents(); txFields=new JLabel[]{ evStart, evClick, evActionError, evActionOk, evFinishedError, evFinishedOk }; buttons=new SoundButton[]{ evStartBtn, evClickBtn, evActionErrorBtn, evActionOkBtn, evFinishedErrorBtn, evFinishedOkBtn }; chkBoxes=new JCheckBox[]{ evStartChk, evClickChk, evActionErrorChk, evActionOkChk, evFinishedErrorChk, evFinishedOkChk }; for(int i=0; iAten\u00E7\u00E3o:

Este projecto est\u00E1 ligado a outros projectos.
Deseja explor\u00E1-los e carregar todos os arquivos relacionados?

(Recomenda-se responder SIM ao importar um pacote de actividades Clic 3.0) edit_mc_type=Tipo: edit_mc_type_unknown=Desconhecido edit_mc_type_sound=Reproduzir som edit_mc_type_video=Reproduzir v\u00EDdeo edit_mc_type_midi=Reproduzir MIDI edit_mc_type_cdaudio=Reproduzir CD \u00E1udio edit_mc_type_record=Gravar som edit_mc_type_play_recorded=Reproduzir grava\u00E7\u00E3o edit_mc_type_run_activity=Ir para actividade edit_mc_type_run_sequence=Ir para sequ\u00EAncia edit_mc_type_run_external=Executar programa edit_mc_type_url=Mostrar URL edit_mc_type_exit=Terminar edit_mc_type_return=Voltar edit_mc_level=N\u00EDvel de prioridade: edit_mc_file=Ficheiro: edit_mc_externalParam=Par\u00E2metros: edit_mc_from=De: edit_mc_to=At\u00E9: edit_mc_length=Dura\u00E7\u00E3o m\u00E1x.: edit_mc_recBuffer=Buffer de grava\u00E7\u00E3o: edit_mc_stretch=Comprimir se n\u00E3o couber edit_mc_location=Posi\u00E7\u00E3o: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=De: edit_mc_location_from_box=C\u00E9lula edit_mc_location_from_window=Janela edit_mc_location_from_frame=Moldura edit_mc_loop=Repetir indefinidamente edit_mc_autostart=Arranque autom\u00E1tico edit_mc_catchmouse=Capturar rato edit_mc_title=Conte\u00FAdo activo e multim\u00E9dia edit_mc_label=Conte\u00FAdo activo: edit_media_dlg_title=Selec\u00E7\u00E3o do objecto multim\u00E9dia edit_media_title=Biblioteca de recursos edit_mc_pos_cell=Centrado na c\u00E9lula edit_mc_pos_window=Centrado na janela edit_mc_pos_absolute=Especificar posi\u00E7\u00E3o: edit_tree_badFormat=Estrutura ou dados da \u00E1rvore incorrectos. edit_act_panels_controls=Controlos edit_act_panels_controls_tooltip=Op\u00E7\u00F5es de bot\u00F5es e contadores edit_act_class=Tipo: edit_act_gridLayout=Distribui\u00E7\u00E3o dos pain\u00E9is: edit_act_gridLayout_tooltip=Posi\u00E7\u00E3o relativa dos pain\u00E9is A e B. edit_act_inverseResolution=Resolu\u00E7\u00E3o inversa edit_act_inverseResolution_tooltip=Actividade resolvida quando todos os elementos de "B" estiverem emparelhados. edit_act_showAllArrows=Mostrar todas as setas edit_act_alt=Conte\u00FAdo alternativo: edit_act_alt_tooltip=Conte\u00FAdo a mostrar nas c\u00E9lulas resolvidas ou n\u00E3o realizadas. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Editar o conte\u00FAdo alternativo edit_act_grid=Grelha edit_act_grid_A=Grelha A edit_act_grid_B=Grelha B edit_act_grid_layout=Distribui\u00E7\u00E3o edit_act_grid_relationship=Rela\u00E7\u00F5es edit_seq_activity_header=actividade edit_seq_tag_header=etiqueta edit_seq_jump_header=saltar para edit_seq_activity=Actividade: edit_seq_tag=R\u00F3tulo: edit_seq_description=Descri\u00E7\u00E3o: edit_seq_auto=Avan\u00E7o autom\u00E1tico edit_seq_delay=Atraso: edit_seq_action_fwd=Avan\u00E7ar edit_seq_action_back=Retroceder edit_seq_action_jump=Ir para... edit_seq_action_stop=Parar edit_seq_action_return=Voltar edit_seq_action_exit=Sair do JClic edit_seq_arrow_fwd=Seta "seguir": edit_seq_arrow_back=Seta "voltar": edit_seq_action=Ac\u00E7\u00E3o: edit_seq_button_enabled=Mostrar bot\u00E3o edit_seq_project=Projecto JClic: edit_act_absolute=Posi\u00E7\u00E3o absoluta edit_act_absolute_tooltip=O objecto ser\u00E1 colocado nas coordenadas X e Y especificadas edit_act_location=Posi\u00E7\u00E3o: edit_seq_newElement=Novo elemento da sequ\u00EAncia... edit_seq_newElement_tooltip=Inserir um novo elemento na sequ\u00EAncia de actividades edit_seq_newElement_msg=Seleccione uma actividade para o novo elemento da sequ\u00EAncia. edit_seq_newElement_error_noAct=N\u00E3o \u00E9 poss\u00EDvel criar um novo elemento de sequ\u00EAncia sem indicar a actividade! edit_seq_newElement_error_emptyList=Neste projecto n\u00E3o h\u00E1 nenhuma actividade. N\u00E3o \u00E9 poss\u00EDvel criar elementos de sequ\u00EAncia num projecto vazio. edit_seq_jump_msg=Destino do salto: edit_seq_jump_title=Destino do salto edit_act_newActivity_tooltip=Adicionar uma nova actividade ao projecto edit_act_prompt_class=Tipo de actividade: edit_act_prompt_name=Nome: edit_act_newActivity_msg=Seleccione o tipo de actividade a criar e d\u00EA-lhe um nome: edit_act_newActivity_error_noAct=Deve seleccionar um tipo de actividade! edit_act_newActivity_error_noName=Deve indicar um nome para a actividade! edit_act_newActivity_error_creating=N\u00E3o foi poss\u00EDvel criar a actividade! edit_act_newActivity_class=Classe Java: edit_text_act_format=Formato edit_text_act_answer=Resposta edit_text_act_popup=Janela emergente ("pop up") edit_text_act_answer_label=Respostas v\u00E1lidas: edit_list_newElement_tooltip=Adicionar um novo elemento \u00E0 lista edit_list_editElement_tooltip=Modificar o elemento seleccionado edit_list_deleteElement_tooltip=Eliminar o elemento seleccionado da lista edit_list_upBtn_tooltip=Mover para cima edit_list_downBtn_tooltip=Mover para baixo edit_list_newValue=Novo texto: edit_list_addElement=Adicionar um novo elemento de texto edit_list_modifyValue=Modifica\u00E7\u00E3o do texto seleccionado edit_text_act_target=Inc\u00F3gnita edit_text_act_maxLen=Comprimento m\u00E1x.: edit_text_act_maxLen_tooltip=N\u00FAmero m\u00E1ximo de caracteres permitidos na resposta. edit_text_act_fillingChar=Car\u00E1cter de preenchimento edit_text_act_fillingChar_tooltip=Car\u00E1cter utilizado para indicar a inc\u00F3gnita edit_text_act_iniLen=Comprimento inicial: edit_text_act_iniLen_tooltip=N\u00FAmero de caracteres de preenchimento a mostrar ao iniciar a actividade. edit_text_act_iniText=Texto inicial: edit_text_act_iniText_tooltip=Texto a mostrar ao iniciar a actividade. edit_text_act_list=Mostrar uma lista de op\u00E7\u00F5es: edit_text_act_list_tooltip=O utilizador deve escolher uma op\u00E7\u00E3o numa lista. edit_text_act_check_title=Op\u00E7\u00F5es de avalia\u00E7\u00E3o edit_text_act_popup_no=Sem janela emergente ("pop up") edit_text_act_popup_always=Apari\u00E7\u00E3o autom\u00E1tica edit_text_act_popup_onError=Apari\u00E7\u00E3o em erros edit_text_act_popup_onDemand=Apari\u00E7\u00E3o com F1 edit_text_act_popup_type=Tipo: edit_text_act_popup_delay=Atraso na apari\u00E7\u00E3o: edit_text_act_popup_maxTime=Tempo m\u00E1ximo: edit_text_act_popup_onlyPlay=Apenas som edit_text_act_err_noSelection=Para criar uma nova inc\u00F3gnita, seleccione um fragmento de texto. edit_text_act_err_badCharInSelection=O texto das inc\u00F3gnitas n\u00E3o pode incluir par\u00E1grafos nem tabula\u00E7\u00F5es. edit_text_act_err_nestedTargets=As inc\u00F3gnitas n\u00E3o podem sobrepor-se edit_text_act_err_cellInTarget=As inc\u00F3gnitas n\u00E3o podem conter c\u00E9lulas! edit_text_act_pageBgColor=Cor do papel: edit_text_act_editStylesBtn=Editar os estilos do documento... edit_text_act_mainStyle=Estilo principal: edit_text_act_tabSpc=Espa\u00E7amento de tabula\u00E7\u00E3o: edit_text_act_tabSize=Espa\u00E7os entre marcas de tabula\u00E7\u00E3o: edit_text_act_colors=Cores: edit_text_act_targetStyle=Cores das inc\u00F3gnitas: edit_text_act_errorStyle=Cores de erro: edit_text_act_preview=Previsualizar: edit_text_act_styleSample_default_start=Texto normal edit_text_act_styleSample_target=inc\u00F3gnita edit_text_act_styleSample_error=erro edit_text_act_styleSample_default_fill=texto normal edit_text_act_styleSample_default_end=texto normal. edit_text_act_warnDeleteTarget=Aten\u00E7\u00E3o: esta ac\u00E7\u00E3o suprimir\u00E1 a inc\u00F3gnita seleccionada. Tem a certeza de que deseja suprimi-la? edit_text_act_prevScreen_title=Ecr\u00E3 anterior edit_text_act_prevScreen_no=N\u00E3o mostrar texto antes de iniciar a actividade edit_text_act_prevScreen_original=Mostrar o texto completo do exerc\u00EDcio edit_text_act_prevScreen_special=Mostrar este texto: edit_text_act_prevScreen_time=Tempo m\u00E1ximo: edit_text_act_edit_target=Inc\u00F3gnita... edit_text_act_checkButton_show=Mostrar bot\u00E3o de avalia\u00E7\u00E3o edit_text_act_checkButtonText=Texto do bot\u00E3o: edit_text_act_checkCase=Verificar mai\u00FAsculas / min\u00FAsculas edit_text_act_checkAccents=Considerar acentos e caracteres especiais edit_text_act_checkPunct=Considerar os sinais de pontua\u00E7\u00E3o edit_text_act_checkDoubleSpc=Permitir espa\u00E7os repetidos edit_text_act_checkOptions=Crit\u00E9rios edit_text_act_checkAutoJump=Saltar automaticamente para inc\u00F3gnita seguinte edit_text_act_checkForceOk=Avan\u00E7ar apenas se responder correctamente edit_text_act_checkDetail=Indicar erros letra a letra edit_text_act_checkDetail_params=Par\u00E2metros do algoritmo de an\u00E1lise: edit_text_act_checkDetail_steps=Passos: edit_text_act_checkDetail_field=Campo de explora\u00E7\u00E3o: edit_text_act_defaultCheckButtonText=Verifica\u00E7\u00E3o edit_text_act_advancedCorrectionOptions=An\u00E1lise das respostas edit_text_act_check_bt=Avalia\u00E7\u00E3o... edit_text_act_checkButton=Bot\u00E3o de avalia\u00E7\u00E3o edit_text_act_checkProgress=Progresso edit_text_act_typeBtn=Tipo... edit_text_act_orderParagraphs=Ordenar par\u00E1grafos edit_text_act_orderWords=Ordenar palavras edit_text_act_order_amongstPar=Misturar palavras entre par\u00E1grafos edit_text_act_type_title=Tipo de actividade edit_text_act_warnChangeType=Esta ac\u00E7\u00E3o suprimir\u00E1 todas as inc\u00F3gnitas. Tem a certeza de que deseja suprimi-las? edit_text_act_identWords=Identificar palavras edit_text_act_identChars=Identificar caracteres edit_media_change_name=Renomear... edit_media_change_file=Mudar ficheiro... edit_media_includeInZip=Guardar em ficheiro ZIP edit_media_type=Tipo de recurso: edit_media_size=Tamanho do ficheiro: edit_media_show_type=Tipo de ficheiros: edit_media_preview=Visualizar objecto edit_media_preview_tooltip=Previsualiza\u00E7\u00E3o do recurso multim\u00E9dia edit_media_rename=Mudar o nome do recurso edit_media_rename_title=Renomear edit_media_rename_prompt=Novo nome: edit_media_rename_invalid=Nome de recurso inv\u00E1lido! edit_media_rename_exists=J\u00E1 existe outro recurso com este nome. Os recursos devem ter um nome \u00FAnico no projecto. edit_media_chfile_invalid=Ficheiro incorrecto err_media_chfile_different=Ficheiro deve ser do mesmo tipo edit_media_font_error=N\u00E3o foi poss\u00EDvel carregar o tipo de letra. edit_media_save_file=Guardar o ficheiro (extra\u00ED-lo do ZIP) edit_media_refresh_file=Actualizar o conte\u00FAdo a partir do ficheiro edit_media_warn_zipFileNotExternal=N\u00E3o \u00E9 um ficheiro "real", \u00E9 um objecto dentro de um ficheiro ZIP. Para utilizar esta fun\u00E7\u00E3o, \u00E9 necess\u00E1rio que exista um ficheiro com o mesmo nome na pasta onde est\u00E1 o ficheiro ZIP. edit_activities=Actividades edit_sequences=Sequ\u00EAncias edit_media=Biblioteca de recursos edit_media_tooltip=Gest\u00E3o de imagens e outros recursos utilizados no projecto. edit_activities_tooltip=Cria\u00E7\u00E3o e edi\u00E7\u00E3o das actividades do projecto edit_sequences_tooltip=Cria\u00E7\u00E3o e edi\u00E7\u00E3o de sequ\u00EAncias de actividades edit_project_title=T\u00EDtulo: edit_project_title_tooltip=T\u00EDtulo do projecto edit_project=Projecto edit_project_tooltip=Edi\u00E7\u00E3o das propriedades do projecto edit_project_description=Descri\u00E7\u00E3o: edit_project_description_tooltip=Descri\u00E7\u00E3o geral do projecto edit_project_area=\u00C1reas: edit_project_area_tooltip=\u00C1reas curriculares a que se destina o projecto edit_project_level=N\u00EDveis: edit_project_level_tooltip=N\u00EDveis e ciclos educativos a que se destina o projecto edit_project_descriptors=Descritores: edit_project_descriptors_tooltip=Descritores do projecto (separados por v\u00EDrgulas) edit_project_languages=Idiomas: edit_project_languages_tooltip=Idiomas utilizados no projecto edit_project_languages_modify=Mudar idioma seleccionado edit_project_languages_add=Adicionar idioma edit_project_languages_select=C\u00F3digos de idioma ISO-639: edit_project_authors=Autores: edit_project_authors_tooltip=Pessoas que participaram na cria\u00E7\u00E3o do projecto edit_project_author_name=Nome: edit_project_author_mail=Correio electr\u00F3nico: edit_project_author_rol=Fun\u00E7\u00E3o: edit_project_author_organization=Organiza\u00E7\u00E3o: edit_project_author_comments=Coment\u00E1rios: edit_project_author_url=URL: edit_project_author_name_tooltip=Nome do autor (obrigat\u00F3rio) edit_project_author_mail_tooltip=Endere\u00E7o de correio electr\u00F3nico do autor (opcional) edit_project_author_rol_tooltip=Fun\u00E7\u00E3o da pessoa no projecto: autor, colaborador, desenhos, sons... (opcional) edit_project_author_organization_tooltip=Escola, universidade, associa\u00E7\u00E3o... (opcional) edit_project_author_url_tooltip=P\u00E1gina web pessoal (opcional) edit_project_author_comments_tooltip=Outras caracter\u00EDsticas (opcional) edit_project_author_info=Dados do autor: edit_project_author_add=Adicionar um autor \u00E0 lista edit_project_author_edit=Modifica\u00E7\u00E3o dos dados do autor edit_project_org_name=Nome: edit_project_org_name_tooltip=Nome da escola edit_project_org_mail=Correio electr\u00F3nico: edit_project_org_mail_tooltip=Endere\u00E7o de correio electr\u00F3nico da escola edit_project_org_url=URL: edit_project_org_url_tooltip=Endere\u00E7o web da escola edit_project_org_address=Endere\u00E7o: edit_project_org_address_tooltip=Endere\u00E7o postal da escola edit_project_org_pc=CP: edit_project_org_pc_tooltip=C\u00F3digo postal edit_project_org_city=Localidade: edit_project_org_city_tooltip=Localidade da escola edit_project_org_country=Pa\u00EDs: edit_project_org_state=Estado: edit_project_org_comments=Coment\u00E1rios: edit_project_org=Centro/s: edit_project_org_tooltip=Escolas e outras institui\u00E7\u00F5es que participaram no projecto edit_project_org_info=dados da organiza\u00E7\u00E3o: edit_project_org_add=Adicionar uma nova organiza\u00E7\u00E3o edit_project_org_edit=Modificar os dados da organiza\u00E7\u00E3o edit_project_org_country_tooltip=Estado, pa\u00EDs, federa\u00E7\u00E3o... edit_project_org_state_tooltip=Estado federal, nacionalidade, comunidade, regi\u00E3o... edit_project_org_comments_tooltip=Outros dados... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Data da revis\u00E3o edit_project_rev_authors=Autores: edit_project_rev_authors_tooltip=Autores da revis\u00E3o edit_project_rev_description=Descri\u00E7\u00E3o: edit_project_rev_description_tooltip=Breve descri\u00E7\u00E3o das altera\u00E7\u00F5es edit_project_rev_comments=Coment\u00E1rios: edit_project_rev_comments_tooltip=Informa\u00E7\u00E3o adicional edit_project_rev=Revis\u00F5es: edit_project_rev_tooltip=Registo das principais modifica\u00E7\u00F5es efectuadas no projecto edit_project_rev_add=Adicionar um registo de revis\u00E3o edit_project_rev_edit=Edi\u00E7\u00E3o dos dados da revis\u00E3o edit_project_rev_info=Caracter\u00EDsticas da revis\u00E3o edit_media_objects=objectos edit_media_object=objecto edit_evsounds_start=In\u00EDcio de actividade: edit_evsounds_click=Clicar num objecto: edit_evsounds_actionError=Ac\u00E7\u00E3o errada: edit_evsounds_actionOk=Ac\u00E7\u00E3o correcta: edit_evsounds_finishedError=Actividade terminada com erros: edit_evsounds_finishedOk=Actividade correctamente terminada: edit_project_rev_err_nodesc=Erro: A descri\u00E7\u00E3o deve ser preenchida edit_evsounds_dlg_title=Edi\u00E7\u00E3o dos sons de evento edit_project_evsounds=Sons de evento: edit_project_evsounds_tooltip=Definir sons espec\u00EDficos para cada evento de JClic edit_act_evsounds=Sons de evento: edit_act_evsounds_tooltip=Definir sons espec\u00EDficos para cada evento de JClic edit_evsounds_default=som padr\u00E3o edit_evsounds_disabled=desactivado edit_evsounds_chk_tooltip=Activa/desactiva o som para este evento edit_evsounds_select_tooltip=Clique para seleccionar o som ligado a este evento, ou desmarque para utilizar o som padr\u00E3o action_newProject_caption=Novo projecto... action_newProject_keys=NN action_newProject_tooltip=Criar um novo projecto JClic edit_arith_op_from=De: edit_arith_op_from_tooltip=Valor m\u00EDnimo do operando edit_arith_op_to=At\u00E9: edit_arith_op_to_tooltip=Valor m\u00E1ximo do operando edit_arith_op_with=Com: edit_arith_op_with_tooltip=Se seleccionado, o operando pode ter tamb\u00E9m este valor edit_arith_op_fromList=Um da lista: edit_arith_op_fromList_tooltip=Lista de poss\u00EDveis valores do operando edit_arith_op_decimals=Decimais: edit_arith_op_decimals_tooltip=N\u00FAmero de decimais do operando edit_arith_op_dec0=# (inteiro) edit_arith_op_dec1=#,# edit_arith_op_dec2=#,## edit_arith_firstOp=Primeiro operando edit_arith_secondOp=Segundo operando edit_arith_title=Arith2 para JClic edit_arith_operations=Opera\u00E7\u00F5es: edit_arith_operations_tooltip=Selecciona o tipo de opera\u00E7\u00F5es a efectuar edit_arith_operations_plus=Somar edit_arith_operations_minus=Subtrair edit_arith_operations_multiply=Multiplicar edit_arith_operations_divide=Dividir edit_arith_unknown=Inc\u00F3gnita: edit_arith_unknown_tooltip=Selecciona o elemento que funcionar\u00E1 como inc\u00F3gnita edit_arith_unknown_aobx=A inc\u00F3gnita \u00E9 o resultado edit_arith_unknown_aoxr=A inc\u00F3gnita \u00E9 o segundo operando edit_arith_unknown_xobr=O primeiro operando \u00E9 a inc\u00F3gnita edit_arith_unknown_axbr=A opera\u00E7\u00E3o \u00E9 a inc\u00F3gnita edit_arith_unknown_invert=Escrever a express\u00E3o come\u00E7ando pelo resultado edit_arith_result=Resultado: edit_arith_result_notCarry=Sem transporte edit_arith_result_random=Aleat\u00F3rio edit_arith_result_asc=Ascendente edit_arith_result_order=Ordenar por resultado: edit_arith_result_desc=Descendente edit_arith_result_avoidDup=Evitar duplicados edit_arith_cond=Condi\u00E7\u00F5es: edit_arith_cond_ind=Indiferente edit_arith_cond_agb=O primeiro operando deve ser maior que o segundo edit_arith_cond_alb=O primeiro operando deve ser menor que o segundo edit_arith_cond_tooltip=Outras condi\u00E7\u00F5es edit_autocp=Gerador autom\u00E1tico de conte\u00FAdo: edit_autocp_tooltip=Selec\u00E7\u00E3o do tipo de gerador autom\u00E1tico de conte\u00FAdo para esta actividade. edit_autocp_block=Gerador de conte\u00FAdo edit_autocp_btn=Defini\u00E7\u00F5es... edit_autocp_btn_tooltip=Configura\u00E7\u00E3o dos par\u00E2metros do gerador de conte\u00FAdo edit_data=Edi\u00E7\u00E3o de dados edit_act=Edi\u00E7\u00E3o da actividade edit_acp=Edi\u00E7\u00E3o do gerador de conte\u00FAdo edit_acp_err_creating=Erro ao criar o gerador de conte\u00FAdo edit_project_author_group=Cria\u00E7\u00E3o edit_project_description_block=Descri\u00E7\u00E3o edit_project_ui_block=Interface de utilizador edit_act_description=Descri\u00E7\u00E3o: m_Edit=Edi\u00E7\u00E3o m_Edit_Mnemonic=E edit_media_preview_keys=V* edit_act_newActivity=Nova actividade... edit_act_newActivity_keys=A* edit_act_testAction_keys=M#10 edit_seq_newElement_keys=S* m_Insert=Inserir m_Insert_Mnemonic=I m_View=Ver m_View_Mnemonic=V action_editProject_caption=Projecto action_editProject_keys=PP action_editProject_tooltip=Editar as propriedades do projecto action_editMedia_caption=Mediateca action_editMedia_keys=MM action_editMedia_tooltip=Edi\u00E7\u00E3o da biblioteca multim\u00E9dia do projecto action_editActivities_caption=Actividades action_editActivities_keys=AA action_editActivities_tooltip=Edi\u00E7\u00E3o das actividades action_editSeq_caption=Sequ\u00EAncias action_editSeq_keys=SS action_editSeq_tooltip=Edi\u00E7\u00E3o das sequ\u00EAncias de actividades warn_project_modified=O projecto actual foi modificado. Deseja guardar as altera\u00E7\u00F5es? edit_project_descriptors_block=Descritores edit_media_new=Novo objecto multim\u00E9dia... edit_media_new_tooltip=Adicionar uma imagem ou um objecto multim\u00E9dia \u00E0 mediateca edit_media_new_keys=M* edit_seq_threshold=Limite de pontua\u00E7\u00E3o: edit_seq_threshold_tooltip_up=Seguir este caminho quando a pontua\u00E7\u00E3o global for maior ou igual a... edit_seq_time=Limite de tempo: edit_seq_time_tooltip_up=Para seguir este caminho \u00E9 necess\u00E1rio ter realizado as actividades num tempo inferior a... edit_seq_threshold_tooltip_down=Siga este caminho sempre que a pontua\u00E7\u00E3o global for inferior a... edit_seq_time_tooltip_down=Seguir este caminho sempre que o tempo decorrido nas actividades for superior a... edit_seq_condJump=Saltos condicionais edit_seq_condJump_tooltip=Indicar saltos a executar apenas se ocorrerem determinadas condi\u00E7\u00F5es edit_seq_condJump_upper_tooltip=Indicar as condi\u00E7\u00F5es para saltar para um n\u00EDvel superior edit_seq_condJump_lower=Salto inferior: edit_seq_condJump_upper=Salto superior: edit_seq_condJump_lower_tooltip=Indicar as condi\u00E7\u00F5es para saltar para um n\u00EDvel inferior edit_seq_action_tooltip_fw=Ac\u00E7\u00E3o atribu\u00EDda ao bot\u00E3o "Seguinte" edit_seq_action_tooltip_bk=Ac\u00E7\u00E3o atribu\u00EDda ao bot\u00E3o "Anterior" edit_seq_jump_tooltip=Indicar o destino do salto edit_seq_action_tooltip=Ac\u00E7\u00E3o a realizar edit_seq_activity_tooltip=Actividade atribu\u00EDda a este elemento da sequ\u00EAncia edit_seq_tag_tooltip=Etiqueta utilizada para referir-se a este elemento de sequ\u00EAncia (opcional) edit_seq_description_tooltip=Descri\u00E7\u00E3o do elemento de sequ\u00EAncia (opcional) edit_seq_button_enabled_tooltip=Activar/desactivar o bot\u00E3o de mudan\u00E7a de actividade edit_seq_auto_tooltip=Avan\u00E7ar automaticamente ao terminar a actividade edit_seq_delay_tooltip=Segundos de espera antes de realizar o avan\u00E7o autom\u00E1tico edit_color_dlgTitle=Seleccionar cor edit_media_renaming=Por favor, espere enquanto se altera o nome do recurso... edit_act_cell_width=Largura: edit_act_cell_width_tooltip=Largura das c\u00E9lulas (em p\u00EDxeis) edit_act_cell_height=Altura: edit_act_cell_height_tooltip=Altura das c\u00E9lulas (em p\u00EDxeis) edit_act_hiddenWords=Palavras escondidas: edit_act_hiddenWords_tooltip=Lista das palavras escondidas no painel edit_act_wordSearch_panelB=Utilizar o painel B edit_act_wordSearch_panelB_tooltip=Usar um segundo painel, que surge \u00E0 medida que as palavras s\u00E3o encontradas edit_act_shaper_tooltip=Selec\u00E7\u00E3o do tipo de gerador de formas do painel edit_act_num_cols_tooltip=N\u00FAmero de colunas do painel edit_act_num_rows_tooltip=N\u00FAmero de filas do painel edit_act_wildTransparent=Separadores transparentes edit_act_wildTransparent_tooltip=Exibir os separadores (quadros negros) como buracos transparentes edit_act_behavior_scramble_times=Misturas: edit_act_behavior_scramble_times_tooltip=N\u00FAmero de vezes a misturar as pe\u00E7as edit_act_copy_title=Copiar atributos para... edit_act_copy_attributes=Atributos: edit_act_copy_dest=Aplicar a: edit_act_copy_style_main=Janela principal edit_act_copy_style_play=Janela de jogo edit_act_copy_activities=Actividades a modificar: edit_act_copyAttributes=Copiar atributos edit_act_copyAttributes_keys=F edit_act_copyAttributes_tooltip=Copiar atributos da actividade actual para outras actividades edit_new_project_name=Nome do projecto: edit_new_project_name_tooltip=Nome curto e descritivo do projecto edit_new_project_filename=Nome do ficheiro: edit_new_project_filename_tooltip=Nome do ficheiro do projecto (sem extens\u00E3o) edit_new_project_folder=Pasta: edit_new_project_folder_tooltip=Nome da pasta em que se guardar\u00E1 o projecto edit_new_project_folder_browse=Procurar... edit_new_project_title=Cria\u00E7\u00E3o de um novo projecto JClic edit_new_project_err_empty=Erro: Tanto o projecto como o ficheiro e a pasta devem ter nomes v\u00E1lidos. edit_new_project_warning_noEmptyFolder=Nesta pasta j\u00E1 existe outro projecto Clic3.0 ou JClic. Para evitar confus\u00F5es, recomenda-se manter cada projecto numa pasta independente, ainda que n\u00E3o seja um requisito imprescind\u00EDvel. Deseja criar o novo projecto nesta pasta? edit_new_project_err_folderCreation=Erro: n\u00E3o foi poss\u00EDvel criar a pasta (directoria)! edit_act_copy_err_noSelection=Erro: N\u00E3o foi seleccionada nenhuma actividade. Para utilizar esta fun\u00E7\u00E3o, deve seleccionar na lista a actividade ou actividades \u00E0s quais ser\u00E3o aplicados os atributos indicados. edit_act_copy_action_prefix=A copiar atributos para: edit_act_copy_margin=Margem edit_act_copy_bgColor=Cor de fundo edit_act_copy_gradient=Gradiente edit_act_copy_bgImage=Imagem de fundo edit_act_copy_border=Limite edit_act_copy_transparentBg=Fundo transparente edit_act_copy_position=Posi\u00E7\u00E3o edit_act_copy_messages=Mensagens edit_act_copy_messages_ini=Estilo da mensagem inicial edit_act_copy_messages_end=Estilo da mensagem final edit_act_copy_messages_err=Estilo da mensagem de erro edit_act_copy_reports=Relat\u00F3rios edit_act_copy_rep_include=Incluir a actividade nos relat\u00F3rios edit_act_copy_rep_actions=Registar ac\u00E7\u00F5es edit_act_copy_interface=Interface de utilizador edit_act_copy_skin=Aspecto edit_act_copy_evSounds=Sons de evento edit_act_copy_counters=Contadores edit_act_copy_cTime=Contador de tempo edit_act_copy_maxTime=Tempo m\u00E1ximo edit_act_copy_cTries=Contador de tentativas edit_act_copy_maxTries=N\u00FAmero m\u00E1ximo de tentativas edit_act_copy_cScore=Contador de acertos edit_act_copy_scramble=N\u00FAmero de vezes a baralhar edit_act_copy_buttons=Bot\u00F5es edit_act_copy_btnHelp=Bot\u00E3o de ajuda edit_act_copy_btnInfo=Bot\u00E3o de informa\u00E7\u00E3o edit_act_copy_grids=Pain\u00E9is edit_act_copy_gridA=Estilo do painel A edit_act_copy_gridB=Estilo do painel B edit_act_copy_textGrid=Estilo dos pain\u00E9is de texto edit_act_copy_text=Actividades de texto edit_act_copy_fontFace=Tipo de letra edit_act_copy_fontSize=Tamanho de letra edit_act_copy_fontStyle=Estilo de letra edit_act_copy_textColour=Cor do texto principal edit_act_copy_textTargetColour=Escolha o projecto JClic do qual as actividades ser\u00E3o importadas edit_act_copy_textErrorColour=Cor dos erros edit_act_copy_tabSpace=Espa\u00E7o entre tabula\u00E7\u00F5es edit_act_copy_messages_prev=Estilo da mensagem anterior edit_act_changeType=Mudar o tipo de actividade edit_act_newActivity_class_tooltip=Nome completo da classe que se utilizar\u00E1 para construir a actividade (utilizadores avan\u00E7ados!) edit_act_newActivity_other=Outras... edit_act_newActivity_info=Os utilizadores avan\u00E7ados podem criar outros tipos de actividades JClic n\u00E3o registadas. Escreva abaixo o nome completo da classe, precedida pelo do pacote (por exemplo: "com.acme.activities.FooActivity"). As novas actividades devem expandir edu.xtec.jclic.Activity, e devem ser access\u00EDveis ao carregador de classes da m\u00E1quina virtual de Java. edit_act_newActivity_name=Nome da actividade edit_act_newActivity_name_tooltip=Cada actividade deve ter um nome \u00FAnico no projecto edit_act_changeType_warning=

Aten\u00E7\u00E3o: Mudar o tipo de actividade pode causar a perda de atributos e objectos da actividade actual. Utilize esta fun\u00E7\u00E3o com cuidado!

 

applet_codebase=Localiza\u00E7\u00E3o do c\u00F3digo JClic: applet_codebase_tooltip=URL que aponta para uma pasta com os ficheiros e scripts do JClic applet_prev_text=C\u00F3digo HTML pr\u00E9vio: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Texto ou c\u00F3digo HTML que aparecer\u00E1 antes do applet applet_post_text=C\u00F3digo HTML posterior: applet_post_text_tooltip=Texto ou c\u00F3digo HTML que aparecer\u00E1 depois do applet applet_size=Tamanho do applet: applet_size_tooltip=Largura e altura do applet, em valores absolutos ou percentuais. applet_page_title=T\u00EDtulo da p\u00E1gina: applet_page_title_tooltip=Texto a mostrar na parte superior da janela do navegador applet_created_info=A p\u00E1gina web "%s" foi criada com \u00EAxito. applet_created_prompt=Deseja abri-la agora com o navegador? action_createHTML_caption=Criar p\u00E1gina web... applet_create_title=Cria\u00E7\u00E3o de uma p\u00E1gina HTML com um applet JClic action_createHTML_tooltip=Cria\u00E7\u00E3o de uma p\u00E1gina HTML com um applet que contem o projecto actual. applet_filename=Nome do arquivo: applet_filename_tooltip=Nome do arquivo HTML a criar action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valores padr\u00E3o usados na cria\u00E7\u00E3o de p\u00E1ginas web applet_bgcolor=Cor de fundo: applet_bgcolor_tooltip=Cor de fundo da p\u00E1gina web applet_centered=Centrado applet_centered_tooltip=Applet centrado horizontalmente applet_width_tooltip=Largura do applet (em valor absoluto ou percentual) applet_height_tooltip=Altura do applet (em valor absoluto ou percentual) applet_exitUrl=Ao sair, ir para: applet_exitUrl_tooltip=URL a visitar ap\u00F3s sair do JClic applet_infoFrame=Quadro de informa\u00E7\u00E3o: applet_infoFrame_tooltip=Nome do quadro usado para mostrar o conte\u00FAdo relacionado com o bot\u00E3o de informa\u00E7\u00E3o. action_createInstaller_caption=Criar instalador do projecto... action_createInstaller_keys=I* action_createInstaller_tooltip=Cria\u00E7\u00E3o de um ficheiro de instala\u00E7\u00E3o do projecto para JClic player installer_caption=Edi\u00E7\u00E3o do ficheiro de instala\u00E7\u00E3o do projecto installer_title=T\u00EDtulo: installer_title_tooltip=T\u00EDtulo do projecto a mostrar no assistente de instala\u00E7\u00E3o installer_authors=Autores: installer_authors_tooltip=Autores do projecto (texto curto) installer_folder=Pasta: installer_folder_tooltip=Nome da pasta a sugerir pelo assistente de instala\u00E7\u00E3o installer_files=Ficheiros a copiar: installer_files_tooltip=Ficheiros copiados durante a instala\u00E7\u00E3o installer_files_available=Ficheiros dispon\u00EDveis installer_files_selected=Ficheiros seleccionados installer_files_add=>> adicionar >> installer_files_add_tooltip=Adicionar o ficheiro seleccionado \u00E0 lista installer_files_remove=<< remover << installer_files_remove_tooltip=Remover da lista o ficheiro seleccionado installer_button=Bot\u00E3o de activa\u00E7\u00E3o installer_button_tooltip=Propriedades do bot\u00E3o a mostrar na biblioteca de projectos installer_button_project=Projecto principal: installer_button_project_tooltip=Projecto JClic associado ao bot\u00E3o installer_button_text=Etiqueta: installer_button_text_tooltip=Breve etiqueta de texto, que aparecer\u00E1 dentro do bot\u00E3o installer_button_icon=\u00CDcone: installer_button_icon_tooltip=Imagem a usar como \u00EDcone do bot\u00E3o. Deixar em branco para usar o \u00EDcone padr\u00E3o do JClic. installer_button_description=Descri\u00E7\u00E3o installer_button_description_tooltip=Texto de ajuda a mostrar pelo bot\u00E3o installer_error_noTitle=Erro: Falta o t\u00EDtulo do projecto installer_error_noBaseFolder=Erro: Falta o nome da pasta de instala\u00E7\u00E3o do projecto installer_error_noFilesSelected=Erro: N\u00E3io foi seleccionado nenhum ficheiro installer_error_noButtonText=Erro: Falta texto do bot\u00E3o de activa\u00E7\u00E3o installer_error_projectNotInFiles=Erro: O projecto associado ao bot\u00E3o de activa\u00E7\u00E3o n\u00E3o faz da lista de ficheiros a copiar applet_page_full=O applet ocupa toda a p\u00E1gina applet_page_mixed=O applet tem dimens\u00F5es espec\u00EDficas edit_text_align_left=Alinhar o texto \u00E0 esquerda edit_text_align_center=Centrar texto edit_text_align_right=Alinhar \u00E0 direita edit_text_act_target_toggle=Criar uma inc\u00F3gnita ou suprimi-la edit_text_act_insertCell=Inserir uma c\u00E9lula edit_text_act_content=Conte\u00FAdo edit_text_act_style=Estilo edit_cell_size=Dimens\u00F5es: edit_project_orphanActivities=As actividades seguintes n\u00E3o aparecem em nenhuma sequ\u00EAncia de actividades do projecto. N\u00E3o ser\u00E3o mostradas: edit_project_orphanMedia=Os seguintes objectos da mediateca n\u00E3o s\u00E3o utilizados directamente em nenhuma actividade: edit_project_orphanActivities_prompt=Deseja adicion\u00E1-los ao final da \u00FAltima sequ\u00EAncia de actividades? edit_project_orphanMedia_prompt=Deseja elimin\u00E1-los? edit_project_orphanMedia_title=Remo\u00E7\u00E3o de objectos multim\u00E9dia n\u00E3o utilizados edit_project_orphanActivities_title=Actividades \u00F3rf\u00E3s edit_media_refreshAll=Actualizar o conte\u00FAdo de todos os recursos edit_media_refreshAll_tooltip=Actualizar todos os recursos voltando a carregar os ficheiros edit_media_refreshAll_keys=R* edit_media_refreshAll_working=A actualizar recursos... edit_media_exportAll=Exportar todos os recursos edit_media_exportAll_tooltip=Gravar em ficheiros o conte\u00FAdo de todos os recursos edit_media_exportAll_keys=X* edit_shape_select=Seleccionar edit_shape_addPoint=Adicionar ponto edit_shape_deletePoint=Eliminar edit_shape_drawRect=Desenhar um rect\u00E2ngulo edit_shape_drawEllipse=Desenhar uma elipse edit_shape_drawPoly=Desenhar um pol\u00EDgono edit_shape_toLine=Converter em linha edit_shape_toBezier=Converter em curva de B\u00E9zier edit_shape_toQuad=Converter em qu\u00E1drica edit_shape_rLeft=Girar para esquerda edit_shape_rRight=Girar para direita edit_shape_expand=Expandir edit_shape_contract=Contrair edit_shape_zoomIn=Aproximar edit_shape_zoomOut=Afastar edit_shape_aproxPoints=Juntar pontos pr\u00F3ximos edit_shape_showPoints=Mostrar pontos edit_shape_showPoints_tooltip=Mostrar/Ocultar pontos edit_shape_gridSize=Tamanho da grelha: edit_shape_hideGrid=Mostrar/Ocultar grelha edit_shape_magnetRadius=Raio do im\u00E1n: edit_shape_elements=Elementos definidos edit_shape_elemName=Nome do elemento seleccionado edit_shape_magnetRadius_tooltip=Raio de ac\u00E7\u00E3o do \u00EDman, quando est\u00E1 activado edit_shape_gridSize_tooltip=Tamanho da grelha edit_mc_activity=Actividade: edit_mc_sequence=Sequ\u00EAncia: edit_mc_url=URL: edit_mc_project=Projecto: edit_mc_activity_selection=Selec\u00E7\u00E3o da actividade edit_mc_sequence_selection=Selec\u00E7\u00E3o da sequ\u00EAncia edit_mc_err_nullContent=Dados insuficientes! edit_act_arrowColor=Cor das setas: edit_act_arrowColor_tooltip=Cor utilizada pelo editor ao desenhar as setas (n\u00E3o exactamente, j\u00E1 que utiliza uma m\u00E1scara XOR de bits) edit_act_editActivity=Editar... edit_act_editActivity_tooltip=Editar a actividade seleccionada action_saveFileAs_caption=Guardar como... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Guardar o projecto com um nome diferente edit_act_behavior_block=Comportamento edit_act_behavior=Comportamento edit_act_behavior_drag=Arrastar edit_act_behavior_drag_tooltip=Arrastar c\u00E9lulas em vez de usar linha de conex\u00E3o edit_act_behavior_order=Marcar ordem de resolu\u00E7\u00E3o edit_act_behavior_order_tooltip=C\u00E9lulas dever\u00E3o ser resolvidas por ordem edit_act_scramble=Misturar action_importActivities_caption=Importar actividades... action_importActivities_keys=I* action_importActivities_tooltip=Importar actividades de outro projecto import_warn_samefile=O ficheiro que foi seleccionado corresponde ao projecto actual. S\u00F3 pode importar actividades entre projectos diferentes. Por favor, escolha outro projecto. import_selectActivities=Seleccione uma ou mais actividades a importar para o projecto actual: import_importing=A importar... import_checkdep=A verificar depend\u00EAncias... import_impmedia=Importar recursos: import_impact=Importar actividade: import_selectProject=Escolha o projecto JClic do qual as actividades ser\u00E3o importadas edit_tagRep_tags=Marcas edit_tagRep_tagStart=Marcas de in\u00EDcio edit_tagRep_tagStart_tooltip=Marca que indica in\u00EDcio de etiqueta edit_tagRep_tagEnd=Marca final: edit_tagRep_tagEnd_tooltip=Marca que indica final de etiqueta edit_tagRep_file=Ficheiro edit_tagRep_fileName=Ficheiro ou URL: edit_tagRep_fileName_tooltip=Nome ou URL do ficheiro com os valores que substituir\u00E3o as etiquetas edit_tagRep_charset=Codifica\u00E7\u00E3o de caracteres: edit_tagRep_charset_tooltip=Codifica\u00E7\u00E3o de caracteres usada no ficheiro edit_tagRep_browseFile=Procurar... edit_tagRep_browseFile_tooltip=Procurar no sistema de ficheiros edit_tagRep_title=Substituir etiqueta edit_text_act_clearStylesBtn=Eliminar estilos de texto edit_text_act_clearStylesPrompt=Aten\u00E7\u00E3o: Esta ac\u00E7\u00E3o eliminar\u00E1 os atributos de texto do documento, aplicando o estilo predefinido. Esta ac\u00E7\u00E3o n\u00E3o pode ser desfeita. Quer eliminar os atributos de texto? img_max_size=Tamanho m\u00E1ximo das imagens img_max_width_tooltip=Largura m\u00E1xima das imagens importadas para biblioteca de media. img_max_height_tooltip=Altura m\u00E1xima das imagens importadas para biblioteca de media. img_resize_prompt=A imagem "%s" tem %s pixeis. Excede o m\u00E1ximo permitido pelo JClic Author (%s). Quer redimension\u00E1-la? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_nl.properties0000644000175000017500000012124311377161311026012 0ustar #JClic Author messages edit_act_description_block=Beschrijving edit_act_name_tooltip=Naam van de activiteit edit_act_name=Naam: edit_act_description_tooltip=Beschrijving van de activiteit edit_act_reports_block=Rapporten edit_act_includeInReports=Voeg deze activiteit toe aan de rapporten edit_act_includeInReports_tooltip=Voeg de resultaten van deze activiteit toe aan de gebruikersrapporten edit_act_code=Code: edit_act_code_tooltip=Optionele code om te groeperen en te zoeken in de rapporten database edit_act_reportActions=Rapporteer acties van gebruikers edit_act_reportActions_tooltip=Registreer de details van alle acties van de gebruikers edit_act_counters_block=Tellers edit_act_timeCounter=Tijdsteller edit_act_timeCounter_tooltip=Toon/verberg de tijdsteller edit_act_actionsCounter=Aantal pogingen teller edit_act_actionsCounter_tooltip=Toon/verberg de aantal pogingen teller edit_act_scoreCounter=Puntenteller edit_act_scoreCounter_tooltip=Toon/verberg de puntenteller edit_act_maxTime=Max tijd: edit_act_maxTime_tooltip=Max tijd om de activiteit op te lossen, in seconden, of 0 zonder tijdsbeperking. edit_act_countdown=Aftellen edit_act_countdown_tooltip=De teller start met de maximumwaarde, en vermindert tot 0 edit_act_maxActions=Max pogingen: edit_act_maxActions_tooltip=Maximum aantal pogingen, of 0 voor onbeperkt edit_act_buttons_block=Knoppen edit_act_helpBtn=Help edit_act_helpBtn_tooltip=Toon/verberg help knop edit_act_helpBtn_solution=Toon oplossing edit_act_helpBtn_msg=Toon dit bericht: edit_act_infoBtn=Informatie edit_act_infoBtn_tooltip=Toon/verberg informatie knop edit_act_infoBtn_url=Toon deze URL: edit_act_infoBtn_cmd=Voer dit commando uit: edit_act_infoBtn_url_tooltip=Adres van de website die getoond moet worden als de info knop gedrukt wordt edit_act_infoBtn_cmd_tooltip=Commando dat uitgevoerd wordt als de info knop gedrukt wordt edit_act_mainWindow=Hoofd venster: edit_act_gameWindow=Spel venster: edit_act_margin=Marge: edit_act_margin_tooltip=Horizontale en verticale afstand tussen visuele objecten edit_act_bgColor=Achtergrondkleur: edit_act_bgColor_tooltip=Verander de achtergrondkleur. edit_gradient_startColor=Begin kleur: edit_gradient_endColor=Eind kleur: edit_gradient_startColor_tooltip=Selectie van de start kleur edit_gradient_endColor_tooltip=Selectie van de eind kleur edit_gradient_cycles=Cycles: edit_gradient_cycles_tooltip=Aantal herhalingen van de gradi\u00EBnt over het tekenoppervlak edit_gradient_orientation=Ori\u00EBntatie: edit_gradient_orientation_tooltip=Ori\u00EBntatie van de gradi\u00EBnt , gemeten in graden over de horizon edit_act_gradient=Gradi\u00EBnt: edit_act_gradient_tooltip=Gebruik gradi\u00EBnt van kleuren edit_color_opacity=Doorzichtigheid edit_color_opacity_tooltip=Zet de alpha channel (doorzichtigheid) kleur waarde. edit_gradient_title=Gradi\u00EBnt edit_gradient_default=Gebruik de standaardwaarden (geen gadient) edit_act_image=Afbeelding: edit_act_descriptionTab=Beschrijving edit_act_descriptionTab_tooltip=Naam en beschrijving edit_act_tiledBgImg=Getegeld edit_act_tiledBgImg_tooltip=Teken heel het oppervlak met een afbeelding, herhaal over de X en Y as indien nodig. edit_act_preview=Voorbeeld: edit_act_border=Rand edit_act_border_tooltip=Teken een lijn rond het venster edit_act_transparent=Transparant edit_act_transparent_tooltip=Venster heeft een transparante achtergrond edit_act_width=Breedte: edit_act_height=Hoogte: edit_act_width_tooltip=Breedte van een object, gemeten in pixels edit_act_height_tooltip=Hoogte van een object, gemeten in pixels edit_act_centered=Gecentreerd edit_act_centered_tooltip=Het object zal gecentreerd worden over het hoofdvenster edit_act_x=X: edit_act_x_tooltip=Absolute horizontale positie edit_act_y=Y: edit_act_y_tooltip=Absolute verticale positie edit_act_ui_block=Gebruikers interface edit_act_image_tooltip=Kies een afbeelding edit_act_text=Tekst: edit_act_text_tooltip=Tekst die binnen dit object getoond moet worden edit_font_face=Lettertype edit_font_size=Grootte: edit_font_bold=Vet edit_font_italic=Schuin edit_font_underline=Onderstreept edit_font_style=Stijl: edit_cell_title=Cel inhoud edit_act_messages=Berichten edit_act_msg_initial=Eerste bericht edit_act_msg_final=Laatste bericht edit_act_msg_prev=Vorig bericht edit_act_msg_error=Fout bericht: edit_act_msg_initial_tooltip=Bericht dat getoond wordt als de activiteit begint edit_act_msg_final_tooltip=Bericht dat getoond wordt als de activiteit eindigt edit_act_msg_error_tooltip=Bericht dat getoond wordt als de activiteit eindigt met fouten edit_act_msg_prev_tooltip=Bericht dat getoond wordt als de activiteit voor de start van een activiteit (alleen bij sommige activiteiten) edit_align=Uitlijning: edit_act_textColor=Tekstkleur: edit_act_textColor_tooltip=Kleur van de tekst edit_act_shadowColor=Schaduwkleur: edit_act_shadowColor_tooltip=Kleur van de schaduw van de tekst, indien toepasbaar edit_act_shadow=Schaduw edit_act_shadow_tooltip=Teken tekst met schaduw edit_act_borderColor=Randkleur: edit_act_borderColor_tooltip=Kleur van de rand van de cel edit_act_inactiveColor=Kleur indien inactief: edit_act_inactiveColor_tooltip=Kleur als cel uitgeschakeld is edit_act_altColor=Alternatieve kleur: edit_act_altColor_tooltip=Kleur van alternatieve inhoud in opgeloste cellen. edit_cell_marked=Gemarkeerd edit_cell_disabled=Uitgeschakeld edit_cell_alt=Alternatief edit_cell_textMargin=Interne marge: edit_cell_textMargin_tooltip=Hoeveelheid ruimte tussen rand van de cel en de tekst. edit_cell_borderWidth=Randbreedte: edit_cell_borderWidth_tooltip=Breedte van de standaard rand edit_cell_markerWidth=Breedte gemarkeerd: edit_cell_markerWidth_tooltip=Breedte van de rand als de cel gemarkeerd is of geselecteerd edit_cell_alt_tooltip=Voorbeeld in "alternatieve" toestand edit_cell_disabled_tooltip=Voorbeeld in "niet toegestaan" toestand edit_cell_marked_tooltip=Voorbeeld in "gemarkeerde" toestand edit_act_testAction=Voorbeeld activiteit edit_act_testAction_tooltip=Voorbeeld en test activiteit edit_act_panels_description=Beschrijving edit_act_panels_description_tooltip=Titel en beschrijving van de activiteit edit_act_panels_options=Opties edit_act_panels_options_tooltip=Opties van de activiteit edit_act_panels_frame=Venster edit_act_panels_frame_tooltip=Verhouding, grootte en positie van het activiteit venster edit_act_panels_messages=Berichten edit_act_panels_messages_tooltip=Inhoud van de activiteit berichten edit_act_panels_panel=Paneel edit_act_panels_panel_tooltip=Inhoud van het paneel edit_style_title=Stijl edit_style_tooltip=Kleur, lettertype en grootte van de cel edit_act_style=Stijl: edit_act_overlap=Vermijd tekst afbeelding overlapt edit_act_overlap_tooltip=Probeer te vermijden dat tekst afbeelding overlapt edit_media_exists_1=Het bestand edit_media_exists_2=Bestaat reeds in media bibliotheek! edit_act_shaper=Vormgereedschap edit_act_shaper_err=Fout vormgereedschap: edit_act_num_cols=Kolommen: edit_act_num_rows=Rijen: edit_act_toothHeightFactor=Tand hoogte: edit_act_toothWidthFactor=Tand breedte: edit_act_toothRandom=Willekeurige verdeling edit_act_shaper_properties=Vormgereedschap eigenschappen edit_act_panels_text=Tekst edit_act_panels_text_tooltip=Tekst van de activiteit action_saveFile_caption=Opslaan... action_saveFile_keys=OO action_saveFile_tooltip=Bewaar het huidige project action_docTree_caption=Document boom action_docTree_keys=B* action_docTree_tooltip=Toon het document van het project als een boom edit_docTree_title=Document boom edit_media_referencedBy=Gerefereerd door: msg_prompt_loadReferences=Waarschuwing:

Dit project verbindt met andere projecten.
Wil je de hyperlinks volgen en al de bijbehorende bestanden laden?

(Je klikt best op JA als je Clic 3.0 activititeiten importeert) edit_mc_type=Type: edit_mc_type_unknown=Onbekend edit_mc_type_sound=Geluid afspelen edit_mc_type_video=Video afspelen edit_mc_type_midi=MIDI afspelen edit_mc_type_cdaudio=CD audio afspelen edit_mc_type_record=Geluid opnemen edit_mc_type_play_recorded=Opgenomen geluid afspelen edit_mc_type_run_activity=Ga naar activiteit edit_mc_type_run_sequence=Ga naar volgorde edit_mc_type_run_external=Programma uitvoeren edit_mc_type_url=URL adres tonen edit_mc_type_exit=Einde edit_mc_type_return=Vorige edit_mc_level=Prioriteitsniveau: edit_mc_file=Bestand: edit_mc_externalParam=Parameter: edit_mc_from=Van: edit_mc_to=Tot: edit_mc_length=Max. lengte: edit_mc_recBuffer=Opname band: edit_mc_stretch=Uitrek grootte edit_mc_location=Locatie: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Van: edit_mc_location_from_box=Cel edit_mc_location_from_window=Venster edit_mc_location_from_frame=Kader edit_mc_loop=Doorlopen weergeven edit_mc_autostart=Automatische start edit_mc_catchmouse=Vang muis edit_mc_title=Multimedia en actieve inhoud edit_mc_label=Actieve inhoud edit_media_dlg_title=Multimedia object keuze edit_media_title=Media bibliotheek edit_mc_pos_cell=Gecentreerd over cel edit_mc_pos_window=Gecentreerd over venster edit_mc_pos_absolute=Geef positie: edit_tree_badFormat=Verkeerde boomstructuur of gegevens! edit_act_panels_controls=Besturingselementen edit_act_panels_controls_tooltip=Opties voor knoppen en tellers edit_act_class=Type: edit_act_gridLayout=Raster: edit_act_gridLayout_tooltip=Relatieve positie van de rasters A en B edit_act_inverseResolution=Omgekeerde resolutie edit_act_inverseResolution_tooltip=De activiteit is opgelost als alle elementen van "B" overeenkomen. edit_act_showAllArrows=Toon alle pijlen edit_act_alt=Alternatieve inhoud: edit_act_alt_tooltip=Inhoud die getoond wordt in opgeloste cellen en niet toegewezen cellen edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Bewerk de alternatieve inhoud edit_act_grid=Raster edit_act_grid_A=Raster A edit_act_grid_B=Raster B edit_act_grid_layout=Lay-out edit_act_grid_relationship=Relatie edit_seq_activity_header=activiteit edit_seq_tag_header=trefwoord edit_seq_jump_header=springen naar edit_seq_activity=Activiteit: edit_seq_tag=Label: edit_seq_description=Beschrijving: edit_seq_auto=Ga automatisch verder edit_seq_delay=Vertraging: edit_seq_action_fwd=Ga vooruit edit_seq_action_back=Ga terug edit_seq_action_jump=Spring naar... edit_seq_action_stop=Stoppen edit_seq_action_return=Vorige edit_seq_action_exit=JClic verlaten edit_seq_arrow_fwd=Vooruit pijl: edit_seq_arrow_back=Pijl terug: edit_seq_action=Actie: edit_seq_button_enabled=Toon knop edit_seq_project=JClic Project: edit_act_absolute=Absolute positie edit_act_absolute_tooltip=Het object zal geplaatst worden op de gespecificeerde X en Y co\u00F6rdinaten edit_act_location=Locatie: edit_seq_newElement=Nieuwe volgorde element... edit_seq_newElement_tooltip=Voeg een nieuw element toe aan de activiteiten edit_seq_newElement_msg=Selecteer een activiteit voor de niewe volgorde element edit_seq_newElement_error_noAct=Kan geen nieuwe volgorde element maken zonder activiteit! edit_seq_newElement_error_emptyList=Dit project heeft geen activiteiten! Kan geen volgorde elementen maken in een leeg project. edit_seq_jump_msg=Sprong doel: edit_seq_jump_title=Sprong doel edit_act_newActivity_tooltip=Voeg een nieuwe activiteit toe aan het project edit_act_prompt_class=Type activiteit: edit_act_prompt_name=Naam: edit_act_newActivity_msg=Selecteer het type activiteit en geef het een naam: edit_act_newActivity_error_noAct=Je moet een activiteit type kiezen! edit_act_newActivity_error_noName=Je moet een naam geven voor de activiteit! edit_act_newActivity_error_creating=Kan de activiteit niet maken! edit_act_newActivity_class=Java class name: edit_text_act_format=Formaat edit_text_act_answer=Beantwoorden edit_text_act_popup=Pop up edit_text_act_answer_label=Beschikbare antwoorden: edit_list_newElement_tooltip=Voeg een nieuw lijst element toe edit_list_editElement_tooltip=Bewerk het geselecteerde lijst element edit_list_deleteElement_tooltip=Verwijder het geselecteerde lijst element edit_list_upBtn_tooltip=Omhoog edit_list_downBtn_tooltip=Omlaag edit_list_newValue=Nieuwe tekst: edit_list_addElement=Voeg nieuw lijst element toe edit_list_modifyValue=Verander geselecteerde tekst edit_text_act_target=Doel edit_text_act_maxLen=Max. lengte: edit_text_act_maxLen_tooltip=Maximum hoeveelheid letters in het antwoord. edit_text_act_fillingChar=Opvul letter edit_text_act_fillingChar_tooltip=Letter gebruikt als spatie edit_text_act_iniLen=Eerste lengte: edit_text_act_iniLen_tooltip=Aantal vul letters dat getoond wordt bij het begin van de activiteit. edit_text_act_iniText=Eerste tekst: edit_text_act_iniText_tooltip=Getoonde tekst in het begin van de activiteit. edit_text_act_list=Toon lijst met opties edit_text_act_list_tooltip=Toon lijst met opties waaruit de gebruiker een moet kiezen. edit_text_act_check_title=Correctie opties edit_text_act_popup_no=Geen pop up edit_text_act_popup_always=Pop up automatisch edit_text_act_popup_onError=Pop up met fouten edit_text_act_popup_onDemand=Pop up met F1 edit_text_act_popup_type=Type: edit_text_act_popup_delay=Pop up vertraging: edit_text_act_popup_maxTime=Max. tijd: edit_text_act_popup_onlyPlay=Alleen geluid edit_text_act_err_noSelection=Je moet een deel tekst kiezen om een nieuw tekst doel te maken! edit_text_act_err_badCharInSelection=Tekst doel kan geen paragraaf tekens of tab tekens bevatten. edit_text_act_err_nestedTargets=Doelen kunnen niet genest zijn! edit_text_act_err_cellInTarget=Doelen kunnen geen cellen bevatten! edit_text_act_pageBgColor=Papier kleur: edit_text_act_editStylesBtn=Bewerk dokument stijl... edit_text_act_mainStyle=Hoofd stijl edit_text_act_tabSpc=Tab ruimte: edit_text_act_tabSize=Ruimte tussen tab markeringen: edit_text_act_colors=Kleuren: edit_text_act_targetStyle=Doel kleuren: edit_text_act_errorStyle=Fout kleuren: edit_text_act_preview=Voorbeeld: edit_text_act_styleSample_default_start=Standaardtekst edit_text_act_styleSample_target=doel edit_text_act_styleSample_error=Fout edit_text_act_styleSample_default_fill=standaard tekst edit_text_act_styleSample_default_end=standaard tekst. edit_text_act_warnDeleteTarget=Waarschuwing: Deze bewerking zal alle geselecteerde doelen onderdrukken. Wil je verder gaan? edit_text_act_prevScreen_title=Vorig scherm... edit_text_act_prevScreen_no=Toon geen tekst voor de start van een activiteit edit_text_act_prevScreen_original=Toon de volledige tekst van de oefening edit_text_act_prevScreen_special=Toon deze tekst: edit_text_act_prevScreen_time=Max. tijd: edit_text_act_edit_target=Doel... edit_text_act_checkButton_show=Toon de verbeter knop edit_text_act_checkButtonText=Knop tekst edit_text_act_checkCase=Exact dezelfde tekens edit_text_act_checkAccents=Gebruik accenten en speciale letters edit_text_act_checkPunct=Gebruik leestekens edit_text_act_checkDoubleSpc=Laat meerdere spaties toe edit_text_act_checkOptions=Criteria edit_text_act_checkAutoJump=Ga naar het volgend doel als alles ingevuld is edit_text_act_checkForceOk=Ga alleen verder wanneer het juist is edit_text_act_checkDetail=Geef vergissingen aan met een letter edit_text_act_checkDetail_params=Analyse van algoritme parameters: edit_text_act_checkDetail_steps=Stappen: edit_text_act_checkDetail_field=Exploration veld: edit_text_act_defaultCheckButtonText=Controleren edit_text_act_advancedCorrectionOptions=Antwoord analyse edit_text_act_check_bt=Verbetering... edit_text_act_checkButton=Verbeter knop edit_text_act_checkProgress=Voortgang edit_text_act_typeBtn=Type... edit_text_act_orderParagraphs=Orden paragrafen edit_text_act_orderWords=Orden woorden edit_text_act_order_amongstPar=Haal woorden doorheen over paragrafen edit_text_act_type_title=Activiteit type edit_text_act_warnChangeType=Deze bewerking zal alle bestaande doelen leegmaken. Wil je verder gaan? edit_text_act_identWords=Identificeer woorden edit_text_act_identChars=Identificeer letters edit_media_change_name=Verander naam... edit_media_change_file=Verander bestand... edit_media_includeInZip=Bewaar in ZIP bestand edit_media_type=Mediumtype: edit_media_size=Bestandsgrootte: edit_media_show_type=Bestanden van het type: edit_media_preview=Voorbeeld media edit_media_preview_tooltip=Voorbeeld media bron edit_media_rename=Verander naam van bron edit_media_rename_title=Hernoemen edit_media_rename_prompt=Nieuwe naam: edit_media_rename_invalid=Ongeldige bron naam edit_media_rename_exists=Er is een andere bron met deze naam! Elke bron moet een unieke naam hebben. edit_media_chfile_invalid=Verkeerd bestand! err_media_chfile_different=Bestand moet hetzelfde type hebben edit_media_font_error=Onmogelijk om lettertype te laden! edit_media_save_file=Bewaar bestand (haal op uit ZIP) edit_media_refresh_file=Herlaad media inhoud van bestand edit_media_warn_zipFileNotExternal=Dit is geen "echt" bestand, maar een object geladen in een ZIP container. Om dit element te gebruiken, moet er een bestand met dezelfde naam aanwezig zijn in de map waar de ZIP file is. edit_activities=Activiteiten edit_sequences=Volgorden edit_media=Media bibliotheek edit_media_tooltip=Beheer afbeeldingen en andere media bestanden die in dit project gebruikt worden edit_activities_tooltip=Maak en bewerk project activiteiten edit_sequences_tooltip=Maak en bewerk volgorde van activiteiten edit_project_title=Titel: edit_project_title_tooltip=Titel van project edit_project=Project edit_project_tooltip=Bewerk project eigenschappen edit_project_description=Beschrijving: edit_project_description_tooltip=Algemene beschrijving van het project edit_project_area=Gebieden: edit_project_area_tooltip=Curricular gebieden van het project edit_project_level=Niveau's: edit_project_level_tooltip=Opleidingsniveau van het project edit_project_descriptors=Beschrijving: edit_project_descriptors_tooltip=Beschrijvingen van het programma (gescheiden door komma's) edit_project_languages=Talen: edit_project_languages_tooltip=In het project gebruikte talen edit_project_languages_modify=Verander de gekozen taal edit_project_languages_add=Voeg taal toe edit_project_languages_select=ISO-639 taal codes: edit_project_authors=Auteurs: edit_project_authors_tooltip=Mensen die aan dit project hebben meegewerkt edit_project_author_name=Naam: edit_project_author_mail=e-mail: edit_project_author_rol=Rol: edit_project_author_organization=Organisatie: edit_project_author_comments=Commentaar: edit_project_author_url=URL: edit_project_author_name_tooltip=Auteur (vereist) edit_project_author_mail_tooltip=Auteur e-mail (optioneel) edit_project_author_rol_tooltip=Rol van de persoon in the project: auteur, medewerker, tekeningen, geluiden... (optioneel) edit_project_author_organization_tooltip=School, universiteit, vereniging... (optioneel) edit_project_author_url_tooltip=Persoonlijke web pagina (optioneel) edit_project_author_comments_tooltip=Veld voor andere informatie (optioneel) edit_project_author_info=Auteur info: edit_project_author_add=Auteur toevoegen aan lijst edit_project_author_edit=Auteur info bewerken edit_project_org_name=Naam: edit_project_org_name_tooltip=School naam edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=e-mail addres van de school edit_project_org_url=URL: edit_project_org_url_tooltip=School website edit_project_org_address=Adres: edit_project_org_address_tooltip=Snail-mail address edit_project_org_pc=PC: edit_project_org_pc_tooltip=Post code edit_project_org_city=Stad: edit_project_org_city_tooltip=Stad edit_project_org_country=Land: edit_project_org_state=Provincie edit_project_org_comments=Commentaar: edit_project_org=Scho(o)l/en: edit_project_org_tooltip=School of andere instelling die bij het project betrokken zijn edit_project_org_info=Informatie over de organisatie edit_project_org_add=Voeg organisatie toe edit_project_org_edit=Bewerk organisatie gegevens edit_project_org_country_tooltip=Land, federatie, unie edit_project_org_state_tooltip=Federale staat, gemeenschap, regio edit_project_org_comments_tooltip=Andere informatie... edit_project_rev_date=Datum: edit_project_rev_date_tooltip=Datum van de versie edit_project_rev_authors=Auteurs: edit_project_rev_authors_tooltip=Auteurs van de versie edit_project_rev_description=Omschrijving: edit_project_rev_description_tooltip=Korte omschrijving van de gemaakte veranderingen edit_project_rev_comments=Commentaar: edit_project_rev_comments_tooltip=Andere relevante informatie edit_project_rev=Versies: edit_project_rev_tooltip=Geschiedenis van grote veranderingen aan het project edit_project_rev_add=Voeg een versie beschrijving toe edit_project_rev_edit=Bewerk versie beschrijving edit_project_rev_info=Versie gegevens edit_media_objects=objecten edit_media_object=object edit_evsounds_start=Begin van de activiteit edit_evsounds_click=Click op het object edit_evsounds_actionError=Verkeerde actie: edit_evsounds_actionOk=Juiste actie: edit_evsounds_finishedError=Activiteit be\u00EBindigd met fouten: edit_evsounds_finishedOk=Activiteit be\u00EBindigd zonder fouten: edit_project_rev_err_nodesc=Fout: Het beschrijvingsveld kan niet leeg zijn! edit_evsounds_dlg_title=Bewerk gebeurtenis geluiden edit_project_evsounds=Gebeurtenis geluiden: edit_project_evsounds_tooltip=Kies specifieke geluiden voor elke JClic gebeurtenis edit_act_evsounds=Gebeurtenis geluiden: edit_act_evsounds_tooltip=Kies specifieke geluiden voor elke JClic gebeurtenis edit_evsounds_default=Standaard geluid edit_evsounds_disabled=uitgeschakeld edit_evsounds_chk_tooltip=Inschakelen of uitschakelen van geluid voor deze gebeurtenis edit_evsounds_select_tooltip=Klik om een geluid te kiezen voor deze gebeurtenis, of schakel uit om het standaard geluid te gebruiken action_newProject_caption=Nieuw project... action_newProject_keys=NN action_newProject_tooltip=Maak een nieuw JClic project edit_arith_op_from=Van: edit_arith_op_from_tooltip=Minimum waarde van de term edit_arith_op_to=Tot: edit_arith_op_to_tooltip=Maximum waarde van de term edit_arith_op_with=Door: edit_arith_op_with_tooltip=Indien aangekruist, kan de term ook deze waarde hebben edit_arith_op_fromList=Kies een uit de lijst: edit_arith_op_fromList_tooltip=Lijst van mogelijke waarden van de term edit_arith_op_decimals=Cijfers na de komma: edit_arith_op_decimals_tooltip=Aantal cijfers na de komma van de term edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=Eerste term edit_arith_secondOp=Tweede term edit_arith_title=Arith2 for JClic edit_arith_operations=Operaties: edit_arith_operations_tooltip=Kies de soort operaties die mogelijk zijn edit_arith_operations_plus=Plus edit_arith_operations_minus=Min edit_arith_operations_multiply=Vermenigvuldigen edit_arith_operations_divide=Delen edit_arith_unknown=Onbekend: edit_arith_unknown_tooltip=Kies de term die moet gezocht worden edit_arith_unknown_aobx=Het resultaat is te zoeken edit_arith_unknown_aoxr=De tweede term is te zoeken edit_arith_unknown_xobr=De eerste term is te zoeken edit_arith_unknown_axbr=De bewerking is te zoeken edit_arith_unknown_invert=Schrijf het resultaat bij het begin van de vergelijking edit_arith_result=Resultaat: edit_arith_result_notCarry=Geen overdracht edit_arith_result_random=Willekeurig edit_arith_result_asc=Oplopend edit_arith_result_order=Orden volgens resultaat: edit_arith_result_desc=Aflopend edit_arith_result_avoidDup=Vermijd dubbels edit_arith_cond=Omstandigheden: edit_arith_cond_ind=Om het even edit_arith_cond_agb=De eerste term moet groter zijn dan de tweede edit_arith_cond_alb=De eerste term moet kleiner zijn dan de tweede edit_arith_cond_tooltip=Andere voorwaarden edit_autocp=Automatische inhoud genereren: edit_autocp_tooltip=Kies het type automatische inhoud genereren voor deze activiteit edit_autocp_block=Inhoud genereren edit_autocp_btn=Instellingen... edit_autocp_btn_tooltip=Geef de instellingen van de inhoud verstrekker edit_data=Bewerk gegevens edit_act=Bewerk activiteit edit_acp=Bewerk de inhoud verstrekker edit_acp_err_creating=Fout bij het aanmaken van de inhoud verstrekker edit_project_author_group=Aanmaak edit_project_description_block=Beschrijving edit_project_ui_block=Gebruikers interface edit_act_description=Omschrijving: m_Edit=Bewerk m_Edit_Mnemonic=B edit_media_preview_keys=V edit_act_newActivity=Nieuwe ativiteit... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Invoegen m_Insert_Mnemonic=I m_View=Weergeven m_View_Mnemonic=W action_editProject_caption=Project action_editProject_keys=PP action_editProject_tooltip=Bewerk project instellingen action_editMedia_caption=Media action_editMedia_keys=MM action_editMedia_tooltip=Bewerk de multimedia bibliotheek van het project action_editActivities_caption=Activiteiten action_editActivities_keys=AA action_editActivities_tooltip=Bewerk de activiteiten action_editSeq_caption=Volgorden action_editSeq_keys=SS action_editSeq_tooltip=Bewerk de volgorde van activiteiten warn_project_modified=Huidig project is veranderd. Wil je de veranderingen bewaren? edit_project_descriptors_block=Beschrijvingen edit_media_new=Nieuw media object edit_media_new_tooltip=Voeg een nieuwe afbelding of multimedia object toe aan de bibliotheek edit_media_new_keys=M* edit_seq_threshold=Punten drempel: edit_seq_threshold_tooltip_up=Kies deze weg als het totaal aantal punten gelijk is aan of groter dan... edit_seq_time=Tijdsdrempel: edit_seq_time_tooltip_up=Om deze weg te kiezen, moet de tijd aan deze activiteiten besteed minder zijn dan... edit_seq_threshold_tooltip_down=Neem deze weg als het totaal aantal punten minder is dan... edit_seq_time_tooltip_down=Neem deze weg als de tijd aan deze activiteiten besteed meer is dan... edit_seq_condJump=Voorwaardelijke sprongen edit_seq_condJump_tooltip=Kies speciale sprongen die uitgevoerd moeten worden bij speciale voorwaarden edit_seq_condJump_upper_tooltip=Kies voorwaarden om naar een hoger niveau te gaan edit_seq_condJump_lower=Lager niveau sprong: edit_seq_condJump_upper=Hoger niveau sprong: edit_seq_condJump_lower_tooltip=Kies voorwaarden om naar een lager niveau te springen edit_seq_action_tooltip_fw=Toegewezen actie aan de "Volgende" knop edit_seq_action_tooltip_bk=Toegewezen actie aan de "Voorgaande" knop edit_seq_jump_tooltip=Kies het doel van de sprong edit_seq_action_tooltip=Actie die moet gebeuren edit_seq_activity_tooltip=Toegekende activiteit bij dit volgorde element edit_seq_tag_tooltip=Handvat als referentie bij dit volgorde element(optioneel veld) edit_seq_description_tooltip=Beschrijving van het volgorde element (optioneel veld) edit_seq_button_enabled_tooltip=Toestaan of verhinderen van de pijlknop edit_seq_auto_tooltip=Ga automatisch verder als de activiteit gedaan is edit_seq_delay_tooltip=Aantal seconden wachten voordat het automatisch verder gaat edit_color_dlgTitle=Kleur kiezen edit_media_renaming=Gelieve te wachten terwijl de bron hernoemd wordt... edit_act_cell_width=Breedte: edit_act_cell_width_tooltip=Cel breedte (in pixels) edit_act_cell_height=Hoogte: edit_act_cell_height_tooltip=Cel hoogte (in pixels) edit_act_hiddenWords=Verborgen woorden edit_act_hiddenWords_tooltip=Lijst met verborgen woorden in het paneel edit_act_wordSearch_panelB=Gebruik paneel B edit_act_wordSearch_panelB_tooltip=De inhoud van het tweede paneel zal getoond worden als de woorden gevonden zijn edit_act_shaper_tooltip=Kies het vormgereedschap type dat gebruikt moet worden in het paneel edit_act_num_cols_tooltip=Aantal kolommen van het paneel edit_act_num_rows_tooltip=Aantal rijen van het paneel edit_act_wildTransparent=Doorzichtige randen edit_act_wildTransparent_tooltip=Behandel de randen (zwarte rechthoeken) als doorzichtige gaten edit_act_behavior_scramble_times=Door elkaar: edit_act_behavior_scramble_times_tooltip=Aantal keren schudden edit_act_copy_title=Attributen kopi\u00EBren naar... edit_act_copy_attributes=Attributen edit_act_copy_dest=Gebruik bij: edit_act_copy_style_main=Hoofd venster edit_act_copy_style_play=Speel venster edit_act_copy_activities=Te wijzigen activiteiten: edit_act_copyAttributes=Attributen kopi\u00EBren edit_act_copyAttributes_keys=N edit_act_copyAttributes_tooltip=Huidige activiteit attributen kopi\u00EBren naar andere activiteiten edit_new_project_name=Project naam: edit_new_project_name_tooltip=Korte, beschrijvende naam van het project edit_new_project_filename=Bestandsnaam: edit_new_project_filename_tooltip=Naam van het projectbestand, zonder extensie edit_new_project_folder=Map: edit_new_project_folder_tooltip=Naam van de folder waar het project opgeslagen wordt edit_new_project_folder_browse=Bladeren... edit_new_project_title=Maak een nieuw JClic project edit_new_project_err_empty=Fout: Project, bestand en map moeten een geldige en niet lege naam hebben. edit_new_project_warning_noEmptyFolder=Deze map bevat een ander Clic 3.0 of JClic project. Om verwarring te vermijden, hou je best elk project in een aparte map. Het is echter niet absoluut nodig. Wil je dit nieuwe project echt in deze map bewaren? edit_new_project_err_folderCreation=Fout: Onmogelijk om de gespecificeerde map aan te maken. edit_act_copy_err_noSelection=Fout: Geen activiteit gekozen! Om deze functie te gebruiken, moet je in de activiteitenlijst een of meerdere activiteiten kiezen waarop de attributen zullen worden toegepast. edit_act_copy_action_prefix=Attributen kopi\u00EBren naar: edit_act_copy_margin=Marge edit_act_copy_bgColor=Achtergrondkleur edit_act_copy_gradient=Kleurovergang edit_act_copy_bgImage=Achtergrondafbeelding edit_act_copy_border=Rand edit_act_copy_transparentBg=Transparante achtergrond edit_act_copy_position=Positie edit_act_copy_messages=Berichten edit_act_copy_messages_ini=Stijl van het eerste bericht edit_act_copy_messages_end=Stijl van het laatste bericht edit_act_copy_messages_err=Stijl van de foutboodschap edit_act_copy_reports=Rapporten edit_act_copy_rep_include=Voeg deze activiteit toe aan rapporten edit_act_copy_rep_actions=Acties opnemen edit_act_copy_interface=Gebruikers interface edit_act_copy_skin=Skin edit_act_copy_evSounds=Gebeurtenis geluiden edit_act_copy_counters=Tellers edit_act_copy_cTime=Tijdsteller edit_act_copy_maxTime=Max. tijd edit_act_copy_cTries=Aantal pogingen teller edit_act_copy_maxTries=Max. pogingen edit_act_copy_cScore=Score teller edit_act_copy_scramble=Tijd tot schudden edit_act_copy_buttons=Knoppen edit_act_copy_btnHelp=Help knop edit_act_copy_btnInfo=Informatie knop edit_act_copy_grids=Rasters edit_act_copy_gridA=Stijl van raster A edit_act_copy_gridB=Stijl van raster B edit_act_copy_textGrid=Stijl van tekst rasters edit_act_copy_text=Tekst activiteiten edit_act_copy_fontFace=Lettertype edit_act_copy_fontSize=Grootte Lettertype edit_act_copy_fontStyle=Lettertypestijl edit_act_copy_textColour=Hoofd tekst kleur edit_act_copy_textTargetColour=Kies het JClic project waaruit activiteiten overgenomen worden edit_act_copy_textErrorColour=Fouten kleuren edit_act_copy_tabSpace=Tab space edit_act_copy_messages_prev=Stijl van vorig bericht edit_act_changeType=Verander activiteiten type edit_act_newActivity_class_tooltip=Volledige naam van de class die gebruikt wordt om de activiteit te bouwen(alleen gevorderde gebruikers!) edit_act_newActivity_other=Andere... edit_act_newActivity_info=Gevorderde gebruikers kunnen ook ongeregistreerde types van JClic activiteiten maken. Schrijf hieronder de volledige classnaam, voorafgegaan door de pakketnaam ( zoals "com.acme.activities.FooActivity"). Activiteit classes must extend edu.xtec.jclic.Activity, and must be accessibles to the JVM classloader. edit_act_newActivity_name=Activiteit naam edit_act_newActivity_name_tooltip=Elke activiteit moet een unieke naam hebben in het project edit_act_changeType_warning=

Waarschuwing: Het veranderen van het type van activiteit kan attributen en objecten verloren laten gaan. Voorzichtig gebruiken!

 

applet_codebase=Plaats van JClic code: applet_codebase_tooltip=URL die wijst naar map met JClic programma bestand en scripts applet_prev_text=HTML code vooraf: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Tekst of HTML code die voor het applet getoond wordt applet_post_text=HTML code nadien: applet_post_text_tooltip=Tekst of HTML code die na het applet getoond wordt applet_size=Applet grootte: applet_size_tooltip=Breedte en hoogte van het applet, in absolute of percent waarde. applet_page_title=Paginatitel: applet_page_title_tooltip=Tekst die getoond wordt bovenaan het browser venster applet_created_info=De web pagina "%s" werd met succes gemaakt. applet_created_prompt=Wil je dit nu openen met de browser? action_createHTML_caption=Maak web pagina... applet_create_title=Maak een HTML pagina met een JClic applet action_createHTML_tooltip=Maak een HTML pagina met een JClic applet van het huidige project applet_filename=Bestandsnaam: applet_filename_tooltip=Naam van het HTML bestand dat moet gemaakt worden action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Standaard waarden die gebruikt worden bij het maken van een web pagina applet_bgcolor=Achtergrondkleur: applet_bgcolor_tooltip=HTML pagina achtergrond kleur applet_centered=Gecentreerd applet_centered_tooltip=Plaats het applet horizontaal gecentreerd applet_width_tooltip=Applet breedte (absoluut of percent) applet_height_tooltip=Applet hoogte (absoluut of percent) applet_exitUrl=Bij exit, ga naar: applet_exitUrl_tooltip=URL waarheen de navigatie dient te wijzen als JClic stopt applet_infoFrame=Info frame naam: applet_infoFrame_tooltip=Naam van het frame dat gebruikt wordt om de inhoud die hoort bij de "info" knop action_createInstaller_caption=Maak project installeer bestand... action_createInstaller_keys=I* action_createInstaller_tooltip=Maak project installeer script voor JClic speler installer_caption=Bewerk project installeer script installer_title=Title: installer_title_tooltip=Project titel, die getoond wordt bij de installeer wizard installer_authors=Auteurs: installer_authors_tooltip=Auteur/s van het project (korte tekst) installer_folder=Map: installer_folder_tooltip=Map naam die gessugereeerd wordt door de installeer wizard installer_files=Te kopi\u00EBren bestanden: installer_files_tooltip=Door het installeer bestand te kopi\u00EBren bestanden installer_files_available=Beschikbare bestanden installer_files_selected=Gekozen bestanden installer_files_add=>>toevoegen>> installer_files_add_tooltip=Voog het geselecteerde bestand toe aan de lijst installer_files_remove=<Attention:

Ce projet se connecte avec d'autres projets.
Voulez-vous explorer les liens et charger tous les fichiers li\u00E9s ?

(Il est conseill\u00E9 de r\u00E9pondre OUI quand vous importez des activit\u00E9s Clic 3.0) edit_mc_type=Type: edit_mc_type_unknown=Inconnu edit_mc_type_sound=Jouer son edit_mc_type_video=Jouer vid\u00E9o edit_mc_type_midi=Jouer MIDI edit_mc_type_cdaudio=Jouer un CD audio edit_mc_type_record=Enregistrer son edit_mc_type_play_recorded=Jouer un son enregistrer edit_mc_type_run_activity=Aller \u00E0 l'activit\u00E9 edit_mc_type_run_sequence=Aller \u00E0 la s\u00E9quence edit_mc_type_run_external=Lancer le programme edit_mc_type_url=Montrer URL edit_mc_type_exit=Fin edit_mc_type_return=Retour edit_mc_level=Niveau de priorit\u00E9: edit_mc_file=Fichier: edit_mc_externalParam=Param\u00E8tres: edit_mc_from=De: edit_mc_to=A: edit_mc_length=Max. longueur: edit_mc_recBuffer=Magn\u00E9tophone: edit_mc_stretch=Stretch taille edit_mc_location=Localisation: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=De: edit_mc_location_from_box=Cellule edit_mc_location_from_window=Fen\u00EAtre edit_mc_location_from_frame=CAdre edit_mc_loop=Jouer en boucle edit_mc_autostart=D\u00E9marrage automatique edit_mc_catchmouse=Capturer souris edit_mc_title=Multimedia et contenu actif edit_mc_label=Contenu actif: edit_media_dlg_title=S\u00E9lection d'objet multimedia edit_media_title=Librairie m\u00E9dia edit_mc_pos_cell=Centr\u00E9 sur la cellule edit_mc_pos_window=Centr\u00E9 sur la fen\u00EAtre edit_mc_pos_absolute=Sp\u00E9cifier la position: edit_tree_badFormat=Structure d'arborescence ou donn\u00E9e incorrect Incorrect\\! edit_act_panels_controls=Contr\u00F4les edit_act_panels_controls_tooltip=Options pour les boutons et compteurs edit_act_class=Type: edit_act_gridLayout=Echelle de la grille: edit_act_gridLayout_tooltip=Position relative des panneaux A et B. edit_act_inverseResolution=R\u00E9solution inverse edit_act_inverseResolution_tooltip=L'activit\u00E9 est r\u00E9solue quand tous les \u00E9l\u00E9ments assign\u00E9s \u00E0 "B" sont affich\u00E9s. edit_act_showAllArrows=Montrer toutes les fl\u00E8ches edit_act_alt=Contenu alternatif: edit_act_alt_tooltip=Contenu montr\u00E9 dans les cellules r\u00E9solues et cellules non-assign\u00E9es. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Editer le contenu alternatif edit_act_grid=Grille edit_act_grid_A=Grille A edit_act_grid_B=Grille B edit_act_grid_layout=Calque edit_act_grid_relationship=Relation edit_seq_activity_header=activit\u00E9 edit_seq_tag_header=Drapeau edit_seq_jump_header=Sauter \u00E0 edit_seq_activity=Activit\u00E9: edit_seq_tag=Etiquette: edit_seq_description=Description: edit_seq_auto=D\u00E9placer automatiquement edit_seq_delay=Delai: edit_seq_action_fwd=Aller devant edit_seq_action_back=Aller derri\u00E8re edit_seq_action_jump=Sauter \u00E0... edit_seq_action_stop=Stop edit_seq_action_return=Retourner edit_seq_action_exit=Quitter JClic edit_seq_arrow_fwd=Fl\u00EAche avant: edit_seq_arrow_back=Fl^che arri\u00E8re: edit_seq_action=Action: edit_seq_button_enabled=Montrer bouton edit_seq_project=Projet JClic: edit_act_absolute=Position absolue edit_act_absolute_tooltip=L'objet sera plac\u00E9 aux coordonn\u00E9es X et Y sp\u00E9cifi\u00E9es edit_act_location=Localisation: edit_seq_newElement=nouvelle s\u00E9quence d'activit\u00E9... edit_seq_newElement_tooltip=Ins\u00E9rer un nouvel \u00E9l\u00E9ment dans la s\u00E9quence d'activit\u00E9 edit_seq_newElement_msg=S\u00E9lectionnez une activit\u00E9 pour la nouvelle s\u00E9quence. edit_seq_newElement_error_noAct=Impossible de cr\u00E9er une nouvelle s\u00E9quence d'\u00E9l\u00E9ments sans activit\u00E9\\! edit_seq_newElement_error_emptyList=Ce projet n'a pas d'activit\u00E9s\\! Impossible de cr\u00E9er une s\u00E9quence d'\u00E9l\u00E9ments dans un projet vide. edit_seq_jump_msg=Cible de saut: edit_seq_jump_title=Cible de saut edit_act_newActivity_tooltip=Ajouter une nouvelle activit\u00E9 au projet edit_act_prompt_class=Type d'activit\u00E9: edit_act_prompt_name=Nom: edit_act_newActivity_msg=S\u00E9lectionnez le type d'activit\u00E9 \u00E0 cr\u00E9er et donnez-lui un nom: edit_act_newActivity_error_noAct=Vous devez s\u00E9lectionner un type d'activit\u00E9\\! edit_act_newActivity_error_noName=Vous devez sp\u00E9cifier un nom pour l'activit\u00E9\\! edit_act_newActivity_error_creating=Impossible de cr\u00E9er l'activit\u00E9\\! edit_act_newActivity_class=Nom de classe Java class: edit_text_act_format=Format edit_text_act_answer=R\u00E9ponse edit_text_act_popup=Pop up edit_text_act_answer_label=R\u00E9ponses valides: edit_list_newElement_tooltip=Ajouter une nouvelle liste d'\u00E9l\u00E9ment edit_list_editElement_tooltip=Editer la liste d'\u00E9l\u00E9ments s\u00E9lectionn\u00E9e edit_list_deleteElement_tooltip=Supprimer la liste d'\u00E9l\u00E9ments s\u00E9lectionn\u00E9e edit_list_upBtn_tooltip=D\u00E9placer vers le haut edit_list_downBtn_tooltip=D\u00E9placer vers le bas edit_list_newValue=Nouveau texte: edit_list_addElement=Ajouter une nouvelle liste d'\u00E9l\u00E9ment edit_list_modifyValue=Modifier le texte s\u00E9lectionn\u00E9 edit_text_act_target=Cible edit_text_act_maxLen=Max. longueur: edit_text_act_maxLen_tooltip=Nombre maximum de caract\u00E8res dans la r\u00E9ponse. edit_text_act_fillingChar=Caract\u00E8re de remplissage edit_text_act_fillingChar_tooltip=Caract\u00E8re utilis\u00E9 pour indiquer les blancs edit_text_act_iniLen=Longueur initiale: edit_text_act_iniLen_tooltip=Nombre de carct\u00E8res de remplissage qui seront affich\u00E9s au d\u00E9marrage de l'activit\u00E9. edit_text_act_iniText=Texte initiale: edit_text_act_iniText_tooltip=Texte affich\u00E9 dans le blanc au d\u00E9marrage de l'activit\u00E9. edit_text_act_list=Montrer une liste des options: edit_text_act_list_tooltip=Afficher une liste d'options dans laquelle l'utilisateur doit en choisir une. edit_text_act_check_title=Options de correction edit_text_act_popup_no=Pas de pop up edit_text_act_popup_always=Pop up automatique edit_text_act_popup_onError=Pop up si erreurs edit_text_act_popup_onDemand=Pop up avec F1 edit_text_act_popup_type=Type: edit_text_act_popup_delay=Pop up delai: edit_text_act_popup_maxTime=Max. temps: edit_text_act_popup_onlyPlay=Son seulement edit_text_act_err_noSelection=Vous devez s\u00E9lectionner un fragment de texte pour cr\u00E9er un nouveau texte cible\\! edit_text_act_err_badCharInSelection=Le texte cible ne peut pas inclure de retour chariot ni de tabulation. edit_text_act_err_nestedTargets=Cibles ne peuvent \u00EAtre atteintes\\! edit_text_act_err_cellInTarget=Les cibles ne peuvent contenir de cellules\\! edit_text_act_pageBgColor=Couleur de papier: edit_text_act_editStylesBtn=Editer les styles de document... edit_text_act_mainStyle=Style principal: edit_text_act_tabSpc=Tabulation: edit_text_act_tabSize=Espaces entre deux tabulation: edit_text_act_colors=Coleurs: edit_text_act_targetStyle=Couleur des cibles: edit_text_act_errorStyle=Couleur des erreurs: edit_text_act_preview=Pr\u00E9visualisation: edit_text_act_styleSample_default_start=Texte standard edit_text_act_styleSample_target=cible edit_text_act_styleSample_error=erreur edit_text_act_styleSample_default_fill=texte standard edit_text_act_styleSample_default_end=texte standard. edit_text_act_warnDeleteTarget=Warning: Cette action supprimera la cible courante s\u00E9lectionn\u00E9e. Voulez-vous continuer ? edit_text_act_prevScreen_title=Ecran pr\u00E9c\u00E9dent... edit_text_act_prevScreen_no=Ne pas afficher de texte avant de d\u00E9marrer l'activit\u00E9 edit_text_act_prevScreen_original=Afficher le texte complet de l'exercice edit_text_act_prevScreen_special=Afficher ce texte: edit_text_act_prevScreen_time=Max. temps: edit_text_act_edit_target=Cible... edit_text_act_checkButton_show=Montrer le bouton de correction edit_text_act_checkButtonText=Bouton texte: edit_text_act_checkCase=Case r\u00E9pondue edit_text_act_checkAccents=Prendre en compte les accents et caract\u00E8res sp\u00E9ciaux edit_text_act_checkPunct=Prendre en compte les marques de ponctuation edit_text_act_checkDoubleSpc=Autoriser les espaces r\u00E9p\u00E9t\u00E9s edit_text_act_checkOptions=Crit\u00E8re edit_text_act_checkAutoJump=D\u00E9placer vers nouvelle cible quand c'est rempli edit_text_act_checkForceOk=D\u00E9placer seulement apr\u00E8s correcte autorisation edit_text_act_checkDetail=Indiquer les erreurs lettre par lettre edit_text_act_checkDetail_params=Param\u00E8tres de l'algorithme d'analyse: edit_text_act_checkDetail_steps=Etapes: edit_text_act_checkDetail_field=Champ d'exploration: edit_text_act_defaultCheckButtonText=V\u00E9rifier edit_text_act_advancedCorrectionOptions=Analyse de la r\u00E9ponse edit_text_act_check_bt=Correction... edit_text_act_checkButton=Bouton de correction edit_text_act_checkProgress=Progression edit_text_act_typeBtn=Type... edit_text_act_orderParagraphs=Paragraphes ordonn\u00E9s edit_text_act_orderWords=Ranger les mots edit_text_act_order_amongstPar=Shuffle words amongst paragraphs edit_text_act_type_title=Type d'activit\u00E9 edit_text_act_warnChangeType=Cette action effacera toutes les cibles existantes. Voulez-vous continuer ? edit_text_act_identWords=Identifier les mots edit_text_act_identChars=Identifier les caract\u00E8res edit_media_change_name=Changer nom... edit_media_change_file=Changee fichier... edit_media_includeInZip=Enregistrer dans un fichier ZIP edit_media_type=Type de m\u00E9dia: edit_media_size=Taille de fichier: edit_media_show_type=Fichiers de type: edit_media_preview=Pr\u00E9visualiser m\u00E9dia edit_media_preview_tooltip=Ressource m\u00E9dia pr\u00E9c\u00E9dente edit_media_rename=Changer nom de ressource edit_media_rename_title=Renommer edit_media_rename_prompt=Nouveau nom: edit_media_rename_invalid=Mauvais nom de ressource\\! edit_media_rename_exists=Il y a une autre ressource avec ce nom\\! Chaque ressource doit avoir un nom unique. edit_media_chfile_invalid=Mauvais fichier\\! err_media_chfile_different=Le fichier doit \u00EAtre de m\u00EAme type edit_media_font_error=Impossible de charger la police\\! edit_media_save_file=Enregistrer fichier (extraire depuis ZIP) edit_media_refresh_file=Mettre \u00E0 jour le contenu media depuis un fichier edit_media_warn_zipFileNotExternal=Ce n'est pas un fichier "real", mais un objet localis\u00E9 dans un container ZIP. Pour utiliser ce produit, un fichier avec le m\u00EAme nom doit \u00EAtre pr\u00E9sent dans le dossier o\u00F9 le fichier ZIP est localis\u00E9. edit_activities=Activit\u00E9s edit_sequences=S\u00E9quences edit_media=Librairie m\u00E9dia edit_media_tooltip=G\u00E8re les images et autres fichiers m\u00E9dia utilis\u00E9s dans le projet. edit_activities_tooltip=Cr\u00E9er et \u00E9diter les activit\u00E9s du projet. edit_sequences_tooltip=Cr\u00E9er et \u00E9diter les s\u00E9quences d'activit\u00E9s edit_project_title=Titre: edit_project_title_tooltip=Titre du projet edit_project=Projet edit_project_tooltip=Editer les propri\u00E9t\u00E9s du projet edit_project_description=Description: edit_project_description_tooltip=Description g\u00E9n\u00E9rale du projet edit_project_area=Domaines: edit_project_area_tooltip=Domaine d'application du projet edit_project_level=Niveaux: edit_project_level_tooltip=Niveaux p\u00E9dagogique du projet edit_project_descriptors=Descripteurs: edit_project_descriptors_tooltip=Descripteurs du projet (S\u00E9par\u00E9 pau une virgule) edit_project_languages=Langages: edit_project_languages_tooltip=Langages utilis\u00E9s dans le projet projet edit_project_languages_modify=Changer le langage s\u00E9lectionn\u00E9 edit_project_languages_add=Ajouter langage edit_project_languages_select=ISO-639 langage codes: edit_project_authors=Auteurs: edit_project_authors_tooltip=Personnes intervenant dans la cr\u00E9ation du projet edit_project_author_name=Nom: edit_project_author_mail=e-mail: edit_project_author_rol=R\u00F4le: edit_project_author_organization=Organization: edit_project_author_comments=Commentaires: edit_project_author_url=URL: edit_project_author_name_tooltip=Nom de l'auteur (requis) edit_project_author_mail_tooltip=E-mail auteur (optionnel) edit_project_author_rol_tooltip=R\u00F4le de la personne dans le projet: auteur, collaborateur, dessinateurs, sons... (optionnel) edit_project_author_organization_tooltip=Ecole, universit\u00E9, association... (optionnel) edit_project_author_url_tooltip=Page web personnelle (optionnel) edit_project_author_comments_tooltip=Champ pour d'autres informations(optionnel) edit_project_author_info=Info auteur: edit_project_author_add=Ajouter auteur \u00E0 la liste edit_project_author_edit=Editer info auteur edit_project_org_name=Nom: edit_project_org_name_tooltip=Nom de l'\u00E9cole edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=Adresse e-mail de l'\u00E9cole edit_project_org_url=URL: edit_project_org_url_tooltip=Site Web de l'\u00E9cole edit_project_org_address=Addresse: edit_project_org_address_tooltip=Snail-mail addresse edit_project_org_pc=PC: edit_project_org_pc_tooltip=Code postal edit_project_org_city=Ville: edit_project_org_city_tooltip=Ville de l'\u00E9cole edit_project_org_country=D\u00E9partement: edit_project_org_state=Etat: edit_project_org_comments=Commentaires: edit_project_org=Ecole/s: edit_project_org_tooltip=Ecole ou autre institution intervenant dans le projet edit_project_org_info=Organisation info: edit_project_org_add=Ajouter organisation edit_project_org_edit=Editer donn\u00E9e organisation edit_project_org_country_tooltip=R\u00E9gion, f\u00E9d\u00E9ration, union... edit_project_org_state_tooltip=Etat, communaut\u00E9, r\u00E9gion... edit_project_org_comments_tooltip=Autre info... edit_project_rev_date=Date: edit_project_rev_date_tooltip=Date de r\u00E9vision edit_project_rev_authors=Auteurs: edit_project_rev_authors_tooltip=Auteurs de la r\u00E9vision edit_project_rev_description=Description: edit_project_rev_description_tooltip=Br\u00E8ve description des changements effectu\u00E9s edit_project_rev_comments=Commentaires: edit_project_rev_comments_tooltip=Autres infos edit_project_rev=R\u00E9visions: edit_project_rev_tooltip=Historique des principales modifications du projet edit_project_rev_add=Ajouter un enregistrement r\u00E9vision edit_project_rev_edit=Editer un enregistrement r\u00E9vision edit_project_rev_info=Donn\u00E9e de r\u00E9vision edit_media_objects=objets edit_media_object=objet edit_evsounds_start=D\u00E9marrer l'activit\u00E9: edit_evsounds_click=Cliquer sur l'objet: edit_evsounds_actionError=Action erron\u00E9e: edit_evsounds_actionOk=Action correcte: edit_evsounds_finishedError=Activit\u00E9 termin\u00E9e avec erreurs: edit_evsounds_finishedOk=Activit\u00E9 termin\u00E9e OK: edit_project_rev_err_nodesc=Erreur: Le champ descriptif ne peut \u00EAtre laiss\u00E9 blanc\\! edit_evsounds_dlg_title=Editer l'\u00E9v\u00E8nement son edit_project_evsounds=Ev\u00E8nement sons: edit_project_evsounds_tooltip=D\u00E9finir dessons sp\u00E9cifiques pour chaque \u00E9v\u00E8nement JClic edit_act_evsounds=Ev\u00E8nement sons: edit_act_evsounds_tooltip=D\u00E9finir des sons sp\u00E9cifiques pour chaque \u00E9v\u00E8nement JClic edit_evsounds_default=Son par d\u00E9faut edit_evsounds_disabled=d\u00E9sactiv\u00E9 edit_evsounds_chk_tooltip=Activer ou d\u00E9sactiver le son pour cet \u00E9v\u00E8nement edit_evsounds_select_tooltip=Cliquez pour s\u00E9lectionner un son pour cet \u00E9v\u00E8nement, ou d\u00E9s\u00E9lectionnez pour utiliser le son pare d\u00E9faut action_newProject_caption=Nouveau projet... action_newProject_keys=NN action_newProject_tooltip=Cr\u00E9er un nouveau projet JClic edit_arith_op_from=De: edit_arith_op_from_tooltip=Valeur minimale de l'op\u00E9rateur edit_arith_op_to=To: edit_arith_op_to_tooltip=Valeur maximale de l'op\u00E9rateur edit_arith_op_with=Avec: edit_arith_op_with_tooltip=Si s\u00E9lectionn\u00E9, l'op\u00E9rateur peut aussi avoir cette valeur edit_arith_op_fromList=Un de cette liste: edit_arith_op_fromList_tooltip=Liste de valeurs possibles pour l'op\u00E9rateur edit_arith_op_decimals=D\u00E9cimales: edit_arith_op_decimals_tooltip=Nombre de d\u00E9cimales de l'op\u00E9rande edit_arith_op_dec0=\\# (integer) edit_arith_op_dec1=\\#.\\# edit_arith_op_dec2=\\#.\\#\\# edit_arith_firstOp=Premier op\u00E9rande edit_arith_secondOp=Second op\u00E9rande edit_arith_title=Arith2 pour JClic edit_arith_operations=Op\u00E9rations: edit_arith_operations_tooltip=S\u00E9lectionner le type d'op\u00E9rations \u00E0 r\u00E9aliser edit_arith_operations_plus=Addition edit_arith_operations_minus=Soustraction edit_arith_operations_multiply=Multiplication edit_arith_operations_divide=Division edit_arith_unknown=Inconnu: edit_arith_unknown_tooltip=S\u00E9lectionner l'item qui sera consid\u00E9r\u00E9 comme l'inconnue edit_arith_unknown_aobx=Le r\u00E9sultat est l'inconnue edit_arith_unknown_aoxr=Le second op\u00E9rateur est l'inconnue edit_arith_unknown_xobr=Le premier op\u00E9rateur est l'inconnue edit_arith_unknown_axbr=L'op\u00E9ration est l'inconnue edit_arith_unknown_invert=Ecrire le r\u00E9sultat au d\u00E9but de l'expression edit_arith_result=R\u00E9sultat: edit_arith_result_notCarry=Pas de retenue edit_arith_result_random=Al\u00E9atoire edit_arith_result_asc=Croissant edit_arith_result_order=Ranger par r\u00E9sultat: edit_arith_result_desc=D\u00E9croissant edit_arith_result_avoidDup=Autoriser les doublons edit_arith_cond=Conditions: edit_arith_cond_ind=Indiff\u00E9rent edit_arith_cond_agb=Le premier op\u00E9rateur doit \u00EAtre plus grand que le second edit_arith_cond_alb=Le premier op\u00E9rateur doit \u00EAtre plus petit que le second edit_arith_cond_tooltip=Autres conditions edit_autocp=G\u00E9n\u00E9rateur de contenu automatique: edit_autocp_tooltip=S\u00E9lectionner le type de contenu automatique pour cette activit\u00E9. edit_autocp_block=G\u00E9n\u00E9rateur de contenu edit_autocp_btn=Param\u00E8tres... edit_autocp_btn_tooltip=Configurer les param\u00E8tres du fournisseur de contenu edit_data=Editer donn\u00E9e edit_act=Editer activit\u00E9 edit_acp=Editer le fournisseur de contenu edit_acp_err_creating=Erreur \u00E0 la cr\u00E9ation du fournisseur de contenu\\! edit_project_author_group=Cr\u00E9ation edit_project_description_block=Description edit_project_ui_block=Interface utilisateur edit_act_description=Description: m_Edit=Editer m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=Nouvelle activit\u00E9... edit_act_newActivity_keys=A* edit_act_testAction_keys=P\\#10 edit_seq_newElement_keys=S* m_Insert=Ins\u00E9rer m_Insert_Mnemonic=I m_View=Vue m_View_Mnemonic=V action_editProject_caption=Projet action_editProject_keys=PP action_editProject_tooltip=Editer les param\u00E8tres de projet action_editMedia_caption=M\u00E9dia action_editMedia_keys=MM action_editMedia_tooltip=Editer la librairie M\u00E9dia du projet action_editActivities_caption=Activit\u00E9s action_editActivities_keys=AA action_editActivities_tooltip=Editer les activit\u00E9s action_editSeq_caption=S\u00E9quences action_editSeq_keys=SS action_editSeq_tooltip=Editer les s\u00E9quences d'activit\u00E9s warn_project_modified=Le projet courant a \u00E9t\u00E9 modifi\u00E9. Voulez-vous enregistrer les changements ? edit_project_descriptors_block=Descripteurs edit_media_new=Nouvel objet m\u00E9dia... edit_media_new_tooltip=Ajouter une nouvelle image ou objet multim\u00E9dia \u00E0 la librairie edit_media_new_keys=M* edit_seq_threshold=Score: edit_seq_threshold_tooltip_up=Prendre ce chemin quand le score global est \u00E9gal ou sup\u00E9rieur \u00E0... edit_seq_time=Temps impos\u00E9: edit_seq_time_tooltip_up=Pour emprunter ce chemin, le temps pass\u00E9 sur les activit\u00E9s doit \u00EAtre inf\u00E9rieur \u00E0... edit_seq_threshold_tooltip_down=Prendre ce chemin quand le score global est inf\u00E9rieur \u00E0... edit_seq_time_tooltip_down=Prendre ce chemin quand le temps pass\u00E9 sur les activit\u00E9s est sup\u00E9rieur \u00E0... edit_seq_condJump=Sauts conditionnels edit_seq_condJump_tooltip=D\u00E9finir des sauts sp\u00E9cifiques \u00E0 n'ex\u00E9cuter que sous certaines conditions edit_seq_condJump_upper_tooltip=D\u00E9finir les conditions de saut vers le niveau sup\u00E9rieur edit_seq_condJump_lower=Saut inf\u00E9rieur: edit_seq_condJump_upper=Saut sup\u00E9rieur: edit_seq_condJump_lower_tooltip=D\u00E9finir les conditions de saut vers un niveau inf\u00E9rieur edit_seq_action_tooltip_fw=Action assign\u00E9e au bouton "suivant" edit_seq_action_tooltip_bk=Action assign\u00E9e au bouton "pr\u00E9c\u00E9dent" edit_seq_jump_tooltip=D\u00E9finir la cible de saut edit_seq_action_tooltip=Action \u00E0 r\u00E9aliser edit_seq_activity_tooltip=Activit\u00E9 assign\u00E9e \u00E0 cet \u00E9l\u00E9ment de s\u00E9quence edit_seq_tag_tooltip=Drapeau utilis\u00E9 pour r\u00E9f\u00E9rencer cet \u00E9l\u00E9ment de s\u00E9quence (champ optionnel) edit_seq_description_tooltip=Description de l'\u00E9l\u00E9ment de s\u00E9quence (champ optionnel) edit_seq_button_enabled_tooltip=Activer ou d\u00E9sactiver le bouton fl\u00EAche edit_seq_auto_tooltip=Se d\u00E9placer automatiquement quand l'activit\u00E9 est termin\u00E9e edit_seq_delay_tooltip=Secondes \u00E0 attendre avant le d\u00E9placement automatique edit_color_dlgTitle=S\u00E9lectionner couleur edit_media_renaming=Attendez la ressource va \u00EAtre renomm\u00E9e... edit_act_cell_width=Largeur: edit_act_cell_width_tooltip=Largeur de cellule (en pixels) edit_act_cell_height=Hauteur: edit_act_cell_height_tooltip=Hauteur de cellules (en pixels) edit_act_hiddenWords=Mots cach\u00E9s: edit_act_hiddenWords_tooltip=Liste de mots cach\u00E9s plac\u00E9s dans le cadre edit_act_wordSearch_panelB=Utiliser le cadre B edit_act_wordSearch_panelB_tooltip=Les contenus du second cadre seront affich\u00E9s au fur et \u00E0 mesure que les mots seront trouv\u00E9s edit_act_shaper_tooltip=S\u00E9lectionner le type de forme utiliser dans le cadre edit_act_num_cols_tooltip=Nombre de colonnes du cadre edit_act_num_rows_tooltip=Nombre de lignes du cadre edit_act_wildTransparent=D\u00E9limiteurs transparents edit_act_wildTransparent_tooltip=Traiter les d\u00E9limiteurs comme des trous transparents (boites noires) edit_act_behavior_scramble_times=Battages: edit_act_behavior_scramble_times_tooltip=Nombre de temps de battage edit_act_copy_title=Copier les attributs vers... edit_act_copy_attributes=Attributs edit_act_copy_dest=Appliquer \u00E0: edit_act_copy_style_main=Fen\u00EAtre principale edit_act_copy_style_play=Fen\u00EAtre de travail edit_act_copy_activities=Activit\u00E9s \u00E0 modifier: edit_act_copyAttributes=Copier les attributs edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copier les attributs de l'activit\u00E9 courante vers d'autres activit\u00E9s edit_new_project_name=Nom du projet: edit_new_project_name_tooltip=Nom court, descriptif du projet edit_new_project_filename=Nom du fichier: edit_new_project_filename_tooltip=Nom du fichier projet, sans extension edit_new_project_folder=Dossier: edit_new_project_folder_tooltip=Nom du dossier o\u00F9 le dossier est stock\u00E9 edit_new_project_folder_browse=Explorer... edit_new_project_title=Cr\u00E9er un nouveau projet JClic edit_new_project_err_empty=Erreur: Projet, fichier et dossier doivent avoir des noms valides. edit_new_project_warning_noEmptyFolder=Ce dossier contient d\u00E9j\u00E0 un autre projet Clic 3.0 ou JClic. Pour \u00E9viter toute confusion, il est pr\u00E9f\u00E9rable de maintenir chaque projet dans un dossier diff\u00E9rent, c'est une r\u00E8gle stricte. Voulez-vous r\u00E9ellement cr\u00E9er un nouveau projet dans ce dossier ? edit_new_project_err_folderCreation=Error: Impossible de cr\u00E9er le dossier sp\u00E9cifi\u00E9\\! edit_act_copy_err_noSelection=Error: Pas d'activit\u00E9 s\u00E9lectionn\u00E9e\\! Pour utiliser cette fonction vous devez s\u00E9lectionner dans la liste l'activit\u00E9 oules activit\u00E9s pour lesquels les attributs sp\u00E9cifi\u00E9s seront appliqu\u00E9s. edit_act_copy_action_prefix=Copier les attributs vers: edit_act_copy_margin=Marges edit_act_copy_bgColor=Couleur d'arri\u00E8re-plan edit_act_copy_gradient=D\u00E9grad\u00E9 edit_act_copy_bgImage=Image d'arri\u00E8re-plan edit_act_copy_border=Bordure edit_act_copy_transparentBg=Arri\u00E8re-plan transparent edit_act_copy_position=Position edit_act_copy_messages=Messages edit_act_copy_messages_ini=Style du message initial edit_act_copy_messages_end=Style de message terminal edit_act_copy_messages_err=Style de message d'erreur edit_act_copy_reports=Rapports edit_act_copy_rep_include=Inclure l'activit\u00E9 dans les rapports edit_act_copy_rep_actions=Enregistrer les actions edit_act_copy_interface=Interface utilisateur edit_act_copy_skin=Habillage edit_act_copy_evSounds=Sons \u00E9v\u00E8nement edit_act_copy_counters=Compteurs edit_act_copy_cTime=Chronom\u00E8tre edit_act_copy_maxTime=Max. temps edit_act_copy_cTries=Compteur d'essais edit_act_copy_maxTries=Max. essais edit_act_copy_cScore=Score edit_act_copy_scramble=Temps de m\u00E9lange edit_act_copy_buttons=Boutons edit_act_copy_btnHelp=Bouton d'aide edit_act_copy_btnInfo=Bouton d'information edit_act_copy_grids=Grilles edit_act_copy_gridA=Style de grille A edit_act_copy_gridB=Style de grille B edit_act_copy_textGrid=Style de grille de textes edit_act_copy_text=Activit\u00E9s texte edit_act_copy_fontFace=Type de police edit_act_copy_fontSize=Police edit_act_copy_fontStyle=Style de police edit_act_copy_textColour=Couleur de texte principal edit_act_copy_textTargetColour=Couleur des cibles edit_act_copy_textErrorColour=Couleur d'erreurs edit_act_copy_tabSpace=Tabulation edit_act_copy_messages_prev=Style de message pr\u00E9c\u00E9dent edit_act_changeType=Changer type d'activit\u00E9 edit_act_newActivity_class_tooltip=Le nom complet de la classe doit \u00EAtre utilis\u00E9 pour b\u00E2tir l'activit\u00E9 (utiliateurs avanc\u00E9s seulement\\!) edit_act_newActivity_other=Autre... edit_act_newActivity_info=Les utilisateurs avanc\u00E9s peuvent aussi cr\u00E9er des types non-enregistr\u00E9s d'activit\u00E9s JClic. Ecrivez juste le nom complet de la classe derri\u00E8re, pr\u00E9fix\u00E9 par le package (comme "com.acme.activities.FooActivity"). Les classes d'activit\u00E9s doivent \u00EAtre \u00E9tendues edu.xtec.jclic.Activity, et doivent \u00EAtre accessibles par le JVM chargeur de classe. edit_act_newActivity_name=Nom de l'activit\u00E9: edit_act_newActivity_name_tooltip=Chaque activit\u00E9 doit avoir un nom unique dans le projet edit_act_changeType_warning=

Attention: Changer le type de l'activit\u00E9 peut causer la perte de quelques objets et attributs. A utiliser avec pr\u00E9caution\\!

 

applet_codebase=Localisation du code Jclic: applet_codebase_tooltip=L'URL pointe vers un dossier contenant les fichiers JClic et les scripts applet_prev_text=HTML code avant: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Texte ou code HTML \u00E0 placer avant l'applet applet_post_text=Code HTML apr\u00E8s: applet_post_text_tooltip=Texte ou code HTML \u00E0 placer apr\u00E8s l'applet applet_size=Taille de l'applet: applet_size_tooltip=Largeur et hauteur de l'applet, en absolu ou en pourcentage. applet_page_title=Titre de page: applet_page_title_tooltip=Texte \u00E0 montrer en haut de la fen\u00EAtre de l'explorer applet_created_info=La page Web "%s" a \u00E9t\u00E9 cr\u00E9\u00E9e avec succ\u00E8s. applet_created_prompt=Voulez-vous l'ouvrir maintenant avec l'explorer ? action_createHTML_caption=Cr\u00E9er une page Web... applet_create_title=Cr\u00E9er une page HTML avec l'applet JClic action_createHTML_tooltip=Cr\u00E9er une page HTML page avec un applet contenant le projet courant applet_filename=Nom du fichier: applet_filename_tooltip=Nom du fichier HTML \u00E0 cr\u00E9er action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valeurs par d\u00E9faut utilis\u00E9es par d\u00E9faut pour la cr\u00E9ation de pages Web applet_bgcolor=Couleur d'arri\u00E8re-plan: applet_bgcolor_tooltip=Couleur d'arri\u00E8re-plan de la page HTML applet_centered=Centr\u00E9 applet_centered_tooltip=Placer l'applet centr\u00E9 horizontalement applet_width_tooltip=Largeur de l'applet (absolu ou pourcentage) applet_height_tooltip=Hauteur de l'applet (absolu ou pourcentage) applet_exitUrl=En quittant, allez \u00E0: applet_exitUrl_tooltip=URL o\u00F9 rediriger la navigation en quittant JClic applet_infoFrame=Nom du cadre info: applet_infoFrame_tooltip=Nom du cadre utilis\u00E9 pour montrer le contenu relatif au bouton "info" action_createInstaller_caption=Cr\u00E9er un installateur de projet... action_createInstaller_keys=I* action_createInstaller_tooltip=Cr\u00E9er un script d'installation de projet pour le player JClic installer_caption=Editer le script d'installation du projet installer_title=Titre: installer_title_tooltip=Titre du projet, \u00E0 montrer dans l'installateur installer_authors=Auteurs: installer_authors_tooltip=Auteurs/s du projet (petit texte) installer_folder=Dossier: installer_folder_tooltip=Nom du dossier \u00E0 sugg\u00E9rer par l'installateur installer_files=Fichiers \u00E0 copier: installer_files_tooltip=Fichiers \u00E0 copier par l'installateur installer_files_available=Fichiers valables installer_files_selected=Fichiers s\u00E9lectionn\u00E9s installer_files_add=>> ajouter >> installer_files_add_tooltip=Ajouter le fichier s\u00E9lectionn\u00E9 \u00E0 la liste installer_files_remove=<< retirer << installer_files_remove_tooltip=Retirer le fichier s\u00E9lectionn\u00E9 de la liste installer_button=Bouton de lancement installer_button_tooltip=Propri\u00E9t\u00E9s du bouton \u00E0 montrer dans la librairie du projet installer_button_project=Projet principal: installer_button_project_tooltip=Projet JClic \u00E0 lancer avec le bouton installer_button_text=Etiquette: installer_button_text_tooltip=Petite \u00E9tiquette \u00E0 afficher dans le bouton installer_button_icon=Ic\u00F4ne: installer_button_icon_tooltip=Image \u00E0 utiliser comme ic\u00F4ne de bouton. Laissez blanc pour utiliser l'ic\u00F4ne JClic par d\u00E9faut. installer_button_description=Description installer_button_description_tooltip=Tooltip \u00E0 montrer avec le bouton installer_error_noTitle=Error: Titre du projet absent installer_error_noBaseFolder=Error: Nom du dossier absent installer_error_noFilesSelected=Error: Pas de fichiers s\u00E9lectionn\u00E9s installer_error_noButtonText=Error: Texte du bouton de lancement absent installer_error_projectNotInFiles=Error: le projet assign\u00E9 au bouton de lancement n'est pas dans la liste de fichiers \u00E0 copier applet_page_full=Applet plein-page applet_page_mixed=Applet avec des dimensions sp\u00E9cifiques edit_text_align_left=Aligner le texte \u00E0 gauche edit_text_align_center=Centrer le texte edit_text_align_right=Aligner le texte \u00E0 droite edit_text_act_target_toggle=Cr\u00E9er ou retirer une cible edit_text_act_insertCell=Ins\u00E9rer une cellule edit_text_act_content=Contenu edit_text_act_style=Style edit_cell_size=Taille de cellule: edit_project_orphanActivities=Les activit\u00E9s suivantes n'apparaissent dans aucune s\u00E9quence d'activit\u00E9s du projet, aussi elles ne sont jamais affich\u00E9es: edit_project_orphanMedia=Les objets m\u00E9dia suivants ne sont directement utilis\u00E9s dans aucune activit\u00E9: edit_project_orphanActivities_prompt=Voulez-vous les ajouter \u00E0 la fin de la s\u00E9quence d'activit\u00E9s ? edit_project_orphanMedia_prompt=Voulez-vous les retirer ? edit_project_orphanMedia_title=Retrait des objets m\u00E9dia inutilis\u00E9s edit_project_orphanActivities_title=Orphan activit\u00E9s edit_media_refreshAll=Mettre \u00E0 jour tous les contenus m\u00E9dia edit_media_refreshAll_tooltip=Mettre \u00E0 jour tous les objets m\u00E9dia en rechargeant les fichiers edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Mettre \u00E0 jour le m\u00E9dia... edit_media_exportAll=Exporter tous les m\u00E9dias edit_media_exportAll_tooltip=Enregistrer vers fichiers le contenu de tous les \u00E9l\u00E9ments m\u00E9dia edit_media_exportAll_keys=X* edit_shape_select=S\u00E9lectionner edit_shape_addPoint=Ajouter point edit_shape_deletePoint=supprimer edit_shape_drawRect=Dessiner rectangle edit_shape_drawEllipse=Dessiner ellipse edit_shape_drawPoly=Dessiner polygone edit_shape_toLine=Convertir en ligne edit_shape_toBezier=Convertir en courbe de b\u00E9zier edit_shape_toQuad=Convertir en courbe quadratique edit_shape_rLeft=Rotation \u00E0 gauche edit_shape_rRight=Rotation \u00E0 droite edit_shape_expand=Etendre edit_shape_contract=Contracter edit_shape_zoomIn=Zoom in edit_shape_zoomOut=Zoom out edit_shape_aproxPoints=Joindre les points proches edit_shape_showPoints=Montrer les points edit_shape_showPoints_tooltip=Montrer/Cacher les points edit_shape_gridSize=Taille de la grille: edit_shape_hideGrid=Montrer / cacher la grile edit_shape_magnetRadius=Magn\u00E9tisme radiant: edit_shape_elements=El\u00E9ments d\u00E9finis edit_shape_elemName=nom de l'\u00E9l\u00E9ment s\u00E9lectionn\u00E9 edit_shape_magnetRadius_tooltip=Action du magn\u00E9tisme, quand activ\u00E9 edit_shape_gridSize_tooltip=Taille de la grille edit_mc_activity=Activit\u00E9: edit_mc_sequence=S\u00E9quence: edit_mc_url=URL: edit_mc_project=Projet: edit_mc_activity_selection=Choisir activit\u00E9 edit_mc_sequence_selection=Choisir s\u00E9quence edit_mc_err_nullContent=Donn\u00E9e insuffisante\\! edit_act_arrowColor=Couleur de fl\u00E8che: edit_act_arrowColor_tooltip=Couleur utilis\u00E9e par l'\u00E9diteur pour dessiner les fl\u00E8ches (pas exactement, car un masque XOR est utilis\u00E9) edit_act_editActivity=Editer... edit_act_editActivity_tooltip=Editer l'activit\u00E9 s\u00E9lectionn\u00E9e action_saveFileAs_caption=Enregistrer sous... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Enregistrer le projet courant avec un nom diff\u00E9rent edit_act_behavior_block=Comportement edit_act_behavior=Comportement edit_act_behavior_drag=Tra\u00EEner edit_act_behavior_drag_tooltip=Drag cells instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=M\u00E9langer action_importActivities_caption=Importer des activit\u00E9s... action_importActivities_keys=I* action_importActivities_tooltip=Importer des activit\u00E9s d'un autre projet import_warn_samefile=Le fichier choisi correspond au projet en cours. Des activit\u00E9s peuvent \u00EAtre import\u00E9es seulement entre diff\u00E9rents projets. Veuillez choisir un autre fichier. import_selectActivities=Choisissez une ou plusieurs activit\u00E9s pour importer dans le projet en cours: import_importing=Importation... import_checkdep=V\u00E9rification des d\u00E9pendances... import_impmedia=Importation des m\u00E9dias: import_impact=Importation de l'activit\u00E9: import_selectProject=Choisissez le projet de JClic dont les activit\u00E9s seront import\u00E9es edit_tagRep_tags=Signes utilis\u00E9s pour les balises edit_tagRep_tagStart=Signe de d\u00E9part: edit_tagRep_tagStart_tooltip=Signe utilis\u00E9 pour ouvrir les balises edit_tagRep_tagEnd=Signe de fin: edit_tagRep_tagEnd_tooltip=Signe utilis\u00E9 pour fermer les balises edit_tagRep_file=Fichier edit_tagRep_fileName=Fichier ou URL: edit_tagRep_fileName_tooltip=Nom ou URL du fichier qui contient les valeurs qui remplaceront les balises edit_tagRep_charset=Encodage des caract\u00E8res: edit_tagRep_charset_tooltip=Encodage de caract\u00E8res utilis\u00E9 dans le fichier edit_tagRep_browseFile=Parcourir\u2026 edit_tagRep_browseFile_tooltip=Parcourir le syst\u00E8me de fichier edit_tagRep_title=Remplacement de balises edit_text_act_clearStylesBtn=Effacer les styles du texte... edit_text_act_clearStylesPrompt=Attention: Cette op\u00E9ration effacera les attributs de caract\u00E8res personnalis\u00E9s de tout le document et y restaurera le style principal. Vous ne pourrez pas revenir sur cette action. Souhaitez-vous la confirmer ? img_max_size=Taille maximale des images : img_max_width_tooltip=Largeur maximale des images import\u00E9es dans la biblioth\u00E8que de m\u00E9dias. img_max_height_tooltip=Hauteur maximale des images import\u00E9es dans la biblioth\u00E8que de m\u00E9dias. img_resize_prompt=L'image "%s" a une taille de %s pixels. Cette taille d\u00E9passe ce qui est permis par JClic Author (%s). Voulez-vous la redimensionner ? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_ast.properties0000644000175000017500000013006511377161311026172 0ustar #JClic Author messages edit_act_description_block=Descripci\u00F3n edit_act_name_tooltip=Nome de la xera edit_act_name=Nome: edit_act_description_tooltip=Descripci\u00F3n de la xera edit_act_reports_block=Informes edit_act_includeInReports=Incluyir esta xera nos informes edit_act_includeInReports_tooltip=Incluyir los resultaos d'esta xera nos informes d'usuariu edit_act_code=C\u00F3digu: edit_act_code_tooltip=C\u00F3digu opcional utiliz\u00E1u p'agrupar y pe\u00F1erar na base de datos d'informes. edit_act_reportActions=Rexistrar tami\u00E9n les aiciones edit_act_reportActions_tooltip=Rexistrar los detalles de toles aiciones feches polos usuarios. edit_act_counters_block=Cuntadores edit_act_timeCounter=Cuntador de tiempu edit_act_timeCounter_tooltip=Amosar/anubrir el contador de tiempu. edit_act_actionsCounter=Cuntador de intentos edit_act_actionsCounter_tooltip=Amosar/anubrir el contador de intentos. edit_act_scoreCounter=Cuntador d'aciertos edit_act_scoreCounter_tooltip=Amosar/anubrir el contador d'aciertos. edit_act_maxTime=Tiempu m\u00E1ximu: edit_act_maxTime_tooltip=Tiempu m\u00E1ximu pa resolver la xera, en segundos. El 0 significa tiempu ilimit\u00E1u. edit_act_countdown=Cuenta atr\u00E1s edit_act_countdown_tooltip=El cuntador entama col valor m\u00E1ximu, decreciendo fasta 0. edit_act_maxActions=Intentos m\u00E1x.: edit_act_maxActions_tooltip=N\u00FAmberu m\u00E1ximu d'intentos permit\u00EDos, o 0 pa ilimit\u00E1u. edit_act_buttons_block=Botones edit_act_helpBtn=Aida edit_act_helpBtn_tooltip=Amosar/anubrir el bot\u00F3n d'aida edit_act_helpBtn_solution=Amosar la soluci\u00F3n edit_act_helpBtn_msg=Amosar esti mensaxe: edit_act_infoBtn=Informaci\u00F3n edit_act_infoBtn_tooltip=Amosar/anubrir el bot\u00F3n d'informaci\u00F3n edit_act_infoBtn_url=Amosar esta URL: edit_act_infoBtn_cmd=Executar el comandu: edit_act_infoBtn_url_tooltip=Direici\u00F3n de la p\u00E1xina web que se va amosar al calcar nel bot\u00F3n d'informaci\u00F3n. edit_act_infoBtn_cmd_tooltip=Ll\u00EDnia de comandos que va executar al calcar nel bot\u00F3n d'informaci\u00F3n. edit_act_mainWindow=Ventana principal: edit_act_gameWindow=Ventana de xuegu: edit_act_margin=Marxe: edit_act_margin_tooltip=Espaciu vertical y horizontal ente oxetos visuales. edit_act_bgColor=Color de fondu: edit_act_bgColor_tooltip=Camudar el color de fondu. edit_gradient_startColor=Color d'aniciu: edit_gradient_endColor=Color final: edit_gradient_startColor_tooltip=Escoyeta del color d'aniciu edit_gradient_endColor_tooltip=Escoyeta del color final edit_gradient_cycles=Ciclos: edit_gradient_cycles_tooltip=N\u00FAmberu de repeticiones del gradiente sobro la superficie a pintar. edit_gradient_orientation=Orientaci\u00F3n: edit_gradient_orientation_tooltip=Orientaci\u00F3n del gradiente, midida en graos sobro la horizontal. edit_act_gradient=Gradiente: edit_act_gradient_tooltip=Usar un gradiente de colores edit_color_opacity=Opacid\u00E1 edit_color_opacity_tooltip=Axusta'l valor de la canal alfa (opacid\u00E1) de color. edit_gradient_title=Gradiente edit_gradient_default=Usar los valores por defeutu (gradiente nulu) edit_act_image=Imaxe: edit_act_descriptionTab=Descripci\u00F3n edit_act_descriptionTab_tooltip=Nome y descripci\u00F3n edit_act_tiledBgImg=En mosaicu edit_act_tiledBgImg_tooltip=Pinta tola superficie cola imaxe, repiti\u00E9ndola a lo llargo de les exes X ya Y tantes vegaes como faiga falta. edit_act_preview=Vista previa: edit_act_border=Borde edit_act_border_tooltip=Dibuxar una llinia de berbesu al rodiu de la ventana edit_act_transparent=Tresparente edit_act_transparent_tooltip=La ventana tien el fondu tresparente edit_act_width=Anchor: edit_act_height=Altor: edit_act_width_tooltip=Anchu del oxetu, en p\u00EDxeles edit_act_height_tooltip=Altor del oxetu, en p\u00EDxeles edit_act_centered=Centrada edit_act_centered_tooltip=El oxetu as\u00EDtiase centr\u00E1u respeutu de la ventana principal edit_act_x=X: edit_act_x_tooltip=Posici\u00F3n horizontal absoluta edit_act_y=Y: edit_act_y_tooltip=Posici\u00F3n vertical absoluta edit_act_ui_block=Interface d'usuariu edit_act_image_tooltip=Esbillar una imaxe edit_act_text=Testu: edit_act_text_tooltip=Testu que se va amosar nesti oxetu edit_font_face=Triba: edit_font_size=Tama\u00F1u: edit_font_bold=Negrina edit_font_italic=Cursiva edit_font_underline=Soray\u00E1u edit_font_style=Estilu: edit_cell_title=Conten\u00EDu de la caxella edit_act_messages=Mensaxes edit_act_msg_initial=Mensax d'aniciu: edit_act_msg_final=Mensax final: edit_act_msg_prev=Mensax previu: edit_act_msg_error=Mensax de fallu: edit_act_msg_initial_tooltip=Mensax que s'amuesa al entamjar la xera edit_act_msg_final_tooltip=Mensax que s'amuesa al finar la xera edit_act_msg_error_tooltip=Mensax que s'amuesa al finar la xera con fallos edit_act_msg_prev_tooltip=Mensax que s'amuesa enantes d'entamar (nam\u00E1s en delles tribes de xeres) edit_align=Orientaci\u00F3n: edit_act_textColor=Color del testu: edit_act_textColor_tooltip=Color utiliz\u00E1u pa dibuxar el testu edit_act_shadowColor=Color de la solombra: edit_act_shadowColor_tooltip=Color utiliz\u00E1u na solombra del testu, si esiste. edit_act_shadow=Solombra edit_act_shadow_tooltip=Dibuxar el testu con solombra edit_act_borderColor=Color del berbesu: edit_act_borderColor_tooltip=Color utiliz\u00E1u pa dibuxar el berbesu de la caxella edit_act_inactiveColor=Color de est\u00E1u inactivu: edit_act_inactiveColor_tooltip=Color utiliz\u00E1u cuando la caxella ta desactivada edit_act_altColor=Color alternativu: edit_act_altColor_tooltip=Color col que s'amuesa el conten\u00EDu alternativu de les caxelles una vegada solucionadas. edit_cell_marked=Marcada edit_cell_disabled=Desactivada edit_cell_alt=Alternativa edit_cell_textMargin=Marxe internu: edit_cell_textMargin_tooltip=Espaciu ente los berbesos de la celda y el testu. edit_cell_borderWidth=Anchor del berbesu: edit_cell_borderWidth_tooltip=Anchor del trazu utiliz\u00E1u pa dibuxar el berbesu. edit_cell_markerWidth=Anchor del marcador: edit_cell_markerWidth_tooltip=Anchor del trazu utiliz\u00E1u pa dibuxar el berbesu cuando la caxella s'alcuentra marcada o escoyida. edit_cell_alt_tooltip=Vista previa n'est\u00E1u "alternativa" edit_cell_disabled_tooltip=Vista previa n'est\u00E1u "desactivada" edit_cell_marked_tooltip=Vista previa n'est\u00E1u "marcada" edit_act_testAction=Vista previa de la xera edit_act_testAction_tooltip=Prebar c\u00F3mo furrula la xera edit_act_panels_description=Descripci\u00F3n edit_act_panels_description_tooltip=T\u00EDtulu y descripci\u00F3n de la xera edit_act_panels_options=Opciones edit_act_panels_options_tooltip=Opciones de la xera edit_act_panels_frame=Ventana edit_act_panels_frame_tooltip=Aspeutu, tama\u00F1u y posici\u00F3n de la ventana na que corre la xera edit_act_panels_messages=Mensaxes edit_act_panels_messages_tooltip=Conten\u00EDu de los mensaxes de la xera edit_act_panels_panel=Panel edit_act_panels_panel_tooltip=Conten\u00EDu del panel edit_style_title=Estilu edit_style_tooltip=Axustar el color, triba y tama\u00F1u de lletra de les caxelles edit_act_style=Estilu: edit_act_overlap=Evitar sobreposici\u00F3n imaxe/testu edit_act_overlap_tooltip=Intentar evitar que testu ya imaxe se solapen edit_media_exists_1=El ficheru edit_media_exists_2=y\u00E1 s'alcuentra na mediateca! edit_act_shaper=Xenerador de formes: edit_act_shaper_err=Error nel xenerador de formes: edit_act_num_cols=Columnes: edit_act_num_rows=Fileres: edit_act_toothHeightFactor=Altor de los dientes: edit_act_toothWidthFactor=Anchor de los dientes: edit_act_toothRandom=Distribuci\u00F3n aleatoria edit_act_shaper_properties=Propiedaes del xenerador de formes edit_act_panels_text=Testu edit_act_panels_text_tooltip=Testu de la xera action_saveFile_caption=Guardar... action_saveFile_keys=SS action_saveFile_tooltip=Guardar el proyeutu actual action_docTree_caption=\u00C1rbol del documentu... action_docTree_keys=T* action_docTree_tooltip=Amosar el documentu del proyeutu en forma d'\u00E1rbol edit_docTree_title=\u00C1rbol del documentu edit_media_referencedBy=Referenci\u00E1u por: msg_prompt_loadReferences=Atenci\u00F3n:

Esti proyeutu enllaza con otros proyeutos.
\u00BFQuies esplorar los enllaces y cargar tolos ficheros rellacionaos?

(Recomi\u00E9ndase responder S\u00CD cuando se ta importando un paquete de xeres de Clic 3.0) edit_mc_type=Triba: edit_mc_type_unknown=Desconoc\u00EDu edit_mc_type_sound=Interpretar son\u00EDu edit_mc_type_video=Interpretar video edit_mc_type_midi=Interpretar MIDI edit_mc_type_cdaudio=Interpretar CD audio edit_mc_type_record=Grabar son\u00EDu edit_mc_type_play_recorded=Interpretar grabaci\u00F3n edit_mc_type_run_activity=Dir a la xera edit_mc_type_run_sequence=Dir a la secuencia edit_mc_type_run_external=Arrancar un programa edit_mc_type_url=Amosar la URL edit_mc_type_exit=Finar edit_mc_type_return=Volver edit_mc_level=Nivel de priorid\u00E1: edit_mc_file=Ficheru: edit_mc_externalParam=Par\u00E1metros: edit_mc_from=Dende: edit_mc_to=Fasta: edit_mc_length=Duraci\u00F3n m\u00E1x.: edit_mc_recBuffer=Cinta de grabaci\u00F3n: edit_mc_stretch=Axustar tama\u00F1u edit_mc_location=Allugamientu: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Dende: edit_mc_location_from_box=Celda edit_mc_location_from_window=Ventana edit_mc_location_from_frame=Marcu edit_mc_loop=Repetir indefinidamente edit_mc_autostart=Arranque autom\u00E1ticu edit_mc_catchmouse=Capturar mur edit_mc_title=Conten\u00EDu activu y multimedia edit_mc_label=Conten\u00EDu activu: edit_media_dlg_title=Escoyeta del oxetu multimedia edit_media_title=Mediateca de recursos edit_mc_pos_cell=Centr\u00E1u na celda edit_mc_pos_window=Centr\u00E1u na ventana edit_mc_pos_absolute=Especificar posici\u00F3n: edit_tree_badFormat=\u00A1Los datos o la d'\u00E1rbol son incorrectos.! edit_act_panels_controls=Controles edit_act_panels_controls_tooltip=Opciones de botones y cuntadores edit_act_class=Triba: edit_act_gridLayout=Configuraci\u00F3n de la rexella: edit_act_gridLayout_tooltip=Posici\u00F3n relativa de los paneles A y B. edit_act_inverseResolution=Resoluci\u00F3n inversa edit_act_inverseResolution_tooltip=La xera considerar\u00E1se resuelta cuando tolos elementos de "B" tean empareyaos. edit_act_showAllArrows=Amosar toles fleches edit_act_alt=Conten\u00EDu alternativu: edit_act_alt_tooltip=Conten\u00EDu que s'amuesa nes caxelles y\u00E1 resueltes y nes non asignaes. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Editar el conten\u00EDu alternativu edit_act_grid=Panel edit_act_grid_A=Panel A edit_act_grid_B=Panel B edit_act_grid_layout=Distribuci\u00F3n edit_act_grid_relationship=Rellaciones edit_seq_activity_header=xera edit_seq_tag_header=etiqueta edit_seq_jump_header=blincu a edit_seq_activity=Xera: edit_seq_tag=Etiqueta: edit_seq_description=Descripci\u00F3n: edit_seq_auto=Avance autom\u00E1ticu edit_seq_delay=Retardu: edit_seq_action_fwd=Dir p'alantre edit_seq_action_back=Dir p'atr\u00E1s edit_seq_action_jump=Blincar a... edit_seq_action_stop=Parar edit_seq_action_return=Tornar edit_seq_action_exit=Colar de JClic edit_seq_arrow_fwd=Flecha p'alantre: edit_seq_arrow_back=Flecha p'atr\u00E1s: edit_seq_action=Aici\u00F3n: edit_seq_button_enabled=Amosar bot\u00F3n edit_seq_project=Proyeutu JClic: edit_act_absolute=Posici\u00F3n absoluta edit_act_absolute_tooltip=L'oxetu va asitiase nes coordenaes X ya Y que se conse\u00F1en edit_act_location=Allugamientu: edit_seq_newElement=Nuevu elementu de secuencia... edit_seq_newElement_tooltip=Inxertar un nuevu elementu na secuencia de xera edit_seq_newElement_msg=Escueyi una xera pal nuevu elementu de secuencia. edit_seq_newElement_error_noAct=\u00A1No se pue criar un elementu nuevu de secuencia ensin conse\u00F1ar la xera! edit_seq_newElement_error_emptyList=\u00A1Nesti proyeutu nun hai xera denguna! Nun se puen criar elementos de secuencia nun proyeutu baleru. edit_seq_jump_msg=Dest\u00EDn del blincu: edit_seq_jump_title=Dest\u00EDn del blincu edit_act_newActivity_tooltip=Amestar una xera nueva al proyeutu edit_act_prompt_class=Triba de xera: edit_act_prompt_name=Nome: edit_act_newActivity_msg=Escueyi la triba de xera que quies criar y pon-y un nome: edit_act_newActivity_error_noAct=\u00A1Hai qu'escoyer una triba de xera! edit_act_newActivity_error_noName=\u00A1Hai qu'indicar un nome pa la xera! edit_act_newActivity_error_creating=\u00A1Nun se pudo criar la xera! edit_act_newActivity_class=Nome de la clas Java: edit_text_act_format=Formatu edit_text_act_answer=Rempuesta edit_text_act_popup=Ventana emerxente edit_text_act_answer_label=Rempuestes correutes: edit_list_newElement_tooltip=Amestar un elementu nuevu a la llista edit_list_editElement_tooltip=Editar l'elementu escoy\u00EDu edit_list_deleteElement_tooltip=Esborrar l'elementu escoy\u00EDu de la llista edit_list_upBtn_tooltip=Mover p'arriba edit_list_downBtn_tooltip=Mover p'abaxo edit_list_newValue=Testu nuevu: edit_list_addElement=Amestar un elementu nuevu a la llista edit_list_modifyValue=Camudar el testu escoy\u00EDu edit_text_act_target=Dest\u00EDn edit_text_act_maxLen=Llargor m\u00E1ximu: edit_text_act_maxLen_tooltip=N\u00FAmberu m\u00E1ximu de carauteres permit\u00EDos na rempuesta. edit_text_act_fillingChar=Car\u00E1uter de rellenu edit_text_act_fillingChar_tooltip=Car\u00E1uter utiliz\u00E1u pa indicar la inc\u00F3gnita edit_text_act_iniLen=Llargor d'ainiciu: edit_text_act_iniLen_tooltip=N\u00FAmberu de carauteres de rellenu que se van amosar nel aniciu la xera. edit_text_act_iniText=Testu d'aniciu: edit_text_act_iniText_tooltip=Testu que se va amosar na inc\u00F3gnita al entamar la xera. edit_text_act_list=Amosar una llista de opciones: edit_text_act_list_tooltip=Amosar la llista d'opciones que l'usuariu tien d'escoyer. edit_text_act_check_title=Opciones d'evaluaci\u00F3n edit_text_act_popup_no=Ensin ventana emerxente edit_text_act_popup_always=Ventana emerxente autom\u00E1tica edit_text_act_popup_onError=Ventana emerxente cuando hai fallos edit_text_act_popup_onDemand=Ventana emerxente calcando F1 edit_text_act_popup_type=Triba: edit_text_act_popup_delay=Retardu d'apaici\u00F3n: edit_text_act_popup_maxTime=Tiempu m\u00E1ximu: edit_text_act_popup_onlyPlay=Nam\u00E1s interpretar son\u00EDu edit_text_act_err_noSelection=Pa criar una inc\u00F3gnita nueva fai falta escoyer un fragmentu de testu. edit_text_act_err_badCharInSelection=El testu de les inc\u00F3gnites nun puede incluyir retornos de p\u00E1rrafu nin tabulaciones. edit_text_act_err_nestedTargets=\u00A1Les inc\u00F3gnites nun se puen solapar edit_text_act_err_cellInTarget=\u00A1Les inc\u00F3gnites nun pueden tener caxelles! edit_text_act_pageBgColor=Color del papel: edit_text_act_editStylesBtn=Editar los estilos del documentu... edit_text_act_mainStyle=Estilu principal: edit_text_act_tabSpc=Espaciu de tabulador: edit_text_act_tabSize=Espacios ente marques de tabulaci\u00F3n: edit_text_act_colors=Colores: edit_text_act_targetStyle=Colores de les inc\u00F3gnitas: edit_text_act_errorStyle=Colores d'errores: edit_text_act_preview=Vista preliminar: edit_text_act_styleSample_default_start=Testu normal edit_text_act_styleSample_target=inc\u00F3gnita edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=testu normal edit_text_act_styleSample_default_end=testu normal. edit_text_act_warnDeleteTarget=Atenci\u00F3n: esta aici\u00F3n va suprimir la inc\u00F3gnita escoyida. \u00BFDe xuru que lo quies facer? edit_text_act_prevScreen_title=Pantalla previa... edit_text_act_prevScreen_no=Nun amosar testu deng\u00FAn enantes d'entamar la xera edit_text_act_prevScreen_original=Amosar el testu completu del exerciciu edit_text_act_prevScreen_special=Amosar esti testu: edit_text_act_prevScreen_time=Tiempu m\u00E1ximu: edit_text_act_edit_target=Inc\u00F3gnita... edit_text_act_checkButton_show=Amosar bot\u00F3n d'evaluaci\u00F3n edit_text_act_checkButtonText=Testu del bot\u00F3n: edit_text_act_checkCase=Comprobar may\u00FAscules / min\u00FAscules edit_text_act_checkAccents=Considerar acentos y carauteres especiales edit_text_act_checkPunct=Considerar les marques de puntuaci\u00F3n edit_text_act_checkDoubleSpc=Permitir espacios repet\u00EDos edit_text_act_checkOptions=Criterios edit_text_act_checkAutoJump=Pasar autom\u00E1ticamente a la inc\u00F3gnita siguiente edit_text_act_checkForceOk=Pasar nam\u00E1s si se respuende correcho edit_text_act_checkDetail=Conse\u00F1ar los fallos lletra a lletra edit_text_act_checkDetail_params=Par\u00E1metros del algoritmu d'anal\u00EDs: edit_text_act_checkDetail_steps=Pasos: edit_text_act_checkDetail_field=Campu d'esploraci\u00F3n: edit_text_act_defaultCheckButtonText=Comprobar edit_text_act_advancedCorrectionOptions=Anal\u00EDs de les rempuestes edit_text_act_check_bt=Correici\u00F3n... edit_text_act_checkButton=Bot\u00F3n de correici\u00F3n edit_text_act_checkProgress=Progresu edit_text_act_typeBtn=Triba... edit_text_act_orderParagraphs=Ordenar p\u00E1rrafos edit_text_act_orderWords=Ordenar palabres edit_text_act_order_amongstPar=Baraxar palabres ente p\u00E1rrafos edit_text_act_type_title=Triba de xera edit_text_act_warnChangeType=Esta aici\u00F3n va esborrar toles inc\u00F3gnites defin\u00EDes. \u00BFDe xuru que lo quies facer? edit_text_act_identWords=Identificar palabres edit_text_act_identChars=Identificar carauteres edit_media_change_name=Camudar nome... edit_media_change_file=Camudar el ficheru... edit_media_includeInZip=Guardar nel ficheru ZIP edit_media_type=Triba de recursu: edit_media_size=Tama\u00F1u del ficheru: edit_media_show_type=Triba de ficheros: edit_media_preview=Previsualizar oxetu edit_media_preview_tooltip=Previsualizaci\u00F3n del recursu multimedia edit_media_rename=Camudar el nome del recursu edit_media_rename_title=Renomar edit_media_rename_prompt=Nome nuevu: edit_media_rename_invalid=\u00A1Nome de recursu non v\u00E1lidu! edit_media_rename_exists=Y\u00E1 hai otru recursu con esti nome. Los recursos tienen de tener un nome \u00FAnicu nel proyeutu. edit_media_chfile_invalid=\u00A1Ficheru incorreutu! err_media_chfile_different=El ficheru tien de ser de la mesma triba edit_media_font_error=\u00A1Nun se pudo cargar la fonte de lletra! edit_media_save_file=Guardar el ficheru (extrayelu del ZIP) edit_media_refresh_file=Anovar el conten\u00EDu del recursu dende'l ficheru edit_media_warn_zipFileNotExternal=Esti nun ye un ficheru "real", sin\u00F3n un oxetu allug\u00E1u nel interior de un contenedor ZIP. Pa usar esta funci\u00F3n fai falta qu'esista un ficheru col mesmu nome na carpeta onde s'atopa'l ficheru ZIP. edit_activities=Xeres edit_sequences=Secuencies edit_media=Mediateca edit_media_tooltip=Xesti\u00F3n de les im\u00E1xenes y otros recursos usaos nel proyeutu. edit_activities_tooltip=Creaci\u00F3n y edici\u00F3n de les xeres del proyeutu edit_sequences_tooltip=Creaci\u00F3n y edici\u00F3n de secuencies de xeres edit_project_title=T\u00EDtulu: edit_project_title_tooltip=T\u00EDtulu del proyeutu edit_project=Proyeutu edit_project_tooltip=Edici\u00F3n de les propiedaes del proyeutu edit_project_description=Descripci\u00F3n: edit_project_description_tooltip=Descripci\u00F3n xeneral del proyeutu edit_project_area=\u00C1ries: edit_project_area_tooltip=\u00C1ries curriculares pa les que s'empobina'l proyeutu edit_project_level=Niveles: edit_project_level_tooltip=Niveles y ciclos educativos pa los que s'empobina'l proyeutu edit_project_descriptors=Descriptores: edit_project_descriptors_tooltip=Descriptores del proyeutu (separtaos por comes) edit_project_languages=Lling\u00FCes: edit_project_languages_tooltip=Lling\u00FCes usaes nel proyeutu edit_project_languages_modify=Camudar la llingua escoyida edit_project_languages_add=Amestar llingua edit_project_languages_select=C\u00F3digos de llingua ISO-639: edit_project_authors=Autores: edit_project_authors_tooltip=Persones que participaren na creaci\u00F3n del proyeutu edit_project_author_name=Nome: edit_project_author_mail=Corr\u00E9u electr\u00F3nicu: edit_project_author_rol=Papel: edit_project_author_organization=Organizaci\u00F3n: edit_project_author_comments=Comentarios: edit_project_author_url=URL: edit_project_author_name_tooltip=Nome del autor/a (campu obligatorio) edit_project_author_mail_tooltip=Direici\u00F3n de corr\u00E9u electr\u00F3nicu del autor/a (opcional) edit_project_author_rol_tooltip=Papel de la persona nel proyeutu: autor, collaborador, illustrador, son\u00EDos... (opcional) edit_project_author_organization_tooltip=Escuela, universid\u00E1, asociaci\u00F3n... (campu opcional) edit_project_author_url_tooltip=P\u00E1xina web personal (campu opcional) edit_project_author_comments_tooltip=Otres carauter\u00EDstiques (campu opcional) edit_project_author_info=Datos del autor/a: edit_project_author_add=Amestar un autor a la llista edit_project_author_edit=Camudar los datos del autor/a edit_project_org_name=Nome: edit_project_org_name_tooltip=Nome de la escuela edit_project_org_mail=Corr\u00E9u electr\u00F3nicu: edit_project_org_mail_tooltip=Direici\u00F3n de corr\u00E9u electr\u00F3nicu de la escuela edit_project_org_url=URL: edit_project_org_url_tooltip=Direici\u00F3n web de la escuela edit_project_org_address=Direici\u00F3n: edit_project_org_address_tooltip=Direici\u00F3n postal de la escuela edit_project_org_pc=CP: edit_project_org_pc_tooltip=C\u00F3digu postal edit_project_org_city=Ciud\u00E1: edit_project_org_city_tooltip=Ciud\u00E1 de la escuela edit_project_org_country=Pa\u00EDs: edit_project_org_state=Est\u00E1u: edit_project_org_comments=Comentarios: edit_project_org=Escuela/es: edit_project_org_tooltip=Escuela u otra instituci\u00F3n que participare nel proyeutu edit_project_org_info=Datos de la organizaci\u00F3n: edit_project_org_add=Amestar organizaci\u00F3n edit_project_org_edit=Camudar los datos de la organizaci\u00F3n edit_project_org_country_tooltip=Pa\u00EDs, federaci\u00F3n, xuni\u00F3n... edit_project_org_state_tooltip=Est\u00E1u federal, comunid\u00E1, rex\u00F3n... edit_project_org_comments_tooltip=Otros datos... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Data de la revisi\u00F3n edit_project_rev_authors=Autores/as: edit_project_rev_authors_tooltip=Autores/as de la revisi\u00F3n edit_project_rev_description=Descripci\u00F3n: edit_project_rev_description_tooltip=Breve descripci\u00F3n de los cambeos realizados edit_project_rev_comments=Comentarios: edit_project_rev_comments_tooltip=Informaci\u00F3n adicional edit_project_rev=Revisiones: edit_project_rev_tooltip=Historial de los cambeos principales fechos nel proyeutu edit_project_rev_add=Amestar un rexistru de revisi\u00F3n edit_project_rev_edit=Camudar el rexistru de la revisi\u00F3n edit_project_rev_info=Datos de la revisi\u00F3n edit_media_objects=oxetos edit_media_object=oxetu edit_evsounds_start=Aniciu de xera: edit_evsounds_click=Calcar nun oxetu: edit_evsounds_actionError=Aici\u00F3n err\u00F3nea: edit_evsounds_actionOk=Aici\u00F3n correuta: edit_evsounds_finishedError=Xera finada con fallos: edit_evsounds_finishedOk=Xera finada correutamente: edit_project_rev_err_nodesc=Error: La descripci\u00F3n nun quedar erma edit_evsounds_dlg_title=Edici\u00F3n de los son\u00EDos d'eventos edit_project_evsounds=Son\u00EDos d'eventos: edit_project_evsounds_tooltip=Cose\u00F1ar son\u00EDos espec\u00EDficos pa cada eventu de JClic edit_act_evsounds=Son\u00EDos d'eventos: edit_act_evsounds_tooltip=Cose\u00F1ar son\u00EDos espec\u00EDficos pa cada eventu de JClic edit_evsounds_default=son\u00EDu por defeutu edit_evsounds_disabled=desactiv\u00E1u edit_evsounds_chk_tooltip=Activa o desactiva'l son\u00EDu pa esti eventu edit_evsounds_select_tooltip=Calcar pa escoyer el son\u00EDu arrey\u00E1u a esti eventu, o desmarcar pa usar el son\u00EDu por defeutu action_newProject_caption=Proyeutu nuevu... action_newProject_keys=NN action_newProject_tooltip=Criar un proyeutu JClic nuevu edit_arith_op_from=Dende: edit_arith_op_from_tooltip=Valor m\u00EDnimu del operador edit_arith_op_to=Fasta: edit_arith_op_to_tooltip=Valor m\u00E1ximu del operador edit_arith_op_with=Con: edit_arith_op_with_tooltip=Si se marca, l'operador pue tener tami\u00E9n esti valor edit_arith_op_fromList=\u00DAn de la llista: edit_arith_op_fromList_tooltip=Llista de posibles valores del operador edit_arith_op_decimals=Decimales: edit_arith_op_decimals_tooltip=N\u00FAmberu de decimales del operando edit_arith_op_dec0=# (enteru) edit_arith_op_dec1=#,# edit_arith_op_dec2=#,## edit_arith_firstOp=Primer operando edit_arith_secondOp=Segundu operando edit_arith_title=Arith2 pa JClic edit_arith_operations=Operaciones: edit_arith_operations_tooltip=Selecciona la triba d'operaciones a efectuar edit_arith_operations_plus=Sumes edit_arith_operations_minus=Restes edit_arith_operations_multiply=Multiplicaciones edit_arith_operations_divide=Divisiones edit_arith_unknown=Inc\u00F3gnita: edit_arith_unknown_tooltip=Escueyi l'elementu que va facer d'inc\u00F3gnita edit_arith_unknown_aobx=El result\u00E1u ye la inc\u00F3gnita edit_arith_unknown_aoxr=El segundu operador ye la inc\u00F3gnita edit_arith_unknown_xobr=El primer operador ye la inc\u00F3gnita edit_arith_unknown_axbr=La operaci\u00F3n ye la inc\u00F3gnita edit_arith_unknown_invert=Escribir la expressi\u00F3n entamando pel result\u00E1u edit_arith_result=Result\u00E1u: edit_arith_result_notCarry=Ensin llevar edit_arith_result_random=Aleatoriu edit_arith_result_asc=Ascendente edit_arith_result_order=Ordenar per result\u00E1u: edit_arith_result_desc=Descendente edit_arith_result_avoidDup=Evitar duplicaos edit_arith_cond=Condiciones: edit_arith_cond_ind=Indiferente edit_arith_cond_agb=El primer operador tien de ser mayor que'l segundu edit_arith_cond_alb=El primer operador tien de ser menor que'l segundu edit_arith_cond_tooltip=Otres condiciones edit_autocp=xenerador autom\u00E1ticu de conten\u00EDu: edit_autocp_tooltip=Escoyeta de la triba de xenerador autom\u00E1ticu de conten\u00EDu pa esta xera. edit_autocp_block=Xenerador de conten\u00EDu edit_autocp_btn=Preferencies... edit_autocp_btn_tooltip=Configuraci\u00F3n de los par\u00E1metros del xenerador de conten\u00EDu edit_data=Edici\u00F3n de datos edit_act=Edici\u00F3n de la xera edit_acp=Edici\u00F3n del xenerador de conten\u00EDu edit_acp_err_creating=\u00A1Error de creaci\u00F3n del xenerador autom\u00E1ticu de conten\u00EDu! edit_project_author_group=Creaci\u00F3n edit_project_description_block=Descripci\u00F3n edit_project_ui_block=Interfaz d'usuariu edit_act_description=Descripci\u00F3n: m_Edit=Edici\u00F3n m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=Xera nueva... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Inxertar m_Insert_Mnemonic=I m_View=Ver m_View_Mnemonic=V action_editProject_caption=Proyeutu action_editProject_keys=PP action_editProject_tooltip=Editar les propiedaes del proyeutu action_editMedia_caption=Mediateca action_editMedia_keys=MM action_editMedia_tooltip=Edici\u00F3n de la mediateca del proyeutu action_editActivities_caption=Xeres action_editActivities_keys=AA action_editActivities_tooltip=Edici\u00F3n de les xeres action_editSeq_caption=Secuencies action_editSeq_keys=SS action_editSeq_tooltip=Edici\u00F3n de les secuencies de xeres warn_project_modified=Esti proyeutu camud\u00F3. \u00BFQuies guardar los cambeos? edit_project_descriptors_block=Descriptores edit_media_new=Oxetu multimedia nuevu... edit_media_new_tooltip=Amestar una imaxe o un oxetu multimedia a la mediateca edit_media_new_keys=M* edit_seq_threshold=Umbral de puntuaci\u00F3n: edit_seq_threshold_tooltip_up=Siguir esti cam\u00EDn cuando la puntuaci\u00F3n global seya mayor o igual que... edit_seq_time=Umbral de tiempu: edit_seq_time_tooltip_up=Pa siguir esti cam\u00EDn hai que tener feches les xeres nun tiempu inferior a... edit_seq_threshold_tooltip_down=Sigui esti cam\u00EDn siempres que la puntuaci\u00F3n global seya inferior a... edit_seq_time_tooltip_down=Sigui esti cam\u00EDn siempres que'l tiempu empleg\u00E1u nes xeres seya superior a... edit_seq_condJump=Blincos condicionales edit_seq_condJump_tooltip=Conse\u00F1ar blincos que s'executen nam\u00E1s si se dan unes condiciones determinaes edit_seq_condJump_upper_tooltip=Conse\u00F1ar les condiciones pa blincar a un nivel superior edit_seq_condJump_lower=Blincu inferior: edit_seq_condJump_upper=Blincu superior: edit_seq_condJump_lower_tooltip=Conse\u00F1ar les condiciones pa blincar a un nivel inferior edit_seq_action_tooltip_fw=Aici\u00F3n asociada al bot\u00F3n "siguiente" edit_seq_action_tooltip_bk=Aici\u00F3n asociada al bot\u00F3n "anterior" edit_seq_jump_tooltip=Conse\u00F1ar el dest\u00EDn del blincu edit_seq_action_tooltip=Aici\u00F3n a facer edit_seq_activity_tooltip=Xera asociada a esti elementu de la secuencia edit_seq_tag_tooltip=Etiqueta emplegada pa referise a esti elementu de la secuencia (campu opcional) edit_seq_description_tooltip=Descripci\u00F3n del elementu de secuencia (campu opcional) edit_seq_button_enabled_tooltip=Activar o desactivar el bot\u00F3n de pasu de xera edit_seq_auto_tooltip=Avanzar autom\u00E1ticamente al acabar la xera edit_seq_delay_tooltip=N\u00FAmberu de segundos a esperar enantes de facer el pasu autom\u00E1ticu edit_color_dlgTitle=Escoyeta del color edit_media_renaming=Por favor, espere mientres se camuda'l nome del recursu... edit_act_cell_width=Anchor: edit_act_cell_width_tooltip=Anchor de les caxelles (en p\u00EDxeles) edit_act_cell_height=Altor: edit_act_cell_height_tooltip=Altor de les caxelles (en p\u00EDxeles) edit_act_hiddenWords=Pallabres tapec\u00EDes: edit_act_hiddenWords_tooltip=Llista de les palabres tapec\u00EDes nel panel edit_act_wordSearch_panelB=Usar el panel B edit_act_wordSearch_panelB_tooltip=El conten\u00EDu del segundu panel va ser amos\u00E1u seg\u00FAn se vayan atopando les palabres edit_act_shaper_tooltip=Escoyeta de la triba de xenerador de formes del panel edit_act_num_cols_tooltip=N\u00FAmberu de columnes del panel edit_act_num_rows_tooltip=N\u00FAmberu de fileres del panel edit_act_wildTransparent=Separtadores tresparentes edit_act_wildTransparent_tooltip=Amosar los separtadores (caxelles prietes) como furacos tresparentes edit_act_behavior_scramble_times=Mestures: edit_act_behavior_scramble_times_tooltip=N\u00FAmberu de vegaes que se mecer\u00E1n les pieces edit_act_copy_title=Copiar atributos a... edit_act_copy_attributes=Atributos: edit_act_copy_dest=Aplicar a: edit_act_copy_style_main=Ventana principal edit_act_copy_style_play=Ventana de xuegu edit_act_copy_activities=Xeres a camudar: edit_act_copyAttributes=Copiar atributos edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copiar a otres xeres dellos de los atributos d'esta xera edit_new_project_name=Nome del proyeutu: edit_new_project_name_tooltip=Nome curtiu y descriptivu del proyeutu edit_new_project_filename=Nome del ficheru: edit_new_project_filename_tooltip=Nome del ficheru del proyeutu, ensin estensi\u00F3n edit_new_project_folder=Carpeta: edit_new_project_folder_tooltip=Nome de la carpeta na que se va guardar el proyeutu edit_new_project_folder_browse=Restolar... edit_new_project_title=Creaci\u00F3n d'un proyeutu JClic nuevu edit_new_project_err_empty=Error: Tanto'l proyeutu como'l ficheru y la carpeta tienen de tener nomes v\u00E1lidos. edit_new_project_warning_noEmptyFolder=Nesta carpeta y\u00E1 hai otru proyeutu Clic3.0 o JClic. Pa evitar tracamundios recomi\u00E9ndase caltener cada proyeutu nuna carpeta independiente, anque nun ye imprescindible. \u00BFDe xuru que quies criar el proyeutu nuevu nesta carpeta? edit_new_project_err_folderCreation=Error: \u00A1Nun fue ha criase la carpeta conse\u00F1ada! edit_act_copy_err_noSelection=Error: \u00A1Nun s'escoy\u00F3 xera nenguna. Pa usar esta funci\u00F3n hai qu' escoyer na llista la xera o xeres a les que se van aplicara los atributos conse\u00F1aos. edit_act_copy_action_prefix=Copiando atributos a: edit_act_copy_margin=Marxe edit_act_copy_bgColor=Color de fondu edit_act_copy_gradient=Gradiente edit_act_copy_bgImage=Imaxe de fondu edit_act_copy_border=Berbesu edit_act_copy_transparentBg=Fondu tresparente edit_act_copy_position=Posici\u00F3n edit_act_copy_messages=Mensaxes edit_act_copy_messages_ini=Estilu del mensaxe d'aniciu edit_act_copy_messages_end=Estilu del mensaxe final edit_act_copy_messages_err=Estilu del mensaxe de fallu edit_act_copy_reports=Informes edit_act_copy_rep_include=Incluyir la xera nos informes edit_act_copy_rep_actions=Rexistrar aiciones edit_act_copy_interface=Interfaz d'usuariu edit_act_copy_skin=Entornu visual edit_act_copy_evSounds=Son\u00EDos d'eventu edit_act_copy_counters=Cuntadores edit_act_copy_cTime=Cuntador de tiempu edit_act_copy_maxTime=Tiempu m\u00E1ximu edit_act_copy_cTries=Cuntador d'intentos edit_act_copy_maxTries=N\u00FAmberu m\u00E1ximu d'intentos edit_act_copy_cScore=Cuntador d'aciertos edit_act_copy_scramble=N\u00FAmberu de vegaes qu'hai que baraxar edit_act_copy_buttons=Botones edit_act_copy_btnHelp=Bot\u00F3n d'aida edit_act_copy_btnInfo=Bot\u00F3n d'informaci\u00F3n edit_act_copy_grids=Paneles edit_act_copy_gridA=Estilu del panel A edit_act_copy_gridB=Estilu del panel B edit_act_copy_textGrid=Estilu de los paneles de testu edit_act_copy_text=Xeres de testu edit_act_copy_fontFace=Triba de lletra edit_act_copy_fontSize=Tama\u00F1u de lletra edit_act_copy_fontStyle=Estilu de lletra edit_act_copy_textColour=Color del testu principal edit_act_copy_textTargetColour=Escueyi les xeres del proyeutu JClic que van ser importaes edit_act_copy_textErrorColour=Color de los fallos edit_act_copy_tabSpace=Espaciu de tabulador edit_act_copy_messages_prev=Estilu del mensax previu edit_act_changeType=Camudar la triba de xera edit_act_newActivity_class_tooltip=Nome completu de la clas que se va emplegar pa construir la xera (\u00A1nam\u00E1s pa usuarios avanzaos!) edit_act_newActivity_other=Otres... edit_act_newActivity_info=Los usuarios/es avanzaos/es pueden criar tami\u00E9n otres tribes de xeres JClic nun rexistraes. Escribi debaxo'l nome completu de la clas, precedida pol del paquete (por exemplu: "com.acme.activities.FooActivity"). Les xeres nueves tienen d'estender edu.xtec.jclic.Activity, y tienen de ser accesibles al cargador de clases de la m\u00E1quina virtual de Java. edit_act_newActivity_name=Nome de la xera edit_act_newActivity_name_tooltip=Cada xera tien de tener un nome \u00FAnico nel proyeutu edit_act_changeType_warning=

Atenci\u00F3n: El camb\u00E9u de la triba pue causar la perda de dellos de los atributos y oxetos de la xera que se ta editando. \u00A1Utilice la funci\u00F3n con munchu cuid\u00E1u!

 

applet_codebase=Allugamientu del c\u00F3digu JClic: applet_codebase_tooltip=URL qu'apunta a una carpeta na que tean allugaos los ficheros del programa de JClic applet_prev_text=C\u00F3digu HTML previu: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Testu o c\u00F3digu HTML que va aparecer enantes del applet applet_post_text=C\u00F3digu HTML posterior: applet_post_text_tooltip=Testu o c\u00F3digu HTML que va aparecer dempu\u00E9s del applet applet_size=Tama\u00F1u del applet: applet_size_tooltip=Anchor y altor del applet, en valores absolutos o porcentuales. applet_page_title=T\u00EDtulu de la p\u00E1xina: applet_page_title_tooltip=Testu que se va amosar na parte superior de la ventana del restolador applet_created_info=La p\u00E1xina web "%s" cri\u00F3se con \u00E9situ. applet_created_prompt=\u00BFQuies abrirla agora col restolador? action_createHTML_caption=Criar p\u00E1xina web... applet_create_title=Creaci\u00F3n d'una p\u00E1xina HTML con un applet JClic action_createHTML_tooltip=Creaci\u00F3n d'una p\u00E1xina HTML con un applet que tenga esti proyeutu. applet_filename=Nome del ficheru: applet_filename_tooltip=Nome del ficheru HTML a criar action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valores por defeutu usados na creaci\u00F3n de p\u00E1xines web applet_bgcolor=Color de fondu: applet_bgcolor_tooltip=Color de fondu de la p\u00E1xina web applet_centered=Centr\u00E1u applet_centered_tooltip=Allugar el applet centr\u00E1u horizontalmente applet_width_tooltip=Anchor del applet (en valor absolutu o porcentual) applet_height_tooltip=Altor del applet (en valor absolutu o porcentual) applet_exitUrl=Al colar, dir pa: applet_exitUrl_tooltip=URL pa onde se va empobinar la navegaci\u00F3n al colar de JClic applet_infoFrame=Marcu d'informaci\u00F3n: applet_infoFrame_tooltip=Nome del marcu empleg\u00E1u p'amosar el conten\u00EDu incluy\u00EDu nel bot\u00F3n "info" action_createInstaller_caption=Criar instalador del proyeutu... action_createInstaller_keys=I* action_createInstaller_tooltip=Creaci\u00F3n d'un ficheru d'instalaci\u00F3n del proyeutu pa JClic player installer_caption=Edici\u00F3n del ficheru d'instalaci\u00F3n del proyeutu installer_title=T\u00EDtulu: installer_title_tooltip=T\u00EDtulu del proyeutu que se va amosar nel asistente d'instalaci\u00F3n installer_authors=Autores/as: installer_authors_tooltip=Autores/as del proyeutu (testu curtiu) installer_folder=Carpeta: installer_folder_tooltip=Nome de carpeta que va suxerir l'asistente d'instalaci\u00F3n installer_files=Ficheros a copiar: installer_files_tooltip=Ficheros que se van copiar na instalaci\u00F3n installer_files_available=Ficheros disponibles installer_files_selected=Ficheros seleicionaos installer_files_add=>> amestar >> installer_files_add_tooltip=Amestar el ficheru escoy\u00EDu a la llista installer_files_remove=<< quitar << installer_files_remove_tooltip=Quitar el ficheru escoy\u00EDu de la llista installer_button=Bot\u00F3n d'activaci\u00F3n installer_button_tooltip=Propiedaes del bot\u00F3n que se va amosar na biblioteca de proyeutos installer_button_project=Proyeutu principal: installer_button_project_tooltip=Proyeutu JClic asoci\u00E1u al bot\u00F3n installer_button_text=Etiqueta: installer_button_text_tooltip=Etiqueta de testu curtia, que va apaecer dientro del bot\u00F3n installer_button_icon=Iconu: installer_button_icon_tooltip=Imaxe que va amosar el bot\u00F3n. Dexar ermo pa usar l'iconu por defeutu de JClic. installer_button_description=Descripci\u00F3n installer_button_description_tooltip=Testu d'aida emerxente que va amosar el bot\u00F3n installer_error_noTitle=Error: Hai que conse\u00F1ar el t\u00EDtulu del proyeutu installer_error_noBaseFolder=Error: Hai que conse\u00F1ar el nome de la carpeta installer_error_noFilesSelected=Error: Nun tien escoy\u00EDu ficheru deng\u00FAn installer_error_noButtonText=Error: Hai que conse\u00F1ar el testu de la etiqueta del bot\u00F3n d'activaci\u00F3n installer_error_projectNotInFiles=Error: El proyeutu asoci\u00E1u al bot\u00F3n d'activaci\u00F3n nun s'alcuentra ente los ficheros a copiar applet_page_full=L'applet ocupa tola p\u00E1xina applet_page_mixed=L'applet tien dimensiones espec\u00EDfiques edit_text_align_left=Alliniar el testu a la esquierda edit_text_align_center=Testu centr\u00E1u edit_text_align_right=Alliniar el testu a la drecha edit_text_act_target_toggle=Criar una inc\u00F3gnita o suprimila edit_text_act_insertCell=Inxertar una celda edit_text_act_content=Conten\u00EDu edit_text_act_style=Estilu edit_cell_size=Dimensiones de la celda: edit_project_orphanActivities=Les xeres siguientes enxam\u00E1s van llegar a executase, darr\u00E9u que nun apaecen en secuencia d'actividades del proyeutu denguna: edit_project_orphanMedia=Los oxetos siguientes de la mediateca nun s'empleguen direutamente en xera denguna: edit_project_orphanActivities_prompt=\u00BFQuies amestales al final de la secuencia cabera de xeres? edit_project_orphanMedia_prompt=\u00BFQuies esborralos? edit_project_orphanMedia_title=Esborrar de oxetos multimedia nun emplegaos edit_project_orphanActivities_title=Xeres g\u00FC\u00E9rfanes edit_media_refreshAll=Anovar el conten\u00EDu de tolos recursos edit_media_refreshAll_tooltip=Anovar tolos recursos volviendo a cargar los ficheros edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Anovando recursos... edit_media_exportAll=Esportar tolos recursos edit_media_exportAll_tooltip=Grabar en ficheros el conten\u00EDu de tolos recursos edit_media_exportAll_keys=X* edit_shape_select=Esbillar edit_shape_addPoint=Amestar un puntu edit_shape_deletePoint=Esborrar edit_shape_drawRect=Dibuxar un rect\u00E1ngulo edit_shape_drawEllipse=Dibuxar una elipse edit_shape_drawPoly=Dibuxar un pol\u00EDgonu edit_shape_toLine=Convertir nuna llinia edit_shape_toBezier=Convertir nuna curva B\u00E9zier edit_shape_toQuad=Convertir nuna curva cu\u00E1drica edit_shape_rLeft=Xirar a la esquierda edit_shape_rRight=Xirar a la drecha edit_shape_expand=Espander edit_shape_contract=Contrayer edit_shape_zoomIn=Averar edit_shape_zoomOut=Allo\u00F1ar edit_shape_aproxPoints=Xunta puntos averaos edit_shape_showPoints=Amosar puntos edit_shape_showPoints_tooltip=Amosar/Anubrir los puntos edit_shape_gridSize=Tama\u00F1u de la rexella: edit_shape_hideGrid=Amosar / Anubrir la rexella edit_shape_magnetRadius=Radiu del im\u00E1n: edit_shape_elements=Elementos defin\u00EDos edit_shape_elemName=Nome del elementu escoy\u00EDu edit_shape_magnetRadius_tooltip=Radiu d'aici\u00F3n del im\u00E1n, cuando ta activ\u00E1u edit_shape_gridSize_tooltip=Tama\u00F1u de la rexella edit_mc_activity=Xera: edit_mc_sequence=Secuencia: edit_mc_url=URL: edit_mc_project=Proyeutu: edit_mc_activity_selection=Escoyeta de la xera edit_mc_sequence_selection=Escoyeta de la secuencia edit_mc_err_nullContent=\u00A1Datos insuficientes! edit_act_arrowColor=Color de les fleches: edit_act_arrowColor_tooltip=Color utiliz\u00E1u pol editor pa dibuxar les fleches (nun ye esauto, darr\u00E9u que s'emplega una m\u00E1scara XOR de bits) edit_act_editActivity=Editar... edit_act_editActivity_tooltip=Editar la xera escoyida action_saveFileAs_caption=Guardar como... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Guardar el proyeutu con un nome distinto edit_act_behavior_block=Comportamientu edit_act_behavior=Comportamientu edit_act_behavior_drag=Arrastrar edit_act_behavior_drag_tooltip=Arrastrar los oxetos en llugar de xunilos con una llinia edit_act_behavior_order=Comprobar orde de resoluci\u00F3n edit_act_behavior_order_tooltip=Les celdes tienen de resolvese n'orde edit_act_scramble=Baraxar action_importActivities_caption=Importar xeres... action_importActivities_keys=I* action_importActivities_tooltip=Importar xeres d'otru proyeutu import_warn_samefile=El ficheru escoy\u00EDu correspuende a esti proyeutu. La importaci\u00F3n de xeres nam\u00E1s se pue facer ente proyeutos estremaos. Por favor, escueyi otru proyeutu. import_selectActivities=Escueyi una o m\u00E1s xeres pa importales a esti proyeutu: import_importing=Importando... import_checkdep=Comprobando dependencies... import_impmedia=Importando medios: import_impact=Importando la xera: import_selectProject=Escueyi'l proyeutu JClic del que quies importar xeres edit_tagRep_tags=Marques d'etiquetes edit_tagRep_tagStart=Marca d'aniciu: edit_tagRep_tagStart_tooltip=Marca qu'indica aniciu d'etiqueta edit_tagRep_tagEnd=Marca final: edit_tagRep_tagEnd_tooltip=Marca qu'indica final d'etiqueta edit_tagRep_file=Ficheru edit_tagRep_fileName=Ficheru o URL: edit_tagRep_fileName_tooltip=Nome o URL del ficheru que conti\u00E9n los valores que van sostituyir les etiquetes edit_tagRep_charset=Codificaci\u00F3n: edit_tagRep_charset_tooltip=Triba de codificaci\u00F3n emplegada nel ficheru edit_tagRep_browseFile=Guetar... edit_tagRep_browseFile_tooltip=Guetar nel sistema de ficheros edit_tagRep_title=Sostituci\u00F3n d'etiquetes edit_text_act_clearStylesBtn=Llimpiar estilos de testu... edit_text_act_clearStylesPrompt=Atenci\u00F3n: Esta aici\u00F3n va llimpiar los atributos especiales de car\u00E1uter qu'esisten nel documentu, torn\u00E1ndolu al estilu principal. Esta operaci\u00F3n nun se pue desfacer. \u00BFQuies realizala? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_cs.properties0000644000175000017500000011601211377161311026004 0ustar #JClic Author messages edit_act_description_block=Popis edit_act_name_tooltip=N\u00E1zev aktivity edit_act_name=N\u00E1zev: edit_act_description_tooltip=Popis aktivity edit_act_reports_block=Sestavy edit_act_includeInReports=Zahr\u0148 aktivity v Sestav\u00E1ch edit_act_includeInReports_tooltip=Zahr\u0148 v\u00FDsledky aktivity v u\u017Eivatelsk\u00FDch sestav\u00E1ch edit_act_code=K\u00F3d edit_act_code_tooltip=Optional code used to group and search in the reports database. edit_act_reportActions=Report u\u017Eivatelsk\u00FDch akc\u00ED edit_act_reportActions_tooltip=Register the details of all the actions performed by users edit_act_counters_block=Po\u010D\u00EDtadla edit_act_timeCounter=Po\u010D\u00EDtadlo \u010Dasu edit_act_timeCounter_tooltip=Show/hide the time conter edit_act_actionsCounter=Zku\u0161ebn\u00ED po\u010D\u00EDtadlo edit_act_actionsCounter_tooltip=Show/hide the tries counter edit_act_scoreCounter=Po\u010D\u00EDtadlo sk\u00F3re edit_act_scoreCounter_tooltip=Show/hide the score counter. edit_act_maxTime=Maxim\u00E1ln\u00ED \u010Das: edit_act_maxTime_tooltip=Maximum time to to solve the activity, in seconds, or 0 for unlimited time. edit_act_countdown=Odpo\u010Det edit_act_countdown_tooltip=The counter starts at m\u00E1ximum value, decreasing to 0. edit_act_maxActions=Max pokus\u016F: edit_act_maxActions_tooltip=Maximum number of tries allowed, or 0 for unlimited tries. edit_act_buttons_block=Tla\u010D\u00EDtka edit_act_helpBtn=N\u00E1pov\u011Bda edit_act_helpBtn_tooltip=Show/hide help button edit_act_helpBtn_solution=Show solution edit_act_helpBtn_msg=Uk\u00E1zat tuto zpr\u00E1vu: edit_act_infoBtn=Informace edit_act_infoBtn_tooltip=Show/Hide the button of information edit_act_infoBtn_url=Show this URL: edit_act_infoBtn_cmd=Vykonat tento p\u0159\u00EDkaz: edit_act_infoBtn_url_tooltip=Web site address to show when click on the info button edit_act_infoBtn_cmd_tooltip=Command line to be executed on click to the info button. edit_act_mainWindow=Vlastn\u00ED okno: edit_act_gameWindow=Hern\u00ED okno: edit_act_margin=Okraj: edit_act_margin_tooltip=Horizontal and vertical spacing between visual objects. edit_act_bgColor=Barva pozad\u00ED: edit_act_bgColor_tooltip=Zm\u011Bnit barvu pozad\u00ED. edit_gradient_startColor=Spustit barvu: edit_gradient_endColor=Konec barvy: edit_gradient_startColor_tooltip=Selection of the start color edit_gradient_endColor_tooltip=Selection of the end color edit_gradient_cycles=Cykly: edit_gradient_cycles_tooltip=Number of repetitions of the gradient over the paint surface edit_gradient_orientation=Orientace: edit_gradient_orientation_tooltip=Gradient's orientation, measured in degrees over the horizontal edit_act_gradient=P\u0159echod: edit_act_gradient_tooltip=Use gradient of colours edit_color_opacity=Pr\u016Fhlednost edit_color_opacity_tooltip=Set the color's alpha channel (opacity) value. edit_gradient_title=P\u0159echod edit_gradient_default=Use default values (null gradient) edit_act_image=Obr\u00E1zek: edit_act_descriptionTab=Popiska edit_act_descriptionTab_tooltip=Name and description edit_act_tiledBgImg=Dla\u017Edice edit_act_tiledBgImg_tooltip=Paint all the surface with the image, repeating it along the X and Y axis as needed. edit_act_preview=N\u00E1hled: edit_act_border=Okraj edit_act_border_tooltip=Draw a line border arround the window edit_act_transparent=Transparent edit_act_transparent_tooltip=Window has transparent background edit_act_width=Width: edit_act_height=Height: edit_act_width_tooltip=Width of the object, measured in pixels edit_act_height_tooltip=Height of the object, measured in pixels edit_act_centered=Centered edit_act_centered_tooltip=The object will be centered over the main window edit_act_x=X: edit_act_x_tooltip=Absolute horizontal location edit_act_y=Y: edit_act_y_tooltip=Absolute vertical location edit_act_ui_block=User interface edit_act_image_tooltip=Select an image edit_act_text=Text: edit_act_text_tooltip=Text to be shown inside this object edit_font_face=Typeface: edit_font_size=Size: edit_font_bold=Bold edit_font_italic=Italic edit_font_underline=Underline edit_font_style=Style: edit_cell_title=Cell contents edit_act_messages=Messages edit_act_msg_initial=Initial message: edit_act_msg_final=Final message: edit_act_msg_prev=Previous message: edit_act_msg_error=Error message: edit_act_msg_initial_tooltip=Message to be shown when the activity starts edit_act_msg_final_tooltip=Message to be shown when the activity is finished edit_act_msg_error_tooltip=Message to be shown when the activity ends with errors edit_act_msg_prev_tooltip=Message to be shown prior to the start of the activity (only in certain types of activities) edit_align=Align: edit_act_textColor=Text color: edit_act_textColor_tooltip=Color used to draw text edit_act_shadowColor=Shadow color: edit_act_shadowColor_tooltip=Color used for drawing the text's shadow, when appliable edit_act_shadow=Shadow edit_act_shadow_tooltip=Draw text with shadow edit_act_borderColor=Border color: edit_act_borderColor_tooltip=Color used to draw the cell's border edit_act_inactiveColor=Inactive state color: edit_act_inactiveColor_tooltip=Color used when the cell is disabled edit_act_altColor=Alternative color: edit_act_altColor_tooltip=Color used to draw the alternative content in solved cells. edit_cell_marked=Marked edit_cell_disabled=Disabled edit_cell_alt=Alternative edit_cell_textMargin=Internal margin: edit_cell_textMargin_tooltip=Amount of space between cell's border and text. edit_cell_borderWidth=Border width: edit_cell_borderWidth_tooltip=Width of the stroke used to draw the standard border edit_cell_markerWidth=Marker width: edit_cell_markerWidth_tooltip=Width of the stroke used to draw the border when the cell is marked or selected edit_cell_alt_tooltip=Preview in "alternative" state edit_cell_disabled_tooltip=Preview in "disabled" state edit_cell_marked_tooltip=Preview in "marked" state edit_act_testAction=Preview activity edit_act_testAction_tooltip=Preview and test the activity edit_act_panels_description=Description edit_act_panels_description_tooltip=Title and description of the activity edit_act_panels_options=Options edit_act_panels_options_tooltip=Options of the activity edit_act_panels_frame=Window edit_act_panels_frame_tooltip=Aspect, size and position of the activity window edit_act_panels_messages=Messages edit_act_panels_messages_tooltip=Content of the activity messages edit_act_panels_panel=Panel edit_act_panels_panel_tooltip=Contents of the panel edit_style_title=Style edit_style_tooltip=Set the cells color, font and size edit_act_style=Style: edit_act_overlap=Avoid text overlap image edit_act_overlap_tooltip=Try to avoid text overlapping over image edit_media_exists_1=The file edit_media_exists_2=already exists in the media library! edit_act_shaper=Shaper: edit_act_shaper_err=Shaper error: edit_act_num_cols=Columns: edit_act_num_rows=Rows: edit_act_toothHeightFactor=Tooth height: edit_act_toothWidthFactor=Tooth width: edit_act_toothRandom=Random distribution edit_act_shaper_properties=Shaper properties edit_act_panels_text=Text edit_act_panels_text_tooltip=Text of the activity action_saveFile_caption=Save... action_saveFile_keys=SS action_saveFile_tooltip=Save the current project action_docTree_caption=Document tree... action_docTree_keys=T* action_docTree_tooltip=Show the project's document as a tree edit_docTree_title=Document tree edit_media_referencedBy=Referenced by: msg_prompt_loadReferences=Warning:

This project connects with other projects.
Do you want to explore the links and to load all the related files?

(It's advisable to answer YES when importing Clic 3.0 activities) edit_mc_type=Type: edit_mc_type_unknown=Unknown edit_mc_type_sound=Play sound edit_mc_type_video=Play video edit_mc_type_midi=Play MIDI edit_mc_type_cdaudio=Play CD audio edit_mc_type_record=Record sound edit_mc_type_play_recorded=Play recorded sound edit_mc_type_run_activity=Go to activity edit_mc_type_run_sequence=Go to sequence edit_mc_type_run_external=Run program edit_mc_type_url=Show URL edit_mc_type_exit=End edit_mc_type_return=Return edit_mc_level=Priority level: edit_mc_file=File: edit_mc_externalParam=Parameters: edit_mc_from=From: edit_mc_to=To: edit_mc_length=Max. length: edit_mc_recBuffer=Record tape: edit_mc_stretch=Stretch size edit_mc_location=Location: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=From: edit_mc_location_from_box=Cell edit_mc_location_from_window=Window edit_mc_location_from_frame=Frame edit_mc_loop=Loop playback edit_mc_autostart=Auto start edit_mc_catchmouse=Catch mouse edit_mc_title=Multimedia and active content edit_mc_label=Active content: edit_media_dlg_title=Multimedia object selection edit_media_title=Media library edit_mc_pos_cell=Centered over cell edit_mc_pos_window=Centered over window edit_mc_pos_absolute=Specify position: edit_tree_badFormat=Incorrect tree structure or data! edit_act_panels_controls=Controls edit_act_panels_controls_tooltip=Options for buttons and counters edit_act_class=Type: edit_act_gridLayout=Grid layout: edit_act_gridLayout_tooltip=Relative postion of the panels A and B. edit_act_inverseResolution=Inverse resolution edit_act_inverseResolution_tooltip=The activity is solved when all assigned elements of "B" are matched. edit_act_showAllArrows=Show all arrows edit_act_alt=Alternative content: edit_act_alt_tooltip=Content shown in solved cells and non-assigned cells. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Edit the alternative content edit_act_grid=Grid edit_act_grid_A=Grid A edit_act_grid_B=Grid B edit_act_grid_layout=Layout edit_act_grid_relationship=Relationship edit_seq_activity_header=activity edit_seq_tag_header=tag edit_seq_jump_header=jump to edit_seq_activity=Activity: edit_seq_tag=Label: edit_seq_description=Description: edit_seq_auto=Move on automatically edit_seq_delay=Delay: edit_seq_action_fwd=Go forward edit_seq_action_back=Go bak edit_seq_action_jump=Jump to... edit_seq_action_stop=Stop edit_seq_action_return=Return edit_seq_action_exit=Exit JClic edit_seq_arrow_fwd=Forward arrow: edit_seq_arrow_back=Back arrow: edit_seq_action=Action: edit_seq_button_enabled=Show button edit_seq_project=JClic Project: edit_act_absolute=Absolute position edit_act_absolute_tooltip=The object will be placed at the specified X and Y co-ordinates edit_act_location=Location: edit_seq_newElement=New sequence element... edit_seq_newElement_tooltip=Insert a new element into the activity sequence edit_seq_newElement_msg=Please select an activity for the new sequence element. edit_seq_newElement_error_noAct=Cannot create a new sequence element without activity! edit_seq_newElement_error_emptyList=This project has no activities! Unable to create sequence elements in an empty project. edit_seq_jump_msg=Jump target: edit_seq_jump_title=Jump target edit_act_newActivity_tooltip=Add a new activity to project edit_act_prompt_class=Type of activity: edit_act_prompt_name=Name: edit_act_newActivity_msg=Please select the type of activity to create and give it a name: edit_act_newActivity_error_noAct=You must select an activity type! edit_act_newActivity_error_noName=You must especify a name for the activity! edit_act_newActivity_error_creating=Unable to create activity! edit_act_newActivity_class=Java class name: edit_text_act_format=Format edit_text_act_answer=Answer edit_text_act_popup=Pop up edit_text_act_answer_label=Valid answers: edit_list_newElement_tooltip=Add a new list element edit_list_editElement_tooltip=Edit the selected list element edit_list_deleteElement_tooltip=Delete the selected list element edit_list_upBtn_tooltip=Move up edit_list_downBtn_tooltip=Move down edit_list_newValue=New text: edit_list_addElement=Add new list element edit_list_modifyValue=Modify selected text edit_text_act_target=Target edit_text_act_maxLen=Max. length: edit_text_act_maxLen_tooltip=Maximum amount of characters in the answer. edit_text_act_fillingChar=Filling character edit_text_act_fillingChar_tooltip=Character used to indicate the blank edit_text_act_iniLen=Initial length: edit_text_act_iniLen_tooltip=Number of filling chars that will be displayed at the beginning of the activity. edit_text_act_iniText=Initial text: edit_text_act_iniText_tooltip=Text displayed in the blank at the beggining of the activity. edit_text_act_list=Show a list of options: edit_text_act_list_tooltip=Display a list of options from which the user must select one. edit_text_act_check_title=Correction options edit_text_act_popup_no=No pop up edit_text_act_popup_always=Pop up automatically edit_text_act_popup_onError=Pop up in errors edit_text_act_popup_onDemand=Pop up with F1 edit_text_act_popup_type=Type: edit_text_act_popup_delay=Pop up delay: edit_text_act_popup_maxTime=Max. time: edit_text_act_popup_onlyPlay=Sound only edit_text_act_err_noSelection=You must select a fragment of text in order to create a new text target! edit_text_act_err_badCharInSelection=Target text cannot include paragraph returns nor tabs. edit_text_act_err_nestedTargets=Targets cannot nest! edit_text_act_err_cellInTarget=Targets cannot contain cells! edit_text_act_pageBgColor=Paper colour: edit_text_act_editStylesBtn=Edit document styles... edit_text_act_mainStyle=Main style: edit_text_act_tabSpc=Tab space: edit_text_act_tabSize=Spaces between tab marks: edit_text_act_colors=Colors: edit_text_act_targetStyle=Target colors: edit_text_act_errorStyle=Error colors: edit_text_act_preview=Preview: edit_text_act_styleSample_default_start=Standard text edit_text_act_styleSample_target=target edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=standard text edit_text_act_styleSample_default_end=standard text. edit_text_act_warnDeleteTarget=Warning: This action will supress the currently selected target. Do you want to proceed? edit_text_act_prevScreen_title=Previous screen... edit_text_act_prevScreen_no=Don't display any text before starting the activity edit_text_act_prevScreen_original=Display the complete text of the exercise edit_text_act_prevScreen_special=Display this text: edit_text_act_prevScreen_time=Max. time: edit_text_act_edit_target=Target... edit_text_act_checkButton_show=Show correction button edit_text_act_checkButtonText=Button text: edit_text_act_checkCase=Match case edit_text_act_checkAccents=Consider accents and special characters edit_text_act_checkPunct=Consider punctuation marks edit_text_act_checkDoubleSpc=Allow repeated spaces edit_text_act_checkOptions=Criteria edit_text_act_checkAutoJump=Move on to next target when filled in edit_text_act_checkForceOk=Move only after correct guess edit_text_act_checkDetail=Indicate mistakes letter by letter edit_text_act_checkDetail_params=Analysis algorithm parameters: edit_text_act_checkDetail_steps=Steps: edit_text_act_checkDetail_field=Exploration field: edit_text_act_defaultCheckButtonText=Check edit_text_act_advancedCorrectionOptions=Answer analysis edit_text_act_check_bt=Correction... edit_text_act_checkButton=Correction button edit_text_act_checkProgress=Progress edit_text_act_typeBtn=Type... edit_text_act_orderParagraphs=Order paragraphs edit_text_act_orderWords=Order words edit_text_act_order_amongstPar=Shuffle words amongst paragraphs edit_text_act_type_title=Activity type edit_text_act_warnChangeType=This action will clear all the existing targets. Do you want to proceed? edit_text_act_identWords=Identify words edit_text_act_identChars=Identify characters edit_media_change_name=Change name... edit_media_change_file=Change file... edit_media_includeInZip=Save into ZIP file edit_media_type=Media type: edit_media_size=File size: edit_media_show_type=Files of type: edit_media_preview=Preview media edit_media_preview_tooltip=Preview media resource edit_media_rename=Change resource name edit_media_rename_title=Rename edit_media_rename_prompt=New name: edit_media_rename_invalid=Invalid resource name! edit_media_rename_exists=There is another resource with this name! Each resource must have a unique name. edit_media_chfile_invalid=Invalid file! err_media_chfile_different=File must be of same type edit_media_font_error=Unable to load font! edit_media_save_file=Save file (extract from ZIP) edit_media_refresh_file=Update media content from file edit_media_warn_zipFileNotExternal=This is not a "real" file, but a object located into a ZIP container. In order to use this feature, a file with the same name must be present in the folder where the ZIP file is located. edit_activities=Activities edit_sequences=Sequences edit_media=Media library edit_media_tooltip=Manage images and other media files used in the project edit_activities_tooltip=Create and edit project activities edit_sequences_tooltip=Edit and create sequences of activities edit_project_title=Title: edit_project_title_tooltip=Project's title edit_project=Project edit_project_tooltip=Edit project properties edit_project_description=Description: edit_project_description_tooltip=General description of the project edit_project_area=Areas: edit_project_area_tooltip=Curricular areas of the project edit_project_level=Levels: edit_project_level_tooltip=Educational levels of the project edit_project_descriptors=Descriptors: edit_project_descriptors_tooltip=Descriptors of the project (separed with comma) edit_project_languages=Languages: edit_project_languages_tooltip=Languages used in the project edit_project_languages_modify=Change the selected language edit_project_languages_add=Add language edit_project_languages_select=ISO-639 language codes: edit_project_authors=Authors: edit_project_authors_tooltip=People involved in the creation of the project edit_project_author_name=Name: edit_project_author_mail=e-mail: edit_project_author_rol=Rol: edit_project_author_organization=Organization: edit_project_author_comments=Comments: edit_project_author_url=URL: edit_project_author_name_tooltip=Author's name (required) edit_project_author_mail_tooltip=Author's e-mail (optional) edit_project_author_rol_tooltip=Person's rol in the project: author, collaborator, drawings, sounds... (optional) edit_project_author_organization_tooltip=School, university, association... (optional) edit_project_author_url_tooltip=Personal web page (optional) edit_project_author_comments_tooltip=Field for other information (optional) edit_project_author_info=Author info: edit_project_author_add=Add author to list edit_project_author_edit=Edit author info edit_project_org_name=Name: edit_project_org_name_tooltip=School name edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=e-mail address of the school edit_project_org_url=URL: edit_project_org_url_tooltip=School website edit_project_org_address=Address: edit_project_org_address_tooltip=Snail-mail address edit_project_org_pc=PC: edit_project_org_pc_tooltip=Postal code edit_project_org_city=City: edit_project_org_city_tooltip=School city edit_project_org_country=Country: edit_project_org_state=State: edit_project_org_comments=Comments: edit_project_org=School/s: edit_project_org_tooltip=School or other institution involved in the project edit_project_org_info=Organization info: edit_project_org_add=Add organization edit_project_org_edit=Edit organization data edit_project_org_country_tooltip=Country, federation, union... edit_project_org_state_tooltip=Federal state, community, region... edit_project_org_comments_tooltip=Other info... edit_project_rev_date=Date: edit_project_rev_date_tooltip=Date of the revision edit_project_rev_authors=Authors: edit_project_rev_authors_tooltip=Authors of the revision edit_project_rev_description=Description: edit_project_rev_description_tooltip=Brief description of the changes made edit_project_rev_comments=Comments: edit_project_rev_comments_tooltip=Other relevant info edit_project_rev=Revisions: edit_project_rev_tooltip=History of main modifications made to the project edit_project_rev_add=Add revision record edit_project_rev_edit=Edit revision record edit_project_rev_info=Revision data edit_media_objects=objects edit_media_object=object edit_evsounds_start=Start of activity: edit_evsounds_click=Click on object: edit_evsounds_actionError=Erroneous action: edit_evsounds_actionOk=Correct action: edit_evsounds_finishedError=Activity finished with errors: edit_evsounds_finishedOk=Activity finished OK: edit_project_rev_err_nodesc=Error: The description field cannot be leaved blank! edit_evsounds_dlg_title=Edit event sounds edit_project_evsounds=Event sounds: edit_project_evsounds_tooltip=Set specific sounds for each JClic event edit_act_evsounds=Event sounds: edit_act_evsounds_tooltip=Set specific sounds for each JClic event edit_evsounds_default=default sound edit_evsounds_disabled=disabled edit_evsounds_chk_tooltip=Enable or disable the sound for this event edit_evsounds_select_tooltip=Click to select a sound for this event, or uncheck to use the default sound action_newProject_caption=New project... action_newProject_keys=NN action_newProject_tooltip=Create a new JClic project edit_arith_op_from=From: edit_arith_op_from_tooltip=Minimum value of the operator edit_arith_op_to=To: edit_arith_op_to_tooltip=Maximum value of the operator edit_arith_op_with=With: edit_arith_op_with_tooltip=If checked, the operator can also have this value edit_arith_op_fromList=One from the list: edit_arith_op_fromList_tooltip=List of possible values for the operator edit_arith_op_decimals=Decimals: edit_arith_op_decimals_tooltip=Number of decimals of the operand edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=First operand edit_arith_secondOp=Second operand edit_arith_title=Arith2 for JClic edit_arith_operations=Operations: edit_arith_operations_tooltip=Select the kind of operations to be performed edit_arith_operations_plus=Plus edit_arith_operations_minus=Minus edit_arith_operations_multiply=Multiply edit_arith_operations_divide=Divide edit_arith_unknown=Unknown: edit_arith_unknown_tooltip=Select the item that will act as a unknown edit_arith_unknown_aobx=The result is the unknown edit_arith_unknown_aoxr=The second operator is the unknown edit_arith_unknown_xobr=The first operator is the unknown edit_arith_unknown_axbr=The operation is the unknown edit_arith_unknown_invert=Write the result at the beggining of the expression edit_arith_result=Result: edit_arith_result_notCarry=Do not carry edit_arith_result_random=Random edit_arith_result_asc=Ascending edit_arith_result_order=Order by result: edit_arith_result_desc=Descending edit_arith_result_avoidDup=Avoid duplicates edit_arith_cond=Conditions: edit_arith_cond_ind=Indifferent edit_arith_cond_agb=The first operator must be greather than the second one edit_arith_cond_alb=The first operator must be lesser than the second one edit_arith_cond_tooltip=Other conditions edit_autocp=Automatic content generator: edit_autocp_tooltip=Select the type of automatic content generator for this activity. edit_autocp_block=Content generator edit_autocp_btn=Settings... edit_autocp_btn_tooltip=Configure the content provider settings edit_data=Edit data edit_act=Activity edit edit_acp=Content provider edit edit_acp_err_creating=Error creating the content provider! edit_project_author_group=Creation edit_project_description_block=Description edit_project_ui_block=User interface edit_act_description=Description: m_Edit=Edit m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=New activity... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Insert m_Insert_Mnemonic=I m_View=View m_View_Mnemonic=V action_editProject_caption=Project action_editProject_keys=PP action_editProject_tooltip=Edit project settings action_editMedia_caption=Media action_editMedia_keys=MM action_editMedia_tooltip=Edit the project's multimedia library action_editActivities_caption=Activities action_editActivities_keys=AA action_editActivities_tooltip=Edit the activities action_editSeq_caption=Sequences action_editSeq_keys=SS action_editSeq_tooltip=Edit the sequences of activities warn_project_modified=Current project has been modified. Do you want to save the changes? edit_project_descriptors_block=Descriptors edit_media_new=New media object... edit_media_new_tooltip=Add a new image or multimedia object to the library edit_media_new_keys=M* edit_seq_threshold=Score threshold: edit_seq_threshold_tooltip_up=Take this way when the global score is equal to or higher than... edit_seq_time=Time threshold: edit_seq_time_tooltip_up=In order to take this way, the time spent on the activities must be less than... edit_seq_threshold_tooltip_down=Take this way when the global score is lower than... edit_seq_time_tooltip_down=Take this way when the time spent on the activities is more than... edit_seq_condJump=Conditional jumps edit_seq_condJump_tooltip=Set special jumps to be executed only under specific condicions edit_seq_condJump_upper_tooltip=Set conditions to jump to an upper level edit_seq_condJump_lower=Lower jump: edit_seq_condJump_upper=Upper jump: edit_seq_condJump_lower_tooltip=Set conditions to jump to an lower level edit_seq_action_tooltip_fw=Action assigned to the "next" button edit_seq_action_tooltip_bk=Action assigned to the "previous" button edit_seq_jump_tooltip=Set the jump target edit_seq_action_tooltip=Action to be done edit_seq_activity_tooltip=Activity assigned to this sequence element edit_seq_tag_tooltip=Tag used to reference this sequence element (optional field) edit_seq_description_tooltip=Description of the sequence element (optional field) edit_seq_button_enabled_tooltip=Enable or disable the arrow button edit_seq_auto_tooltip=Move on automatically when the activity finishes edit_seq_delay_tooltip=Seconds to wait before to do the automatic move edit_color_dlgTitle=Select color edit_media_renaming=Please wait while the resource is being renamed... edit_act_cell_width=Width: edit_act_cell_width_tooltip=Cell width (in pixels) edit_act_cell_height=Height: edit_act_cell_height_tooltip=Cell height (in pixels) edit_act_hiddenWords=Hidden words: edit_act_hiddenWords_tooltip=List of the hidden words placed in the panel edit_act_wordSearch_panelB=Use panel B edit_act_wordSearch_panelB_tooltip=The contents of a second panel will be displayed as words are found edit_act_shaper_tooltip=Select the shaper type to be used in the panel edit_act_num_cols_tooltip=Number of columns of the panel edit_act_num_rows_tooltip=Number of rows of the panel edit_act_wildTransparent=Transparent delimiters edit_act_wildTransparent_tooltip=Treat the delimiters (black boxes) as transparent holes edit_act_behavior_scramble_times=Mixes: edit_act_behavior_scramble_times_tooltip=Number of times to shuffle edit_act_copy_title=Copy attributtes to... edit_act_copy_attributes=Attributes edit_act_copy_dest=Apply to: edit_act_copy_style_main=Main window edit_act_copy_style_play=Play window edit_act_copy_activities=Activities to be modified: edit_act_copyAttributes=Copy attributes edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copy current activity attributes to other activities edit_new_project_name=Project name: edit_new_project_name_tooltip=Short, descriptive name of the project edit_new_project_filename=File name: edit_new_project_filename_tooltip=Name of the project file, without extension edit_new_project_folder=Folder: edit_new_project_folder_tooltip=Name of the folder where the project will be stored edit_new_project_folder_browse=Browse... edit_new_project_title=Create new JClic project edit_new_project_err_empty=Error: Project, file and folder must have valid, non-empty names. edit_new_project_warning_noEmptyFolder=This folder already contains another Clic 3.0 or JClic project. In order to avoid confusions, is preferable to maintain each project in a separate folder, but that isn't a strict rule. Do you really want to create the new project in this folder? edit_new_project_err_folderCreation=Error: Unable to create the specified folder! edit_act_copy_err_noSelection=Error: No activity selected! In order to use this function you must select in the list the activity or activities to wich the indicated attributes will be applied. edit_act_copy_action_prefix=Copying attributes to: edit_act_copy_margin=Margin edit_act_copy_bgColor=Background color edit_act_copy_gradient=Gradient edit_act_copy_bgImage=Background image edit_act_copy_border=Border edit_act_copy_transparentBg=Transparent background edit_act_copy_position=Position edit_act_copy_messages=Messages edit_act_copy_messages_ini=Style of initial message edit_act_copy_messages_end=Style of end message edit_act_copy_messages_err=Style of error message edit_act_copy_reports=Reports edit_act_copy_rep_include=Include activity in reports edit_act_copy_rep_actions=Record actions edit_act_copy_interface=User interface edit_act_copy_skin=Skin edit_act_copy_evSounds=Event sounds edit_act_copy_counters=Counters edit_act_copy_cTime=Time counter edit_act_copy_maxTime=Max. time edit_act_copy_cTries=Tries counter edit_act_copy_maxTries=Max. tries edit_act_copy_cScore=Score counter edit_act_copy_scramble=Times to scramble edit_act_copy_buttons=Buttons edit_act_copy_btnHelp=Help button edit_act_copy_btnInfo=Information button edit_act_copy_grids=Grids edit_act_copy_gridA=Style of grid A edit_act_copy_gridB=Style of grid B edit_act_copy_textGrid=Style of text grids edit_act_copy_text=Text activities edit_act_copy_fontFace=Font face edit_act_copy_fontSize=Font size edit_act_copy_fontStyle=Font style edit_act_copy_textColour=Main text colour edit_act_copy_textTargetColour=Select the JClic project of which the activities will be imported edit_act_copy_textErrorColour=Errors colour edit_act_copy_tabSpace=Tab space edit_act_copy_messages_prev=Style of previous message edit_act_changeType=Change activity type edit_act_newActivity_class_tooltip=Full name of the class to be used to build the activity (advanced users only!) edit_act_newActivity_other=Other... edit_act_newActivity_info=Advanced users can also create unregistered types of JClic activities. Just write below the full class name, prefixed by the package (like "com.acme.activities.FooActivity"). Activity classes must extend edu.xtec.jclic.Activity, and must be accessibles to the JVM classloader. edit_act_newActivity_name=Name of the activity: edit_act_newActivity_name_tooltip=Each activity must have a name unique in the project edit_act_changeType_warning=

Warning: Changing the type of activity can cause lost of some of the current activity attributes and objects. Use it with care!

 

applet_codebase=Location of JClic code: applet_codebase_tooltip=URL pointing to a folder with the JClic program files and scripts applet_prev_text=HTML code before: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Text or HTML code to be placed before the applet applet_post_text=HTML code after: applet_post_text_tooltip=Text or HTML code to be placed after the applet applet_size=Applet size: applet_size_tooltip=Width and height of the applet, in absolute or percentage values. applet_page_title=Page title: applet_page_title_tooltip=Text to be shown at the top of the browser window applet_created_info=The web page "%s" has been created successfully. applet_created_prompt=Do you want to open it now with the browser? action_createHTML_caption=Create web page... applet_create_title=Creation of an HTML page with a JClic applet action_createHTML_tooltip=Create a HTML page with an applet containing the current project applet_filename=File name: applet_filename_tooltip=Name of the HTML file to be created action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Default values used in web page creation applet_bgcolor=Background color: applet_bgcolor_tooltip=HTML page background color applet_centered=Centered applet_centered_tooltip=Place the applet horizontally centered applet_width_tooltip=Applet width (absolute or percentage) applet_height_tooltip=Applet height (absolute or percentage) applet_exitUrl=On exit, go to: applet_exitUrl_tooltip=URL where to redirect the navigation on JClic exit applet_infoFrame=Info frame name: applet_infoFrame_tooltip=Name of the frame used to show the content related to the "info" button action_createInstaller_caption=Create project installer... action_createInstaller_keys=I* action_createInstaller_tooltip=Create a project installer script for JClic player installer_caption=Edit project installer script installer_title=Title: installer_title_tooltip=Project title, to be shown on the installer wizard installer_authors=Autors: installer_authors_tooltip=Author/s of the project (short text) installer_folder=Folder: installer_folder_tooltip=Folder name to be suggested by the installer wizard installer_files=Files to be copied: installer_files_tooltip=Files to be copied by the installer installer_files_available=Available files installer_files_selected=Selected files installer_files_add=>> add >> installer_files_add_tooltip=Add selected file to the list installer_files_remove=<< remove << installer_files_remove_tooltip=Remove selected file from the list installer_button=Launch button installer_button_tooltip=Properties of the button to be shown in the project library installer_button_project=Main project: installer_button_project_tooltip=JClic project to be launched by the button installer_button_text=Label: installer_button_text_tooltip=Short text label, to be shown inside the button installer_button_icon=Icon: installer_button_icon_tooltip=Picture to be used as button icon. Leave blank to use the default JClic icon. installer_button_description=Description installer_button_description_tooltip=Tooltip to be shown by the button installer_error_noTitle=Error: Missing project title installer_error_noBaseFolder=Error: Missing folder name installer_error_noFilesSelected=Error: No files selected installer_error_noButtonText=Error: Missing launch button text label installer_error_projectNotInFiles=Error: The project assigned to the launch button is not in the list of files to be copied applet_page_full=Full-page applet applet_page_mixed=Applet with specific dimensions edit_text_align_left=Align text left edit_text_align_center=Center text edit_text_align_right=Align text right edit_text_act_target_toggle=Create or remove target edit_text_act_insertCell=Insert a cell edit_text_act_content=Content edit_text_act_style=Style edit_cell_size=Cell size: edit_project_orphanActivities=The following activities never appear in any of the project's activity sequences, so they never will be displayed: edit_project_orphanMedia=The following media objects are not used directly in any activity: edit_project_orphanActivities_prompt=Do you want to add them at the end of the last activity sequence? edit_project_orphanMedia_prompt=Do you want to remove them? edit_project_orphanMedia_title=Removal of unused media objects edit_project_orphanActivities_title=Orphan activities edit_media_refreshAll=Update all media content edit_media_refreshAll_tooltip=Update all media objects reloading its files edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Updating media... edit_media_exportAll=Export all media edit_media_exportAll_tooltip=Save to files the content of all media elements edit_media_exportAll_keys=X* edit_shape_select=Select edit_shape_addPoint=Add point edit_shape_deletePoint=Delete edit_shape_drawRect=Draw rectangle edit_shape_drawEllipse=Draw ellipse edit_shape_drawPoly=Draw polygon edit_shape_toLine=Convert to line edit_shape_toBezier=Convert to B\u00E9zier curve edit_shape_toQuad=Convert to quadratic curve edit_shape_rLeft=Rotate left edit_shape_rRight=Rotate right edit_shape_expand=Expand edit_shape_contract=Contract edit_shape_zoomIn=Zoom in edit_shape_zoomOut=Zoom out edit_shape_aproxPoints=Join nearest points edit_shape_showPoints=Show points edit_shape_showPoints_tooltip=Show/Hide the points edit_shape_gridSize=Grid size: edit_shape_hideGrid=Show / Hide grid edit_shape_magnetRadius=Magnet radius: edit_shape_elements=Defined elements edit_shape_elemName=Name of the selected element edit_shape_magnetRadius_tooltip=Action radius of the magnet, when enabled edit_shape_gridSize_tooltip=Size of the grid edit_mc_activity=Activity: edit_mc_sequence=Sequence: edit_mc_url=URL: edit_mc_project=Project: edit_mc_activity_selection=Choose activity edit_mc_sequence_selection=Choose sequence edit_mc_err_nullContent=Insufficient data! edit_act_arrowColor=Arrow color: edit_act_arrowColor_tooltip=Color used by the editor to draw the arrows (not exactly, because an XOR bit mask is used) edit_act_editActivity=Edit... edit_act_editActivity_tooltip=Edit the selected activity action_saveFileAs_caption=Save as... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Save the current project with a different name edit_act_behavior_block=Behavior edit_act_behavior=Behavior edit_act_behavior_drag=Drag objects edit_act_behavior_drag_tooltip=Drag objects instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=Scramble action_importActivities_caption=Import activities... action_importActivities_keys=I* action_importActivities_tooltip=Import activities from another project import_warn_samefile=The selected file corresponds to the current project. Activities can be imported only between different projects. Please select another project file. import_selectActivities=Select one or more activities to import into the current project: import_importing=Importing... import_checkdep=Checking dependencies... import_impmedia=Importing media: import_impact=Importing activity: import_selectProject=Select the JClic project of which the activities will be imported edit_tagRep_tags=Tag marks edit_tagRep_tagStart=Start mark: edit_tagRep_tagStart_tooltip=Mark used at the beginning of tags edit_tagRep_tagEnd=End mark: edit_tagRep_tagEnd_tooltip=Mark used at the end of tags edit_tagRep_file=Soubor edit_tagRep_fileName=File or URL: edit_tagRep_fileName_tooltip=Name or URL of the file containing the values that will replace tags edit_tagRep_charset=Charset: edit_tagRep_charset_tooltip=Character encoding used in the file edit_tagRep_browseFile=Proch\u00E1zet... edit_tagRep_browseFile_tooltip=Browse the filesystem edit_tagRep_title=Nahrazen\u00ED \u0161t\u00EDtk\u016F edit_text_act_clearStylesBtn=Clear text styles... edit_text_act_clearStylesPrompt=Warning: This action will clear the specific character attributes applied to the document, setting it back to its main style. This action cannot be undone. Do you want to do it? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_ca.properties0000644000175000017500000012773411377161311025777 0ustar #JClic Author messages edit_act_description_block=Descripci\u00F3 edit_act_name_tooltip=Nom de l'activitat edit_act_name=Nom: edit_act_description_tooltip=Descripci\u00F3 de l'activitat edit_act_reports_block=Informes edit_act_includeInReports=Inclou aquesta activitat als informes edit_act_includeInReports_tooltip=Inclou els resultats d'aquesta activitat en els informes d'usuari edit_act_code=Codi: edit_act_code_tooltip=Codi opcional utilitzat per agrupar i filtrar en la base de dades d'informes. edit_act_reportActions=Enregistra tamb\u00E9 les accions edit_act_reportActions_tooltip=Enregistra els detalls de totes les accions efectuades pels usuaris. edit_act_counters_block=Comptadors edit_act_timeCounter=Comptador de temps edit_act_timeCounter_tooltip=Mostra o amaga el comptador de temps edit_act_actionsCounter=Comptador d'intents edit_act_actionsCounter_tooltip=Mostra o amaga el comptador d'intents. edit_act_scoreCounter=Comptador d'encerts edit_act_scoreCounter_tooltip=Mostra o amaga el comptador d'encerts. edit_act_maxTime=Temps m\u00E0xim: edit_act_maxTime_tooltip=Temps m\u00E0xim per a resoldre l'activitat, en segons. El zero significa temps il\u00B7limitat. edit_act_countdown=Compte enrere edit_act_countdown_tooltip=El comptador comen\u00E7a al valor m\u00E0xim, decreixent fins a zero. edit_act_maxActions=Intents m\u00E0x.: edit_act_maxActions_tooltip=Nombre m\u00E0xim d'intents permesos, o zero per a il\u00B7limitat. edit_act_buttons_block=Botons edit_act_helpBtn=Ajuda edit_act_helpBtn_tooltip=Mostra o amaga el bot\u00F3 d'ajuda edit_act_helpBtn_solution=Mostra la soluci\u00F3 edit_act_helpBtn_msg=Mostra aquest missatge: edit_act_infoBtn=Informaci\u00F3 edit_act_infoBtn_tooltip=Mostrar o amagar el bot\u00F3 d'informaci\u00F3 edit_act_infoBtn_url=Mostrar aquesta URL: edit_act_infoBtn_cmd=Executa el comandament: edit_act_infoBtn_url_tooltip=Adre\u00E7a de la p\u00E0gina web que es mostrar\u00E0 en fer clic al bot\u00F3 d'informaci\u00F3. edit_act_infoBtn_cmd_tooltip=L\u00EDnia d'ordres que s'executar\u00E0 en fer clic al bot\u00F3 d'informaci\u00F3. edit_act_mainWindow=Finestra principal: edit_act_gameWindow=Finestra de joc: edit_act_margin=Marge: edit_act_margin_tooltip=Espai horitzontal i vertical entre objectes visuals. edit_act_bgColor=Color de fons: edit_act_bgColor_tooltip=Canvia el color de fons. edit_gradient_startColor=Color inicial: edit_gradient_endColor=Color final: edit_gradient_startColor_tooltip=Selecci\u00F3 del color inicial edit_gradient_endColor_tooltip=Selecci\u00F3 del color final edit_gradient_cycles=Cicles: edit_gradient_cycles_tooltip=Nombre de repeticions del gradient sobre la superf\u00EDcie a pintar edit_gradient_orientation=Orientaci\u00F3: edit_gradient_orientation_tooltip=Orientaci\u00F3 del gradient, mesurada en graus sobre la horitzontal edit_act_gradient=Gradient: edit_act_gradient_tooltip=Utilitza un gradient de colors edit_color_opacity=Opacitat edit_color_opacity_tooltip=Ajusta el valor del canal alfa (opacitat) del color. edit_gradient_title=Gradient edit_gradient_default=Utilitza els valors per defecte (gradient nul) edit_act_image=Imatge: edit_act_descriptionTab=Descripci\u00F3 edit_act_descriptionTab_tooltip=Nom i descripci\u00F3 edit_act_tiledBgImg=En mosaic edit_act_tiledBgImg_tooltip=Pinta tota la superf\u00EDcie amb la imatge, repetint-la al llarg dels eixos X i Y tantes vegades com calgui. edit_act_preview=Vista preliminar: edit_act_border=Vora edit_act_border_tooltip=Dibuixar una l\u00EDnia de vora al voltant de la finestra edit_act_transparent=Transparent edit_act_transparent_tooltip=La finestra t\u00E9 el fons transparent edit_act_width=Amplada: edit_act_height=Al\u00E7ada: edit_act_width_tooltip=Amplada de l'objecte, mesurada en p\u00EDcsels edit_act_height_tooltip=Al\u00E7ada de l'objecte, mesurada en p\u00EDcsels edit_act_centered=Centrada edit_act_centered_tooltip=L'objecte se situa centrat respecte a la finestra principal edit_act_x=X: edit_act_x_tooltip=Posici\u00F3 horizontal absoluta edit_act_y=Y: edit_act_y_tooltip=Posici\u00F3 vertical absoluta edit_act_ui_block=Interf\u00EDcie d'usuari edit_act_image_tooltip=Selecciona una imatge edit_act_text=Text: edit_act_text_tooltip=Text que es mostrar\u00E0 en aquest objecte edit_font_face=Tipus: edit_font_size=Mida: edit_font_bold=Negreta edit_font_italic=Cursiva edit_font_underline=Subrratllat edit_font_style=Estil: edit_cell_title=Contingut de la casella edit_act_messages=Missatges edit_act_msg_initial=Missatge inicial: edit_act_msg_final=Missatge final: edit_act_msg_prev=Missatge previ: edit_act_msg_error=Missatge d'error: edit_act_msg_initial_tooltip=Missatge que es mostra en iniciar-se l'activitat edit_act_msg_final_tooltip=Missatge que es mostra en acabar l'activitat edit_act_msg_error_tooltip=Missatge que es mostra quan l'activitat acaba amb errors edit_act_msg_prev_tooltip=Missatge que es mostra abans de comen\u00E7ar (nom\u00E9s en alguns tipus d'activitats) edit_align=Orientaci\u00F3: edit_act_textColor=Color del text: edit_act_textColor_tooltip=Color emprat per dibuixar el text edit_act_shadowColor=Color de l'ombra: edit_act_shadowColor_tooltip=Color emprat en l'ombra del text, si n'hi ha. edit_act_shadow=Ombra edit_act_shadow_tooltip=Dibuixa el text amb ombra edit_act_borderColor=Color de la vora: edit_act_borderColor_tooltip=Color utilitzat per a dibuixar la vora de la casella edit_act_inactiveColor=Color d'estat inactiu: edit_act_inactiveColor_tooltip=Color emprat quan la casella es troba desactivada edit_act_altColor=Color alternatiu: edit_act_altColor_tooltip=Color amb qu\u00E8 es mostra el contingut alternatiu de les caselles un cop solucionades. edit_cell_marked=Marcada edit_cell_disabled=Desactivada edit_cell_alt=Alternativa edit_cell_textMargin=Marge intern: edit_cell_textMargin_tooltip=Espai entre les vores de la cel\u00B7la i el text. edit_cell_borderWidth=Gruix de la vora: edit_cell_borderWidth_tooltip=Gruix del tra\u00E7 utilitzat per a dibuixar la vora. edit_cell_markerWidth=Gruix del marcador: edit_cell_markerWidth_tooltip=Gruix del tra\u00E7 utilitzat per dibuixar la vora quan la casella es troba marcada o seleccionada edit_cell_alt_tooltip=Vista preliminar de la casella en estat "alternatiu" edit_cell_disabled_tooltip=Vista preliminar en estat "desactivat" edit_cell_marked_tooltip=Vista preliminar en estat "marcat" edit_act_testAction=Mostra l'activitat edit_act_testAction_tooltip=Prova el funcionament de l'activitat edit_act_panels_description=Descripci\u00F3 edit_act_panels_description_tooltip=T\u00EDtol i descripci\u00F3 de l'activitat edit_act_panels_options=Opcions edit_act_panels_options_tooltip=Opcions de l'activitat edit_act_panels_frame=Finestra edit_act_panels_frame_tooltip=Aspecte, mida i posici\u00F3 de la finestra on corre l'activitat. edit_act_panels_messages=Missatges edit_act_panels_messages_tooltip=Contingut dels missatges de l'activitat edit_act_panels_panel=Plaf\u00F3 edit_act_panels_panel_tooltip=Contingut del plaf\u00F3 edit_style_title=Estil edit_style_tooltip=Ajusta els colors, tipus i mida de lletra de les caselles edit_act_style=Estil: edit_act_overlap=Evita la sobreposici\u00F3 imatge/text edit_act_overlap_tooltip=Intenta evitar que el text trepitgi la imatge. edit_media_exists_1=El fitxer edit_media_exists_2=ja es troba a la mediateca! edit_act_shaper=Retallador: edit_act_shaper_err=Error del retallador: edit_act_num_cols=Columnes: edit_act_num_rows=Files: edit_act_toothHeightFactor=Al\u00E7ada de les dents: edit_act_toothWidthFactor=Amplada de les dents: edit_act_toothRandom=Distribuci\u00F3 aleat\u00F2ria edit_act_shaper_properties=Propietats del generador de formes edit_act_panels_text=Text edit_act_panels_text_tooltip=Text de l'activitat action_saveFile_caption=Desa... action_saveFile_keys=DD action_saveFile_tooltip=Desa el projecte action_docTree_caption=Arbre del document... action_docTree_keys=A* action_docTree_tooltip=Mostra el document del projecte en forma d'abre edit_docTree_title=Arbre del document edit_media_referencedBy=Referenciat per: msg_prompt_loadReferences=Atenci\u00F3:

Aquest projecte enlla\u00E7a amb altres projectes.
Voleu que el JClic explori els enlla\u00E7os i carregui tots els materials relacionats?

(Es recomana respondre SI si esteu important un paquet d'activitats Clic 3.0) edit_mc_type=Tipus: edit_mc_type_unknown=Desconegut edit_mc_type_sound=Interpreta so edit_mc_type_video=Interpreta v\u00EDdeo edit_mc_type_midi=Interpreta MIDI edit_mc_type_cdaudio=Interpreta CD \u00E0udio edit_mc_type_record=Enregistra so edit_mc_type_play_recorded=Interpreta un enregistrament edit_mc_type_run_activity=Ves a l'activitat edit_mc_type_run_sequence=Ves a la seq\u00FC\u00E8ncia edit_mc_type_run_external=Executa un programa edit_mc_type_url=Mostra la URL edit_mc_type_exit=Acaba edit_mc_type_return=Torna edit_mc_level=Nivell de prioritat: edit_mc_file=Fitxer: edit_mc_externalParam=Par\u00E0metres: edit_mc_from=Des de: edit_mc_to=Fins a: edit_mc_length=Durada m\u00E0x.: edit_mc_recBuffer=Cinta d'enregistrament: edit_mc_stretch=Comprimeix-lo si no hi cap edit_mc_location=Posici\u00F3: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Des de: edit_mc_location_from_box=Cel\u00B7la edit_mc_location_from_window=Finestra edit_mc_location_from_frame=Marc edit_mc_loop=Repeteix indefinidament edit_mc_autostart=Engega autom\u00E0ticament edit_mc_catchmouse=Captura ratol\u00ED edit_mc_title=Contingut actiu i multim\u00E8dia edit_mc_label=Contingut actiu: edit_media_dlg_title=Selecci\u00F3 de l'objecte multim\u00E8dia edit_media_title=Biblioteca de recursos edit_mc_pos_cell=Centrat a la cel\u00B7la edit_mc_pos_window=Centrat a la finestra edit_mc_pos_absolute=Posici\u00F3 absoluta: edit_tree_badFormat=L'estructura o les dades de l'arbre s\u00F3n incorrectes! edit_act_panels_controls=Controls edit_act_panels_controls_tooltip=Opcions de botons i comptadors edit_act_class=Tipus: edit_act_gridLayout=Distribuci\u00F3 dels plafons: edit_act_gridLayout_tooltip=Posici\u00F3 relativa dels plafons A i B. edit_act_inverseResolution=Resoluci\u00F3 inversa edit_act_inverseResolution_tooltip=L'activitat es considerar\u00E0 resolta quan tots els elements de "B" hagin estat aparellats. edit_act_showAllArrows=Mostra totes les fletxes edit_act_alt=Contingut alternatiu: edit_act_alt_tooltip=Contingut que es mostra en les caselles ja resoltes o no assignades. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Edita el contingut alternatiu edit_act_grid=Plaf\u00F3 edit_act_grid_A=Plaf\u00F3 A edit_act_grid_B=Plaf\u00F3 B edit_act_grid_layout=Distribuci\u00F3 edit_act_grid_relationship=Relacions edit_seq_activity_header=activitat edit_seq_tag_header=etiqueta edit_seq_jump_header=saltar a edit_seq_activity=Activitat: edit_seq_tag=Etiqueta: edit_seq_description=Descripci\u00F3: edit_seq_auto=Avan\u00E7 autom\u00E0tic edit_seq_delay=Retard: edit_seq_action_fwd=Avan\u00E7ar edit_seq_action_back=Retrocedir edit_seq_action_jump=Saltar a... edit_seq_action_stop=Aturar-se edit_seq_action_return=Tornar edit_seq_action_exit=Sortir del JClic edit_seq_arrow_fwd=Fletxa endavant: edit_seq_arrow_back=Fletxa enrera: edit_seq_action=Acci\u00F3: edit_seq_button_enabled=Mostra bot\u00F3 edit_seq_project=Projecte JClic: edit_act_absolute=Posici\u00F3 absoluta edit_act_absolute_tooltip=L'objecte es situar\u00E0 a les coordenades X i Y que especifiqueu edit_act_location=Posici\u00F3: edit_seq_newElement=Nou element de seq\u00FC\u00E8ncia... edit_seq_newElement_tooltip=Insereix un nou element a la sequencia d'activitats edit_seq_newElement_msg=Selecciona una activitat per al nou element de seq\u00FC\u00E8ncia. edit_seq_newElement_error_noAct=No es pot crear un nou element de seq\u00FC\u00E8ncia sense indicar l'activitat. edit_seq_newElement_error_emptyList=En aquest projecte no hi ha cap activitat! No es poden crear elements de seq\u00FC\u00E8ncia en un projecte buit. edit_seq_jump_msg=Dest\u00ED del salt: edit_seq_jump_title=Dest\u00ED del salt edit_act_newActivity_tooltip=Afegeix una nova activitat al projecte edit_act_prompt_class=Tipus d'activitat: edit_act_prompt_name=Nom: edit_act_newActivity_msg=Seleccioneu el tipus d'activitat que voleu crear i doneu-li un nom: edit_act_newActivity_error_noAct=Cal seleccionar un tipus d'activitat! edit_act_newActivity_error_noName=Heu d'indicar un nom per l'activitat! edit_act_newActivity_error_creating=No s'ha pogut crear l'activitat! edit_act_newActivity_class=Classe Java: edit_text_act_format=Format edit_text_act_answer=Resposta edit_text_act_popup=Finestra emergent edit_text_act_answer_label=Respostes v\u00E0lides: edit_list_newElement_tooltip=Afegeix un nou element a la llista edit_list_editElement_tooltip=Modifica l'element seleccionat edit_list_deleteElement_tooltip=Elimina l'element seleccionat de la llista edit_list_upBtn_tooltip=Mou amunt edit_list_downBtn_tooltip=Mou avall edit_list_newValue=Nou text: edit_list_addElement=Afegeix un nou element de text edit_list_modifyValue=Modifica el text seleccionat edit_text_act_target=Inc\u00F2gnita edit_text_act_maxLen=Longitud m\u00E0xima: edit_text_act_maxLen_tooltip=Nombre m\u00E0xim de car\u00E0cters de la resposta edit_text_act_fillingChar=Car\u00E0cter de farciment edit_text_act_fillingChar_tooltip=Car\u00E0cter emprat per a indicar la inc\u00F2gnita edit_text_act_iniLen=Longitud inicial: edit_text_act_iniLen_tooltip=Nombre de car\u00E0cters de farciment que es mostraran en iniciar-se l'activitat. edit_text_act_iniText=Text inicial: edit_text_act_iniText_tooltip=Tetx que es mostrar\u00E0 a la inc\u00F2gnita en iniciar l'activitat. edit_text_act_list=Mostra una llista d'opcions: edit_text_act_list_tooltip=L'usuari haur\u00E0 de seleccionar una opci\u00F3 en una llista. edit_text_act_check_title=Opcions d'avaluaci\u00F3 edit_text_act_popup_no=Sense finestra emergent edit_text_act_popup_always=Aparici\u00F3 autom\u00E0tica edit_text_act_popup_onError=Aparici\u00F3 en errors edit_text_act_popup_onDemand=Aparici\u00F3 amb F1 edit_text_act_popup_type=Tipus: edit_text_act_popup_delay=Retard d'aparici\u00F3: edit_text_act_popup_maxTime=Temps m\u00E0xim: edit_text_act_popup_onlyPlay=Nom\u00E9s interpreta so edit_text_act_err_noSelection=\u00A1Per crear una nova inc\u00F2gnita cal que seleccioneu un fragment de text! edit_text_act_err_badCharInSelection=El text de les inc\u00F2gnites no pot incloure retorns de par\u00E0graf ni tabuladors. edit_text_act_err_nestedTargets=Les inc\u00F2gnites no es poden solapar! edit_text_act_err_cellInTarget=Les inc\u00F2gnites no poden contenir cel\u00B7les! edit_text_act_pageBgColor=Color del paper: edit_text_act_editStylesBtn=Edita els estils del document... edit_text_act_mainStyle=Estil principal: edit_text_act_tabSpc=Tab space: edit_text_act_tabSize=Espais entre marques de tabulador: edit_text_act_colors=Colors: edit_text_act_targetStyle=Colors de les inc\u00F2gnites: edit_text_act_errorStyle=Colors d'error: edit_text_act_preview=Visualitzaci\u00F3 pr\u00E8via: edit_text_act_styleSample_default_start=Text normal edit_text_act_styleSample_target=inc\u00F2gnita edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=text normal edit_text_act_styleSample_default_end=text normal. edit_text_act_warnDeleteTarget=Atenci\u00F3: aquesta acci\u00F3 suprimir\u00E0 la inc\u00F2gnita actualment seleccionada. Segur que vols fer-ho? edit_text_act_prevScreen_title=Finestra pr\u00E8via... edit_text_act_prevScreen_no=No mostris cap text abans d'iniciar l'activitat edit_text_act_prevScreen_original=Mostra el text complet de l'exercici edit_text_act_prevScreen_special=Mostra aquest text: edit_text_act_prevScreen_time=Temps m\u00E0xim: edit_text_act_edit_target=Inc\u00F2gnita... edit_text_act_checkButton_show=Mostra el bot\u00F3 d'avaluaci\u00F3 edit_text_act_checkButtonText=Text del bot\u00F3: edit_text_act_checkCase=Comprova maj\u00FAscules / min\u00FAscules edit_text_act_checkAccents=Considera accents i car\u00E0cters especials edit_text_act_checkPunct=Considera els s\u00EDmbols de puntuaci\u00F3 edit_text_act_checkDoubleSpc=Permet espais repetits edit_text_act_checkOptions=Criteris edit_text_act_checkAutoJump=Salta autom\u00E0ticament a la seg\u00FCent inc\u00F2gnita edit_text_act_checkForceOk=Avan\u00E7a nom\u00E9s si es respon correctament edit_text_act_checkDetail=Indica la posici\u00F3 dels errors edit_text_act_checkDetail_params=Par\u00E0metres de l'algorisme d'an\u00E0lisi: edit_text_act_checkDetail_steps=Passos: edit_text_act_checkDetail_field=Camp d'exploraci\u00F3: edit_text_act_defaultCheckButtonText=Avaluaci\u00F3 edit_text_act_advancedCorrectionOptions=An\u00E0lisi de les respostes edit_text_act_check_bt=Avaluaci\u00F3... edit_text_act_checkButton=Bot\u00F3 d'avaluaci\u00F3 edit_text_act_checkProgress=Progr\u00E9s edit_text_act_typeBtn=Tipus... edit_text_act_orderParagraphs=Ordenar par\u00E0grafs edit_text_act_orderWords=Ordenar paraules edit_text_act_order_amongstPar=Barreja paraules entre par\u00E0grafs edit_text_act_type_title=Tipus d'activitat edit_text_act_warnChangeType=Aquesta acci\u00F3 suprimir\u00E0 totes les inc\u00F2gnites actualment definides. Segur que vols fer-ho? edit_text_act_identWords=Identificar paraules edit_text_act_identChars=Identificar car\u00E0cters edit_media_change_name=Canvia el nom... edit_media_change_file=Canvia el fitxer... edit_media_includeInZip=Desar-lo en el fitxer ZIP edit_media_type=Tipus de recurs: edit_media_size=Mida del fitxer: edit_media_show_type=Tipus de fitxers : edit_media_preview=Mostra l'objecte edit_media_preview_tooltip=Visualitzaci\u00F3 del recurs edit_media_rename=Canvi del nom del recurs edit_media_rename_title=Canvi de nom edit_media_rename_prompt=Nou nom: edit_media_rename_invalid=Nom de recurs no v\u00E0lid! edit_media_rename_exists=Ja hi ha un altre recurs amb aquest nom! Cada recurs ha de tenir un nom \u00FAnic en el projecte. edit_media_chfile_invalid=Fitxer incorrecte! err_media_chfile_different=El fitxer ha de ser del mateix tipus edit_media_font_error=No ha estat possible carregar el tipus de lletra! edit_media_save_file=Desa el fitxer (extreu-lo del ZIP) edit_media_refresh_file=Actualitza el contingut del recurs des del fitxer edit_media_warn_zipFileNotExternal=Aquest no \u00E9s un fitxer "real", sin\u00F3 un objecte situat dins d'un contenidor ZIP. Per fer servir aquesta funci\u00F3 cal que hi hagi un fitxer amb el mateix nom a la carpeta on es troba el fitxer ZIP. edit_activities=Activitats edit_sequences=Seq\u00FC\u00E8ncies edit_media=Mediateca edit_media_tooltip=Gesti\u00F3 de les Imatges i altres recursos emprats en el projecte. edit_activities_tooltip=Creaci\u00F3 i modificaci\u00F3 de les activitats del projecte edit_sequences_tooltip=Creaci\u00F3 i modificaci\u00F3 de seq\u00FC\u00E8ncies d'activitats edit_project_title=T\u00EDtol: edit_project_title_tooltip=T\u00EDtol del projecte edit_project=Projecte edit_project_tooltip=Edici\u00F3 de les propietats del projecte edit_project_description=Descripci\u00F3: edit_project_description_tooltip=Descripci\u00F3 general del projecte edit_project_area=\u00C0rees: edit_project_area_tooltip=\u00C0rees curriculars a les que s'orienta el projecte edit_project_level=Nivells: edit_project_level_tooltip=Nivells i cicles educatius als que s'adre\u00E7a el projecte edit_project_descriptors=Descriptors: edit_project_descriptors_tooltip=Descriptors del projecte (separats per comes) edit_project_languages=Idiomes: edit_project_languages_tooltip=Idiomes emprats en el projecte edit_project_languages_modify=Canvia l'idioma seleccionat edit_project_languages_add=Afegeix un idioma edit_project_languages_select=Codis d'idioma ISO-639: edit_project_authors=Autors/es: edit_project_authors_tooltip=Persones que han contribuit a la creaci\u00F3 del projecte edit_project_author_name=Nom: edit_project_author_mail=Correu electr\u00F2nic: edit_project_author_rol=Rol: edit_project_author_organization=Organitzaci\u00F3: edit_project_author_comments=Comentaris: edit_project_author_url=URL: edit_project_author_name_tooltip=Nom de l'autor/a (camp obligatori) edit_project_author_mail_tooltip=Adre\u00E7a de correu electr\u00F2nic de l'autor/a (opcional) edit_project_author_rol_tooltip=Rol de la persona en el projecte: autor/a, col\u00B7laborador/a, dibuixos, sons... (camp opcional) edit_project_author_organization_tooltip=Escola, universitat, associaci\u00F3... (camp opcional) edit_project_author_url_tooltip=P\u00E0gina web personal (camp opcional) edit_project_author_comments_tooltip=Altres caracter\u00EDstiques (camp opcional) edit_project_author_info=Dades de l'autor/a: edit_project_author_add=Afegeix un autor a la llista edit_project_author_edit=Modifica les dades de l'autor/a edit_project_org_name=Nom: edit_project_org_name_tooltip=Nom de l'escola edit_project_org_mail=Correu electr\u00F2nic: edit_project_org_mail_tooltip=Adre\u00E7a de correu electr\u00F2nic de l'escola edit_project_org_url=URL: edit_project_org_url_tooltip=Adre\u00E7a web de l'escola edit_project_org_address=Adre\u00E7a: edit_project_org_address_tooltip=Adre\u00E7a postal de l'escola edit_project_org_pc=CP: edit_project_org_pc_tooltip=Codi postal edit_project_org_city=Localitat: edit_project_org_city_tooltip=Localitat de l'escola edit_project_org_country=Pa\u00EDs: edit_project_org_state=Estat: edit_project_org_comments=Comentaris: edit_project_org=Centre/s: edit_project_org_tooltip=Escoles i altres institucions que han participat en el projecte edit_project_org_info=Dades de l'organitzaci\u00F3: edit_project_org_add=Afegir una nova organitzaci\u00F3 edit_project_org_edit=Modificar les dades de l'organitzaci\u00F3 edit_project_org_country_tooltip=Estat, pa\u00EDs, federaci\u00F3... edit_project_org_state_tooltip=Estat federal, nacionalitat, comunitat, regi\u00F3... edit_project_org_comments_tooltip=Altres dades... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Data de la revisi\u00F3 edit_project_rev_authors=Autors/es: edit_project_rev_authors_tooltip=Autors/es de la revisi\u00F3 edit_project_rev_description=Descripci\u00F3: edit_project_rev_description_tooltip=Breu descripci\u00F3 dels canvis realitzats edit_project_rev_comments=Comentaris: edit_project_rev_comments_tooltip=Informaci\u00F3 addicional edit_project_rev=Revisions: edit_project_rev_tooltip=Historial de les principals modificacions realitzades al projecte edit_project_rev_add=Afegir un registre de revisi\u00F3 edit_project_rev_edit=Modificaci\u00F3 de les dades de la revisi\u00F3 edit_project_rev_info=Dades de la revisi\u00F3 edit_media_objects=objectes edit_media_object=objecte edit_evsounds_start=Inici d'activitat: edit_evsounds_click=Fer clic a un objecte: edit_evsounds_actionError=Acci\u00F3 err\u00F2nia: edit_evsounds_actionOk=Acci\u00F3 correcta: edit_evsounds_finishedError=Activitat acabada amb errors: edit_evsounds_finishedOk=Activitat acabada correctament: edit_project_rev_err_nodesc=Error: La descripci\u00F3 no es pot deixar en blanc edit_evsounds_dlg_title=Edita els sons d'events edit_project_evsounds=Sons d'event: edit_project_evsounds_tooltip=Assigna sons espec\u00EDfics per a cada event del JClic edit_act_evsounds=Sons d'event: edit_act_evsounds_tooltip=Assigna sons espec\u00EDfics per a cada event del JClic edit_evsounds_default=so per defecte edit_evsounds_disabled=desactivat edit_evsounds_chk_tooltip=Activa o desactiva el so per aquest event edit_evsounds_select_tooltip=Cliqueu per a seleccionar un so per aquest event, o desmarqueu per emprar el so per defecte action_newProject_caption=Nou projecte... action_newProject_keys=NN action_newProject_tooltip=Crea un nou projecte JClic edit_arith_op_from=Des de: edit_arith_op_from_tooltip=Valor m\u00EDnim de l'operand edit_arith_op_to=Fins a: edit_arith_op_to_tooltip=Valor m\u00E0xim de l'operand edit_arith_op_with=Amb: edit_arith_op_with_tooltip=Si es marca, l'operand port tenir tamb\u00E9 aquest valor edit_arith_op_fromList=Un de la llista: edit_arith_op_fromList_tooltip=Llista de possibles valors de l'operand edit_arith_op_decimals=Decimals: edit_arith_op_decimals_tooltip=Nombre de decimals de l'operand edit_arith_op_dec0=# (enter) edit_arith_op_dec1=#,# edit_arith_op_dec2=#,## edit_arith_firstOp=Primer operand edit_arith_secondOp=Segon operand edit_arith_title=Arith2 pel JClic edit_arith_operations=Operacions: edit_arith_operations_tooltip=Seleccioneu el tipus d'operacions a efectuar edit_arith_operations_plus=Sumes edit_arith_operations_minus=Restes edit_arith_operations_multiply=Multiplicacions edit_arith_operations_divide=Divisions edit_arith_unknown=Inc\u00F2gnita: edit_arith_unknown_tooltip=Seleccioneu l'element que far\u00E0 d'inc\u00F2gnita edit_arith_unknown_aobx=La inc\u00F2gnita \u00E9s el resultat edit_arith_unknown_aoxr=La inc\u00F2gnita \u00E9s el segon operand edit_arith_unknown_xobr=El primer operand \u00E9s la inc\u00F2gnita edit_arith_unknown_axbr=La operaci\u00F3 \u00E9s la inc\u00F2gnita edit_arith_unknown_invert=Escriu l'expressi\u00F3 comen\u00E7ant pel resultat edit_arith_result=Resultat: edit_arith_result_notCarry=Sense "portar-ne" edit_arith_result_random=Aleatori edit_arith_result_asc=Ascendent edit_arith_result_order=Ordena per resultat: edit_arith_result_desc=Descendent edit_arith_result_avoidDup=Evitar duplicats edit_arith_cond=Condicions: edit_arith_cond_ind=Indiferent edit_arith_cond_agb=El primer operand ha de ser m\u00E9s gran que el segon edit_arith_cond_alb=El primer operand ha de ser menor que el segon edit_arith_cond_tooltip=Altres condicions edit_autocp=Generador autom\u00E0tic de contingut: edit_autocp_tooltip=Seleccio del tipus de generador autom\u00E0tic de contingut per aquesta activitat. edit_autocp_block=Generador de contingut edit_autocp_btn=Configuraci\u00F3... edit_autocp_btn_tooltip=Configura els par\u00E0metres del generador de contingut edit_data=Edici\u00F3 de dades edit_act=Edici\u00F3 de l'activitat edit_acp=Edici\u00F3 del generador de contingut edit_acp_err_creating=Error en crear el generador autom\u00E0tic de contingut! edit_project_author_group=Creaci\u00F3 edit_project_description_block=Descripci\u00F3 edit_project_ui_block=Interf\u00EDcie d'usuari edit_act_description=Descripci\u00F3: m_Edit=Edita m_Edit_Mnemonic=E edit_media_preview_keys=V* edit_act_newActivity=Nova activitat... edit_act_newActivity_keys=A* edit_act_testAction_keys=M#10 edit_seq_newElement_keys=S* m_Insert=Insereix m_Insert_Mnemonic=I m_View=Visualitza m_View_Mnemonic=V action_editProject_caption=Projecte action_editProject_keys=PP action_editProject_tooltip=Edita les propietats del projecte action_editMedia_caption=Mediateca action_editMedia_keys=MM action_editMedia_tooltip=Edita la biblioteca de recursos multim\u00E8dia del projecte action_editActivities_caption=Activitats action_editActivities_keys=AA action_editActivities_tooltip=Edita les activitats action_editSeq_caption=Seq\u00FC\u00E8ncies action_editSeq_keys=SS action_editSeq_tooltip=Edita les sequencies d'activitats warn_project_modified=El projecte actual ha estat modificat. Voleu desar els canvis? edit_project_descriptors_block=Descriptors edit_media_new=Nou objecte multim\u00E8dia... edit_media_new_tooltip=Afegeix una imatge o un objecte multimedia a la mediateca edit_media_new_keys=M* edit_seq_threshold=Llindar de puntuaci\u00F3: edit_seq_threshold_tooltip_up=Ves per aquest cam\u00ED quan la puntuaci\u00F3 global sigui igual o superior a... edit_seq_time=Llindar de temps: edit_seq_time_tooltip_up=Per seguir aquest cam\u00ED cal haver realitzat les activitats en un temps inferior a... edit_seq_threshold_tooltip_down=Segueix aquest cam\u00ED sempre que la puntuaci\u00F3 global sigui inferior a... edit_seq_time_tooltip_down=Segueix aquest cam\u00ED sempre que el temps emprat en les activitats sigui superior a... edit_seq_condJump=Salts condicionals edit_seq_condJump_tooltip=Especifica salts que seran executats nom\u00E9s si es donen determinades condicions edit_seq_condJump_upper_tooltip=Indica les condicions per saltar a un nivell superior edit_seq_condJump_lower=Salt inferior: edit_seq_condJump_upper=Salt superior: edit_seq_condJump_lower_tooltip=Indica les condicions per saltar a un nivell inferior edit_seq_action_tooltip_fw=Acci\u00F3 assignada al bot\u00F3 d'avan\u00E7ar edit_seq_action_tooltip_bk=Acci\u00F3 assignada al bot\u00F3 de retrocedir edit_seq_jump_tooltip=Indica el dest\u00ED del salt edit_seq_action_tooltip=Acci\u00F3 a realitzar edit_seq_activity_tooltip=Activitat associada a aquest element de seq\u00FC\u00E8ncia edit_seq_tag_tooltip=Etiqueta emprada per referir-se a aquest element de seq\u00FC\u00E8ncia (camp opcional) edit_seq_description_tooltip=Descripci\u00F3 de l'element de seq\u00FC\u00E8ncia (camp opcional) edit_seq_button_enabled_tooltip=Activa o desactiva el bot\u00F3 de pas d'activitat edit_seq_auto_tooltip=Avan\u00E7ar autom\u00E0ticament en acabar l'activitat edit_seq_delay_tooltip=Nombre de segons a esperar abans de realitzar el pas autom\u00E1tic edit_color_dlgTitle=Selecci\u00F3 del color edit_media_renaming=Si us plau, espereu mentre es canvia el nom del recurs... edit_act_cell_width=Amplada: edit_act_cell_width_tooltip=Amplada de les cel\u00B7les (en p\u00EDxels) edit_act_cell_height=Al\u00E7ada: edit_act_cell_height_tooltip=Al\u00E7ada de les cel\u00B7les (en p\u00EDxels) edit_act_hiddenWords=Paraules amagades: edit_act_hiddenWords_tooltip=Llista de les paraules que s'han amagat al plaf\u00F3 edit_act_wordSearch_panelB=Emprar el plaf\u00F3 B edit_act_wordSearch_panelB_tooltip=Fes servir un segon plaf\u00F3, que es mostrar\u00E0 a mesura que es trobin les paraules edit_act_shaper_tooltip=Selecci\u00F3 del tipus de generador de formes del plaf\u00F3 edit_act_num_cols_tooltip=Nombre de columnes del plaf\u00F3 edit_act_num_rows_tooltip=Nombre de files del plaf\u00F3 edit_act_wildTransparent=Separadors transparents edit_act_wildTransparent_tooltip=Mostra els separadors (cel\u00B7les negres) com a forats transparents edit_act_behavior_scramble_times=Barreges: edit_act_behavior_scramble_times_tooltip=Nombre de vegades que es barrejaran les peces edit_act_copy_title=Copia atributs a... edit_act_copy_attributes=Atributs edit_act_copy_dest=Aplica a: edit_act_copy_style_main=Finestra principal edit_act_copy_style_play=Finestra de joc edit_act_copy_activities=Activitats a modificar: edit_act_copyAttributes=Copia atributs edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copia a altres activitats alguns dels atributs de l'activitat actual edit_new_project_name=Nom del projecte: edit_new_project_name_tooltip=Nom curt i descriptiu del projecte edit_new_project_filename=Nom del fitxer: edit_new_project_filename_tooltip=Nom del fitxer del projecte, sense extensi\u00F3 edit_new_project_folder=Carpeta: edit_new_project_folder_tooltip=Nom de la carpeta on es guardar\u00E0 el projecte edit_new_project_folder_browse=Navega... edit_new_project_title=Creaci\u00F3 d'un nou projecte JClic edit_new_project_err_empty=Error: Tant el projecte com el fitxer i la carpeta han de tenir noms v\u00E0lids. edit_new_project_warning_noEmptyFolder=En aquesta carpeta ja hi ha un altre projecte Clic3.0 o JClic. Per evitar confusions es recomana mantenir cada projecte en una carpeta independent, tot i que aix\u00F2 no \u00E9s un requisit imprescindible. Realment voleu crear el nou projecte en aquesta carpeta? edit_new_project_err_folderCreation=Error: Ha estat impossible crear la carpeta que heu indicat! edit_act_copy_err_noSelection=No heu seleccionat cap activitat! Per fer servir aquesta funci\u00F3 cal seleccionar a la llista l'activitat o activitats a les que s'aplicaran els atributs indicats. edit_act_copy_action_prefix=Copiant atributs a: edit_act_copy_margin=Marge edit_act_copy_bgColor=Color de fons edit_act_copy_gradient=Gradient edit_act_copy_bgImage=Imatge de fons edit_act_copy_border=Vora edit_act_copy_transparentBg=Fons transparent edit_act_copy_position=Posici\u00F3 edit_act_copy_messages=Missatges edit_act_copy_messages_ini=Estil del missatge inicial edit_act_copy_messages_end=Estil del missatge final edit_act_copy_messages_err=Estil del missatge d'error edit_act_copy_reports=Informes edit_act_copy_rep_include=Incloure l'activitat als informes edit_act_copy_rep_actions=Enregistrar accions edit_act_copy_interface=Interf\u00EDcie d'usuari edit_act_copy_skin=Entorn visual edit_act_copy_evSounds=Sons d'esdeveniment edit_act_copy_counters=Comptadors edit_act_copy_cTime=Comptador de temps edit_act_copy_maxTime=Temps m\u00E0xim edit_act_copy_cTries=Comptador d'intents edit_act_copy_maxTries=Nombre m\u00E0xim d'intents edit_act_copy_cScore=Comptador d'encerts edit_act_copy_scramble=Nombre de vegades que cal barrejar edit_act_copy_buttons=Botons edit_act_copy_btnHelp=Bot\u00F3 d'ajuda edit_act_copy_btnInfo=Bot\u00F3 d'informaci\u00F3 edit_act_copy_grids=Plafons edit_act_copy_gridA=Estil del plaf\u00F3 A edit_act_copy_gridB=Estil del plaf\u00F3 B edit_act_copy_textGrid=Estil dels plafons de text edit_act_copy_text=Activitats de text edit_act_copy_fontFace=Tipus de lletra edit_act_copy_fontSize=Mida de lletra edit_act_copy_fontStyle=Estil de lletra edit_act_copy_textColour=Color del text principal edit_act_copy_textTargetColour=Color de les inc\u00F2gnites edit_act_copy_textErrorColour=Color dels errors edit_act_copy_tabSpace=Espai entre tabuladors edit_act_copy_messages_prev=Estil del missatge previ edit_act_changeType=Canvia el tipus d'activitat edit_act_newActivity_class_tooltip=Nom complet de la classe que es far\u00E0 servir per construir l'activitat (usuaris avan\u00E7ats!) edit_act_newActivity_other=Altres... edit_act_newActivity_info=Els usuaris/es avan\u00E7ats/es poden crear tamb\u00E9 altres tipus d'activitats JClic no registrades. Escriviu a sota el nom complet de la classe, precedida pel del paquet (per exemple: "com.acme.activities.FooActivity"). Les noves activitats han d'extendre edu.xtec.jclic.Activity, i han de ser accessibles al carregador de classes de la m\u00E0quina virtual de Java. edit_act_newActivity_name=Nom de l'activitat: edit_act_newActivity_name_tooltip=Cada activitat ha de tenir un nom \u00FAnic en el projecte edit_act_changeType_warning=

Atenci\u00F3: El canvi de tipus pot comportar la p\u00E8rdua d'alguns objectes i atributs de l'activitat que s'est\u00E0 editant. Feu servir aquesta funci\u00F3 amb cura!

 

applet_codebase=Ubicaci\u00F3 del codi JClic: applet_codebase_tooltip=URL que apunta a una carpeta on estiguin ubicats els fitxers de programa i els scripts del JClic applet_prev_text=Codi HTML previ: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Text o codi HTML que apareixer\u00E0 abans de l'applet applet_post_text=Codi HTML posterior: applet_post_text_tooltip=Text o codi HTML que apareixer\u00E0 despr\u00E9s de l'applet applet_size=Mida de l'applet: applet_size_tooltip=Amplada i al\u00E7ada de l'applet, en valor absolut o percentual. applet_page_title=T\u00EDtol de la p\u00E0gina: applet_page_title_tooltip=Text que es mostrar\u00E0 a dalt de la finestra del navegador applet_created_info=La p\u00E0gina web "%s" ha estat creada amb \u00E8xit. applet_created_prompt=Voleu obrir-la ara amb el navegador? action_createHTML_caption=Crea una p\u00E0gina web... applet_create_title=Creaci\u00F3 d'una p\u00E0gina HTML amb un applet JClic action_createHTML_tooltip=Crea una p\u00E0gina HTML amb un applet que contingui el projecte actual applet_filename=Nom del fitxer: applet_filename_tooltip=Nom del fitxer HTML que es crear\u00E0 action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valors per defecte emprats en la creaci\u00F3 de p\u00E0gines web applet_bgcolor=Color de fons: applet_bgcolor_tooltip=Color de fons de la p\u00E0gina web applet_centered=Centrat applet_centered_tooltip=Situa l'applet centrat horitzontalment applet_width_tooltip=Amplada de l'applet (en valor absolut o percentual) applet_height_tooltip=Al\u00E7ada de l'applet (en valor absolut o percentual) applet_exitUrl=En sortir, anar a: applet_exitUrl_tooltip=URL cap on es redirigir\u00E0 la navegaci\u00F3 en sortir del JClic applet_infoFrame=Marc d'informaci\u00F3: applet_infoFrame_tooltip=Nom del marc emprat per mostrar el contingut lligat al bot\u00F3 "info" action_createInstaller_caption=Crea un instal\u00B7lador del projecte... action_createInstaller_keys=I* action_createInstaller_tooltip=Crea un fitxer d'instal\u00B7laci\u00F3 del projecte per al JClic player installer_caption=Edici\u00F3 del fitxer d'instal\u00B7laci\u00F3 del projecte installer_title=T\u00EDtol: installer_title_tooltip=T\u00EDtol del projecte que es mostrar\u00E0 a l'assistent d'instal\u00B7laci\u00F3 installer_authors=Autors/es: installer_authors_tooltip=Autors/es del projecte (text curt) installer_folder=Carpeta: installer_folder_tooltip=Nom de carpeta que suggerir\u00E0 l'assistent d'instal\u00B7laci\u00F3 installer_files=Fitxers a copiar: installer_files_tooltip=Fitxers que es copiaran durant la instal\u00B7laci\u00F3 installer_files_available=Fitxers disponibles installer_files_selected=Fitxers seleccionats installer_files_add=>> afegeix >> installer_files_add_tooltip=Afegeix el fitxer seleccionat a la llista installer_files_remove=<< treu << installer_files_remove_tooltip=Treu el fitxer seleccionat de la llista installer_button=Bot\u00F3 d'activaci\u00F3 installer_button_tooltip=Propietats del bot\u00F3 que es mostrar\u00E0 a la biblioteca de projectes installer_button_project=Projecte principal: installer_button_project_tooltip=Projecte JClic associat al bot\u00F3 installer_button_text=Etiqueta: installer_button_text_tooltip=Breu etiqueta de text, que apareixer\u00E0 dins del bot\u00F3 installer_button_icon=Icona: installer_button_icon_tooltip=Imatge que mostrar\u00E1 el bot\u00F3. Deixeu-ho en blanc per mostrar la icona per defecte del JClic. installer_button_description=Descripci\u00F3 installer_button_description_tooltip=Text d'ajuda emergent que mostrar\u00E0 el bot\u00F3 installer_error_noTitle=Error: Cal indicar el t\u00EDtol del projecte installer_error_noBaseFolder=Error: Cal indicar el nom de la carpeta on s'instal\u00B7lar\u00E0 el projecte installer_error_noFilesSelected=Error: No heu seleccionat cap fitxer installer_error_noButtonText=Error: Cal indicar el text del bot\u00F3 d'activaci\u00F3 installer_error_projectNotInFiles=Error: El projecte assignat al bot\u00F3 d'activaci\u00F3 no es troba a la llista de fitxers a copiar applet_page_full=L'applet ocupa tota la p\u00E0gina applet_page_mixed=L'applet t\u00E9 unes dimensions espec\u00EDfiques edit_text_align_left=Aliniar el text a l'esquerra edit_text_align_center=Text centrat edit_text_align_right=Aliniar el text a la dreta edit_text_act_target_toggle=Crea una inc\u00F2gnita o suprimeix-la edit_text_act_insertCell=Insereix una cel\u00B7la edit_text_act_content=Contingut edit_text_act_style=Estil edit_cell_size=Dimensions: edit_project_orphanActivities=Les seg\u00FCents activitats mai no arribaran a executarse, degut a que no apareixen a cap seq\u00FC\u00E8ncia d'activitats del projecte: edit_project_orphanMedia=Els seg\u00FCents objectes de la mediateca no es fan servir directament en cap activitat: edit_project_orphanActivities_prompt=Voleu afegir-les al final de la darrera sequ\u00E8ncia d'activitats? edit_project_orphanMedia_prompt=Voleu eliminar-los? edit_project_orphanMedia_title=Retirada d'objectes multim\u00E8dia no utilitzats edit_project_orphanActivities_title=Activitats \u00F2rfenes edit_media_refreshAll=Actualitza el contingut de tots els recursos edit_media_refreshAll_tooltip=Actualitza tots els recursos tornant a carregar els seus fitxers edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Actualitzant recursos... edit_media_exportAll=Exporta tots els recursos edit_media_exportAll_tooltip=Enregistra en fitxers el contingut de tots els recursos edit_media_exportAll_keys=X* edit_shape_select=Seleciona edit_shape_addPoint=Afegeix un punt edit_shape_deletePoint=Elimina edit_shape_drawRect=Dibuixa un rectangle edit_shape_drawEllipse=Dibuixa una el\u00B7lipse edit_shape_drawPoly=Dibuixa un pol\u00EDgon edit_shape_toLine=Converteix en l\u00EDnia edit_shape_toBezier=Converteix en corba de B\u00E9zier edit_shape_toQuad=Converteix en qu\u00E0drica edit_shape_rLeft=Gira a l'esquerra edit_shape_rRight=Gira a la dreta edit_shape_expand=Expandeix edit_shape_contract=Contreu edit_shape_zoomIn=Apropa edit_shape_zoomOut=Allunya edit_shape_aproxPoints=Ajunta punts propers edit_shape_showPoints=Mostra punts edit_shape_showPoints_tooltip=Mostra/Amaga els punts edit_shape_gridSize=Reixeta: edit_shape_hideGrid=Mostra o amaga la reixeta edit_shape_magnetRadius=Radi de l'imant: edit_shape_elements=Elements definits edit_shape_elemName=Nom de l'element seleccionat edit_shape_magnetRadius_tooltip=Radi d'acci\u00F3 de l'imant quan es troba activat edit_shape_gridSize_tooltip=Mida de la reixeta edit_mc_activity=Activitat: edit_mc_sequence=Seq\u00FC\u00E8ncia: edit_mc_url=URL: edit_mc_project=Projecte: edit_mc_activity_selection=Selecci\u00F3 de l'activitat edit_mc_sequence_selection=Selecci\u00F3 de la seq\u00FC\u00E8ncia edit_mc_err_nullContent=Dades insuficients! edit_act_arrowColor=Color de les fletxes: edit_act_arrowColor_tooltip=Color emprat per l'editor per dibuixar les fletxes (no \u00E9s exacte, ja que es fa servir una m\u00E0scara XOR de bits) edit_act_editActivity=Edita... edit_act_editActivity_tooltip=Edita l'activitat seleccionada action_saveFileAs_caption=Anomena i desa... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Desa el projecte amb un nom diferent edit_act_behavior_block=Comportament edit_act_behavior=Comportament edit_act_behavior_drag=Arrossega edit_act_behavior_drag_tooltip=Arrossega els objectes en comptes d'unir-los amb una l\u00EDnia edit_act_behavior_order=Comprova l'ordre de resoluci\u00F3 edit_act_behavior_order_tooltip=Les caselles s'han de resoldre ordenadament edit_act_scramble=Barreja action_importActivities_caption=Importa activitats... action_importActivities_keys=I* action_importActivities_tooltip=Importa activitats d'un altre projecte import_warn_samefile=El fitxer que heu seleccionat correspon al projecte actual. La importaci\u00F3 d'activitats nom\u00E9s es pot fer entre projectes diferents. Si us plau, seleccioneu un altre fitxer de projecte. import_selectActivities=Seleccioneu una o m\u00E9s activitats per a importar-les al projecte actual: import_importing=S'est\u00E0 important... import_checkdep=S'estan comprovant les depend\u00E8ncies... import_impmedia=S'estan important recursos: import_impact=S'est\u00E0 important l'activitat: import_selectProject=Seleccioneu el projecte JClic del qual desitgeu importar activitats edit_tagRep_tags=Marques d'etiqueta edit_tagRep_tagStart=Marca d'inici: edit_tagRep_tagStart_tooltip=Marca que indica inici d'etiqueta edit_tagRep_tagEnd=Marca d'acabament: edit_tagRep_tagEnd_tooltip=Marca que indica acabament d'etiqueta edit_tagRep_file=Fitxer edit_tagRep_fileName=Fitxer o URL: edit_tagRep_fileName_tooltip=Nom o URL del fitxer que cont\u00E9 els valors que substituiran les etiquetes edit_tagRep_charset=Codificaci\u00F3: edit_tagRep_charset_tooltip=Tipus de codificaci\u00F3 emprada en el fitxer edit_tagRep_browseFile=Navega... edit_tagRep_browseFile_tooltip=Navega pel sistema de fitxers edit_tagRep_title=Substituci\u00F3 d'etiquetes edit_text_act_clearStylesBtn=Neteja estils de text... edit_text_act_clearStylesPrompt=Atenci\u00F3: Aquesta acci\u00F3 netejar\u00E0 els atributs especials de car\u00E0cter aplicats al document, retornant-lo al seu estil principal. L'operaci\u00F3 no es pot desfer. Voleu fer-ho? img_max_size=Mida m\u00E0xima de les imatges: img_max_width_tooltip=Amplada m\u00E0xima de les imatges que s'importen a la mediateca. img_max_height_tooltip=Al\u00E7ada m\u00E0xima de les imatges que s'importen a la mediateca. img_resize_prompt=La imatge "%s" t\u00E9 unes dimensions de %s p\u00EDxels, que excedeixen el m\u00E0xim perm\u00E8s pel JClic Author (%s). Voleu redimensionar-la? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_de.properties0000644000175000017500000012452211377161311025774 0ustar #JClic Author messages edit_act_description_block=Beschreibung edit_act_name_tooltip=Name der \u00DCbung edit_act_name=Name: edit_act_description_tooltip=Beschreibung der \u00DCbung edit_act_reports_block=Berichte edit_act_includeInReports=Aktuelle \u00DCbung in Bericht aufnehmen edit_act_includeInReports_tooltip=Ergebnis dieser \u00DCbung in Userbericht aufnehmen edit_act_code=Code: edit_act_code_tooltip=Optionaler Code zum Gruppieren und Suchen in der Berichtdatenbank. edit_act_reportActions=Bericht \u00FCber Aktionen der User edit_act_reportActions_tooltip=Details aller User-Aktionen aufzeichnen edit_act_counters_block=Z\u00E4hler edit_act_timeCounter=Zeituhr: edit_act_timeCounter_tooltip=Zeituhr anzeigen/verbergen edit_act_actionsCounter=Versuche z\u00E4hlen edit_act_actionsCounter_tooltip=Z\u00E4hler anzeigen/verbergen edit_act_scoreCounter=Ergebnisz\u00E4hler edit_act_scoreCounter_tooltip=Ergebnisz\u00E4hler anzeigen/verbergen edit_act_maxTime=Zeitlimit: edit_act_maxTime_tooltip=Zeitlimit zum L\u00F6sen der Aufgabe in Sekunden oder 0 f\u00FCr unbegrenzte \u00DCbungsdauer eingeben. edit_act_countdown=Countdown edit_act_countdown_tooltip=Z\u00E4hler z\u00E4hlt vom Maximalwert auf Null herunter edit_act_maxActions=H\u00F6chstanzahl zul\u00E4ssiger Versuche: edit_act_maxActions_tooltip=H\u00F6chstanzahl von Versuchen oder 0 f\u00FCr unbegrenzte Anzahl von Versuchen eingeben edit_act_buttons_block=Schaltfl\u00E4chen edit_act_helpBtn=Hilfe edit_act_helpBtn_tooltip=Hilfetaste anzeigen/verbergen edit_act_helpBtn_solution=L\u00F6sung anzeigen edit_act_helpBtn_msg=Diese Nachricht anzeigen: edit_act_infoBtn=Information edit_act_infoBtn_tooltip=Info-Taste anzeigen/verbergen edit_act_infoBtn_url=Folgenden URL anzeigen: edit_act_infoBtn_cmd=Folgenden Befehl ausf\u00FChren: edit_act_infoBtn_url_tooltip=Bei Klick auf Info-Taste wird diese Website angezeigt edit_act_infoBtn_cmd_tooltip=Bei Klick auf Info-Taste Befehl ausf\u00FChren. edit_act_mainWindow=Hauptfenster: edit_act_gameWindow=Spielfenster: edit_act_margin=Rahmen: edit_act_margin_tooltip=Horizontaler und vertikaler Abstand zwischen angezeigten Objekten. edit_act_bgColor=Hintergrundfarbe: edit_act_bgColor_tooltip=Hintergrundfarbe \u00E4ndern. edit_gradient_startColor=Startfarbe: edit_gradient_endColor=Endfarbe : edit_gradient_startColor_tooltip=Auswahl der Startfarbe edit_gradient_endColor_tooltip=Auswahl der Endfarbe edit_gradient_cycles=Zyklen: edit_gradient_cycles_tooltip=Anzahl der Wiederholungen des Farbverlaufs auf der Arbeitsfl\u00E4che edit_gradient_orientation=Ausrichtung: edit_gradient_orientation_tooltip=Winkel des Farbverlaufs \u00FCber der Horizontalen edit_act_gradient=Farbverlauf: edit_act_gradient_tooltip=Farbverlauf anwenden edit_color_opacity=Transparenz edit_color_opacity_tooltip=Wert f\u00FCr transparente alpha-Farbe:. edit_gradient_title=Farbverlauf edit_gradient_default=Standardeinstellungen verwenden (Null Gradient) edit_act_image=Grafik: edit_act_descriptionTab=Beschreibung edit_act_descriptionTab_tooltip=Name und Beschreibung edit_act_tiledBgImg=Kacheln edit_act_tiledBgImg_tooltip=Gesamte Oberfl\u00E4che mit Grafik kacheln, die sich entlang der XY-Achse so oft wie ben\u00F6tigt wiederholt. edit_act_preview=Vorschau: edit_act_border=Rahmen edit_act_border_tooltip=Linie als Fensterrahmen edit_act_transparent=Transparent edit_act_transparent_tooltip=Fenster mit transparentem Hintergrund edit_act_width=Breite: edit_act_height=H\u00F6he: edit_act_width_tooltip=Breite des Objekts in Pixel edit_act_height_tooltip=Objekth\u00F6he in Pixel edit_act_centered=Zentriert edit_act_centered_tooltip=Objekt wird oberhalb des Hauptfensters zentriert edit_act_x=X: edit_act_x_tooltip=Absolute horizontale Position edit_act_y=Y: edit_act_y_tooltip=Absolute vertikale Position edit_act_ui_block=Benutzeroberfl\u00E4che edit_act_image_tooltip=Grafik ausw\u00E4hlen edit_act_text=Text: edit_act_text_tooltip=Angezeigter Text innerhalb des Objekts edit_font_face=Schriftart: edit_font_size=Schritgr\u00F6\u00DFe: edit_font_bold=Fett edit_font_italic=Kursiv edit_font_underline=Unterstrich edit_font_style=Stil: edit_cell_title=Zellinhalt edit_act_messages=Nachrichten edit_act_msg_initial=Nachricht am Beginn: edit_act_msg_final=Nachricht am Ende: edit_act_msg_prev=Vorhergehende Nachricht: edit_act_msg_error=Fehlermeldung: edit_act_msg_initial_tooltip=Angezeigte Nachricht beim Starten der \u00DCbung edit_act_msg_final_tooltip=Angezeigte Nachricht am Ende der \u00DCbung edit_act_msg_error_tooltip=Angezeigter Text, wenn \u00DCbung fehlerhaft beendet wurde edit_act_msg_prev_tooltip=Nachricht, die vor dem Starten der \u00DCbung angezeigt wird (nur bei einigen \u00DCbungsvarianten) edit_align=Ausrichtung: edit_act_textColor=Textfarbe: edit_act_textColor_tooltip=Gew\u00FCnschte Textfarbe edit_act_shadowColor=Farbe des Schattens: edit_act_shadowColor_tooltip=Farbe f\u00FCr Textschatten, wenn verf\u00FCgbar edit_act_shadow=Schatten edit_act_shadow_tooltip=Schrift mit Schatten versehen edit_act_borderColor=Rahmenfarbe: edit_act_borderColor_tooltip=Farbe des Zellrahmens edit_act_inactiveColor=Farbe f\u00FCr Inaktivit\u00E4t: edit_act_inactiveColor_tooltip=Farbe f\u00FCr deaktivierte Zellen edit_act_altColor=Alternative Farbe: edit_act_altColor_tooltip=Farbe der alternativen Inhalte in bearbeiteten Zellen edit_cell_marked=Markiert edit_cell_disabled=Deaktiviert edit_cell_alt=Alternative edit_cell_textMargin=Innerer Rahmen: edit_cell_textMargin_tooltip=Abstand zwischen Zellrand und Text. edit_cell_borderWidth=Rahmenbreite: edit_cell_borderWidth_tooltip=Breite f\u00FCr Standardrand edit_cell_markerWidth=Breite des Textmarkers: edit_cell_markerWidth_tooltip=Strichbreite des Rahmens wenn die Zelle markiert der ausgew\u00E4hlt ist. edit_cell_alt_tooltip=Vorschau: alternative Ansicht edit_cell_disabled_tooltip=Vorschau: deaktiviert edit_cell_marked_tooltip=Vorschau: markiert edit_act_testAction=Vorherige \u00DCbung edit_act_testAction_tooltip=\u00DCbung in der Vorschau testen edit_act_panels_description=Beschreibung edit_act_panels_description_tooltip=Titel und Beschreibung der \u00DCbung edit_act_panels_options=Optionen edit_act_panels_options_tooltip=\u00DCbungsoptionen edit_act_panels_frame=Fenster edit_act_panels_frame_tooltip=Erscheinungsbild, Gr\u00F6\u00DFe und Position des \u00DCbungsfensters edit_act_panels_messages=Nachrichten edit_act_panels_messages_tooltip=Inhalt der Nachrichten edit_act_panels_panel=Tafel edit_act_panels_panel_tooltip=Inhalt der Tafel edit_style_title=Stil edit_style_tooltip=Farbe, Schriftart und Schriftgr\u00F6\u00DFe der Zelle einstellen edit_act_style=Stil: edit_act_overlap=Text darf Bild nicht \u00FCberlagern edit_act_overlap_tooltip=Versuchen Sie zu vermeiden, dass der Text die Grafik \u00FCberlagert edit_media_exists_1=Datei edit_media_exists_2=bereits in der Mediathek vorhanden edit_act_shaper=Formengenerator: edit_act_shaper_err=Fehler bei Formauswahl: edit_act_num_cols=Spalten: edit_act_num_rows=Zeilen: edit_act_toothHeightFactor=Zahnh\u00F6he: edit_act_toothWidthFactor=Zahnbreite: edit_act_toothRandom=Zufallsprinzip edit_act_shaper_properties=Formeigenschaften edit_act_panels_text=Text edit_act_panels_text_tooltip=Text der \u00DCbung action_saveFile_caption=Speichern... action_saveFile_keys=SS action_saveFile_tooltip=Aktuelles Projekt speichern action_docTree_caption=Dokumentstruktur... action_docTree_keys=T* action_docTree_tooltip=Projektdokumente in Baumansicht anzeigen edit_docTree_title=Dokumentenstruktur edit_media_referencedBy=Quellenangabe: msg_prompt_loadReferences=Achtung:

Projekt ist mit anderen Projekten verlinkt.
M\u00F6chten Sie alle verlinkten Dateien importieren?

(Es wird empfohlen mitJA zu antworten, wenn Clic 3.0-\u00DCbungen importiert werden) edit_mc_type=Typ: edit_mc_type_unknown=Unbekannt edit_mc_type_sound=Sound abspielen edit_mc_type_video=Video abspielen edit_mc_type_midi=MIDI abspielen edit_mc_type_cdaudio=Audio CD abspielen edit_mc_type_record=Sound aufnehmen edit_mc_type_play_recorded=Soundaufnahme abspielen edit_mc_type_run_activity=Zu \u00DCbung gehen edit_mc_type_run_sequence=Zu Sequenz gehen edit_mc_type_run_external=Programm starten edit_mc_type_url=URL anzeigen edit_mc_type_exit=Ende edit_mc_type_return=Zur\u00FCck edit_mc_level=Priorit\u00E4tsstufe: edit_mc_file=Datei: edit_mc_externalParam=Parameter: edit_mc_from=Aus: edit_mc_to=Bis: edit_mc_length=Maximale L\u00E4nge: edit_mc_recBuffer=Aufnahme: edit_mc_stretch=Komprimieren wenn zu gro\u00DF edit_mc_location=Position: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Aus: edit_mc_location_from_box=Zelle edit_mc_location_from_window=Fenster edit_mc_location_from_frame=Frame edit_mc_loop=Sound Durchlauf edit_mc_autostart=Autostart edit_mc_catchmouse=Mausefalle edit_mc_title=Multimedia und Active X-Files edit_mc_label=Aktiver Inhalt: edit_media_dlg_title=Multimedia Objekt ausw\u00E4hlen edit_media_title=Mediathek edit_mc_pos_cell=Zentriert \u00FCber Zelle edit_mc_pos_window=Zentriert \u00FCber Fenster edit_mc_pos_absolute=Position angeben: edit_tree_badFormat=Falscher Pfad oder Datei! edit_act_panels_controls=Kontrolle edit_act_panels_controls_tooltip=Optionen f\u00FCr Schaltfl\u00E4chen und Z\u00E4hler edit_act_class=Typ: edit_act_gridLayout=Erscheinungsbild der Tafel: edit_act_gridLayout_tooltip=Relative Position der Tafeln A und B. edit_act_inverseResolution=Umgekehrte Aufl\u00F6sung edit_act_inverseResolution_tooltip=Die \u00DCbung ist erfolgreich beendet, wenn alle angegebenen Elemente von "B" richtig zugeordnet wurden. edit_act_showAllArrows=Alle Pfeile anzeigen edit_act_alt=Alternativer Text: edit_act_alt_tooltip=Angezeigte Inhalte der zu bearbeitenden und nicht zu bearbeitenden Zellen edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Alternativen Text bearbeiten edit_act_grid=Tafel edit_act_grid_A=Tafel A edit_act_grid_B=Tafel B edit_act_grid_layout=Layout edit_act_grid_relationship=Verh\u00E4ltnis edit_seq_activity_header=\u00DCbung edit_seq_tag_header=Textmarke edit_seq_jump_header=Gehe zu edit_seq_activity=\u00DCbung: edit_seq_tag=Textmarke: edit_seq_description=Beschreibung: edit_seq_auto=Automatisch zur n\u00E4chsten \u00DCbung edit_seq_delay=Verz\u00F6gerung: edit_seq_action_fwd=Weiter edit_seq_action_back=Zur\u00FCck edit_seq_action_jump=Gehe zu... edit_seq_action_stop=Stopp edit_seq_action_return=Zur\u00FCck zu... edit_seq_action_exit=JClic verlassen edit_seq_arrow_fwd=Pfeil vorw\u00E4rts: edit_seq_arrow_back=Pfeil zur\u00FCck: edit_seq_action=Aktion: edit_seq_button_enabled=Schaltfl\u00E4che anzeigen edit_seq_project=JClic Projekt: edit_act_absolute=Absolute Position edit_act_absolute_tooltip=Position des Objekts durch XY-Koordinaten definiert edit_act_location=Position: edit_seq_newElement=Neues Element der Lernsequenz... edit_seq_newElement_tooltip=Neues Element in Lernsequenz einf\u00FCgen edit_seq_newElement_msg=\u00DCbung f\u00FCr neues Element der Lernsequenz ausw\u00E4hlen. edit_seq_newElement_error_noAct=Es kann keine neue Element der Lernsequenz ohne \u00DCbungen erstellt werden! edit_seq_newElement_error_emptyList=Projekt enth\u00E4lt keine \u00DCbungen. In einem leeren Projekt k\u00F6nnen keine Lernsequenzen erstellt werden. edit_seq_jump_msg=Ziel: edit_seq_jump_title=Ziel edit_act_newActivity_tooltip=Neue \u00DCbung zum Projekt hinzuf\u00FCgen edit_act_prompt_class=\u00DCbungstyp: edit_act_prompt_name=Name: edit_act_newActivity_msg=W\u00E4hlen Sie einen \u00DCbungstyp aus und geben Sie einen Namen f\u00FCr die neue \u00DCbung ein: edit_act_newActivity_error_noAct=Sie m\u00FCssen einen \u00DCbungstyp ausw\u00E4hlen! edit_act_newActivity_error_noName=Sie m\u00FCssen einen \u00DCbungsnamen angeben! edit_act_newActivity_error_creating=\u00DCbung kann nicht erstellt werden! edit_act_newActivity_class=Bezeichnung der Java-Klasse: edit_text_act_format=Format edit_text_act_answer=Antwort edit_text_act_popup=Pop up-Fenster edit_text_act_answer_label=G\u00FCltige Antworten: edit_list_newElement_tooltip=Neues Element aus der Liste hinzuf\u00FCgen edit_list_editElement_tooltip=Ausgew\u00E4hltes Element bearbeiten edit_list_deleteElement_tooltip=Ausgew\u00E4hltes Element aus der Liste l\u00F6schen edit_list_upBtn_tooltip=Hinauf verschieben edit_list_downBtn_tooltip=Hinunter verschieben edit_list_newValue=Neuer Text: edit_list_addElement=Neues Element aus der Liste hinzuf\u00FCgen edit_list_modifyValue=Textauswahl bearbeiten edit_text_act_target=Ziel edit_text_act_maxLen=Maximale L\u00E4nge: edit_text_act_maxLen_tooltip=H\u00F6chstanzahl der Buchstaben in der Antwort edit_text_act_fillingChar=Schriftart f\u00FCr L\u00FCcken edit_text_act_fillingChar_tooltip=Schriftart zum Ausf\u00FCllen der L\u00FCcken ausw\u00E4hlen edit_text_act_iniLen=Ausgangsl\u00E4nge: edit_text_act_iniLen_tooltip=Anzahl der Buchstaben, die zu Beginn der \u00DCbung angezeigt werden. edit_text_act_iniText=Starttext: edit_text_act_iniText_tooltip=Text, der bei Beginn der \u00DCbung in der L\u00FCcke angezeigt wird. edit_text_act_list=Liste mit Optionen anzeigen: edit_text_act_list_tooltip=Liste mit Optionen anzeigen, aus denen der User ausw\u00E4hlen kann. edit_text_act_check_title=Evaluationskriterien edit_text_act_popup_no=Keine Pop-up-Fenster edit_text_act_popup_always=Pop up-Fenster automatisch \u00F6ffnen edit_text_act_popup_onError=Pop up-Fenster bei Fehlern edit_text_act_popup_onDemand=Pop up-Fenster mit F1 \u00F6ffnen edit_text_act_popup_type=Typ: edit_text_act_popup_delay=Verz\u00F6gerung vor \u00D6ffnen des Pop up-Fensters: edit_text_act_popup_maxTime=Max. Dauer: edit_text_act_popup_onlyPlay=Nur Sound edit_text_act_err_noSelection=Textfragment ausw\u00E4hlen um neuen Zieltext zu erstellen! edit_text_act_err_badCharInSelection=Zieltext darf keinen Umbruch oder oder Einzug beinhalten edit_text_act_err_nestedTargets=Verschachtelung nicht erlaubt! edit_text_act_err_cellInTarget=Zieltext darf keine Tabelle beinhalten! edit_text_act_pageBgColor=Hintergrundfarbe: edit_text_act_editStylesBtn=Dokumentlayout bearbeiten edit_text_act_mainStyle=Standardeigenschaften: edit_text_act_tabSpc=Tabulatorabstand: edit_text_act_tabSize=Abstand zwischen Tabstopps: edit_text_act_colors=Farben: edit_text_act_targetStyle=Zielfarben: edit_text_act_errorStyle=Farbe f\u00FCr falsche Eingabe: edit_text_act_preview=Voransicht: edit_text_act_styleSample_default_start=Standardtext edit_text_act_styleSample_target=Ziel edit_text_act_styleSample_error=Fehler edit_text_act_styleSample_default_fill=Standardtext edit_text_act_styleSample_default_end=Standardtext edit_text_act_warnDeleteTarget=Achtung: Dieser Schritt l\u00F6scht das ausgew\u00E4hlte Ziel. M\u00F6chten Sie fortfahren? edit_text_act_prevScreen_title=Vorherige Ansicht... edit_text_act_prevScreen_no=Vor \u00DCbungsstart keinen Text anzeigen edit_text_act_prevScreen_original=Kompletten \u00DCbungstext anzeigen edit_text_act_prevScreen_special=Diesen Text anzeigen: edit_text_act_prevScreen_time=Max. Dauer: edit_text_act_edit_target=Ziel... edit_text_act_checkButton_show=Schaltfl\u00E4che "Korrigieren" anzeigen edit_text_act_checkButtonText=Text der Schaltfl\u00E4che: edit_text_act_checkCase=Gro\u00DF- und Kleinschreibung \u00FCberpr\u00FCfen edit_text_act_checkAccents=Akzente und Sonderzeichen ber\u00FCcksichtigen edit_text_act_checkPunct=Satzzeichen ber\u00FCcksichtigen edit_text_act_checkDoubleSpc=Mehrfach-Leerstellen zulassen edit_text_act_checkOptions=Kriterien edit_text_act_checkAutoJump=Nach Ausf\u00FCllen zur n\u00E4chsten Frage weitergehen edit_text_act_checkForceOk=Nur bei richtiger Antwort weiter edit_text_act_checkDetail=Falsche W\u00F6rter buchstabieren edit_text_act_checkDetail_params=Parameter der Algorhythmen analysieren: edit_text_act_checkDetail_steps=Schritte: edit_text_act_checkDetail_field=Bearbeitungsfeld: edit_text_act_defaultCheckButtonText=Check edit_text_act_advancedCorrectionOptions=Analyse der Antworten edit_text_act_check_bt=Korrektur... edit_text_act_checkButton=Schaltfl\u00E4che "Korrigieren" edit_text_act_checkProgress=Fortschritt edit_text_act_typeBtn=Typ... edit_text_act_orderParagraphs=Abs\u00E4tze ordnen edit_text_act_orderWords=W\u00F6rter ordnen edit_text_act_order_amongstPar=W\u00F6rter in Abs\u00E4tzen vermischen edit_text_act_type_title=\u00DCbungstyp edit_text_act_warnChangeType=Durch diesen Schritt l\u00F6schen Sie alle aktuellen Zieldefinitionen. Wollen Sie fortfahren? edit_text_act_identWords=W\u00F6rter finden edit_text_act_identChars=Buchstaben finden edit_media_change_name=Umbenennen... edit_media_change_file=Datei \u00E4ndern... edit_media_includeInZip=Gezippt speichern edit_media_type=Medientyp: edit_media_size=Dateigr\u00F6\u00DFe: edit_media_show_type=Dateityp: edit_media_preview=Objekt in der Vorschau ansehen edit_media_preview_tooltip=Mediendatei in der Vorschau ansehen edit_media_rename=Datei umbenennen edit_media_rename_title=Umbenennen edit_media_rename_prompt=Neuer Name: edit_media_rename_invalid=Ung\u00FCltiger Dateiname! edit_media_rename_exists=Datei gleichen Namens bereits vorhanden. Jede Datei muss einen eigenen unverwechselbaren Namen besitzen. edit_media_chfile_invalid=Ung\u00FCltiger Dateiname! err_media_chfile_different=Gleicher Dateityp erforderlich edit_media_font_error=Schrift kann nicht geladen werden! edit_media_save_file=Datei speichern (entzippen) edit_media_refresh_file=Multimediadatei durch Datei aktualisieren edit_media_warn_zipFileNotExternal=Das ist keine "echte" Datei, sondern ein Objekt aus einem ZIP-Ordner. Um diese Anwendung nutzen zu k\u00F6nnen, muss eine gleichnamige Datei im selben Ordner wie die gezippte Datei befinden. edit_activities=\u00DCbungen edit_sequences=Sequenzen edit_media=Mediathek edit_media_tooltip=Grafiken und andere Multimediadateien des Projekts verwalten edit_activities_tooltip=\u00DCbungen zu Projekt erstellen und bearbeiten edit_sequences_tooltip=Lernsequenzen erstellen und bearbeiten edit_project_title=Titel: edit_project_title_tooltip=Projekttitel edit_project=Projekt edit_project_tooltip=Projekteigenschaften bearbeiten edit_project_description=Beschreibung: edit_project_description_tooltip=Kurze Projektbeschreibung edit_project_area=F\u00E4cher: edit_project_area_tooltip=F\u00E4cher: edit_project_level=Levels: edit_project_level_tooltip=Lehrplanbezug des Projekts edit_project_descriptors=Schl\u00FCsselw\u00F6rter: edit_project_descriptors_tooltip=Schl\u00FCsselw\u00F6rter (durch Beistriche getrennt) edit_project_languages=Sprachen: edit_project_languages_tooltip=Projektsprachen edit_project_languages_modify=Spracheinstellung \u00E4ndern edit_project_languages_add=Spache hinzuf\u00FCgen: edit_project_languages_select=ISO-639 Sprachcodes: edit_project_authors=Autor/innen: edit_project_authors_tooltip=Projektteilnehmer/innen edit_project_author_name=Name: edit_project_author_mail=e-Mail: edit_project_author_rol=Funktion: edit_project_author_organization=Organisation: edit_project_author_comments=Kommentar: edit_project_author_url=URL: edit_project_author_name_tooltip=Name des Autors/der Autorin (muss angegeben werden) edit_project_author_mail_tooltip=e-Mail des Autors/der Autorin (kann frei gelassen werden) edit_project_author_rol_tooltip=Projektfunktion: Autor/in, Mitarbeiter/in, Zeichnungen, Sound ... (kann frei bleiben) edit_project_author_organization_tooltip=Schule, Universit\u00E4t, Verein ... (kann frei bleiben) edit_project_author_url_tooltip=Private Homepage (kann frei gelassen werden) edit_project_author_comments_tooltip=Feld f\u00FCr weitere Informationen (kann frei bleiben) edit_project_author_info=Zum Autor/zu Autorin: edit_project_author_add=Autor/in zur Liste hinzuf\u00FCgen edit_project_author_edit=Autor Info bearbeiten edit_project_org_name=Name: edit_project_org_name_tooltip=Name der Schule edit_project_org_mail=e-Mail: edit_project_org_mail_tooltip=e-Mail Adresse der Schule edit_project_org_url=URL: edit_project_org_url_tooltip=Schulhomepage edit_project_org_address=Adresse: edit_project_org_address_tooltip=Postadresse: edit_project_org_pc=PLZ: edit_project_org_pc_tooltip=Postleitzahl edit_project_org_city=Stadt: edit_project_org_city_tooltip=Schulstandort edit_project_org_country=Land: edit_project_org_state=Staat: edit_project_org_comments=Kommentar: edit_project_org=Schule/n: edit_project_org_tooltip=Am Projekt beteiligte Partnerschule/n oder -institution/en edit_project_org_info=Infos zur Organisation: edit_project_org_add=Organisation hinzuf\u00FCgen edit_project_org_edit=Daten der Organisation bearbeiten edit_project_org_country_tooltip=Land, Bundesstaat, Bundesland... edit_project_org_state_tooltip=Bundesland, Gemeinde, Region... edit_project_org_comments_tooltip=Zusatzinformationen... edit_project_rev_date=Datum: edit_project_rev_date_tooltip=\u00DCberarbeitungsdatum edit_project_rev_authors=Autor/innen: edit_project_rev_authors_tooltip=Autor/innen der \u00DCberarbeitung edit_project_rev_description=Beschreibung: edit_project_rev_description_tooltip=Kurze Beschreibung der \u00C4nderungen edit_project_rev_comments=Kommentar: edit_project_rev_comments_tooltip=Zus\u00E4tzliche Informationen edit_project_rev=\u00DCberarbeitungen: edit_project_rev_tooltip=Protokoll der wichtigsten am Projekt vorgenommenen \u00C4nderungen edit_project_rev_add=\u00DCberarbeitungsstatistik hinzuf\u00FCgen edit_project_rev_edit=\u00DCberarbeitungsstatistik bearbeiten edit_project_rev_info=\u00DCberarbeitungsdatum edit_media_objects=Objekte edit_media_object=Objekt edit_evsounds_start=Start der \u00DCbung: edit_evsounds_click=Objekt anklicken: edit_evsounds_actionError=Falsche Aktion: edit_evsounds_actionOk=Korrekte Aktion: edit_evsounds_finishedError=\u00DCbung fehlerhaft beendet: edit_evsounds_finishedOk=\u00DCbung korrekt absolviert edit_project_rev_err_nodesc=Fehler: Formularfeld muss ausgef\u00FCllt werden! edit_evsounds_dlg_title=Ereignissounds bearbeiten edit_project_evsounds=Ereignissounds: edit_project_evsounds_tooltip=Spezielle Sounds f\u00FCr verschiedene Ereignisse einsetzen edit_act_evsounds=Ereignissounds: edit_act_evsounds_tooltip=Spezielle Sounds f\u00FCr jede JClic-Aktion edit_evsounds_default=Standardsound edit_evsounds_disabled=deaktiviert edit_evsounds_chk_tooltip=Sound f\u00FCr dieses Ereignis aktivieren oder deaktivieren. edit_evsounds_select_tooltip=Ausgew\u00E4hlten Sound f\u00FCr dieses Ereignis ausw\u00E4hlen oder Standardsound verwenden action_newProject_caption=Neues Projekt... action_newProject_keys=NN action_newProject_tooltip=Neues JClic-Projekt erstellen edit_arith_op_from=Von: edit_arith_op_from_tooltip=Mindestwert des Operators edit_arith_op_to=Bis: edit_arith_op_to_tooltip=H\u00F6chstwert des Operators edit_arith_op_with=Mit: edit_arith_op_with_tooltip=Wenn aktiv, kann der Operator auch diesen Wert haben edit_arith_op_fromList=Auswahl aus der Liste edit_arith_op_fromList_tooltip=Anzeigen m\u00F6glicher Werte des Operators edit_arith_op_decimals=Dezimalen: edit_arith_op_decimals_tooltip=Anzahl der Dezimalstellen des Operanden edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=Erster Operand edit_arith_secondOp=Zweiter Operand edit_arith_title=Arith2 f\u00FCr JClic edit_arith_operations=Rechnungsarten: edit_arith_operations_tooltip=Rechnungsart ausw\u00E4hlen edit_arith_operations_plus=Addieren edit_arith_operations_minus=Subtrahieren edit_arith_operations_multiply=Multiplizieren edit_arith_operations_divide=Dividieren edit_arith_unknown=Unbekannte: edit_arith_unknown_tooltip=Element ausw\u00E4hlen, das eine Unbekannte sein soll edit_arith_unknown_aobx=Resultat ist eine Unbekannte edit_arith_unknown_aoxr=Zweiter Operator ist eine Unbekannte edit_arith_unknown_xobr=Erster Operator ist eine Unbekannte edit_arith_unknown_axbr=Operation ist eine Unbekannte edit_arith_unknown_invert=Ergebnis an den Anfang des Ausdrucks schreiben edit_arith_result=Ergebnis edit_arith_result_notCarry=Nicht \u00FCbersteigen edit_arith_result_random=Zufallsprinzip edit_arith_result_asc=Aufsteigend edit_arith_result_order=Nach Ergebnis sortieren: edit_arith_result_desc=Absteigend edit_arith_result_avoidDup=Duplikate vermeiden edit_arith_cond=Bedingungen: edit_arith_cond_ind=Egal edit_arith_cond_agb=Der erste Operator muss gr\u00F6\u00DFer sein als der zweite edit_arith_cond_alb=Der erste Operator muss kleiner sein als der zweite edit_arith_cond_tooltip=Andere Bedingungen edit_autocp=Automatischer Content-Generator: edit_autocp_tooltip=Content-Generator Typ f\u00FCr diese \u00DCbung ausw\u00E4hlen. edit_autocp_block=Content-Generator edit_autocp_btn=Einstellungen... edit_autocp_btn_tooltip=Einstellungen des Content-Providers konfigurieren edit_data=Daten bearbeiten edit_act=\u00DCbung bearbeiten edit_acp=Content-Provider bearbeiten edit_acp_err_creating=Fehler beim Eintragen des Content-Providers! edit_project_author_group=Urheber edit_project_description_block=Beschreibung edit_project_ui_block=Benutzeroberfl\u00E4che edit_act_description=Beschreibung: m_Edit=Bearbeiten m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=Neue \u00DCbung... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Einf\u00FCgen m_Insert_Mnemonic=I m_View=Anzeigen m_View_Mnemonic=V action_editProject_caption=Projekt action_editProject_keys=PP action_editProject_tooltip=Projekteinstellungen bearbeiten action_editMedia_caption=Multimedia action_editMedia_keys=MM action_editMedia_tooltip=Multimediadateien der Projektbibliothek bearbeiten action_editActivities_caption=\u00DCbungen action_editActivities_keys=AA action_editActivities_tooltip=\u00DCbungen bearbeiten action_editSeq_caption=Sequenzen action_editSeq_keys=SS action_editSeq_tooltip=\u00DCbungssequenzen bearbeiten warn_project_modified=Am aktuellen Projekt wurden \u00C4nderungen vorgenommen. \u00C4nderungen speichern? edit_project_descriptors_block=Schl\u00FCsselw\u00F6rter edit_media_new=Neues Multimedia Objekt edit_media_new_tooltip=Neue Grafik oder Multimediadatei zur Mediathek hinzuf\u00FCgen edit_media_new_keys=M* edit_seq_threshold=Punktelimit: edit_seq_threshold_tooltip_up=Hier weiter, wenn Gesamtpunktezahl gleich oder h\u00F6her als... edit_seq_time=Zeitlimit: edit_seq_time_tooltip_up=Hier weiter nur wenn \u00DCbungsdauer nicht l\u00E4nger als... edit_seq_threshold_tooltip_down=Hier weiter, wenn Gesamtpunktezahl geringer als... edit_seq_time_tooltip_down=Hier weiter, wenn Bearbeitungsdauer l\u00E4nger als... edit_seq_condJump=If-Anweisung edit_seq_condJump_tooltip=Spezielle Erfordernisse f\u00FCr Wechsel der Schwierigkeitsstufe angeben edit_seq_condJump_upper_tooltip=Voraussetzungen f\u00FCr Vorr\u00FCcken auf h\u00F6here Stufe angeben edit_seq_condJump_lower=Stufe tiefer: edit_seq_condJump_upper=Stufe h\u00F6her: edit_seq_condJump_lower_tooltip=Voraussetzungen f\u00FCr Wechsel auf tiefere Stufe angeben edit_seq_action_tooltip_fw=Der Schaltfl\u00E4che "Weiter" zugewiesene Aktion edit_seq_action_tooltip_bk=Der Schaltfl\u00E4che "Zur\u00FCck" zugewiesene Aktion edit_seq_jump_tooltip=Ziel angeben edit_seq_action_tooltip=Vorgeschriebene Aktion edit_seq_activity_tooltip=Diesem Teil der Sequenz zugewiesene \u00DCbung edit_seq_tag_tooltip=Textmarke dient zur Identifikation des Elements der Lernsequenz (kann frei bleiben) edit_seq_description_tooltip=Beschreibung des Elements der Lernsequenz (kann frei bleiben) edit_seq_button_enabled_tooltip=Pfeiltaste aktivieren/deaktivieren edit_seq_auto_tooltip=Automatisch zur n\u00E4chsten \u00DCbung, wenn eine \u00DCbung beendet ist edit_seq_delay_tooltip=Wartezeit in Sekunden vor automatischem Wechsel edit_color_dlgTitle=Farbe ausw\u00E4hlen edit_media_renaming=Datei wird umbenannt. Bitte warten... edit_act_cell_width=Breite: edit_act_cell_width_tooltip=Zellbreite (in Pixel) edit_act_cell_height=H\u00F6he: edit_act_cell_height_tooltip=Zellh\u00F6he (in Pixel) edit_act_hiddenWords=Versteckte W\u00F6rter: edit_act_hiddenWords_tooltip=Liste der versteckten W\u00F6rter auf der Tafel anzeigen edit_act_wordSearch_panelB=Tafel B verwenden edit_act_wordSearch_panelB_tooltip=Der Inhalt einer zweiten Tafel wird angezeigt, sobald W\u00F6rter gefunden sind edit_act_shaper_tooltip=Form ausw\u00E4hlen, die f\u00FCr die Anzeigetafel verwendet werden soll. edit_act_num_cols_tooltip=Spaltenanzahl der Tabelle edit_act_num_rows_tooltip=Zeilenanzahl der Tabelle edit_act_wildTransparent=Transparente Begrenzungen edit_act_wildTransparent_tooltip=Begrenzungen (Blackboxes) als transparente L\u00FCcken anzeigen edit_act_behavior_scramble_times=Versuche: edit_act_behavior_scramble_times_tooltip=Erlaubte Mischversuche edit_act_copy_title=Eigenschaften in folgenden Ordner kopieren.... edit_act_copy_attributes=Eigenschaften edit_act_copy_dest=Anwenden auf: edit_act_copy_style_main=Hauptfenster edit_act_copy_style_play=Spielfenster edit_act_copy_activities=\u00DCbungen, die bearbeitet werden sollen: edit_act_copyAttributes=Eigenschaften der Kopie edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Eigenschaften der aktuellen \u00DCbung auf andere \u00DCbungen \u00FCbertragen edit_new_project_name=Name des Projekts: edit_new_project_name_tooltip=Kurzer, aussagekr\u00E4ftiger Name des Projekts edit_new_project_filename=Dateiname: edit_new_project_filename_tooltip=Name der Projektdatei ohne Dateierweiterung edit_new_project_folder=Ordner: edit_new_project_folder_tooltip=Name des Ordners, in dem das Projekt gespeichert werden soll edit_new_project_folder_browse=Durchsuchen... edit_new_project_title=Neues JClic Projekt erstellen edit_new_project_err_empty=Fehler: Projekt, Datei und Ordner m\u00FCssen g\u00FCltige Bezeichnungen haben. Namenfelder d\u00FCrfen nicht frei bleiben. edit_new_project_warning_noEmptyFolder=Dieser Ordner enth\u00E4lt bereits ein anderes Clic 3.0 oder JClic Projekt. Um Verwechslungen zu vermeiden, wird empfohlen, jedes einzelne Projekt in einem separaten Ordner zu speichern. Dies ist allerdings nicht verpflichtend. M\u00F6chten Sie das neue Projekt wirklich in diesem Ordner erstellen? edit_new_project_err_folderCreation=Fehler: Gew\u00FCnschter Ordner kann nicht erstellt werden! edit_act_copy_err_noSelection=Fehler: Keine \u00DCbung ausgew\u00E4hlt! Um diese Funktion n\u00FCtzen zu k\u00F6nnen, m\u00FCssen Sie aus der Liste die Aktivit\u00E4t(en) ausw\u00E4hlen, auf die die gew\u00FCnschten Eigenschaften angewendet werden sollen. edit_act_copy_action_prefix=Eigenschaften in folgenden Ordner kopieren: edit_act_copy_margin=Rand edit_act_copy_bgColor=Hintergrundfarbe edit_act_copy_gradient=Farbverlauf edit_act_copy_bgImage=Hintergrundbild edit_act_copy_border=Rahmen edit_act_copy_transparentBg=Transparenter Hintergrund edit_act_copy_position=Position edit_act_copy_messages=Nachrichten edit_act_copy_messages_ini=Erscheinungsbild der Nachricht am Beginn edit_act_copy_messages_end=Erscheinungsbild der Nachricht am Ende edit_act_copy_messages_err=Erscheinungsbild der Fehlermeldungen edit_act_copy_reports=Berichte edit_act_copy_rep_include=Alle Aktionen in Berichte aufnehmen edit_act_copy_rep_actions=Aktionen aufzeichnen edit_act_copy_interface=Benutzeroberfl\u00E4che edit_act_copy_skin=Skin edit_act_copy_evSounds=Sounds: edit_act_copy_counters=Z\u00E4hler edit_act_copy_cTime=Zeituhr edit_act_copy_maxTime=Maximale Dauer edit_act_copy_cTries=Versuche z\u00E4hlen edit_act_copy_maxTries=H\u00F6chstanzahl zul\u00E4ssiger Versuche edit_act_copy_cScore=Z\u00E4hler edit_act_copy_scramble=Mischversuche edit_act_copy_buttons=Buttons edit_act_copy_btnHelp=Hilfetaste edit_act_copy_btnInfo=Info-Button edit_act_copy_grids=Tafeln edit_act_copy_gridA=Stil von Tafel A edit_act_copy_gridB=Stil von Tafel B edit_act_copy_textGrid=Erscheinungsbild der Textfelder edit_act_copy_text=Textbasierte \u00DCbungen edit_act_copy_fontFace=Schriftart edit_act_copy_fontSize=Schriftgr\u00F6\u00DFe edit_act_copy_fontStyle=Schriftstil edit_act_copy_textColour=Standard Textfarbe edit_act_copy_textTargetColour=Farbe der Zielelemente edit_act_copy_textErrorColour=Anzeigefarbe der Fehler edit_act_copy_tabSpace=Tabstoppposition edit_act_copy_messages_prev=Erscheinungsbild der vorhergehenden Nachricht edit_act_changeType=\u00DCbungstyp \u00E4ndern edit_act_newActivity_class_tooltip=Voller Name der Java-Klasse, die zum Erstellen der \u00DCbung verwendet wurde (nur f\u00FCr fortgeschrittene User!) edit_act_newActivity_other=Andere... edit_act_newActivity_info=Fortgeschrittene User k\u00F6nnen auch eigene, unregistrierte Typen von JClic-\u00DCbungen erstellen. Schreiben Sie nur das Java Paket und den vollen Namen der Java-Klasse darunter (z.B. "com.acme.activities.FooActivity"). \u00DCbungs-Klassen m\u00FCssen die Endung edu.xtec.jclic.Activity aufweisen und mit dem JVM classloader zu \u00F6ffnen sein. edit_act_newActivity_name=Name der \u00DCbung: edit_act_newActivity_name_tooltip=Jede \u00DCbung muss einen eigenen, unverwechselbaren Namen innerhalb des Projekts besitzen edit_act_changeType_warning=

Warning:Warnung: Durch das \u00C4ndern des \u00DCbungstyps k\u00F6nnen aktuelle \u00DCbungseigenschaften und Objekte verloren gehen.

 

applet_codebase=JClic-Quellcode: applet_codebase_tooltip=URL verweist auf Folder mit JClic-Dateien und Skripts applet_prev_text=HTML-Code davor: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Text oder HTML-Code vor Erscheinen des Applets applet_post_text=HTML-Code danach: applet_post_text_tooltip=Text oder HTML-Code nach Erscheinen des Applets applet_size=Applet-Format: applet_size_tooltip=Breite und H\u00F6he des Applets (absolut oder in Prozenten). applet_page_title=Seitentitel: applet_page_title_tooltip=Textanzeige in der Kopfzeile des Browserfensters applet_created_info=Webseite "%s" erfolgreich erstellt applet_created_prompt=Im Browser ansehen? action_createHTML_caption=HTML-Seite erstellen... applet_create_title=HTML-Seite mit JClic-Applet erstellen action_createHTML_tooltip=HTML-Seite mit Applet erstellen, das das aktuelle Projekt enth\u00E4lt applet_filename=Dateiname: applet_filename_tooltip=Bezeichnung der HTML-Seite, die erstellt werden soll action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Standardeinstellungen bei der Erstellung von Webseiten verwenden applet_bgcolor=Hintergrundfarbe: applet_bgcolor_tooltip=Hintergrundfarbe der HTML-Seite applet_centered=Zentriert applet_centered_tooltip=Java-Applet horizontal zentrieren applet_width_tooltip=Applet-Breite (absolut oder in Prozenten) applet_height_tooltip=Applet-H\u00F6he (absolut oder in Prozenten) applet_exitUrl=Nach dem Schlie\u00DFen folgende Datei aufrufen: applet_exitUrl_tooltip=URL, der nach dem Schlie\u00DFen von JClic ge\u00F6ffnet werden soll applet_infoFrame=Name des Info-Frames: applet_infoFrame_tooltip=Name des Frames, der ge\u00F6ffnet werden soll, um die Infos anzuzeigen. action_createInstaller_caption=Project-Installer erstellen... action_createInstaller_keys=I* action_createInstaller_tooltip=Projekt-Installer Script f\u00FCr JClic-Player erstellen installer_caption=Projekt Installer Skript bearbeiten installer_title=Titel: installer_title_tooltip=Projekttitels, der von Installer angezeigt wird installer_authors=Autor/innen: installer_authors_tooltip=Autor/innen des Projekts (Kurztext) installer_folder=Ordner: installer_folder_tooltip=Automatisch vorgeschlagener Ordnername installer_files=Dateien, die kopiert werden sollen: installer_files_tooltip=Dateien, die vom Installer kopiert werden sollen installer_files_available=Verf\u00FCgbare Dateien installer_files_selected=Ausgew\u00E4hlte Dateien installer_files_add=>> add >> installer_files_add_tooltip=Ausgew\u00E4hlte Datei zu der Liste hinzuf\u00FCgen installer_files_remove=<< remove << installer_files_remove_tooltip=Ausgew\u00E4hlte Datei aus der Liste entfernen installer_button=Button f\u00FCr Start installer_button_tooltip=Eigenschaften des Buttons, der in der Projektbibliothek angezeigt wird installer_button_project=Hauptprojekt: installer_button_project_tooltip=JClic-Projekt durch Anklicken der Schaltfl\u00E4che starten installer_button_text=Label: installer_button_text_tooltip=Kurzer Text, der auf dem Button angezeigt werden soll installer_button_icon=Symbol: installer_button_icon_tooltip=Grafik als Schaltfl\u00E4chensymbol. Frei lassen, wenn JClic-Standard-Schaltfl\u00E4che verwendet werden soll. installer_button_description=Beschreibung installer_button_description_tooltip=Bei Klick auf Schaltfl\u00E4che angezeigte Kurzinfo installer_error_noTitle=Fehler: Projekttitel fehlt installer_error_noBaseFolder=Fehler: Ordnerbezeichnung fehlt installer_error_noFilesSelected=Fehler: Keine Dateien ausgew\u00E4hlt installer_error_noButtonText=Fehler: Text f\u00FCr Startbutton fehlt installer_error_projectNotInFiles=Fehler: Dem Startbutton zugewiesenes Projekt scheint in der Liste der Dateien, die kopiert werden sollen, nicht auf applet_page_full=Ganzseitiges Applet applet_page_mixed=Benutzerdefiniertes Applet edit_text_align_left=Text linksb\u00FCndig ausrichten edit_text_align_center=Text zentrieren edit_text_align_right=Text rechtsb\u00FCndig ausrichten edit_text_act_target_toggle=Ziel definieren oder l\u00F6schen edit_text_act_insertCell=Zelle einf\u00FCgen edit_text_act_content=Inhalt edit_text_act_style=Stil edit_cell_size=Zellgr\u00F6\u00DFe: edit_project_orphanActivities=Folgende \u00DCbungen scheinen in keiner \u00DCbungssequenz des Projekts auf und werden daher auch nicht angezeigt: edit_project_orphanMedia=Folgende Multimediadateien werden in keiner \u00DCbung verwendet: edit_project_orphanActivities_prompt=M\u00F6chten Sie diese Dateien im Anschluss an die letzte \u00DCbungssequenz hinzuf\u00FCgen? edit_project_orphanMedia_prompt=M\u00F6chten Sie diese Dateien entfernen? edit_project_orphanMedia_title=Nicht ben\u00F6tigte Multimediadateien werden entfernt edit_project_orphanActivities_title=Verwaiste \u00DCbuingen edit_media_refreshAll=Multimediadateien aktualisieren edit_media_refreshAll_tooltip=Alle Multimediadateien aktualisieren edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Multimediadateien werden aktualisiert... edit_media_exportAll=Alle Multimediadateien exportieren edit_media_exportAll_tooltip=Inhalt aller Multimediadateien als Datei abspeichern edit_media_exportAll_keys=*X`* edit_shape_select=Ausw\u00E4hlen edit_shape_addPoint=Punkt hinzuf\u00FCgen edit_shape_deletePoint=L\u00F6schen edit_shape_drawRect=Rechteck zeichnen edit_shape_drawEllipse=Ellipse zeichnen edit_shape_drawPoly=Polygon zeichnen edit_shape_toLine=In Linie umwandeln edit_shape_toBezier=In Bezier-Kurve konvertieren edit_shape_toQuad=In quadratische Bezier-Kurve konvertieren edit_shape_rLeft=Links drehen edit_shape_rRight=Rechts drehen edit_shape_expand=Vergr\u00F6\u00DFern edit_shape_contract=Verbinden edit_shape_zoomIn=Zoom in edit_shape_zoomOut=Zoom out edit_shape_aproxPoints=N\u00E4hesten Punkt aufsuchen edit_shape_showPoints=Punkte anzeigen edit_shape_showPoints_tooltip=Punkte anzeigen/verbergen edit_shape_gridSize=Rastergr\u00F6\u00DFe: edit_shape_hideGrid=Raster anzeigen/verbergen edit_shape_magnetRadius=Magnetradius: edit_shape_elements=Ausgew\u00E4hlte Objekte edit_shape_elemName=Name des ausgew\u00E4hlten Objekts edit_shape_magnetRadius_tooltip=Aktionsradius des Magnet-Tools, wenn aktiviert edit_shape_gridSize_tooltip=Rastergr\u00F6\u00DFe edit_mc_activity=\u00DCbung: edit_mc_sequence=Sequenz: edit_mc_url=URL: edit_mc_project=Projekt: edit_mc_activity_selection=\u00DCbung ausw\u00E4hlen edit_mc_sequence_selection=Sequenz ausw\u00E4hlen edit_mc_err_nullContent=Unzureichende Eingabe! edit_act_arrowColor=Pfeilfarbe: edit_act_arrowColor_tooltip=Vom Editor zum Zeichnen der Pfeile verwendete Farbe (Abweichungen m\u00F6glich, da eine XOR-Bitmaskierung verwendet wird) edit_act_editActivity=Bearbeiten... edit_act_editActivity_tooltip=Ausgew\u00E4hlte \u00DCbung bearbeiten action_saveFileAs_caption=Speichern unter... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Aktuelles Projekt unter anderem Namen abspeichern edit_act_behavior_block=Verhalten edit_act_behavior=Verhalten edit_act_behavior_drag=schleppen edit_act_behavior_drag_tooltip=Drag objects instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=Mischversuche action_importActivities_caption=Importieren von \u00DCbungen action_importActivities_keys=I* action_importActivities_tooltip=bring Aktivit\u00E4t aus einem anderen Projekt ein import_warn_samefile=die Aktivit\u00E4ten k\u00F6nnen nur zwischen verschiedene Projekte importiert werden. Bitte w\u00E4hlen ein anderes Projekt aus. import_selectActivities=Bitte w\u00E4hlen Sie die \u00DCbungen aus, die Sie in das aktuelle Projekt einf\u00FCgen m\u00F6chten: import_importing=Wird eingebracht... import_checkdep=Abh\u00E4ngigkeiten werden \u00FCberpr\u00FCft... import_impmedia=Medien werden eingebracht: import_impact=Aktivit\u00E4t wird eingebracht: import_selectProject=bitte w\u00E4hlen das Jclic Projekt aus, von welchem Aktivit\u00E4ten eingebracht werden edit_tagRep_tags=Etikettenmarkierung edit_tagRep_tagStart=Startmarkierung edit_tagRep_tagStart_tooltip=verwendete Markierung zu Beginn des Etiketts edit_tagRep_tagEnd=Endmarkierung edit_tagRep_tagEnd_tooltip=Markierung am Ende des Etiketts edit_tagRep_file=Datei edit_tagRep_fileName=Datei oder URL: edit_tagRep_fileName_tooltip=Name oder URL der Datei, die die Werte enthalten, die die Etiketten ersetzen. edit_tagRep_charset=Zeichensatz: edit_tagRep_charset_tooltip=Zeichenkodierung in dieser Datei edit_tagRep_browseFile=Durchsuchen... edit_tagRep_browseFile_tooltip=Dateisystem durchsuchen edit_tagRep_title=Tag ersetzen edit_text_act_clearStylesBtn=L\u00F6sche Textstile edit_text_act_clearStylesPrompt=Warnung:\\diese Aktion wird die spezifischen Zeichensatzattribute l\u00F6schen, die zu diesem Dokument geh\u00F6ren und zur\u00FCck zum Hauptstil zur\u00FCcksetzen. Diese Aktion kann nicht r\u00FCckg\u00E4ngig gemacht werden. Wollen Sie fortfahren? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_zh_TW.properties0000644000175000017500000011654711377161311026447 0ustar #JClic Author messages edit_act_description_block=\u63CF\u8FF0 edit_act_name_tooltip=Name of the activity edit_act_name=\u540D\u7A31\uFF1A edit_act_description_tooltip=Description of the activity edit_act_reports_block=\u5831\u544A edit_act_includeInReports=Include this activity in reports edit_act_includeInReports_tooltip=Include the results of this activity in users' reports edit_act_code=\u7DE8\u78BC\uFF1A edit_act_code_tooltip=Optional code used to group and search in the reports database. edit_act_reportActions=Report user actions edit_act_reportActions_tooltip=Register the details of all the actions performed by users edit_act_counters_block=\u8A08\u6578\u5668 edit_act_timeCounter=\u8A08\u6642\u5668 edit_act_timeCounter_tooltip=\u986F\u793A/\u96B1\u85CF \u8A08\u6642\u5668 edit_act_actionsCounter=Tries counter edit_act_actionsCounter_tooltip=Show/hide the tries counter edit_act_scoreCounter=\u7A4D\u5206 edit_act_scoreCounter_tooltip=\u986F\u793A/\u96B1\u85CF \u7A4D\u5206 edit_act_maxTime=\u6700\u9577\u6642\u9593\uFF1A edit_act_maxTime_tooltip=Maximum time to to solve the activity, in seconds, or 0 for unlimited time. edit_act_countdown=Countdown edit_act_countdown_tooltip=The counter starts at m\u00E1ximum value, decreasing to 0. edit_act_maxActions=Max tries: edit_act_maxActions_tooltip=Maximum number of tries allowed, or 0 for unlimited tries. edit_act_buttons_block=\u6309\u9215 edit_act_helpBtn=\u5E6B\u52A9 edit_act_helpBtn_tooltip=\u986F\u793A/\u96B1\u85CF \u6309\u9215 edit_act_helpBtn_solution=\u986F\u793A\u7B54\u6848 edit_act_helpBtn_msg=\u986F\u793A\u8A0A\u606F\uFF1A edit_act_infoBtn=\u8CC7\u8A0A edit_act_infoBtn_tooltip=Show/Hide the button of information edit_act_infoBtn_url=Show this URL: edit_act_infoBtn_cmd=Execute this command: edit_act_infoBtn_url_tooltip=Web site address to show when click on the info button edit_act_infoBtn_cmd_tooltip=Command line to be executed on click to the info button. edit_act_mainWindow=Main window: edit_act_gameWindow=Game window: edit_act_margin=\u908A\u754C\uFF1A edit_act_margin_tooltip=Horizontal and vertical spacing between visual objects. edit_act_bgColor=\u80CC\u666F\u984F\u8272\uFF1A edit_act_bgColor_tooltip=\u6539\u8B8A\u80CC\u666F\u984F\u8272\u3002 edit_gradient_startColor=\u958B\u59CB\u984F\u8272\uFF1A edit_gradient_endColor=\u7D50\u675F\u984F\u8272\uFF1A edit_gradient_startColor_tooltip=\u9078\u64C7\u958B\u59CB\u7684\u984F\u8272 edit_gradient_endColor_tooltip=\u9078\u64C7\u7D50\u675F\u7684\u984F\u8272 edit_gradient_cycles=\u5FAA\u74B0: edit_gradient_cycles_tooltip=Number of repetitions of the gradient over the paint surface edit_gradient_orientation=\u65B9\u5411\uFF1A edit_gradient_orientation_tooltip=Gradient's orientation, measured in degrees over the horizontal edit_act_gradient=\u6F38\u5C64\uFF1A edit_act_gradient_tooltip=\u4F7F\u7528\u6F38\u5C64\u984F\u8272 edit_color_opacity=\u4E0D\u900F\u660E edit_color_opacity_tooltip=Set the color's alpha channel (opacity) value. edit_gradient_title=\u6F38\u5C64 edit_gradient_default=\u4F7F\u7528\u9810\u8A2D\u503C(\u7A7A\u6F38\u5C64) edit_act_image=\u5F71\u50CF\uFF1A edit_act_descriptionTab=\u63CF\u8FF0 edit_act_descriptionTab_tooltip=\u540D\u7A31\u53CA\u63CF\u8FF0 edit_act_tiledBgImg=\u62FC\u8CBC edit_act_tiledBgImg_tooltip=Paint all the surface with the image, repeating it along the X and Y axis as needed. edit_act_preview=\u9810\u89BD\uFF1A edit_act_border=\u908A\u6846 edit_act_border_tooltip=Draw a line border arround the window edit_act_transparent=\u900F\u660E edit_act_transparent_tooltip=\u8996\u7A97\u6709\u900F\u660E\u80CC\u666F edit_act_width=\u5BEC\u5EA6: edit_act_height=\u9AD8\u5EA6\uFF1A edit_act_width_tooltip=Width of the object, measured in pixels edit_act_height_tooltip=Height of the object, measured in pixels edit_act_centered=\u7F6E\u4E2D edit_act_centered_tooltip=The object will be centered over the main window edit_act_x=X: edit_act_x_tooltip=Absolute horizontal location edit_act_y=Y: edit_act_y_tooltip=Absolute vertical location edit_act_ui_block=\u4F7F\u7528\u8005\u4ECB\u9762 edit_act_image_tooltip=Select an image edit_act_text=\u6587\u5B57\uFF1A edit_act_text_tooltip=Text to be shown inside this object edit_font_face=Typeface: edit_font_size=\u5927\u5C0F\uFF1A edit_font_bold=\u7C97\u9AD4 edit_font_italic=\u659C\u9AD4 edit_font_underline=\u5E95\u7DDA edit_font_style=\u6A23\u5F0F: edit_cell_title=\u5132\u5B58\u683C\u5167\u5BB9 edit_act_messages=\u8A0A\u606F edit_act_msg_initial=\u958B\u59CB\u8A0A\u606F edit_act_msg_final=\u5B8C\u6210\u8A0A\u606F edit_act_msg_prev=\u524D\u4E00\u5247\u8A0A\u606F edit_act_msg_error=\u932F\u8AA4\u8A0A\u606F\uFF1A edit_act_msg_initial_tooltip=Message to be shown when the activity starts edit_act_msg_final_tooltip=Message to be shown when the activity is finished edit_act_msg_error_tooltip=Message to be shown when the activity ends with errors edit_act_msg_prev_tooltip=Message to be shown prior to the start of the activity (only in certain types of activities) edit_align=Align: edit_act_textColor=\u6587\u5B57\u984F\u8272\uFF1A edit_act_textColor_tooltip=Color used to draw text edit_act_shadowColor=\u9670\u5F71\u984F\u8272\uFF1A edit_act_shadowColor_tooltip=Color used for drawing the text's shadow, when appliable edit_act_shadow=\u9670\u5F71 edit_act_shadow_tooltip=Draw text with shadow edit_act_borderColor=\u908A\u6846\u984F\u8272\uFF1A edit_act_borderColor_tooltip=Color used to draw the cell's border edit_act_inactiveColor=Inactive state color: edit_act_inactiveColor_tooltip=Color used when the cell is disabled edit_act_altColor=Alternative color: edit_act_altColor_tooltip=Color used to draw the alternative content in solved cells. edit_cell_marked=Marked edit_cell_disabled=\u5DF2\u505C\u7528 edit_cell_alt=Alternative edit_cell_textMargin=Internal margin: edit_cell_textMargin_tooltip=Amount of space between cell's border and text. edit_cell_borderWidth=Border width: edit_cell_borderWidth_tooltip=Width of the stroke used to draw the standard border edit_cell_markerWidth=Marker width: edit_cell_markerWidth_tooltip=Width of the stroke used to draw the border when the cell is marked or selected edit_cell_alt_tooltip=Preview in "alternative" state edit_cell_disabled_tooltip=Preview in "disabled" state edit_cell_marked_tooltip=Preview in "marked" state edit_act_testAction=Preview activity edit_act_testAction_tooltip=Preview and test the activity edit_act_panels_description=Description edit_act_panels_description_tooltip=Title and description of the activity edit_act_panels_options=Options edit_act_panels_options_tooltip=Options of the activity edit_act_panels_frame=Window edit_act_panels_frame_tooltip=Aspect, size and position of the activity window edit_act_panels_messages=Messages edit_act_panels_messages_tooltip=Content of the activity messages edit_act_panels_panel=Panel edit_act_panels_panel_tooltip=Contents of the panel edit_style_title=Style edit_style_tooltip=Set the cells color, font and size edit_act_style=Style: edit_act_overlap=Avoid text overlap image edit_act_overlap_tooltip=Try to avoid text overlapping over image edit_media_exists_1=The file edit_media_exists_2=already exists in the media library! edit_act_shaper=Shaper: edit_act_shaper_err=Shaper error: edit_act_num_cols=Columns: edit_act_num_rows=Rows: edit_act_toothHeightFactor=Tooth height: edit_act_toothWidthFactor=Tooth width: edit_act_toothRandom=Random distribution edit_act_shaper_properties=Shaper properties edit_act_panels_text=Text edit_act_panels_text_tooltip=Text of the activity action_saveFile_caption=Save... action_saveFile_keys=SS action_saveFile_tooltip=Save the current project action_docTree_caption=Document tree... action_docTree_keys=T* action_docTree_tooltip=Show the project's document as a tree edit_docTree_title=Document tree edit_media_referencedBy=Referenced by: msg_prompt_loadReferences=Warning:

This project connects with other projects.
Do you want to explore the links and to load all the related files?

(It's advisable to answer YES when importing Clic 3.0 activities) edit_mc_type=Type: edit_mc_type_unknown=Unknown edit_mc_type_sound=Play sound edit_mc_type_video=Play video edit_mc_type_midi=Play MIDI edit_mc_type_cdaudio=Play CD audio edit_mc_type_record=Record sound edit_mc_type_play_recorded=Play recorded sound edit_mc_type_run_activity=Go to activity edit_mc_type_run_sequence=Go to sequence edit_mc_type_run_external=Run program edit_mc_type_url=Show URL edit_mc_type_exit=End edit_mc_type_return=Return edit_mc_level=Priority level: edit_mc_file=File: edit_mc_externalParam=Parameters: edit_mc_from=From: edit_mc_to=To: edit_mc_length=Max. length: edit_mc_recBuffer=Record tape: edit_mc_stretch=Stretch size edit_mc_location=Location: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=From: edit_mc_location_from_box=Cell edit_mc_location_from_window=Window edit_mc_location_from_frame=Frame edit_mc_loop=Loop playback edit_mc_autostart=Auto start edit_mc_catchmouse=Catch mouse edit_mc_title=Multimedia and active content edit_mc_label=Active content: edit_media_dlg_title=Multimedia object selection edit_media_title=Media library edit_mc_pos_cell=Centered over cell edit_mc_pos_window=Centered over window edit_mc_pos_absolute=Specify position: edit_tree_badFormat=Incorrect tree structure or data! edit_act_panels_controls=Controls edit_act_panels_controls_tooltip=Options for buttons and counters edit_act_class=Type: edit_act_gridLayout=Grid layout: edit_act_gridLayout_tooltip=Relative postion of the panels A and B. edit_act_inverseResolution=Inverse resolution edit_act_inverseResolution_tooltip=The activity is solved when all assigned elements of "B" are matched. edit_act_showAllArrows=Show all arrows edit_act_alt=Alternative content: edit_act_alt_tooltip=Content shown in solved cells and non-assigned cells. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Edit the alternative content edit_act_grid=Grid edit_act_grid_A=Grid A edit_act_grid_B=Grid B edit_act_grid_layout=Layout edit_act_grid_relationship=Relationship edit_seq_activity_header=activity edit_seq_tag_header=tag edit_seq_jump_header=jump to edit_seq_activity=Activity: edit_seq_tag=Label: edit_seq_description=Description: edit_seq_auto=Move on automatically edit_seq_delay=Delay: edit_seq_action_fwd=Go forward edit_seq_action_back=Go bak edit_seq_action_jump=Jump to... edit_seq_action_stop=Stop edit_seq_action_return=Return edit_seq_action_exit=Exit JClic edit_seq_arrow_fwd=Forward arrow: edit_seq_arrow_back=Back arrow: edit_seq_action=Action: edit_seq_button_enabled=Show button edit_seq_project=JClic Project: edit_act_absolute=Absolute position edit_act_absolute_tooltip=The object will be placed at the specified X and Y co-ordinates edit_act_location=Location: edit_seq_newElement=New sequence element... edit_seq_newElement_tooltip=Insert a new element into the activity sequence edit_seq_newElement_msg=Please select an activity for the new sequence element. edit_seq_newElement_error_noAct=Cannot create a new sequence element without activity! edit_seq_newElement_error_emptyList=This project has no activities! Unable to create sequence elements in an empty project. edit_seq_jump_msg=Jump target: edit_seq_jump_title=Jump target edit_act_newActivity_tooltip=Add a new activity to project edit_act_prompt_class=Type of activity: edit_act_prompt_name=Name: edit_act_newActivity_msg=Please select the type of activity to create and give it a name: edit_act_newActivity_error_noAct=You must select an activity type! edit_act_newActivity_error_noName=You must especify a name for the activity! edit_act_newActivity_error_creating=Unable to create activity! edit_act_newActivity_class=Java class name: edit_text_act_format=Format edit_text_act_answer=Answer edit_text_act_popup=Pop up edit_text_act_answer_label=Valid answers: edit_list_newElement_tooltip=Add a new list element edit_list_editElement_tooltip=Edit the selected list element edit_list_deleteElement_tooltip=Delete the selected list element edit_list_upBtn_tooltip=Move up edit_list_downBtn_tooltip=Move down edit_list_newValue=New text: edit_list_addElement=Add new list element edit_list_modifyValue=Modify selected text edit_text_act_target=Target edit_text_act_maxLen=Max. length: edit_text_act_maxLen_tooltip=Maximum amount of characters in the answer. edit_text_act_fillingChar=Filling character edit_text_act_fillingChar_tooltip=Character used to indicate the blank edit_text_act_iniLen=Initial length: edit_text_act_iniLen_tooltip=Number of filling chars that will be displayed at the beginning of the activity. edit_text_act_iniText=Initial text: edit_text_act_iniText_tooltip=Text displayed in the blank at the beggining of the activity. edit_text_act_list=Show a list of options: edit_text_act_list_tooltip=Display a list of options from which the user must select one. edit_text_act_check_title=Correction options edit_text_act_popup_no=No pop up edit_text_act_popup_always=Pop up automatically edit_text_act_popup_onError=Pop up in errors edit_text_act_popup_onDemand=Pop up with F1 edit_text_act_popup_type=Type: edit_text_act_popup_delay=Pop up delay: edit_text_act_popup_maxTime=Max. time: edit_text_act_popup_onlyPlay=Sound only edit_text_act_err_noSelection=You must select a fragment of text in order to create a new text target! edit_text_act_err_badCharInSelection=Target text cannot include paragraph returns nor tabs. edit_text_act_err_nestedTargets=Targets cannot nest! edit_text_act_err_cellInTarget=Targets cannot contain cells! edit_text_act_pageBgColor=Paper colour: edit_text_act_editStylesBtn=Edit document styles... edit_text_act_mainStyle=Main style: edit_text_act_tabSpc=Tab space: edit_text_act_tabSize=Spaces between tab marks: edit_text_act_colors=Colors: edit_text_act_targetStyle=Target colors: edit_text_act_errorStyle=Error colors: edit_text_act_preview=Preview: edit_text_act_styleSample_default_start=Standard text edit_text_act_styleSample_target=target edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=standard text edit_text_act_styleSample_default_end=standard text. edit_text_act_warnDeleteTarget=Warning: This action will supress the currently selected target. Do you want to proceed? edit_text_act_prevScreen_title=Previous screen... edit_text_act_prevScreen_no=Don't display any text before starting the activity edit_text_act_prevScreen_original=Display the complete text of the exercise edit_text_act_prevScreen_special=Display this text: edit_text_act_prevScreen_time=Max. time: edit_text_act_edit_target=Target... edit_text_act_checkButton_show=Show correction button edit_text_act_checkButtonText=Button text: edit_text_act_checkCase=Match case edit_text_act_checkAccents=Consider accents and special characters edit_text_act_checkPunct=Consider punctuation marks edit_text_act_checkDoubleSpc=Allow repeated spaces edit_text_act_checkOptions=Criteria edit_text_act_checkAutoJump=Move on to next target when filled in edit_text_act_checkForceOk=Move only after correct guess edit_text_act_checkDetail=Indicate mistakes letter by letter edit_text_act_checkDetail_params=Analysis algorithm parameters: edit_text_act_checkDetail_steps=Steps: edit_text_act_checkDetail_field=Exploration field: edit_text_act_defaultCheckButtonText=Check edit_text_act_advancedCorrectionOptions=Answer analysis edit_text_act_check_bt=Correction... edit_text_act_checkButton=Correction button edit_text_act_checkProgress=Progress edit_text_act_typeBtn=Type... edit_text_act_orderParagraphs=Order paragraphs edit_text_act_orderWords=Order words edit_text_act_order_amongstPar=Shuffle words amongst paragraphs edit_text_act_type_title=Activity type edit_text_act_warnChangeType=This action will clear all the existing targets. Do you want to proceed? edit_text_act_identWords=Identify words edit_text_act_identChars=Identify characters edit_media_change_name=Change name... edit_media_change_file=Change file... edit_media_includeInZip=Save into ZIP file edit_media_type=Media type: edit_media_size=File size: edit_media_show_type=Files of type: edit_media_preview=Preview media edit_media_preview_tooltip=Preview media resource edit_media_rename=Change resource name edit_media_rename_title=Rename edit_media_rename_prompt=New name: edit_media_rename_invalid=Invalid resource name! edit_media_rename_exists=There is another resource with this name! Each resource must have a unique name. edit_media_chfile_invalid=Invalid file! err_media_chfile_different=File must be of same type edit_media_font_error=Unable to load font! edit_media_save_file=Save file (extract from ZIP) edit_media_refresh_file=Update media content from file edit_media_warn_zipFileNotExternal=This is not a "real" file, but a object located into a ZIP container. In order to use this feature, a file with the same name must be present in the folder where the ZIP file is located. edit_activities=Activities edit_sequences=Sequences edit_media=Media library edit_media_tooltip=Manage images and other media files used in the project edit_activities_tooltip=Create and edit project activities edit_sequences_tooltip=Edit and create sequences of activities edit_project_title=Title: edit_project_title_tooltip=Project's title edit_project=Project edit_project_tooltip=Edit project properties edit_project_description=Description: edit_project_description_tooltip=General description of the project edit_project_area=Areas: edit_project_area_tooltip=Curricular areas of the project edit_project_level=Levels: edit_project_level_tooltip=Educational levels of the project edit_project_descriptors=Descriptors: edit_project_descriptors_tooltip=Descriptors of the project (separed with comma) edit_project_languages=Languages: edit_project_languages_tooltip=Languages used in the project edit_project_languages_modify=Change the selected language edit_project_languages_add=Add language edit_project_languages_select=ISO-639 language codes: edit_project_authors=Authors: edit_project_authors_tooltip=People involved in the creation of the project edit_project_author_name=Name: edit_project_author_mail=e-mail: edit_project_author_rol=Rol: edit_project_author_organization=Organization: edit_project_author_comments=Comments: edit_project_author_url=URL: edit_project_author_name_tooltip=Author's name (required) edit_project_author_mail_tooltip=Author's e-mail (optional) edit_project_author_rol_tooltip=Person's rol in the project: author, collaborator, drawings, sounds... (optional) edit_project_author_organization_tooltip=School, university, association... (optional) edit_project_author_url_tooltip=Personal web page (optional) edit_project_author_comments_tooltip=Field for other information (optional) edit_project_author_info=Author info: edit_project_author_add=Add author to list edit_project_author_edit=Edit author info edit_project_org_name=Name: edit_project_org_name_tooltip=School name edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=e-mail address of the school edit_project_org_url=URL: edit_project_org_url_tooltip=School website edit_project_org_address=Address: edit_project_org_address_tooltip=Snail-mail address edit_project_org_pc=PC: edit_project_org_pc_tooltip=Postal code edit_project_org_city=City: edit_project_org_city_tooltip=School city edit_project_org_country=Country: edit_project_org_state=State: edit_project_org_comments=Comments: edit_project_org=School/s: edit_project_org_tooltip=School or other institution involved in the project edit_project_org_info=Organization info: edit_project_org_add=Add organization edit_project_org_edit=Edit organization data edit_project_org_country_tooltip=Country, federation, union... edit_project_org_state_tooltip=Federal state, community, region... edit_project_org_comments_tooltip=Other info... edit_project_rev_date=Date: edit_project_rev_date_tooltip=Date of the revision edit_project_rev_authors=Authors: edit_project_rev_authors_tooltip=Authors of the revision edit_project_rev_description=Description: edit_project_rev_description_tooltip=Brief description of the changes made edit_project_rev_comments=Comments: edit_project_rev_comments_tooltip=Other relevant info edit_project_rev=Revisions: edit_project_rev_tooltip=History of main modifications made to the project edit_project_rev_add=Add revision record edit_project_rev_edit=Edit revision record edit_project_rev_info=Revision data edit_media_objects=objects edit_media_object=object edit_evsounds_start=Start of activity: edit_evsounds_click=Click on object: edit_evsounds_actionError=Erroneous action: edit_evsounds_actionOk=Correct action: edit_evsounds_finishedError=Activity finished with errors: edit_evsounds_finishedOk=Activity finished OK: edit_project_rev_err_nodesc=Error: The description field cannot be leaved blank! edit_evsounds_dlg_title=Edit event sounds edit_project_evsounds=Event sounds: edit_project_evsounds_tooltip=Set specific sounds for each JClic event edit_act_evsounds=Event sounds: edit_act_evsounds_tooltip=Set specific sounds for each JClic event edit_evsounds_default=default sound edit_evsounds_disabled=disabled edit_evsounds_chk_tooltip=Enable or disable the sound for this event edit_evsounds_select_tooltip=Click to select a sound for this event, or uncheck to use the default sound action_newProject_caption=New project... action_newProject_keys=NN action_newProject_tooltip=Create a new JClic project edit_arith_op_from=From: edit_arith_op_from_tooltip=Minimum value of the operator edit_arith_op_to=To: edit_arith_op_to_tooltip=Maximum value of the operator edit_arith_op_with=With: edit_arith_op_with_tooltip=If checked, the operator can also have this value edit_arith_op_fromList=One from the list: edit_arith_op_fromList_tooltip=List of possible values for the operator edit_arith_op_decimals=Decimals: edit_arith_op_decimals_tooltip=Number of decimals of the operand edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=First operand edit_arith_secondOp=Second operand edit_arith_title=Arith2 for JClic edit_arith_operations=Operations: edit_arith_operations_tooltip=Select the kind of operations to be performed edit_arith_operations_plus=Plus edit_arith_operations_minus=Minus edit_arith_operations_multiply=Multiply edit_arith_operations_divide=Divide edit_arith_unknown=Unknown: edit_arith_unknown_tooltip=Select the item that will act as a unknown edit_arith_unknown_aobx=The result is the unknown edit_arith_unknown_aoxr=The second operator is the unknown edit_arith_unknown_xobr=The first operator is the unknown edit_arith_unknown_axbr=The operation is the unknown edit_arith_unknown_invert=Write the result at the beggining of the expression edit_arith_result=Result: edit_arith_result_notCarry=Do not carry edit_arith_result_random=Random edit_arith_result_asc=Ascending edit_arith_result_order=Order by result: edit_arith_result_desc=Descending edit_arith_result_avoidDup=Avoid duplicates edit_arith_cond=Conditions: edit_arith_cond_ind=Indifferent edit_arith_cond_agb=The first operator must be greather than the second one edit_arith_cond_alb=The first operator must be lesser than the second one edit_arith_cond_tooltip=Other conditions edit_autocp=Automatic content generator: edit_autocp_tooltip=Select the type of automatic content generator for this activity. edit_autocp_block=Content generator edit_autocp_btn=Settings... edit_autocp_btn_tooltip=Configure the content provider settings edit_data=Edit data edit_act=Activity edit edit_acp=Content provider edit edit_acp_err_creating=Error creating the content provider! edit_project_author_group=Creation edit_project_description_block=Description edit_project_ui_block=User interface edit_act_description=Description: m_Edit=Edit m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=New activity... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Insert m_Insert_Mnemonic=I m_View=View m_View_Mnemonic=V action_editProject_caption=Project action_editProject_keys=PP action_editProject_tooltip=Edit project settings action_editMedia_caption=Media action_editMedia_keys=MM action_editMedia_tooltip=Edit the project's multimedia library action_editActivities_caption=Activities action_editActivities_keys=AA action_editActivities_tooltip=Edit the activities action_editSeq_caption=Sequences action_editSeq_keys=SS action_editSeq_tooltip=Edit the sequences of activities warn_project_modified=Current project has been modified. Do you want to save the changes? edit_project_descriptors_block=Descriptors edit_media_new=New media object... edit_media_new_tooltip=Add a new image or multimedia object to the library edit_media_new_keys=M* edit_seq_threshold=Score threshold: edit_seq_threshold_tooltip_up=Take this way when the global score is equal to or higher than... edit_seq_time=Time threshold: edit_seq_time_tooltip_up=In order to take this way, the time spent on the activities must be less than... edit_seq_threshold_tooltip_down=Take this way when the global score is lower than... edit_seq_time_tooltip_down=Take this way when the time spent on the activities is more than... edit_seq_condJump=Conditional jumps edit_seq_condJump_tooltip=Set special jumps to be executed only under specific condicions edit_seq_condJump_upper_tooltip=Set conditions to jump to an upper level edit_seq_condJump_lower=Lower jump: edit_seq_condJump_upper=Upper jump: edit_seq_condJump_lower_tooltip=Set conditions to jump to an lower level edit_seq_action_tooltip_fw=Action assigned to the "next" button edit_seq_action_tooltip_bk=Action assigned to the "previous" button edit_seq_jump_tooltip=Set the jump target edit_seq_action_tooltip=Action to be done edit_seq_activity_tooltip=Activity assigned to this sequence element edit_seq_tag_tooltip=Tag used to reference this sequence element (optional field) edit_seq_description_tooltip=Description of the sequence element (optional field) edit_seq_button_enabled_tooltip=Enable or disable the arrow button edit_seq_auto_tooltip=Move on automatically when the activity finishes edit_seq_delay_tooltip=Seconds to wait before to do the automatic move edit_color_dlgTitle=Select color edit_media_renaming=Please wait while the resource is being renamed... edit_act_cell_width=Width: edit_act_cell_width_tooltip=Cell width (in pixels) edit_act_cell_height=Height: edit_act_cell_height_tooltip=Cell height (in pixels) edit_act_hiddenWords=Hidden words: edit_act_hiddenWords_tooltip=List of the hidden words placed in the panel edit_act_wordSearch_panelB=Use panel B edit_act_wordSearch_panelB_tooltip=The contents of a second panel will be displayed as words are found edit_act_shaper_tooltip=Select the shaper type to be used in the panel edit_act_num_cols_tooltip=Number of columns of the panel edit_act_num_rows_tooltip=Number of rows of the panel edit_act_wildTransparent=Transparent delimiters edit_act_wildTransparent_tooltip=Treat the delimiters (black boxes) as transparent holes edit_act_behavior_scramble_times=Mixes: edit_act_behavior_scramble_times_tooltip=Number of times to shuffle edit_act_copy_title=Copy attributtes to... edit_act_copy_attributes=Attributes edit_act_copy_dest=Apply to: edit_act_copy_style_main=Main window edit_act_copy_style_play=Play window edit_act_copy_activities=Activities to be modified: edit_act_copyAttributes=Copy attributes edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copy current activity attributes to other activities edit_new_project_name=Project name: edit_new_project_name_tooltip=Short, descriptive name of the project edit_new_project_filename=File name: edit_new_project_filename_tooltip=Name of the project file, without extension edit_new_project_folder=Folder: edit_new_project_folder_tooltip=Name of the folder where the project will be stored edit_new_project_folder_browse=Browse... edit_new_project_title=Create new JClic project edit_new_project_err_empty=Error: Project, file and folder must have valid, non-empty names. edit_new_project_warning_noEmptyFolder=This folder already contains another Clic 3.0 or JClic project. In order to avoid confusions, is preferable to maintain each project in a separate folder, but that isn't a strict rule. Do you really want to create the new project in this folder? edit_new_project_err_folderCreation=Error: Unable to create the specified folder! edit_act_copy_err_noSelection=Error: No activity selected! In order to use this function you must select in the list the activity or activities to wich the indicated attributes will be applied. edit_act_copy_action_prefix=Copying attributes to: edit_act_copy_margin=Margin edit_act_copy_bgColor=Background color edit_act_copy_gradient=Gradient edit_act_copy_bgImage=Background image edit_act_copy_border=Border edit_act_copy_transparentBg=Transparent background edit_act_copy_position=Position edit_act_copy_messages=Messages edit_act_copy_messages_ini=Style of initial message edit_act_copy_messages_end=Style of end message edit_act_copy_messages_err=Style of error message edit_act_copy_reports=Reports edit_act_copy_rep_include=Include activity in reports edit_act_copy_rep_actions=Record actions edit_act_copy_interface=User interface edit_act_copy_skin=Skin edit_act_copy_evSounds=Event sounds edit_act_copy_counters=Counters edit_act_copy_cTime=Time counter edit_act_copy_maxTime=Max. time edit_act_copy_cTries=Tries counter edit_act_copy_maxTries=Max. tries edit_act_copy_cScore=Score counter edit_act_copy_scramble=Times to scramble edit_act_copy_buttons=Buttons edit_act_copy_btnHelp=Help button edit_act_copy_btnInfo=Information button edit_act_copy_grids=Grids edit_act_copy_gridA=Style of grid A edit_act_copy_gridB=Style of grid B edit_act_copy_textGrid=Style of text grids edit_act_copy_text=Text activities edit_act_copy_fontFace=Font face edit_act_copy_fontSize=Font size edit_act_copy_fontStyle=Font style edit_act_copy_textColour=Main text colour edit_act_copy_textTargetColour=Select the JClic project of which the activities will be imported edit_act_copy_textErrorColour=Errors colour edit_act_copy_tabSpace=Tab space edit_act_copy_messages_prev=Style of previous message edit_act_changeType=Change activity type edit_act_newActivity_class_tooltip=Full name of the class to be used to build the activity (advanced users only!) edit_act_newActivity_other=Other... edit_act_newActivity_info=Advanced users can also create unregistered types of JClic activities. Just write below the full class name, prefixed by the package (like "com.acme.activities.FooActivity"). Activity classes must extend edu.xtec.jclic.Activity, and must be accessibles to the JVM classloader. edit_act_newActivity_name=Name of the activity: edit_act_newActivity_name_tooltip=Each activity must have a name unique in the project edit_act_changeType_warning=

Warning: Changing the type of activity can cause lost of some of the current activity attributes and objects. Use it with care!

 

applet_codebase=Location of JClic code: applet_codebase_tooltip=URL pointing to a folder with the JClic program files and scripts applet_prev_text=HTML code before: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Text or HTML code to be placed before the applet applet_post_text=HTML code after: applet_post_text_tooltip=Text or HTML code to be placed after the applet applet_size=Applet size: applet_size_tooltip=Width and height of the applet, in absolute or percentage values. applet_page_title=Page title: applet_page_title_tooltip=Text to be shown at the top of the browser window applet_created_info=The web page "%s" has been created successfully. applet_created_prompt=Do you want to open it now with the browser? action_createHTML_caption=Create web page... applet_create_title=Creation of an HTML page with a JClic applet action_createHTML_tooltip=Create a HTML page with an applet containing the current project applet_filename=File name: applet_filename_tooltip=Name of the HTML file to be created action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Default values used in web page creation applet_bgcolor=Background color: applet_bgcolor_tooltip=HTML page background color applet_centered=Centered applet_centered_tooltip=Place the applet horizontally centered applet_width_tooltip=Applet width (absolute or percentage) applet_height_tooltip=Applet height (absolute or percentage) applet_exitUrl=On exit, go to: applet_exitUrl_tooltip=URL where to redirect the navigation on JClic exit applet_infoFrame=Info frame name: applet_infoFrame_tooltip=Name of the frame used to show the content related to the "info" button action_createInstaller_caption=Create project installer... action_createInstaller_keys=I* action_createInstaller_tooltip=Create a project installer script for JClic player installer_caption=Edit project installer script installer_title=Title: installer_title_tooltip=Project title, to be shown on the installer wizard installer_authors=Autors: installer_authors_tooltip=Author/s of the project (short text) installer_folder=Folder: installer_folder_tooltip=Folder name to be suggested by the installer wizard installer_files=Files to be copied: installer_files_tooltip=Files to be copied by the installer installer_files_available=Available files installer_files_selected=Selected files installer_files_add=>> add >> installer_files_add_tooltip=Add selected file to the list installer_files_remove=<< remove << installer_files_remove_tooltip=Remove selected file from the list installer_button=Launch button installer_button_tooltip=Properties of the button to be shown in the project library installer_button_project=Main project: installer_button_project_tooltip=JClic project to be launched by the button installer_button_text=Label: installer_button_text_tooltip=Short text label, to be shown inside the button installer_button_icon=Icon: installer_button_icon_tooltip=Picture to be used as button icon. Leave blank to use the default JClic icon. installer_button_description=Description installer_button_description_tooltip=Tooltip to be shown by the button installer_error_noTitle=Error: Missing project title installer_error_noBaseFolder=Error: Missing folder name installer_error_noFilesSelected=Error: No files selected installer_error_noButtonText=Error: Missing launch button text label installer_error_projectNotInFiles=Error: The project assigned to the launch button is not in the list of files to be copied applet_page_full=Full-page applet applet_page_mixed=Applet with specific dimensions edit_text_align_left=Align text left edit_text_align_center=Center text edit_text_align_right=Align text right edit_text_act_target_toggle=Create or remove target edit_text_act_insertCell=Insert a cell edit_text_act_content=Content edit_text_act_style=Style edit_cell_size=Cell size: edit_project_orphanActivities=The following activities never appear in any of the project's activity sequences, so they never will be displayed: edit_project_orphanMedia=The following media objects are not used directly in any activity: edit_project_orphanActivities_prompt=Do you want to add them at the end of the last activity sequence? edit_project_orphanMedia_prompt=Do you want to remove them? edit_project_orphanMedia_title=Removal of unused media objects edit_project_orphanActivities_title=Orphan activities edit_media_refreshAll=Update all media content edit_media_refreshAll_tooltip=Update all media objects reloading its files edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Updating media... edit_media_exportAll=Export all media edit_media_exportAll_tooltip=Save to files the content of all media elements edit_media_exportAll_keys=X* edit_shape_select=Select edit_shape_addPoint=Add point edit_shape_deletePoint=Delete edit_shape_drawRect=Draw rectangle edit_shape_drawEllipse=Draw ellipse edit_shape_drawPoly=Draw polygon edit_shape_toLine=Convert to line edit_shape_toBezier=Convert to B\u00E9zier curve edit_shape_toQuad=Convert to quadratic curve edit_shape_rLeft=Rotate left edit_shape_rRight=Rotate right edit_shape_expand=Expand edit_shape_contract=Contract edit_shape_zoomIn=Zoom in edit_shape_zoomOut=Zoom out edit_shape_aproxPoints=Join nearest points edit_shape_showPoints=Show points edit_shape_showPoints_tooltip=Show/Hide the points edit_shape_gridSize=Grid size: edit_shape_hideGrid=Show / Hide grid edit_shape_magnetRadius=Magnet radius: edit_shape_elements=Defined elements edit_shape_elemName=Name of the selected element edit_shape_magnetRadius_tooltip=Action radius of the magnet, when enabled edit_shape_gridSize_tooltip=Size of the grid edit_mc_activity=Activity: edit_mc_sequence=Sequence: edit_mc_url=URL: edit_mc_project=Project: edit_mc_activity_selection=Choose activity edit_mc_sequence_selection=Choose sequence edit_mc_err_nullContent=Insufficient data! edit_act_arrowColor=Arrow color: edit_act_arrowColor_tooltip=Color used by the editor to draw the arrows (not exactly, because an XOR bit mask is used) edit_act_editActivity=Edit... edit_act_editActivity_tooltip=Edit the selected activity action_saveFileAs_caption=Save as... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Save the current project with a different name edit_act_behavior_block=Behavior edit_act_behavior=Behavior edit_act_behavior_drag=Drag objects edit_act_behavior_drag_tooltip=Drag objects instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=Scramble action_importActivities_caption=Import activities... action_importActivities_keys=I* action_importActivities_tooltip=Import activities from another project import_warn_samefile=The selected file corresponds to the current project. Activities can be imported only between different projects. Please select another project file. import_selectActivities=Select one or more activities to import into the current project: import_importing=Importing... import_checkdep=Checking dependencies... import_impmedia=Importing media: import_impact=Importing activity: import_selectProject=Select the JClic project of which the activities will be imported edit_tagRep_tags=Tag marks edit_tagRep_tagStart=Start mark: edit_tagRep_tagStart_tooltip=Mark used at the beginning of tags edit_tagRep_tagEnd=End mark: edit_tagRep_tagEnd_tooltip=Mark used at the end of tags edit_tagRep_file=File edit_tagRep_fileName=File or URL: edit_tagRep_fileName_tooltip=Name or URL of the file containing the values that will replace tags edit_tagRep_charset=Charset: edit_tagRep_charset_tooltip=Character encoding used in the file edit_tagRep_browseFile=Browse... edit_tagRep_browseFile_tooltip=Browse the filesystem edit_tagRep_title=Tag replacing edit_text_act_clearStylesBtn=Clear text styles... edit_text_act_clearStylesPrompt=Warning: This action will clear the specific character attributes applied to the document, setting it back to its main style. This action cannot be undone. Do you want to do it? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_pt_BR.properties0000644000175000017500000013142311377161311026410 0ustar #JClic Author messages edit_act_description_block=Descri\u00E7\u00E3o edit_act_name_tooltip=Nome da atividade edit_act_name=Nome: edit_act_description_tooltip=Descri\u00E7\u00E3o da atividade edit_act_reports_block=Relat\u00F3rios edit_act_includeInReports=Incluir esta atividade nos relat\u00F3rios edit_act_includeInReports_tooltip=Incluir os resultados desta atividade no relat\u00F3rio dos usu\u00E1rios edit_act_code=C\u00F3digo: edit_act_code_tooltip=C\u00F3digo adicional para agrupar e buscar no banco de dados de relat\u00F3rios. edit_act_reportActions=Registrar a\u00E7\u00F5es dos usu\u00E1rios edit_act_reportActions_tooltip=Registrar os detalhes de todas as a\u00E7\u00F5es realizadas pelos usu\u00E1rios. edit_act_counters_block=Contadores edit_act_timeCounter=Contador de tempo edit_act_timeCounter_tooltip=Mostrar/ocultar contador de tempo edit_act_actionsCounter=Contador de tentativas edit_act_actionsCounter_tooltip=Show/hide the tries counter edit_act_scoreCounter=Contador de acertos edit_act_scoreCounter_tooltip=Mostrar/ocultar os acertos. edit_act_maxTime=Tempo m\u00E1ximo: edit_act_maxTime_tooltip=Tempo m\u00E1ximo para resolver a atividade, em segundos, ou 0 para tempo ilimitado. edit_act_countdown=Contagem regressiva edit_act_countdown_tooltip=O contador \u00E9 iniciado com um valor m\u00E1ximo, decrescendo at\u00E9 0. edit_act_maxActions=M\u00E1ximo n\u00BA de tentativas: edit_act_maxActions_tooltip=N\u00FAmero m\u00E1ximo de tentativas permitido (use 0 para tentativas ilimitadas). edit_act_buttons_block=Bot\u00F5es edit_act_helpBtn=Ajuda edit_act_helpBtn_tooltip=Mostrar/ocultar bot\u00E3o de ajuda edit_act_helpBtn_solution=Mostrar solu\u00E7\u00E3o edit_act_helpBtn_msg=Mostrar essa mensagem: edit_act_infoBtn=Informa\u00E7\u00E3o: edit_act_infoBtn_tooltip=Mostrar/ocultar o bot\u00E3o de informa\u00E7\u00E3o adicional edit_act_infoBtn_url=Mostrar esta URL: edit_act_infoBtn_cmd=Execute este comando: edit_act_infoBtn_url_tooltip=Endere\u00E7o na web que ser\u00E1 acessado ao clicar no bot\u00E3o de informa\u00E7\u00F5es adicionais edit_act_infoBtn_cmd_tooltip=Linha de comando a ser executada ao clicar no bot\u00E3o de informa\u00E7\u00F5es adicionais edit_act_mainWindow=Janela Principal: edit_act_gameWindow=Janela de Jogos: edit_act_margin=Margem: edit_act_margin_tooltip=Espa\u00E7amento horizontal e vertical entre objetos visuais. edit_act_bgColor=Cor do fundo da tela: edit_act_bgColor_tooltip=Altere a cor do fundo da tela. edit_gradient_startColor=Cor inicial: edit_gradient_endColor=Cor final: edit_gradient_startColor_tooltip=Escolha a primeira cor edit_gradient_endColor_tooltip=Escolha a cor final edit_gradient_cycles=Ciclos: edit_gradient_cycles_tooltip=N\u00FAmero de repeti\u00E7\u00F5es do gradiente sobre a superf\u00EDcie de desenho edit_gradient_orientation=Orienta\u00E7\u00E3o: edit_gradient_orientation_tooltip=Orienta\u00E7\u00E3o do gradiente, medida em graus sobre a horizontal edit_act_gradient=Gradiente: edit_act_gradient_tooltip=Use gradiente de cores edit_color_opacity=Opacidade edit_color_opacity_tooltip=Defina valor do canal alfa de cores (opacidade). edit_gradient_title=Gradiente edit_gradient_default=Use os valores padr\u00E3o (gradiente nulo) edit_act_image=Imagem: edit_act_descriptionTab=Descri\u00E7\u00E3o edit_act_descriptionTab_tooltip=Nome e descri\u00E7\u00E3o edit_act_tiledBgImg=Ladrilhado edit_act_tiledBgImg_tooltip=Pinte toda a superf\u00EDcie com a imagem, repetindo-a ao longo dos eixos X e Y conforme necess\u00E1rio. edit_act_preview=Pr\u00E9-visualiza\u00E7\u00E3o: edit_act_border=Contorno edit_act_border_tooltip=Desenhe uma linha de contorno ao redor da janela edit_act_transparent=Transparente edit_act_transparent_tooltip=A janela possui fundo transparente edit_act_width=Largura: edit_act_height=Altura: edit_act_width_tooltip=Largura do objeto, medida em pixels edit_act_height_tooltip=Altura do objeto, medida em pixels edit_act_centered=Centralizado edit_act_centered_tooltip=O objeto ser\u00E1 centralizado sobre a janela principal edit_act_x=X: edit_act_x_tooltip=Localiza\u00E7\u00E3o horizontal absoluta edit_act_y=Y: edit_act_y_tooltip=Localiza\u00E7\u00E3o vertical absoluta edit_act_ui_block=Interface do usu\u00E1rio edit_act_image_tooltip=Selecione uma imagem edit_act_text=Texto: edit_act_text_tooltip=Texto a ser exibido dentro deste objeto edit_font_face=Tipo de fonte: edit_font_size=Tamanho: edit_font_bold=Negrito edit_font_italic=It\u00E1lico edit_font_underline=Sublinhado edit_font_style=Estilo: edit_cell_title=Conte\u00FAdo da c\u00E9lula edit_act_messages=Mensagens edit_act_msg_initial=Mensagem inicial: edit_act_msg_final=Mensagem final: edit_act_msg_prev=Mensagem anterior: edit_act_msg_error=Mensagem de erro: edit_act_msg_initial_tooltip=Mensagem a ser exibida quando a atividade iniciar edit_act_msg_final_tooltip=Mensagem a ser exibida quando a atividade terminar edit_act_msg_error_tooltip=Mensagem a ser exibida quando a atividade terminar com erros edit_act_msg_prev_tooltip=Mensagem a ser exibida antes do in\u00EDcio da atividade (somente em certos tipos de atividade) edit_align=Alinhar: edit_act_textColor=Cor do texto: edit_act_textColor_tooltip=Cor usada para escrever o texto edit_act_shadowColor=Cor da sombra: edit_act_shadowColor_tooltip=Cor da sombra do texto, quando selecionada edit_act_shadow=Sombreamento edit_act_shadow_tooltip=Escreva o texto com sombreamento edit_act_borderColor=Cor do contorno: edit_act_borderColor_tooltip=Cor usada para desenhar o contorno da c\u00E9lula edit_act_inactiveColor=Cor utilizada em estado inativo: edit_act_inactiveColor_tooltip=Cor utilizada quando a c\u00E9lula estiver desabilitada edit_act_altColor=Cor alternativa: edit_act_altColor_tooltip=Cor utilizada para escrever o conte\u00FAdo alternativo em c\u00E9lulas solucionadas. edit_cell_marked=Marcado edit_cell_disabled=Desabilitado edit_cell_alt=Alternativo edit_cell_textMargin=Margem interna: edit_cell_textMargin_tooltip=Quantidade de espa\u00E7o entre o contorno da c\u00E9lula e o texto. edit_cell_borderWidth=Largura do contorno: edit_cell_borderWidth_tooltip=Largura da linha utilizada para desenhar o contorno padr\u00E3o edit_cell_markerWidth=Largura do marcador: edit_cell_markerWidth_tooltip=Largura da linha utilizada para desenhar o contorno quando a c\u00E9lula est\u00E1 marcada ou selecionada edit_cell_alt_tooltip=Pr\u00E9-visualiza\u00E7\u00E3o em estado "alternativo" edit_cell_disabled_tooltip=Pr\u00E9-visualiza\u00E7\u00E3o em estado "desabilitado" edit_cell_marked_tooltip=Pr\u00E9-visualiza\u00E7\u00E3o em estado "marcado" edit_act_testAction=Pr\u00E9-visualiza\u00E7\u00E3o da atividade edit_act_testAction_tooltip=Pr\u00E9-visualiza\u00E7\u00E3o e teste da atividade edit_act_panels_description=Descri\u00E7\u00E3o edit_act_panels_description_tooltip=T\u00EDtulo e descri\u00E7\u00E3o da atividade edit_act_panels_options=Op\u00E7\u00F5es edit_act_panels_options_tooltip=Op\u00E7\u00F5es da atividade edit_act_panels_frame=Janela edit_act_panels_frame_tooltip=Aspecto, tamanho e posi\u00E7\u00E3o da janela de atividades edit_act_panels_messages=Mensagens edit_act_panels_messages_tooltip=Conte\u00FAdo das mensagens da atividade edit_act_panels_panel=Painel edit_act_panels_panel_tooltip=Conte\u00FAdos do painel edit_style_title=Estilo edit_style_tooltip=Defina a cor, a fonte e o tamanho das c\u00E9lulas edit_act_style=Estilo: edit_act_overlap=Evite a sobreposi\u00E7\u00E3o de texto/imagem edit_act_overlap_tooltip=Tente evitar a sobreposi\u00E7\u00E3o da imagem com o texto edit_media_exists_1=O arquivo edit_media_exists_2=j\u00E1 existe na biblioteca de m\u00EDdia! edit_act_shaper=Moldador: edit_act_shaper_err=Erro do moldador: edit_act_num_cols=Colunas: edit_act_num_rows=Filas: edit_act_toothHeightFactor=Altura dos dentes: edit_act_toothWidthFactor=Largura dos dentes: edit_act_toothRandom=Distribui\u00E7\u00E3o aleat\u00F3ria edit_act_shaper_properties=Propriedades do moldador edit_act_panels_text=Texto edit_act_panels_text_tooltip=Texto da atividade action_saveFile_caption=Salvar... action_saveFile_keys=SS action_saveFile_tooltip=Salva (guarda) o projeto atual action_docTree_caption=\u00C1rvore de documentos... action_docTree_keys=A* action_docTree_tooltip=Mostre os documentos do projeto na forma de \u00E1rvore edit_docTree_title=\u00C1rvore de documentos edit_media_referencedBy=Referenciado por: msg_prompt_loadReferences=Aviso:

Este projeto conecta-se com outros projetos.
Voc\u00EA quer explorar as conex\u00F5es (links) e carregar todos os arquivos relacionados?

(\u00C9 aconselh\u00E1vel responder SIM ao importar atividades do Clic 3.0) edit_mc_type=Tipo: edit_mc_type_unknown=Desconhecido edit_mc_type_sound=Toque som edit_mc_type_video=Toque v\u00EDdeo edit_mc_type_midi=Toque MIDI edit_mc_type_cdaudio=Toque CD de audio edit_mc_type_record=Grave som edit_mc_type_play_recorded=Toque som gravado edit_mc_type_run_activity=V\u00E1 para a atividade edit_mc_type_run_sequence=V\u00E1 para a sequ\u00EAncia edit_mc_type_run_external=Execute o programa edit_mc_type_url=Mostre a URL edit_mc_type_exit=Fim edit_mc_type_return=Retorne edit_mc_level=N\u00EDvel de prioridades: edit_mc_file=Arquivo: edit_mc_externalParam=Par\u00E2metros: edit_mc_from=De: edit_mc_to=At\u00E9: edit_mc_length=Comprimento m\u00E1ximo: edit_mc_recBuffer=Fita gravada: edit_mc_stretch=Tamanho do trajeto edit_mc_location=Localiza\u00E7\u00E3o: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=De: edit_mc_location_from_box=C\u00E9lula edit_mc_location_from_window=Janela edit_mc_location_from_frame=Quadro edit_mc_loop=La\u00E7o de reprodu\u00E7\u00E3o edit_mc_autostart=In\u00EDcio autom\u00E1tico edit_mc_catchmouse=Capture o mouse edit_mc_title=Multim\u00EDdia e conte\u00FAdo ativo edit_mc_label=Conte\u00FAdo ativo: edit_media_dlg_title=Sele\u00E7\u00E3o de objetos multim\u00EDdia edit_media_title=Biblioteca de m\u00EDdias edit_mc_pos_cell=Centralizado sobre a c\u00E9lula edit_mc_pos_window=Centralizado sobre a janela edit_mc_pos_absolute=Especifique posi\u00E7\u00E3o: edit_tree_badFormat=Informa\u00E7\u00F5es ou estruturas de \u00E1rvore incorretas! edit_act_panels_controls=Controles edit_act_panels_controls_tooltip=Op\u00E7\u00F5es para bot\u00F5es e contadores edit_act_class=Tipo: edit_act_gridLayout=Formata\u00E7\u00E3o da grade (layout): edit_act_gridLayout_tooltip=Posi\u00E7\u00E3o relativa dos pain\u00E9is A e B. edit_act_inverseResolution=Resolu\u00E7\u00E3o inversa edit_act_inverseResolution_tooltip=A atividade \u00E9 solucionada quando todos os elementos selecionados de "B" corresponderem aos seus pares opostos. edit_act_showAllArrows=Mostre todas as setas edit_act_alt=Conte\u00FAdo alternativo: edit_act_alt_tooltip=Conte\u00FAdo exibido em c\u00E9lulas solucionadas e em c\u00E9lulas n\u00E3o-atribu\u00EDdas. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Edite o conte\u00FAdo alternativo edit_act_grid=Grade edit_act_grid_A=Grade A edit_act_grid_B=Grade B edit_act_grid_layout=Formata\u00E7\u00E3o (layout) edit_act_grid_relationship=Relacionamento edit_seq_activity_header=atividade edit_seq_tag_header=etiqueta edit_seq_jump_header=pule para edit_seq_activity=Atividade: edit_seq_tag=R\u00F3tulo: edit_seq_description=Descri\u00E7\u00E3o: edit_seq_auto=Continue automaticamente edit_seq_delay=Atraso: edit_seq_action_fwd=Avance edit_seq_action_back=Volte edit_seq_action_jump=Pule para... edit_seq_action_stop=Pare edit_seq_action_return=Retorne edit_seq_action_exit=Sair do JClic edit_seq_arrow_fwd=Seta adiante: edit_seq_arrow_back=Seta retorno: edit_seq_action=A\u00E7\u00E3o: edit_seq_button_enabled=Mostre bot\u00E3o edit_seq_project=Projeto do JClic: edit_act_absolute=Posi\u00E7\u00E3o absoluta edit_act_absolute_tooltip=O objeto ser\u00E1 localizado nas coordenadas X e Y especificadas edit_act_location=Localiza\u00E7\u00E3o: edit_seq_newElement=Novo elemento na sequ\u00EAncia... edit_seq_newElement_tooltip=Insira um novo elemento na sequ\u00EAncia de atividades edit_seq_newElement_msg=Por favor, selecione uma atividade para o novo elemento da sequ\u00EAncia. edit_seq_newElement_error_noAct=N\u00E3o \u00E9 poss\u00EDvel criar um novo elemento de sequ\u00EAncia sem uma atividade! edit_seq_newElement_error_emptyList=Este projeto n\u00E3o possui atividades! Incapaz de criar elementos de sequ\u00EAncia em um projeto vazio. edit_seq_jump_msg=Pular alvo: edit_seq_jump_title=Pular alvo edit_act_newActivity_tooltip=Adicione uma nova atividade ao projeto edit_act_prompt_class=Tipo de atividade: edit_act_prompt_name=Nome: edit_act_newActivity_msg=Favor, selecione o tipo de atividade a ser criado e nomeie-o: edit_act_newActivity_error_noAct=Voc\u00EA deve selecionar um tipo de atividade! edit_act_newActivity_error_noName=Voc\u00EA deve especificar um nome para a atividade! edit_act_newActivity_error_creating=Incapaz de criar a nova atividade! edit_act_newActivity_class=Nome da Classe Java: edit_text_act_format=Formato edit_text_act_answer=Resposta edit_text_act_popup=Pop up edit_text_act_answer_label=Respostas v\u00E1lidas: edit_list_newElement_tooltip=Adicione um novo elemento \u00E0 lista edit_list_editElement_tooltip=Edite o elemento selecionado na lista edit_list_deleteElement_tooltip=Apague o elemento selecionado na lista edit_list_upBtn_tooltip=Mover para cima edit_list_downBtn_tooltip=Mover para baixo edit_list_newValue=Novo texto: edit_list_addElement=Adicione um novo elemento da lista edit_list_modifyValue=Modifique o texto selecionado edit_text_act_target=Alvo edit_text_act_maxLen=Comprimento m\u00E1ximo: edit_text_act_maxLen_tooltip=Quantidade m\u00E1xima de caracteres na resposta. edit_text_act_fillingChar=Caractere de preenchimento edit_text_act_fillingChar_tooltip=Caractere utilizado para indicar uma lacuna edit_text_act_iniLen=Comprimento inicial: edit_text_act_iniLen_tooltip=N\u00FAmero de caracteres de preenchimento que ser\u00E3o exibidos no in\u00EDcio da atividade. edit_text_act_iniText=Texto inicial: edit_text_act_iniText_tooltip=Texto exibido na lacuna durante o in\u00EDcio da atividade. edit_text_act_list=Mostrar uma lista de op\u00E7\u00F5es: edit_text_act_list_tooltip=Exibir uma lista de op\u00E7\u00F5es a partir da qual o usu\u00E1rio deve selecionar uma. edit_text_act_check_title=Op\u00E7\u00F5es de corre\u00E7\u00E3o edit_text_act_popup_no=Sem janelas de destaque (pop up) edit_text_act_popup_always=Janelas de destaque (pop up) exibidas automaticamente edit_text_act_popup_onError=Janelas de destaque (pop up) em erros edit_text_act_popup_onDemand=Janelas de destaque (pop up) ao comando da tecla F1 edit_text_act_popup_type=Tipo: edit_text_act_popup_delay=Atraso da janela de destaque (pop up): edit_text_act_popup_maxTime=Tempo m\u00E1ximo: edit_text_act_popup_onlyPlay=Somente o som edit_text_act_err_noSelection=Voc\u00EA deve selecionar um fragmento do texto para criar um novo alvo! edit_text_act_err_badCharInSelection=Texto-alvo n\u00E3o pode possuir caracteres de "Enter" (nova linha) nem de "Tab" (tabula\u00E7\u00E3o). edit_text_act_err_nestedTargets=Alvos n\u00E3o podem ser aninhados! edit_text_act_err_cellInTarget=Alvos n\u00E3o podem conter c\u00E9lulas! edit_text_act_pageBgColor=Cor do papel: edit_text_act_editStylesBtn=Edite o estilo do documento... edit_text_act_mainStyle=Estilo principal: edit_text_act_tabSpc=Espa\u00E7o de tabula\u00E7\u00E3o (tab): edit_text_act_tabSize=Espa\u00E7os entre marcas de tabula\u00E7\u00E3o (tab): edit_text_act_colors=Cores: edit_text_act_targetStyle=Cores do alvo: edit_text_act_errorStyle=Cores de erro: edit_text_act_preview=Pr\u00E9-visualiza\u00E7\u00E3o: edit_text_act_styleSample_default_start=Texto padr\u00E3o edit_text_act_styleSample_target=alvo edit_text_act_styleSample_error=erro edit_text_act_styleSample_default_fill=texto padr\u00E3o edit_text_act_styleSample_default_end=texto padr\u00E3o. edit_text_act_warnDeleteTarget=Aviso: Esta a\u00E7\u00E3o suprimir\u00E1 o alvo atualmente selecionado. Voc\u00EA tem certeza de que quer continuar? edit_text_act_prevScreen_title=Tela anterior... edit_text_act_prevScreen_no=N\u00E3o exibir qualquer texto antes de iniciar a atividade edit_text_act_prevScreen_original=Exibir o texto completo do exerc\u00EDcio edit_text_act_prevScreen_special=Exibir este texto: edit_text_act_prevScreen_time=Tempo m\u00E1ximo: edit_text_act_edit_target=Alvo... edit_text_act_checkButton_show=Mostre o bot\u00E3o de corre\u00E7\u00E3o edit_text_act_checkButtonText=Texto do bot\u00E3o: edit_text_act_checkCase=Coincidir com a palavra inteira edit_text_act_checkAccents=Considerar acentos e caracteres especiais edit_text_act_checkPunct=Considerar marcas de pontua\u00E7\u00E3o edit_text_act_checkDoubleSpc=Permitir espa\u00E7os repetidos edit_text_act_checkOptions=Crit\u00E9rios edit_text_act_checkAutoJump=Siga para o pr\u00F3ximo alvo quando a lacuna for preenchida edit_text_act_checkForceOk=Siga somente quando a resposta estiver correta edit_text_act_checkDetail=Indique os erros letra por letra edit_text_act_checkDetail_params=Par\u00E2metros do algoritmo de an\u00E1lise: edit_text_act_checkDetail_steps=Passos: edit_text_act_checkDetail_field=Campos de explora\u00E7\u00E3o: edit_text_act_defaultCheckButtonText=Verifique edit_text_act_advancedCorrectionOptions=An\u00E1lise de respostas edit_text_act_check_bt=Corre\u00E7\u00E3o... edit_text_act_checkButton=Bot\u00E3o de corre\u00E7\u00E3o edit_text_act_checkProgress=Progresso edit_text_act_typeBtn=Tipo... edit_text_act_orderParagraphs=Ordenar par\u00E1grafos edit_text_act_orderWords=Ordenar palavras edit_text_act_order_amongstPar=Embaralhar palavras entre par\u00E1grafos edit_text_act_type_title=Tipos de atividades edit_text_act_warnChangeType=Esta a\u00E7\u00E3o ir\u00E1 limpar todos os alvos existentes. Voc\u00EA quer realmente prosseguir? edit_text_act_identWords=Identifique palavras edit_text_act_identChars=Identifique caracteres edit_media_change_name=Mudar nome... edit_media_change_file=Mudar arquivo... edit_media_includeInZip=Salvar em um arquivo zipado (ZIP) edit_media_type=Tipo de m\u00EDdia: edit_media_size=Tamanho do arquivo: edit_media_show_type=Arquivos do tipo: edit_media_preview=Pr\u00E9-visualiza\u00E7\u00E3o da m\u00EDdia edit_media_preview_tooltip=Pr\u00E9-visualiza\u00E7\u00E3o dos recursos da m\u00EDdia edit_media_rename=Mudar nome do recurso edit_media_rename_title=Renomear edit_media_rename_prompt=Novo nome: edit_media_rename_invalid=Nome de recurso inv\u00E1lido! edit_media_rename_exists=Existe outro recurso com este nome! Cada recurso deve possuir um nome \u00FAnico. edit_media_chfile_invalid=Arquivo inv\u00E1lido! err_media_chfile_different=O arquivo deve ser do mesmo tipo edit_media_font_error=Incapaz de carregar fonte! edit_media_save_file=Salvar arquivo (extrair de um ZIP) edit_media_refresh_file=Atualizar conte\u00FAdo de m\u00EDdias a partir de um arquivo edit_media_warn_zipFileNotExternal=Este n\u00E3o \u00E9 um arquivo "real", mas um objeto localizado em um arquivo ZIP. Para utilizar esta fun\u00E7\u00E3o, um arquivo com o mesmo nome deve estar presente na pasta em que o arquivo zip est\u00E1 localizado. edit_activities=Atividades edit_sequences=Sequ\u00EAncias edit_media=Biblioteca de m\u00EDdias edit_media_tooltip=Gerenciar imagens e outros arquivos de m\u00EDdia utilizados no projeto edit_activities_tooltip=Criar e editar atividades do projeto edit_sequences_tooltip=Editar e criar sequ\u00EAncias de atividades edit_project_title=T\u00EDtulo: edit_project_title_tooltip=T\u00EDtulo do projeto edit_project=Projeto edit_project_tooltip=Editar propriedades do projeto edit_project_description=Descri\u00E7\u00E3o: edit_project_description_tooltip=Descri\u00E7\u00E3o geral do projeto edit_project_area=\u00C1reas: edit_project_area_tooltip=\u00C1reas curriculares do projeto edit_project_level=N\u00EDveis: edit_project_level_tooltip=N\u00EDveis educacionais do projeto edit_project_descriptors=Descri\u00E7\u00F5es: edit_project_descriptors_tooltip=Descri\u00E7\u00F5es do projeto (separadas por v\u00EDrgula) edit_project_languages=Idiomas: edit_project_languages_tooltip=Idiomas utilizados neste projeto edit_project_languages_modify=Altere a l\u00EDngua selecionada edit_project_languages_add=Escolha idioma a ser adicionado edit_project_languages_select=C\u00F3digo de idioma (ISO-639): edit_project_authors=Autores: edit_project_authors_tooltip=Pessoas envolvidas na cria\u00E7\u00E3o do projeto edit_project_author_name=Nome: edit_project_author_mail=e-mail: edit_project_author_rol=Fun\u00E7\u00E3o: edit_project_author_organization=Organiza\u00E7\u00E3o: edit_project_author_comments=Coment\u00E1rios: edit_project_author_url=URL: edit_project_author_name_tooltip=Nome do autor (obrigat\u00F3rio) edit_project_author_mail_tooltip=E-mail do autor (opcional) edit_project_author_rol_tooltip=Papel da pessoa no projeto: autor, colaborador, desenhista, sonoplasta... (opcional) edit_project_author_organization_tooltip=Escola, universidade, associa\u00E7\u00E3o... (opcional) edit_project_author_url_tooltip=P\u00E1gina da web pessoal (opcional) edit_project_author_comments_tooltip=Campo para outras informa\u00E7\u00F5es (opcional) edit_project_author_info=Informa\u00E7\u00E3o do autor: edit_project_author_add=Adicionar um autor \u00E0 lista edit_project_author_edit=Editar informa\u00E7\u00F5es do autor edit_project_org_name=Nome: edit_project_org_name_tooltip=Nome da escola edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=Endere\u00E7o de e-mail da escola edit_project_org_url=URL: edit_project_org_url_tooltip=P\u00E1gina da escola na web edit_project_org_address=Endere\u00E7o: edit_project_org_address_tooltip=Endere\u00E7o para correspond\u00EAncia edit_project_org_pc=CEP: edit_project_org_pc_tooltip=C\u00F3digo postal edit_project_org_city=Cidade: edit_project_org_city_tooltip=Cidade da escola edit_project_org_country=Pa\u00EDs: edit_project_org_state=Estado: edit_project_org_comments=Coment\u00E1rios: edit_project_org=Escola(s): edit_project_org_tooltip=Escola ou outra institui\u00E7\u00E3o envolvida no projeto edit_project_org_info=Informa\u00E7\u00F5es da organiza\u00E7\u00E3o: edit_project_org_add=Adicionar organiza\u00E7\u00E3o edit_project_org_edit=Editar dados da organiza\u00E7\u00E3o edit_project_org_country_tooltip=Pa\u00EDs, federa\u00E7\u00E3o, uni\u00E3o... edit_project_org_state_tooltip=Estado federado, comunidade, regi\u00E3o... edit_project_org_comments_tooltip=Outras informa\u00E7\u00F5es... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Data de revis\u00E3o edit_project_rev_authors=Autores: edit_project_rev_authors_tooltip=Autores da revis\u00E3o edit_project_rev_description=Descri\u00E7\u00E3o: edit_project_rev_description_tooltip=Breve descri\u00E7\u00E3o das mudan\u00E7as realizadas edit_project_rev_comments=Coment\u00E1rios: edit_project_rev_comments_tooltip=Outras informa\u00E7\u00F5es relevantes edit_project_rev=Revis\u00F5es: edit_project_rev_tooltip=Hist\u00F3rico das modifica\u00E7\u00F5es principais realizadas no projeto edit_project_rev_add=Adicionar registro de revis\u00F5es edit_project_rev_edit=Editar registro de revis\u00F5es edit_project_rev_info=Dados de revis\u00E3o edit_media_objects=objetos edit_media_object=objeto edit_evsounds_start=In\u00EDcio da atividade: edit_evsounds_click=Clique no objeto: edit_evsounds_actionError=A\u00E7\u00E3o equivocada: edit_evsounds_actionOk=A\u00E7\u00E3o correta: edit_evsounds_finishedError=Atividade finalizada com erros: edit_evsounds_finishedOk=Atividade finalizada sem erros: edit_project_rev_err_nodesc=Erro: O campo de descri\u00E7\u00E3o n\u00E3o pode ser deixado em branco! edit_evsounds_dlg_title=Editar sons eventuais edit_project_evsounds=Sons eventuais: edit_project_evsounds_tooltip=Definir sons espec\u00EDficos para cada evento do JClic edit_act_evsounds=Sons eventuais: edit_act_evsounds_tooltip=Definir sons espec\u00EDficos para cada evento do JClic edit_evsounds_default=som padr\u00E3o edit_evsounds_disabled=desabilitado edit_evsounds_chk_tooltip=Habilitar ou desabilitar o som para este evento edit_evsounds_select_tooltip=Clique para selecionar um som para este evento, ou desabilite para utilizar o som padr\u00E3o action_newProject_caption=Novo projeto... action_newProject_keys=NN action_newProject_tooltip=Criar um novo projeto JClic edit_arith_op_from=De: edit_arith_op_from_tooltip=Valor m\u00EDnimo do operador edit_arith_op_to=At\u00E9: edit_arith_op_to_tooltip=Valor m\u00E1ximo do operador edit_arith_op_with=Com: edit_arith_op_with_tooltip=Se habilitado, o operador pode tamb\u00E9m ter esse valor edit_arith_op_fromList=Um a partir da lista: edit_arith_op_fromList_tooltip=Lista de valores poss\u00EDveis para o operador edit_arith_op_decimals=Decimais: edit_arith_op_decimals_tooltip=N\u00FAmero de decimais do operador edit_arith_op_dec0=# (inteiro) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=Primeiro operador edit_arith_secondOp=Segundo operador edit_arith_title=Arith2 para JClic edit_arith_operations=Opera\u00E7\u00F5es: edit_arith_operations_tooltip=Selecione o tipo de opera\u00E7\u00F5es a serem realizadas edit_arith_operations_plus=Adicionar edit_arith_operations_minus=Subtrair edit_arith_operations_multiply=Multiplicar edit_arith_operations_divide=Dividir edit_arith_unknown=Desconhecido: edit_arith_unknown_tooltip=Selecione o item que agir\u00E1 como um desconhecido edit_arith_unknown_aobx=O resultado \u00E9 o desconhecido edit_arith_unknown_aoxr=O segundo operador \u00E9 o desconhecido edit_arith_unknown_xobr=O primeiro operador \u00E9 o desconhecido edit_arith_unknown_axbr=A opera\u00E7\u00E3o \u00E9 desconhecida edit_arith_unknown_invert=Escreva o resultado no in\u00EDcio da express\u00E3o edit_arith_result=Resultado: edit_arith_result_notCarry=N\u00E3o carregue edit_arith_result_random=Aleat\u00F3rio edit_arith_result_asc=Crescente edit_arith_result_order=Ordenar por resultado: edit_arith_result_desc=Decrescente edit_arith_result_avoidDup=Evitar duplicados edit_arith_cond=Condi\u00E7\u00F5es: edit_arith_cond_ind=Indiferente edit_arith_cond_agb=O primeiro operador deve ser maior que o segundo edit_arith_cond_alb=O primeiro operador deve ser menor que o segundo edit_arith_cond_tooltip=Outras condi\u00E7\u00F5es edit_autocp=Gerador autom\u00E1tico de conte\u00FAdo: edit_autocp_tooltip=Selecione o tipo de gerador de conte\u00FAdo autom\u00E1tico para esta atividade. edit_autocp_block=Gerador de conte\u00FAdo edit_autocp_btn=Configura\u00E7\u00F5es... edit_autocp_btn_tooltip=Configure as especifica\u00E7\u00F5es do provedor de conte\u00FAdo edit_data=Editar dados edit_act=Editar atividade edit_acp=Editar provedor de conte\u00FAdo edit_acp_err_creating=Erro ao criar o provedor de conte\u00FAdo! edit_project_author_group=Cria\u00E7\u00E3o edit_project_description_block=Descri\u00E7\u00E3o edit_project_ui_block=Interface do usu\u00E1rio edit_act_description=Descri\u00E7\u00E3o: m_Edit=Editar m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=Nova atividade... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Inserir m_Insert_Mnemonic=I m_View=Visualizar m_View_Mnemonic=V action_editProject_caption=Projeto action_editProject_keys=PP action_editProject_tooltip=Editar configura\u00E7\u00F5es do projeto action_editMedia_caption=M\u00EDdia action_editMedia_keys=MM action_editMedia_tooltip=Editar a biblioteca de m\u00EDdia do projeto action_editActivities_caption=Atividades action_editActivities_keys=AA action_editActivities_tooltip=Editar as atividades action_editSeq_caption=Sequ\u00EAncias action_editSeq_keys=SS action_editSeq_tooltip=Editar as sequ\u00EAncias das atividades warn_project_modified=O atual projeto foi modificado. Voc\u00EA quer salvar as mudan\u00E7as? edit_project_descriptors_block=Descritores edit_media_new=Novo objeto de m\u00EDdia... edit_media_new_tooltip=Adicione uma nova imagem ou objeto de multim\u00EDdia \u00E0 biblioteca edit_media_new_keys=M* edit_seq_threshold=Limite de pontua\u00E7\u00E3o: edit_seq_threshold_tooltip_up=Selecione este modo quando a pontua\u00E7\u00E3o global for igual a / ou maior que... edit_seq_time=Limite de tempo: edit_seq_time_tooltip_up=Para selecionar este modo, o tempo gasto em atividades deve ser menor que... edit_seq_threshold_tooltip_down=Selecione este modo quando a pontua\u00E7\u00E3o global for menor que... edit_seq_time_tooltip_down=Selecione este modo quando o tempo gasto em atividades for maior que... edit_seq_condJump=Pulos condicionais edit_seq_condJump_tooltip=Definir pulos especiais a serem executados somente em condi\u00E7\u00F5es espec\u00EDficas edit_seq_condJump_upper_tooltip=Definir condi\u00E7\u00F5es de pulo para um n\u00EDvel superior edit_seq_condJump_lower=Pulo Inferior: edit_seq_condJump_upper=Pulo Superior: edit_seq_condJump_lower_tooltip=Definir condi\u00E7\u00F5es de pulo para um n\u00EDvel inferior edit_seq_action_tooltip_fw=A\u00E7\u00E3o definida para o bot\u00E3o "pr\u00F3ximo" edit_seq_action_tooltip_bk=A\u00E7\u00E3o definida para o bot\u00E3o "anterior" edit_seq_jump_tooltip=Definir o alvo do pulo edit_seq_action_tooltip=A\u00E7\u00E3o a ser realizada edit_seq_activity_tooltip=Atividade definida para este elemento da sequ\u00EAncia edit_seq_tag_tooltip=Etiqueta usada para fazer refer\u00EAncia a este elemento de sequ\u00EAncia (campo opcional) edit_seq_description_tooltip=Descri\u00E7\u00E3o do elemento da sequ\u00EAncia (campo opcional) edit_seq_button_enabled_tooltip=Habilitar ou desabilitar o bot\u00E3o de setas edit_seq_auto_tooltip=Seguir para a pr\u00F3xima atividade automaticamente quando a atual for finalizada edit_seq_delay_tooltip=Segundos de espera antes de realizar a mudan\u00E7a autom\u00E1tica edit_color_dlgTitle=Selecione uma cor edit_media_renaming=Por favor, espere enquanto o recurso est\u00E1 sendo renomeado... edit_act_cell_width=Largura: edit_act_cell_width_tooltip=Largura da c\u00E9lula (em pixels) edit_act_cell_height=Altura: edit_act_cell_height_tooltip=Altura da c\u00E9lula (em pixels) edit_act_hiddenWords=Palavras escondidas: edit_act_hiddenWords_tooltip=Lista das palavras escondidas localizadas no painel edit_act_wordSearch_panelB=Use o painel B edit_act_wordSearch_panelB_tooltip=Os conte\u00FAdos do segundo painel ser\u00E3o exibidos conforme as palavras forem encontradas edit_act_shaper_tooltip=Selecione o tipo de formatador a ser utilizado no painel edit_act_num_cols_tooltip=N\u00FAmero de colunas do painel edit_act_num_rows_tooltip=N\u00FAmero de linhas do painel edit_act_wildTransparent=Delimitadores transparentes edit_act_wildTransparent_tooltip=Trate os delimitadores (caixas pretas) como buracos transparentes edit_act_behavior_scramble_times=Embaralhar: edit_act_behavior_scramble_times_tooltip=N\u00FAmero de vezes para embaralhar edit_act_copy_title=Copiar atributos para... edit_act_copy_attributes=Atributos edit_act_copy_dest=Aplicar a: edit_act_copy_style_main=Janela Principal edit_act_copy_style_play=Janela de Jogos edit_act_copy_activities=Atividades a serem modificadas: edit_act_copyAttributes=Copiar atributos edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copiar os atributos da atividade atual para outras atividades edit_new_project_name=Nome do projeto: edit_new_project_name_tooltip=Nome descritivo do projeto em poucas palavras edit_new_project_filename=Nome do arquivo: edit_new_project_filename_tooltip=Nome do arquivo do projeto, sem a extens\u00E3o edit_new_project_folder=Pasta: edit_new_project_folder_tooltip=Nome da pasta em que o projeto ser\u00E1 armazenado edit_new_project_folder_browse=Procurar... edit_new_project_title=Criar novo projeto do JClic edit_new_project_err_empty=Erro: Projeto, arquivo e pasta devem ter nomes v\u00E1lidos (nomes nulos s\u00E3o inv\u00E1lidos). edit_new_project_warning_noEmptyFolder=Esta pasta j\u00E1 cont\u00E9m outro projeto do Clic 3.0 ou do JClic. A fim de evitar confus\u00F5es, recomenda-se manter cada projeto em uma pasta separada, mas esta n\u00E3o \u00E9 uma regra. Voc\u00EA realmente quer criar o novo projeto nesta pasta? edit_new_project_err_folderCreation=Erro: Incapaz de criar a pasta especificada! edit_act_copy_err_noSelection=Erro: Nenhuma atividade selecionada! Para usar esta fun\u00E7\u00E3o voc\u00EA deve selecionar atividades \u00E0s quais os atributos indicados ser\u00E3o aplicados. edit_act_copy_action_prefix=Copiando atributos para: edit_act_copy_margin=Margem edit_act_copy_bgColor=Cor do plano de fundo edit_act_copy_gradient=Gradiente edit_act_copy_bgImage=Imagem do plano de fundo edit_act_copy_border=Borda edit_act_copy_transparentBg=Plano de fundo transparente edit_act_copy_position=Posi\u00E7\u00E3o edit_act_copy_messages=Mensagens edit_act_copy_messages_ini=Estilo da mensagem inicial edit_act_copy_messages_end=Estilo da mensagem final edit_act_copy_messages_err=Estilo da mensagem de erro edit_act_copy_reports=Relat\u00F3rios edit_act_copy_rep_include=Incluir atividade no relat\u00F3rio edit_act_copy_rep_actions=Registrar a\u00E7\u00F5es edit_act_copy_interface=Interface do usu\u00E1rio edit_act_copy_skin=Skin (apar\u00EAncia da moldura) edit_act_copy_evSounds=Sons eventuais edit_act_copy_counters=Contadores edit_act_copy_cTime=Contador de tempo edit_act_copy_maxTime=Tempo m\u00E1ximo edit_act_copy_cTries=Contador de tentativas edit_act_copy_maxTries=M\u00E1ximo de tentativas edit_act_copy_cScore=Contador de acertos edit_act_copy_scramble=Embaralhar # vezes edit_act_copy_buttons=Bot\u00F5es edit_act_copy_btnHelp=Bot\u00E3o de Ajuda edit_act_copy_btnInfo=Bot\u00E3o de informa\u00E7\u00E3o edit_act_copy_grids=Grades edit_act_copy_gridA=Estilo da grade A edit_act_copy_gridB=Estilo da grade B edit_act_copy_textGrid=Estilo das grades de texto edit_act_copy_text=Atividades de texto edit_act_copy_fontFace=Fonte edit_act_copy_fontSize=Tamanho da fonte edit_act_copy_fontStyle=Estilo da fonte edit_act_copy_textColour=Cor principal do texto edit_act_copy_textTargetColour=Selecione o projeto jClic do qual as atividades ser\u00E3o importadas edit_act_copy_textErrorColour=Cor de erro edit_act_copy_tabSpace=Espa\u00E7o de tabula\u00E7\u00E3o edit_act_copy_messages_prev=Estilo da mensagem anterior edit_act_changeType=Alterar tipo de atividade edit_act_newActivity_class_tooltip=Nome completo da Classe a ser utilizada para construir a atividade (somente para usu\u00E1rios avan\u00E7ados!) edit_act_newActivity_other=Outro... edit_act_newActivity_info=Usu\u00E1rios avan\u00E7ados podem tamb\u00E9m criar tipos n\u00E3o-registrados de atividades do JClic. Somente escreva abaixo o nome completo da Classe, prefixado pelo pacote (como "com.acme.activities.FooActivity"). Classes de atividade devem extender edu.xtec.jclic.Activity, e devem ser acess\u00EDveis para o carregador de classes JVM (JVM classloader). edit_act_newActivity_name=Nome da atividade: edit_act_newActivity_name_tooltip=Cada atividade deve ter um nome \u00FAnico no projeto edit_act_changeType_warning=

Aviso: Alterar o tipo de atividade pode causar perda de alguns atributos e objetos da atividade atual. Realize esse procedimento com cuidado!

 

applet_codebase=Localiza\u00E7\u00E3o do c\u00F3digo do JClic: applet_codebase_tooltip=Endere\u00E7o (URL) apontando para a pasta com os arquivos de programas JClic e scripts applet_prev_text=C\u00F3digo HTML anterior: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Texto ou c\u00F3digo HTML a ser aplicado antes do applet applet_post_text=C\u00F3digo HTML posterior: applet_post_text_tooltip=Texto ou c\u00F3digo HTML a ser aplicado ap\u00F3s o applet applet_size=Tamanho do applet: applet_size_tooltip=largura e altura do applet, em valores absolutos ou percentuais. applet_page_title=T\u00EDtulo da p\u00E1gina: applet_page_title_tooltip=Texto a ser exibido no topo da janela do navegador applet_created_info=A p\u00E1gina "%s" foi criada com sucesso. applet_created_prompt=Voc\u00EA quer abrir a p\u00E1gina com o navegador agora? action_createHTML_caption=Criar p\u00E1gina da web... applet_create_title=Cria\u00E7\u00E3o da p\u00E1gina HTML com um applet do JClic action_createHTML_tooltip=Criar uma p\u00E1gina HTML com um applet do JClic contendo o atual projeto applet_filename=Nome do arquivo: applet_filename_tooltip=Nome do arquivo HTML a ser criado action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valores padr\u00E3o utilizados na cria\u00E7\u00E3o da p\u00E1gina da web applet_bgcolor=Cor do plano de fundo: applet_bgcolor_tooltip=Cor do plano de fundo da p\u00E1gina HTML applet_centered=Centralizado applet_centered_tooltip=Exibir o applet centralizado horizontalmente applet_width_tooltip=Largura do applet (absoluto ou percentual) applet_height_tooltip=Altura do applet (absoluto ou percentual) applet_exitUrl=Ao sair, v\u00E1 para: applet_exitUrl_tooltip=Ao sair, redirecionar a navega\u00E7\u00E3o do JClic para o endere\u00E7o (URL) applet_infoFrame=Nome do quadro de informa\u00E7\u00F5es: applet_infoFrame_tooltip=Nome do quadro utilizado para exibir conte\u00FAdos relacionados com o bot\u00E3o "informa\u00E7\u00F5es" action_createInstaller_caption=Criar instalador do projeto... action_createInstaller_keys=I* action_createInstaller_tooltip=Criar um script instalador de projeto para o JClic player installer_caption=Editar script instalador de projetos installer_title=T\u00EDtulo: installer_title_tooltip=T\u00EDtulo de projeto, a ser mostrado no auxiliar de instala\u00E7\u00E3o installer_authors=Autores: installer_authors_tooltip=Autor/es do projeto (texto curto) installer_folder=Pasta: installer_folder_tooltip=Nome da pasta a ser sugerido pelo auxiliar de instala\u00E7\u00E3o installer_files=Arquivos a serem copiados: installer_files_tooltip=Arquivos a serem copiados pelo instalador installer_files_available=Arquivos dispon\u00EDveis installer_files_selected=Arquivos selecionados installer_files_add=>> adicionar >> installer_files_add_tooltip=Adicionar \u00E0 lista o arquivo selecionado installer_files_remove=<< remover << installer_files_remove_tooltip=Remover da lista o arquivo selecionado installer_button=Bot\u00E3o de in\u00EDcio installer_button_tooltip=Propriedades do bot\u00E3o a ser exibido na biblioteca de projetos installer_button_project=Projeto principal: installer_button_project_tooltip=Projeto JClic a ser iniciado pelo bot\u00E3o installer_button_text=R\u00F3tulo: installer_button_text_tooltip=R\u00F3tulo de texto curto, a ser exibido dentro do bot\u00E3o installer_button_icon=\u00CDcone: installer_button_icon_tooltip=Imagem a ser utilizada como \u00EDcone do bot\u00E3o. Deixe em branco para usar o \u00EDcone padr\u00E3o do JClic. installer_button_description=Descri\u00E7\u00E3o installer_button_description_tooltip=Dica a ser exibida pelo bot\u00E3o installer_error_noTitle=Erro: Est\u00E1 faltando o t\u00EDtulo do projeto installer_error_noBaseFolder=Erro: Est\u00E1 faltando o nome da pasta installer_error_noFilesSelected=Erro: Nenhum arquivo selecionado installer_error_noButtonText=Erro: Est\u00E1 faltando o r\u00F3tulo de texto do bot\u00E3o de in\u00EDcio installer_error_projectNotInFiles=Erro: O projeto definido pelo bot\u00E3o de in\u00EDcio n\u00E3o est\u00E1 na lista de arquivos a serem copiados applet_page_full=Applet de p\u00E1gina cheia applet_page_mixed=Applet com dimens\u00F5es espec\u00EDficas edit_text_align_left=Alinhar texto \u00E0 esquerda edit_text_align_center=Centralizar texto edit_text_align_right=Alinhar texto \u00E0 direita edit_text_act_target_toggle=Criar ou remover alvo edit_text_act_insertCell=Inserir uma c\u00E9lula edit_text_act_content=Conte\u00FAdo edit_text_act_style=Estilo edit_cell_size=Tamanho da c\u00E9lula: edit_project_orphanActivities=As seguintes atividades n\u00E3o aparecem em sequ\u00EAncias de atividade do projeto, portanto nunca ser\u00E3o exibidas: edit_project_orphanMedia=Os seguintes objetos de m\u00EDdia n\u00E3o est\u00E3o sendo usados diretamente em nenhuma atividade: edit_project_orphanActivities_prompt=Voc\u00EA quer adicion\u00E1-los ap\u00F3s a \u00FAltima atividade da sequ\u00EAncia? edit_project_orphanMedia_prompt=Voc\u00EA quer remov\u00EA-los? edit_project_orphanMedia_title=Remo\u00E7\u00E3o de objetos de m\u00EDdia n\u00E3o utilizados edit_project_orphanActivities_title=Atividades isoladas edit_media_refreshAll=Atualizar todo o conte\u00FAdo de m\u00EDdia edit_media_refreshAll_tooltip=Atualizar todos os objetos de m\u00EDdia recarregando estes arquivos edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Atualizando m\u00EDdia... edit_media_exportAll=Exportar toda m\u00EDdia edit_media_exportAll_tooltip=Salvar em arquivos todo o conte\u00FAdo de todos os elementos de m\u00EDdia edit_media_exportAll_keys=X* edit_shape_select=Selecione edit_shape_addPoint=Adicione ponto edit_shape_deletePoint=Apague edit_shape_drawRect=Desenhe ret\u00E2ngulo edit_shape_drawEllipse=Desenhe elipse edit_shape_drawPoly=Desenhe pol\u00EDgono edit_shape_toLine=Converter para linha edit_shape_toBezier=Converter para curva B\u00E9zier edit_shape_toQuad=Converter para curva quadratica edit_shape_rLeft=Girar esquerda edit_shape_rRight=Girar direita edit_shape_expand=Expandir edit_shape_contract=Contrair edit_shape_zoomIn=Zoom + edit_shape_zoomOut=Zoom - edit_shape_aproxPoints=Unir os pontos mais pr\u00F3ximos edit_shape_showPoints=Mostrar pontos edit_shape_showPoints_tooltip=Mostrar/ Ocultar os pontos edit_shape_gridSize=Tamanho da grade: edit_shape_hideGrid=Mostrar/ Ocultar a grade edit_shape_magnetRadius=Raio de Magneto: edit_shape_elements=Elementos definidos edit_shape_elemName=Nome do elemento selecionado edit_shape_magnetRadius_tooltip=Ativar Raio de Magneto,quando habilitado edit_shape_gridSize_tooltip=Tamanho da grade edit_mc_activity=Atividade: edit_mc_sequence=Sequ\u00EAncia: edit_mc_url=URL: edit_mc_project=Projeto: edit_mc_activity_selection=Escolha atividade edit_mc_sequence_selection=Escolha sequ\u00EAncia edit_mc_err_nullContent=Dados insuficientes! edit_act_arrowColor=Cor da seta: edit_act_arrowColor_tooltip=Cor utilizada pelo editor para desenhar as setas (n\u00E3o exatamente, porque uma m\u00E1scara de bit XOR \u00E9 utilizada) edit_act_editActivity=Editar... edit_act_editActivity_tooltip=Editar a atividade selecionada action_saveFileAs_caption=Salvar como... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Salva o projeto atual com um nome diferente edit_act_behavior_block=Comportamento edit_act_behavior=Comportamento edit_act_behavior_drag=Arrastar edit_act_behavior_drag_tooltip=Arrastar c\u00E9lulas em vez de usar linhas de conex\u00E3o edit_act_behavior_order=Verificar ordem de solu\u00E7\u00E3o edit_act_behavior_order_tooltip=As c\u00E9lulas devem ser solucionadas em ordem edit_act_scramble=Embaralhar action_importActivities_caption=Importar atividades... action_importActivities_keys=I* action_importActivities_tooltip=Importar atividades de outro projeto import_warn_samefile=O arquivo selecionado corresponde ao projeto atual. Atividades podem ser importadas apenas de projetos diferentes. Por favor, escolha outro arquivo de projeto. import_selectActivities=Selecione uma ou mais atividades para importar ao projeto atual: import_importing=Importando... import_checkdep=Verificando depend\u00EAncias... import_impmedia=Importando m\u00EDdia: import_impact=Importanto atividade: import_selectProject=Selecione o projeto jClic do qual as atividades ser\u00E3o importadas edit_tagRep_tags=Marcas edit_tagRep_tagStart=Marcas de in\u00EDcio: edit_tagRep_tagStart_tooltip=Marca usada para indicar come\u00E7o de etiqueta edit_tagRep_tagEnd=Marca final: edit_tagRep_tagEnd_tooltip=Marca que indica final de etiqueta edit_tagRep_file=Arquivo edit_tagRep_fileName=Arquivo ou URL: edit_tagRep_fileName_tooltip=Nome ou URL do arquivo com os valores que substituir\u00E3o as etiquetas edit_tagRep_charset=Codifica\u00E7\u00E3o de caracteres: edit_tagRep_charset_tooltip=Codifica\u00E7\u00E3o de caracteres usada no arquivo edit_tagRep_browseFile=Procurar... edit_tagRep_browseFile_tooltip=Procurar entre os arquivos edit_tagRep_title=Substituir etiqueta edit_text_act_clearStylesBtn=Apagar estilos de texto... edit_text_act_clearStylesPrompt=Alerta: Essa a\u00E7\u00E3o ir\u00E1 apagar os atributos de caracteres espec\u00EDficos aplicados ao documento, devolvendo-o ao seu estilo principal. Essa a\u00E7\u00E3o n\u00E3o poder\u00E1 ser desfeita. Deseja continuar? img_max_size=Tamanho m\u00E1ximo das imagens: img_max_width_tooltip=Largura m\u00E1xima das imagens importadas para a biblioteca. img_max_height_tooltip=Altura m\u00E1xima das imagens importadas para a biblioteca. img_resize_prompt=A imagem "%s" possui %s pixels. Ela est\u00E1 maior que o permitido pelo JClic Author (%s). Deseja redimension\u00E1-la? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_it.properties0000644000175000017500000012565311377161311026026 0ustar #JClic Author messages edit_act_description_block=Descrizione edit_act_name_tooltip=Nome dell'attivit\u00E0 edit_act_name=Nome: edit_act_description_tooltip=Descrizione dell'attivit\u00E0 edit_act_reports_block=Rapporti edit_act_includeInReports=Includi questa attivit\u00E0 nei rapporti edit_act_includeInReports_tooltip=Includi i risultati di queste attivit\u00E0 nei rapporti degli utenti edit_act_code=Codice: edit_act_code_tooltip=Codice opzionale usato per raggruppare e fare ricerche nel database dei rapporti. edit_act_reportActions=Resoconto delle attivit\u00E0 dell'utente edit_act_reportActions_tooltip=Registra i dettagli di tutte le attivit\u00E0 eseguite dagli utenti edit_act_counters_block=Contatori edit_act_timeCounter=Cronometro edit_act_timeCounter_tooltip=Mostra/nascondi il cronometro edit_act_actionsCounter=Contatore dei tentativi edit_act_actionsCounter_tooltip=Mostra/nascondi il contatore dei tentativi edit_act_scoreCounter=Punteggio edit_act_scoreCounter_tooltip=Mostra/nascondi il punteggio. edit_act_maxTime=Tempo massimo: edit_act_maxTime_tooltip=Tempo massimo per risolvere l'attivit\u00E0, in secondi, o 0 per un tempo illimitato. edit_act_countdown=Conto alla rovescia edit_act_countdown_tooltip=Il contatore inizia con il valore massimo, decrescendo fino a 0. edit_act_maxActions=Numero massimo dei tentativi: edit_act_maxActions_tooltip=Massimo numero di tentativi premesso, o 0 per tentativi illimitati. edit_act_buttons_block=Pulsanti edit_act_helpBtn=Aiuto edit_act_helpBtn_tooltip=Mostra/nascondi il pulsante di aiuto edit_act_helpBtn_solution=Mostra la soluzione edit_act_helpBtn_msg=Mostra questo messaggio: edit_act_infoBtn=Informazioni edit_act_infoBtn_tooltip=Mostra/Nascondi il pulsante informativo edit_act_infoBtn_url=Mostra questa URL: edit_act_infoBtn_cmd=Esegui questo comando: edit_act_infoBtn_url_tooltip=Indirizzo del sito Web da mostrare quando si clicca sul pulsante informativo edit_act_infoBtn_cmd_tooltip=Linea di comando da eseguire quando si clicca sul pulsante d'informazione. edit_act_mainWindow=Finestra principale: edit_act_gameWindow=Finestra di lavoro: edit_act_margin=Margine: edit_act_margin_tooltip=Spazio orizzontale e verticale tra gli oggetti visuali. edit_act_bgColor=Colore di sfondo: edit_act_bgColor_tooltip=Cambia il colore di sfondo. edit_gradient_startColor=Colore di partenza: edit_gradient_endColor=Colore finale: edit_gradient_startColor_tooltip=Selezione del colore di partenza edit_gradient_endColor_tooltip=Selezione del colore finale edit_gradient_cycles=Ripetizioni: edit_gradient_cycles_tooltip=Numero di ripetizioni della sfumatura sulla superificie colorata edit_gradient_orientation=Orientamento: edit_gradient_orientation_tooltip=Orientamento della sfumatura, misurato in gradi rispetto all'orizzontale edit_act_gradient=Sfumatura: edit_act_gradient_tooltip=Usa sfumature di colore edit_color_opacity=Opacit\u00E0 edit_color_opacity_tooltip=Imposta il valore di canale alpha del colore (opacit\u00E0) edit_gradient_title=Sfumatura edit_gradient_default=Usa i valori di default (sfumatura nulla) edit_act_image=Immagine: edit_act_descriptionTab=Descrizione edit_act_descriptionTab_tooltip=Nome e descrizione edit_act_tiledBgImg=Ripetuto edit_act_tiledBgImg_tooltip=Paint all the surface with the image, repeating it along the X and Y axis as needed. edit_act_preview=Anteprima: edit_act_border=Bordo edit_act_border_tooltip=Disegna una linea attorno alla finestra edit_act_transparent=Trasparente edit_act_transparent_tooltip=La finestra ha lo sfondo trasparente edit_act_width=Larghezza: edit_act_height=Altezza: edit_act_width_tooltip=Larghezza dell'oggetto, misurata in pixels edit_act_height_tooltip=Altezza dell'oggetto, misurata in pixels edit_act_centered=Centrato edit_act_centered_tooltip=L'oggetto sar\u00E0 centrato sulla finestra principale edit_act_x=X: edit_act_x_tooltip=Posizione orizzontale assoluta edit_act_y=Y: edit_act_y_tooltip=Posizione verticale assoluta edit_act_ui_block=Interfaccia utente edit_act_image_tooltip=Seleziona un'immagine edit_act_text=Testo: edit_act_text_tooltip=Testo da mostrare in questo oggetto edit_font_face=Carattere: edit_font_size=Dimensione: edit_font_bold=Grassetto edit_font_italic=Corsivo edit_font_underline=Sottolineato edit_font_style=Stile: edit_cell_title=Contenuto della cella edit_act_messages=Messaggi edit_act_msg_initial=Messaggio iniziale: edit_act_msg_final=Messaggio finale: edit_act_msg_prev=Messaggio precedente: edit_act_msg_error=Messaggio d'errore: edit_act_msg_initial_tooltip=Messaggio da visualizzare all'avvio dell'attivit\u00E0 edit_act_msg_final_tooltip=Messaggio da visualizzare alla conclusione dell'attivit\u00E0 edit_act_msg_error_tooltip=Messaggio da visualizzare quando l'attivit\u00E0 si conclude con degli errori edit_act_msg_prev_tooltip=Messaggio da visualizzare prima dell'avvio dell'attivit\u00E0 (solo in alcuni tipi di attivit\u00E0) edit_align=Allineamento: edit_act_textColor=Colore del testo: edit_act_textColor_tooltip=Colore usato per disegnare il testo edit_act_shadowColor=Colore dell'ombra: edit_act_shadowColor_tooltip=Colore usato per disegnare l'ombreggiatura del testo, quando applicabile edit_act_shadow=Ombreggiatura edit_act_shadow_tooltip=Disegna il testo con l'ombreggiatura edit_act_borderColor=Colore del bordo: edit_act_borderColor_tooltip=Colore usato per disegnare il bordo della cella edit_act_inactiveColor=Colore di stato inattivo: edit_act_inactiveColor_tooltip=Colore usato quando la cella \u00E8 disabilitata edit_act_altColor=Colore alternativo: edit_act_altColor_tooltip=Colore usato per disegnare il contenuto alternativo nelle celle risolte edit_cell_marked=Evidenziato edit_cell_disabled=Disabilitato edit_cell_alt=Alternativa edit_cell_textMargin=Margine interno: edit_cell_textMargin_tooltip=Spazio tra il bordo della cella e il testo. edit_cell_borderWidth=Larghezza del bordo: edit_cell_borderWidth_tooltip=Larghezza della punta usata per disegnare il bordo standard edit_cell_markerWidth=Larghezza del marcatore: edit_cell_markerWidth_tooltip=Larghezza della punta usata per disegnare il bordo quando la cella \u00E8 marcata o selezionata edit_cell_alt_tooltip=Anteprima nello stato "alternativa" edit_cell_disabled_tooltip=Anteprima nello stato "disabilitato" edit_cell_marked_tooltip=Anteprima nello stato "marcato" edit_act_testAction=Anteprima dell'attivit\u00E0 edit_act_testAction_tooltip=Anteprima e prova dell'attivit\u00E0 edit_act_panels_description=Descrizione edit_act_panels_description_tooltip=Titolo e descrizione dell'attivit\u00E0 edit_act_panels_options=Opzioni edit_act_panels_options_tooltip=Opzioni dell'attivit\u00E0 edit_act_panels_frame=Finestra edit_act_panels_frame_tooltip=Aspetto, dimensioni e posizione della finestra dell'attivit\u00E0 edit_act_panels_messages=Messaggi edit_act_panels_messages_tooltip=Contenuto dei messaggi dell'attivit\u00E0 edit_act_panels_panel=Pannello edit_act_panels_panel_tooltip=Contenuti del pannello edit_style_title=Stile edit_style_tooltip=Imposta il colore delle celle, font e dimensioni edit_act_style=Stile: edit_act_overlap=Permetti al testo di sconfinare dall'immagine edit_act_overlap_tooltip=Permette al testo di sconfinare dall'immagine edit_media_exists_1=Il file edit_media_exists_2=gi\u00E0 esiste nella biblioteca multimediale! edit_act_shaper=Pezzi: edit_act_shaper_err=Errore dei pezzi: edit_act_num_cols=Colonne: edit_act_num_rows=Righe: edit_act_toothHeightFactor=Altezza della dentatura edit_act_toothWidthFactor=Larghezza della dentatura edit_act_toothRandom=Distribuzione casuale edit_act_shaper_properties=Propriet\u00E0 dei pezzi edit_act_panels_text=Testo edit_act_panels_text_tooltip=Testo dell'attivit\u00E0 action_saveFile_caption=Salva... action_saveFile_keys=SS action_saveFile_tooltip=Salva il progetto corrente action_docTree_caption=Albero del documento... action_docTree_keys=T* action_docTree_tooltip=Mostra il documento del progetto come un albero edit_docTree_title=Albero del documento edit_media_referencedBy=Referenziato da: msg_prompt_loadReferences=Attenzione:

Questo progetto si connette con altri progetti.
Vuoi esplorare i riferimenti e caricare tutti i files relativi?

(Conviene rispondere SI' quando si vogliono importare attivit\u00E0 di Clic 3.0) edit_mc_type=Tipo: edit_mc_type_unknown=Sconosciuto edit_mc_type_sound=Riproduci un suono edit_mc_type_video=Riproduci un video edit_mc_type_midi=Riproduci un file MIDI edit_mc_type_cdaudio=Riproduci un CD audio edit_mc_type_record=Registra un suono edit_mc_type_play_recorded=Riproduci un suono registrato edit_mc_type_run_activity=Vai all'attivit\u00E0 edit_mc_type_run_sequence=Vai alla sequenza edit_mc_type_run_external=Esegui il programma edit_mc_type_url=Mostra l'URL edit_mc_type_exit=Fine edit_mc_type_return=Torna al programma edit_mc_level=Livello di priorit\u00E0: edit_mc_file=File: edit_mc_externalParam=Parametri: edit_mc_from=Da: edit_mc_to=A: edit_mc_length=Lunghezza max.: edit_mc_recBuffer=Registratore: edit_mc_stretch=Comprimi le dimensioni edit_mc_location=Posizione: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Da: edit_mc_location_from_box=Cella edit_mc_location_from_window=Finestra edit_mc_location_from_frame=Fotogramma edit_mc_loop=Esecuzione continua edit_mc_autostart=Auto start edit_mc_catchmouse=Cattura il mouse edit_mc_title=Contenuti multimediali e attivi edit_mc_label=Contenuto attivo: edit_media_dlg_title=Selezione degli oggetti multimediali edit_media_title=Libreria multimediale edit_mc_pos_cell=Centrato sulla cella edit_mc_pos_window=Centrato sulla finestra edit_mc_pos_absolute=Specifica la posizione: edit_tree_badFormat=Struttura dell'albero incorretta o dati errati! edit_act_panels_controls=Controlli edit_act_panels_controls_tooltip=Opzioni per i pulsanti e i contatori edit_act_class=Tipo: edit_act_gridLayout=Disposizione della griglia: edit_act_gridLayout_tooltip=Posizione relativa dei pannelli A e B. edit_act_inverseResolution=Risoluzione inversa edit_act_inverseResolution_tooltip=L'attivit\u00E0 \u00E8 risolta quando risultano collegati tutti gli elementi assegnati di "B". edit_act_showAllArrows=Mostra tutte le frecce edit_act_alt=Contenuto alternativo: edit_act_alt_tooltip=Contenuto mostrato nelle celle risolte e nelle celle non assegnate. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Modifica il contenuto alternativo edit_act_grid=Griglia edit_act_grid_A=Griglia A edit_act_grid_B=Griglia B edit_act_grid_layout=Disposizione edit_act_grid_relationship=Relazioni edit_seq_activity_header=attivit\u00E0 edit_seq_tag_header=tag edit_seq_jump_header=salta a edit_seq_activity=Attivit\u00E0: edit_seq_tag=Etichetta: edit_seq_description=Descrizione: edit_seq_auto=Vai avanti automaticamente edit_seq_delay=Ritardo: edit_seq_action_fwd=Vai avanti edit_seq_action_back=Vai indietro edit_seq_action_jump=Salta a... edit_seq_action_stop=Arresta edit_seq_action_return=Torna al programma edit_seq_action_exit=Esci da JClic edit_seq_arrow_fwd=Freccia avanti: edit_seq_arrow_back=Freccia indietro: edit_seq_action=Azione: edit_seq_button_enabled=Mostra il pulsante edit_seq_project=Progetto JClic: edit_act_absolute=Posizione assoluta edit_act_absolute_tooltip=L'oggetto sar\u00E0 posizionato alle coordinate X e Y specificate edit_act_location=Posizione: edit_seq_newElement=Nuovo elemento della sequenza... edit_seq_newElement_tooltip=Inserisci un nuovo elemento nella sequenza delle attivit\u00E0 edit_seq_newElement_msg=Per favore seleziona un'attivit\u00E0 per il nuovo elemento della sequenza. edit_seq_newElement_error_noAct=Non posso creare un nuovo elemento senza un'attivit\u00E0! edit_seq_newElement_error_emptyList=Questo progetto non ha attivit\u00E0! Non \u00E8 possibile creare una sequenza di attivit\u00E0 in un progetto vuoto. edit_seq_jump_msg=Obiettivo del salto: edit_seq_jump_title=Obiettivo del salto edit_act_newActivity_tooltip=Aggiungi una nuova attivit\u00E0 al progetto edit_act_prompt_class=Tipo di attivit\u00E0: edit_act_prompt_name=Nome: edit_act_newActivity_msg=Per favore seleziona il tipo di attivit\u00E0 da creare e dai ad essa un nome: edit_act_newActivity_error_noAct=Devi selezionare un tipo di attivit\u00E0! edit_act_newActivity_error_noName=Devi specificare un nome per l'attivit\u00E0! edit_act_newActivity_error_creating=Impossibile creare l'attivit\u00E0! edit_act_newActivity_class=Nome di classe Java: edit_text_act_format=Formato edit_text_act_answer=Risposta edit_text_act_popup=Pop up edit_text_act_answer_label=Risposte valide: edit_list_newElement_tooltip=Aggiungi un nuovo elemento alla lista edit_list_editElement_tooltip=Modifica l'elemento selezionato edit_list_deleteElement_tooltip=Cancella l'elemento selezionato edit_list_upBtn_tooltip=Sposta in alto edit_list_downBtn_tooltip=Sposta in basso edit_list_newValue=Nuovo testo: edit_list_addElement=Aggiungi un nuovo elemento di testo edit_list_modifyValue=Modifica il testo selezionato edit_text_act_target=Testo nascosto edit_text_act_maxLen=Lunghezza max.: edit_text_act_maxLen_tooltip=Massimo numero di caratteri nella risposta. edit_text_act_fillingChar=Carattere di riempimento edit_text_act_fillingChar_tooltip=Carattere utilizzato per indicare il testo nascosto edit_text_act_iniLen=Lunghezza iniziale: edit_text_act_iniLen_tooltip=Numero dei caratteri di riempimento che saranno visualizzati all'inizio dell'attivit\u00E0. edit_text_act_iniText=Testo iniziale: edit_text_act_iniText_tooltip=Testo visualizzato all'inizio dell'attivit\u00E0 al posto del testo nascosto. edit_text_act_list=Mostra una lista di opzioni: edit_text_act_list_tooltip=Mostra una lista di opzioni tra le quali l'utente \u00E8 chiamato a scegliere. edit_text_act_check_title=Opzioni di correzione edit_text_act_popup_no=Niente pop up edit_text_act_popup_always=Pop up automatico edit_text_act_popup_onError=Pop up in caso di errori edit_text_act_popup_onDemand=Pop up con F1 edit_text_act_popup_type=Tipo: edit_text_act_popup_delay=Ritardo del pop up: edit_text_act_popup_maxTime=Tempo max: edit_text_act_popup_onlyPlay=Solo suono edit_text_act_err_noSelection=Per creare un nuovo testo nascosto devi selezionare un frammento di testo! edit_text_act_err_badCharInSelection=Il testo nascosto non pu\u00F2 includere caratteri accapo o tab. edit_text_act_err_nestedTargets=Non possono essere registrati testi nascosti! edit_text_act_err_cellInTarget=I testi nascosti non possono contenere celle! edit_text_act_pageBgColor=Colore del foglio: edit_text_act_editStylesBtn=Modifica gli stili del documento... edit_text_act_mainStyle=Stile principale: edit_text_act_tabSpc=Tabulazione: edit_text_act_tabSize=Spazi tra i tabulatori: edit_text_act_colors=Colori: edit_text_act_targetStyle=Colori del testo nascosto: edit_text_act_errorStyle=Colori degli errori: edit_text_act_preview=Anteprima: edit_text_act_styleSample_default_start=Testo standard edit_text_act_styleSample_target=testo nascosto edit_text_act_styleSample_error=errore edit_text_act_styleSample_default_fill=testo standard edit_text_act_styleSample_default_end=testo standard. edit_text_act_warnDeleteTarget=Attenzione: questa azione toglier\u00E0 il testo nascosto attualmente selezionato. Vuoi procedere? edit_text_act_prevScreen_title=Schermo precedente... edit_text_act_prevScreen_no=Non mostrare alcun testo prima dell'inizio dell'attivit\u00E0 edit_text_act_prevScreen_original=Mostra il testo completo dell'esercizio edit_text_act_prevScreen_special=Mostra questo testo: edit_text_act_prevScreen_time=Tempo max: edit_text_act_edit_target=Testo nascosto... edit_text_act_checkButton_show=Mostra il pulsante di correzione edit_text_act_checkButtonText=Pulsante di testo: edit_text_act_checkCase=Considera maiuscole/minuscole edit_text_act_checkAccents=Considera accenti e caratteri speciali edit_text_act_checkPunct=Considera la punteggiatura edit_text_act_checkDoubleSpc=Permetti spazi ripetuti edit_text_act_checkOptions=Criteri edit_text_act_checkAutoJump=Passa alla nuova parola nascosta una volta completato il riempimento edit_text_act_checkForceOk=Passa alla nuova parola solo dopo risposta corretta edit_text_act_checkDetail=Indica gli errori lettera per lettera edit_text_act_checkDetail_params=Parametri dell'algoritmo d'analisi: edit_text_act_checkDetail_steps=Passi: edit_text_act_checkDetail_field=Campo d'esplorazione: edit_text_act_defaultCheckButtonText=Controllo edit_text_act_advancedCorrectionOptions=Analisi della risposta edit_text_act_check_bt=Correzione... edit_text_act_checkButton=Pulsante di correzione edit_text_act_checkProgress=Avanzamento edit_text_act_typeBtn=Tipo... edit_text_act_orderParagraphs=Ordina i paragrafi edit_text_act_orderWords=Ordina le parole edit_text_act_order_amongstPar=Sparpaglia le parole nel paragrafo edit_text_act_type_title=Tipo di attivit\u00E0 edit_text_act_warnChangeType=Questa azione canceller\u00E0 tutte le parole nascoste esistenti. Vuoi procedere? edit_text_act_identWords=Identifica le parole edit_text_act_identChars=Identifica i caratteri edit_media_change_name=Cambia il nome... edit_media_change_file=Cambia il file... edit_media_includeInZip=Salva in un file ZIP edit_media_type=Tipo di file multimediale: edit_media_size=Grandezza del file: edit_media_show_type=Archivi di tipo: edit_media_preview=Anteprima del file multimediale edit_media_preview_tooltip=Anteprima della risorsa multimediale edit_media_rename=Cambia il nome di risorsa edit_media_rename_title=Rinomina edit_media_rename_prompt=Nuovo nome: edit_media_rename_invalid=Nome di risorsa non valido! edit_media_rename_exists=C'\u00E8 un'altra risorsa con questo nome! Ogni risorsa deve avere un nome unico. edit_media_chfile_invalid=File non valido! err_media_chfile_different=Il file deve essere dello stesso tipo edit_media_font_error=Impossibile caricare il font! edit_media_save_file=Salva il file (estrai da ZIP) edit_media_refresh_file=Aggiorna da file il contenuto multimediale edit_media_warn_zipFileNotExternal=Questo non \u00E8 un file "reale", ma un oggetto collocato in un contenitore ZIP. Per usare questa funzione, un file con lo stesso nome deve essere presente nella cartella dove si trova il file ZIP. edit_activities=Attivit\u00E0 edit_sequences=Sequenze edit_media=Libreria multimediale edit_media_tooltip=Gestisci immagini e altri file multimediali usati nel progetto edit_activities_tooltip=Crea e modifica le attivit\u00E0 del progetto edit_sequences_tooltip=Modifica e crea sequenze di attivit\u00E0 edit_project_title=Titolo: edit_project_title_tooltip=Titolo di progetto edit_project=Progetto edit_project_tooltip=Modifica le propriet\u00E0 del progetto edit_project_description=Descrizione: edit_project_description_tooltip=Descrizione generale del progetto edit_project_area=Aree: edit_project_area_tooltip=Aree curricolari del progetto edit_project_level=Livelli: edit_project_level_tooltip=Livelli educativi del progetto edit_project_descriptors=Descrittori: edit_project_descriptors_tooltip=Descrittori del progetto (separati da virgola) edit_project_languages=Lingue: edit_project_languages_tooltip=Lingue usate nel progetto edit_project_languages_modify=Cambia la lingua selezionata edit_project_languages_add=Aggiungi una lingua edit_project_languages_select=Codici di lingua ISO-639: edit_project_authors=Autori: edit_project_authors_tooltip=Persone coinvolte nel progetto edit_project_author_name=Nome: edit_project_author_mail=e-mail: edit_project_author_rol=Ruolo: edit_project_author_organization=Organizzazione: edit_project_author_comments=Commenti: edit_project_author_url=URL: edit_project_author_name_tooltip=Nome dell'autore (richiesto) edit_project_author_mail_tooltip=E-mail dell'autore (opzionale) edit_project_author_rol_tooltip=Ruolo della persona nel progetto: autore, collaboratore, disegni, suoni... (opzionale) edit_project_author_organization_tooltip=Scuola, universit\u00E0, associazione... (opzionale) edit_project_author_url_tooltip=Pagina web personale (opzionale) edit_project_author_comments_tooltip=Campo per altre informazioni (opzionale) edit_project_author_info=Informazioni sull'autore: edit_project_author_add=Aggiungi un autore alla lista edit_project_author_edit=Modifica le informazioni sull'autore edit_project_org_name=Nome: edit_project_org_name_tooltip=Nome della scuola edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=Indirizzo e-mail della scuola edit_project_org_url=URL: edit_project_org_url_tooltip=Sito web della scuola edit_project_org_address=Indirizzo: edit_project_org_address_tooltip=Indirizzo snail-mail edit_project_org_pc=c.p.: edit_project_org_pc_tooltip=Codice postale edit_project_org_city=Citt\u00E0: edit_project_org_city_tooltip=Citt\u00E0 della scuola edit_project_org_country=Nazione: edit_project_org_state=Stato: edit_project_org_comments=Commenti: edit_project_org=Scuola/e: edit_project_org_tooltip=Scuola o altra istituzione coinvolta nel progetto edit_project_org_info=Info sull'organizzazione: edit_project_org_add=Aggiungi organizzazione edit_project_org_edit=Modifica i dati dell'organizzazione edit_project_org_country_tooltip=Stato, federazione, unione... edit_project_org_state_tooltip=Stato federale, comunit\u00E0, regione... edit_project_org_comments_tooltip=Altre informazioni... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Data della revisione edit_project_rev_authors=Autori: edit_project_rev_authors_tooltip=Autori della revisione edit_project_rev_description=Descrizione: edit_project_rev_description_tooltip=Breve descrizione dei cambiamenti apportati edit_project_rev_comments=Commenti: edit_project_rev_comments_tooltip=Altre informazioni rilevanti edit_project_rev=Revisioni: edit_project_rev_tooltip=Storia della principali modifiche al progetto edit_project_rev_add=Aggiungi una registrazione di revisione edit_project_rev_edit=Modifica una registrazione di revisione edit_project_rev_info=Data di revisione edit_media_objects=oggetti edit_media_object=oggetto edit_evsounds_start=Inizio dell'attivit\u00E0: edit_evsounds_click=Clicca sull'oggetto edit_evsounds_actionError=Azione erronea: edit_evsounds_actionOk=Azione corretta: edit_evsounds_finishedError=Attivit\u00E0 completata con errori: edit_evsounds_finishedOk=Attivit\u00E0 completata in modo esatto: edit_project_rev_err_nodesc=Errore: Il campo di descrizione non pu\u00F2 essere lasciato vuoto! edit_evsounds_dlg_title=Modifica i suoni dell'evento edit_project_evsounds=Suoni dell'evento: edit_project_evsounds_tooltip=Imposta suoni specifici per ciascun evento JClic edit_act_evsounds=Suoni dell'evento: edit_act_evsounds_tooltip=Imposta suoni specifici per ciascun evento JClic edit_evsounds_default=suono predefinito edit_evsounds_disabled=disabilitato edit_evsounds_chk_tooltip=Abilita o disabilita i suoni per questo evento edit_evsounds_select_tooltip=Clicca per selezionare un suono per questo evento, o deseleziona per usare il suono predefinito action_newProject_caption=Nuovo progetto... action_newProject_keys=NN action_newProject_tooltip=Crea un nuovo progetto JClic edit_arith_op_from=Da: edit_arith_op_from_tooltip=Valore minimo dell'operatore edit_arith_op_to=A: edit_arith_op_to_tooltip=Valore massimo dell'operatore edit_arith_op_with=Con: edit_arith_op_with_tooltip=Se selezionato, l'operatore pu\u00F2 anche avere questo valore edit_arith_op_fromList=Uno da questa lista: edit_arith_op_fromList_tooltip=Lista dei possibili valori per l'operatore edit_arith_op_decimals=Decimali: edit_arith_op_decimals_tooltip=Numero di decimali dell'operando edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=Primo operando edit_arith_secondOp=Secondo operando edit_arith_title=Arith2 per JClic edit_arith_operations=Operazioni: edit_arith_operations_tooltip=Seleziona il tipo di operazioni da sviluppare edit_arith_operations_plus=Addizione edit_arith_operations_minus=Sottrazione edit_arith_operations_multiply=Moltiplicazione edit_arith_operations_divide=Divisione edit_arith_unknown=Incognita: edit_arith_unknown_tooltip=Seleziona l'elemento che agir\u00E0 da incognita edit_arith_unknown_aobx=Il risultato \u00E8 l'incognita edit_arith_unknown_aoxr=Il secondo operatore \u00E8 l'incognita edit_arith_unknown_xobr=Il primo operatore \u00E8 l'incognita edit_arith_unknown_axbr=L'operazione \u00E8 l'incognita edit_arith_unknown_invert=Scrivi il risultato all'inizio dell'espressione edit_arith_result=Risultato: edit_arith_result_notCarry=Non riportare edit_arith_result_random=Casuale edit_arith_result_asc=Crescente edit_arith_result_order=Ordina per risultato: edit_arith_result_desc=Decrescente edit_arith_result_avoidDup=Evita duplicati edit_arith_cond=Condizioni: edit_arith_cond_ind=Indifferente edit_arith_cond_agb=Il primo operatore deve essere pi\u00F9 grande del secondo edit_arith_cond_alb=Il primo operatore deve essere minore del secondo edit_arith_cond_tooltip=Altre condizioni edit_autocp=Generatore automatico di contenuti: edit_autocp_tooltip=Seleziona il tipo di generatore automatico di contenuti per questa attivit\u00E0. edit_autocp_block=Generatore di contenuti edit_autocp_btn=Parametri... edit_autocp_btn_tooltip=Configura i parametri del generatore di contenuti edit_data=Modifica i dati edit_act=Modifica l'attivit\u00E0 edit_acp=Modifica il generatore di contenuti edit_acp_err_creating=Errore di creazione del generatore automatico di contenuti! edit_project_author_group=Creazione edit_project_description_block=Descrizione edit_project_ui_block=Interfaccia utente edit_act_description=Descrizione: m_Edit=Modifica m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=Nuova attivit\u00E0... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Inserisci m_Insert_Mnemonic=I m_View=Visualizza m_View_Mnemonic=V action_editProject_caption=Progetto action_editProject_keys=PP action_editProject_tooltip=Modifica i parametri del progetto action_editMedia_caption=Mediateca action_editMedia_keys=MM action_editMedia_tooltip=Modifica la biblioteca multimediale del progetto action_editActivities_caption=Attivit\u00E0 action_editActivities_keys=AA action_editActivities_tooltip=Modifica le attivit\u00E0 action_editSeq_caption=Sequenze action_editSeq_keys=SS action_editSeq_tooltip=Modifica le sequenze delle attivit\u00E0 warn_project_modified=Il progetto corrente \u00E8 stato modificato. Vuoi salvare i cambiamenti? edit_project_descriptors_block=Descrittori edit_media_new=Nuovo oggetto multimediale... edit_media_new_tooltip=Aggiungi una nuova immagine o un nuovo oggetto multimediale alla biblioteca edit_media_new_keys=M* edit_seq_threshold=Limite di punteggio: edit_seq_threshold_tooltip_up=Segui questo percorso quando il punteggio globale \u00E8 uguale o superiore a... edit_seq_time=Limite di tempo: edit_seq_time_tooltip_up=Per seguire questo percorso, devi aver completato l'attivit\u00E0 in un tempo inferiore a... edit_seq_threshold_tooltip_down=Segui questo percorso quando il punteggio globale \u00E8 inferiore a... edit_seq_time_tooltip_down=Segui questo percorso quando il tempo impiegato nell'attivit\u00E0 \u00E8 superiore a... edit_seq_condJump=Salti condizionali edit_seq_condJump_tooltip=Imposta salti speciali da eseguire solo con specifiche condizioni edit_seq_condJump_upper_tooltip=Imposta condizioni per il salto a un livello superiore edit_seq_condJump_lower=Salto a livello inferiore: edit_seq_condJump_upper=Salto a livello superiore: edit_seq_condJump_lower_tooltip=Imposta le condizioni per saltare a un livello inferiore edit_seq_action_tooltip_fw=Azione assegnata al pulsante "successivo" edit_seq_action_tooltip_bk=Azione assegnata al pulsante "precedente" edit_seq_jump_tooltip=Imposta la destinazione del salto edit_seq_action_tooltip=Azione da fare edit_seq_activity_tooltip=Attivit\u00E0 assegnata a questo elemento di sequenza edit_seq_tag_tooltip=Tag usato per riferirsi a questo elemento di sequenza (campo opzionale) edit_seq_description_tooltip=Descrizione dell'elemento di sequenza (campo opzionale) edit_seq_button_enabled_tooltip=Abilita o disabilita il pulsante freccia edit_seq_auto_tooltip=Avanza automaticamente al termine dell'attivit\u00E0 edit_seq_delay_tooltip=Secondi di attesa prima dell'avanzamento automatico edit_color_dlgTitle=Seleziona il colore edit_media_renaming=Per favore aspetta mentre la risorsa viene rinominata... edit_act_cell_width=Larghezza: edit_act_cell_width_tooltip=Larghezza della cella (in pixels) edit_act_cell_height=Altezza: edit_act_cell_height_tooltip=Altezza della cella (in pixels) edit_act_hiddenWords=Parole nascoste: edit_act_hiddenWords_tooltip=Lista delle parole nascoste inserite nel pannello edit_act_wordSearch_panelB=Usa il pannello B edit_act_wordSearch_panelB_tooltip=I contenuti del secondo pannello saranno mostrati una volta trovate le parole edit_act_shaper_tooltip=Seleziona il tipo di generatore di forme da usare nel pannello edit_act_num_cols_tooltip=Numero di colonne del pannello edit_act_num_rows_tooltip=Numero di righe del pannello edit_act_wildTransparent=Separatori trasparenti edit_act_wildTransparent_tooltip=Mostra i separatori (caselle nere) come spazi trasparenti edit_act_behavior_scramble_times=Mescola: edit_act_behavior_scramble_times_tooltip=Numero di mescolamenti edit_act_copy_title=Copia le caratteristiche in... edit_act_copy_attributes=Caratteristiche edit_act_copy_dest=Applica a: edit_act_copy_style_main=Finestra principale edit_act_copy_style_play=Finestra di gioco edit_act_copy_activities=Attivit\u00E0 da modificare: edit_act_copyAttributes=Copia le caratteristiche edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copia le caratteristiche dell'attivit\u00E0 corrente in altre attivit\u00E0 edit_new_project_name=Nome del progetto: edit_new_project_name_tooltip=Breve nome descrittivo del progetto edit_new_project_filename=Nome file: edit_new_project_filename_tooltip=Nome del file del progetto, senza estensione edit_new_project_folder=Cartella: edit_new_project_folder_tooltip=Nome della cartella dove il progetto sar\u00E0 conservato edit_new_project_folder_browse=Sfoglia... edit_new_project_title=Crea un nuovo progetto JClic edit_new_project_err_empty=Errore: Progetto, file e cartella devono avere nomi validi. edit_new_project_warning_noEmptyFolder=Questa cartella gi\u00E0 contiene un altro progetto Clic 3.0 o JClic. Per evitare confusione, \u00E8 preferibile tenere ogni progetto in una cartella separata, ma non \u00E8 strettamente necessario. Vuoi realmente creare il nuovo progetto in questa cartella? edit_new_project_err_folderCreation=Errore: Impossibile creare la cartella specificata! edit_act_copy_err_noSelection=Errore: Nessuna attivit\u00E0 selezionata! Per usare questa funzione devi selezionare nella lista una o pi\u00F9 attivit\u00E0 alle quali vanno applicate le caratteristiche indicate. edit_act_copy_action_prefix=Copia delle caratteristiche in: edit_act_copy_margin=Margine edit_act_copy_bgColor=Colore di sfondo edit_act_copy_gradient=Sfumatura edit_act_copy_bgImage=Immagine di sfondo edit_act_copy_border=Bordo edit_act_copy_transparentBg=Sfondo trasparente edit_act_copy_position=Posizione edit_act_copy_messages=Messaggi edit_act_copy_messages_ini=Stile del messaggio iniziale edit_act_copy_messages_end=Stile del messaggio finale edit_act_copy_messages_err=Stile del messaggio di errore edit_act_copy_reports=Rapporti edit_act_copy_rep_include=Includi l'attivit\u00E0 nei rapporti edit_act_copy_rep_actions=Registra azioni edit_act_copy_interface=Interfaccia utente edit_act_copy_skin=Skin edit_act_copy_evSounds=Suoni dell'evento edit_act_copy_counters=Contatori edit_act_copy_cTime=Cronometro edit_act_copy_maxTime=Tempo max. edit_act_copy_cTries=Contatore dei tentativi edit_act_copy_maxTries=Tentativi max. edit_act_copy_cScore=Punteggio edit_act_copy_scramble=Numero di mescolamenti edit_act_copy_buttons=Pulsanti edit_act_copy_btnHelp=Pulsante di aiuto edit_act_copy_btnInfo=Pulsante informativo edit_act_copy_grids=Griglie edit_act_copy_gridA=Stile della griglia A edit_act_copy_gridB=Stile della griglia B edit_act_copy_textGrid=Stile delle griglie di testo edit_act_copy_text=Attivit\u00E0 testuali edit_act_copy_fontFace=Tipo di carattere edit_act_copy_fontSize=Dimensione del carattere edit_act_copy_fontStyle=Stile del carattere edit_act_copy_textColour=Colore del testo principale edit_act_copy_textTargetColour=Colore del testo nascosto edit_act_copy_textErrorColour=Colore degli errori edit_act_copy_tabSpace=Spazio tra i tabulatori edit_act_copy_messages_prev=Stile del messaggio precedente edit_act_changeType=Cambia il tipo di attivit\u00E0 edit_act_newActivity_class_tooltip=Nome completo della classe da usare per costruire l'attivit\u00E0 (solo per utenti esperti!) edit_act_newActivity_other=Altro... edit_act_newActivity_info=Gli utenti esperti possono anche creare tipi non registrati di attivit\u00E0 JClic. Basta scrivere sotto il nome della classe, con il prefisso indicante il pacchetto (es. "com.acme.activities.FooActivity"). Le classi di attivit\u00E0 devono estendere edu.xtec.jclic.Activity, e devono essere accessibili al caricatore di classi virtuali di Java. edit_act_newActivity_name=Nome dell'attivit\u00E0: edit_act_newActivity_name_tooltip=Ciascuna attivit\u00E0 deve avere un nome unico nel progetto edit_act_changeType_warning=

Attenzione: Il cambiamento del tipo di attivit\u00E0 pu\u00F2 causare la perdita di alcune caratteristiche e di alcuni oggetti dell'attivit\u00E0 corrente. Usa questa funzione con attenzione!

 

applet_codebase=Ubicazione del codice JClic: applet_codebase_tooltip=URL che punta a una cartella con i file di programma e gli scripts di JClic applet_prev_text=Codice HTML precedente: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Il testo o il codice HTML che apparir\u00E0 prima dell'applet applet_post_text=Codice HTML successivo: applet_post_text_tooltip=Il testo o il codice HTML che apparir\u00E0 dopo l'applet applet_size=Dimensioni dell'applet: applet_size_tooltip=Larghezza e altezza dell'applet, in valori assoluti o percentuali. applet_page_title=Titolo della pagina: applet_page_title_tooltip=Testo da mostrare nella parte superiore della finestra di navigazione applet_created_info=La pagina web "%s" \u00E8 stata creata con successo. applet_created_prompt=Vuoi aprirla adesso con il navigatore? action_createHTML_caption=Crea la pagina web... applet_create_title=Creazione di una pagina HTML con l'applet JClic action_createHTML_tooltip=Crea una pagina HTML con l'applet contenente il progetto corrente applet_filename=Nome file: applet_filename_tooltip=Nome del file HTML fa creare action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valori predefiniti usati nella creazione della pagina web applet_bgcolor=Colore di sfondo: applet_bgcolor_tooltip=Colore di sfondo della pagina HTML applet_centered=Centrato applet_centered_tooltip=Inserisci l'applet centrandolo orizzontalmente applet_width_tooltip=Larghezza dell'applet (assoluta o in percentuale) applet_height_tooltip=Altezza dell'applet (assoluta o in percentuale) applet_exitUrl=In uscita, vai a: applet_exitUrl_tooltip=URL dove ridirigere la navigazione all'uscita da JClic applet_infoFrame=Nome della schermata informativa: applet_infoFrame_tooltip=Nome della schermata usata per mostrare i contenuti relativi al pulsante "informazioni" action_createInstaller_caption=Crea l'installatore del progetto... action_createInstaller_keys=I* action_createInstaller_tooltip=Crea uno script di installazione di progetto per il lettore JClic installer_caption=Modifica lo script di installazione di progetto installer_title=Titolo: installer_title_tooltip=Titolo del progetto, da mostrare nell'assistente dell'installazione installer_authors=Autori: installer_authors_tooltip=Autore/i del progetto (testo breve) installer_folder=Cartella: installer_folder_tooltip=Nome della cartella che sar\u00E0 suggerita dall'assistente di installazione installer_files=I file da copiare: installer_files_tooltip=I file da copiare nell'installazione installer_files_available=File disponibili installer_files_selected=File selezionati installer_files_add=>> aggiungi >> installer_files_add_tooltip=Aggiungi il file selezionato alla lista installer_files_remove=<< rimuovi << installer_files_remove_tooltip=Rimuovi il file selezionato dalla lista installer_button=Pulsante di attivazione installer_button_tooltip=Propriet\u00E0 del pulsante da mostrare nella biblioteca dei progetti installer_button_project=Progetto principale: installer_button_project_tooltip=Progetto JClic associato al pulsante installer_button_text=Etichetta: installer_button_text_tooltip=Breve etichetta di testo, da mostrare all'interno del pulsante installer_button_icon=Icona: installer_button_icon_tooltip=Immagine da usare come icona del pulsante. Lascia vuoto per usare l'icona predefinita di JClic. installer_button_description=Descrizione installer_button_description_tooltip=Testo di aiuto mostrato con il pulsante installer_error_noTitle=Errore: Devi indicare il titolo del progetto installer_error_noBaseFolder=Errore: Devi indicare in quale cartella vuoi installare il progetto installer_error_noFilesSelected=Errore: Devi selezionare un file installer_error_noButtonText=Errore: Devi indicare il testo del pulsante di attivazione installer_error_projectNotInFiles=Errore: Il progetto assegnato al pulsante di attivazione non \u00E8 nella lista dei file da copiare applet_page_full=Applet a tutto schermo applet_page_mixed=Applet con dimensioni specifiche edit_text_align_left=Allinea il testo a sinistra edit_text_align_center=Centra il testo edit_text_align_right=Allinea il testo a destra edit_text_act_target_toggle=Crea o rimuovi un testo nascosto edit_text_act_insertCell=Inserisci una cella edit_text_act_content=Contenuto edit_text_act_style=Stile edit_cell_size=Dimensione della cella: edit_project_orphanActivities=Le seguenti attivit\u00E0 non appariranno in alcuna delle sequenze di attivit\u00E0, quindi non saranno mostrate: edit_project_orphanMedia=I seguenti oggetti multimediali non risultano usati in alcuna attivit\u00E0: edit_project_orphanActivities_prompt=Vuoi aggiungerli alla fine dell'ultima sequenza di attivit\u00E0? edit_project_orphanMedia_prompt=Vuoi rimuoverli? edit_project_orphanMedia_title=Rimozione di oggetti multimediali non usati edit_project_orphanActivities_title=Attivit\u00E0 orfane edit_media_refreshAll=Aggiorna tutti i contenuti multimediali edit_media_refreshAll_tooltip=Aggiorna tutti i contenuti multimediali richiamando i loro archivi edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Aggiornamento dei contenuti multimediali... edit_media_exportAll=Esportazione di tutti i contenuti multimediali edit_media_exportAll_tooltip=Salva i file dei contenuti di tutti gli elementi multimediali edit_media_exportAll_keys=X* edit_shape_select=Seleziona edit_shape_addPoint=Aggiungi un punto edit_shape_deletePoint=Elimina edit_shape_drawRect=Disegna un rettangolo edit_shape_drawEllipse=Disegna un'ellisse edit_shape_drawPoly=Disegna un poligono edit_shape_toLine=Converti in linea edit_shape_toBezier=Converti in curva di B\u00E9zier edit_shape_toQuad=Converti in quadratica edit_shape_rLeft=Ruota a sinistra edit_shape_rRight=Ruota a destra edit_shape_expand=Espandi edit_shape_contract=Contrai edit_shape_zoomIn=Zoom avanti edit_shape_zoomOut=Zoom indietro edit_shape_aproxPoints=Unisci punti vicini edit_shape_showPoints=Mostra punti edit_shape_showPoints_tooltip=Mostra/Nascondi i punti edit_shape_gridSize=Dimensione della griglia: edit_shape_hideGrid=Mostra / Nascondi la griglia edit_shape_magnetRadius=Raggio del magnete: edit_shape_elements=Elementi definiti edit_shape_elemName=Nome dell'elemento selezionato edit_shape_magnetRadius_tooltip=Raggio di azione del magnete (se abilitato) edit_shape_gridSize_tooltip=Dimenzioni della griglia edit_mc_activity=Attivit\u00E0: edit_mc_sequence=Sequenza: edit_mc_url=URL: edit_mc_project=Progetto: edit_mc_activity_selection=Scegli l'attivit\u00E0 edit_mc_sequence_selection=Scegli la sequenza edit_mc_err_nullContent=Dati insufficienti! edit_act_arrowColor=Colore delle frecce: edit_act_arrowColor_tooltip=Colore usato dall'editor per disegnare le frecce (non esattamente, dato che viene utilizzata una maschera di bit XOR) edit_act_editActivity=Modifica... edit_act_editActivity_tooltip=Modifica l'attivit\u00E0 selezionata action_saveFileAs_caption=Salva come... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Salva il progetto corrente con un nome differente edit_act_behavior_block=Comportamento edit_act_behavior=Comportamento edit_act_behavior_drag=Trascina gli oggetti edit_act_behavior_drag_tooltip=Trascina gli oggetti invece di unirli con una linea edit_act_behavior_order=Controlla l'ordine di soluzione edit_act_behavior_order_tooltip=Le celle devono essere risolte in ordine edit_act_scramble=Mescola action_importActivities_caption=Importa attivit\u00E0... action_importActivities_keys=I* action_importActivities_tooltip=Importa attivit\u00E0 da un altro progetto import_warn_samefile=Il file selezionato fa parte del progetto corrente. Possono essere importate attivit\u00E0 solo tra progetti differenti. Per favore seleziona un altro file di progetto. import_selectActivities=Seleziona una o pi\u00F9 attivit\u00E0 da importare nel progetto corrente: import_importing=Importazione... import_checkdep=Verifica delle dipendenze... import_impmedia=Importazione degli oggetti multimediali: import_impact=Importazione delle attivit\u00E0: import_selectProject=Seleziona il progetto JClic dal quale saranno importate le attivit\u00E0 edit_tagRep_tags=Marcatori edit_tagRep_tagStart=Marcatore d'inizio: edit_tagRep_tagStart_tooltip=Marcatore usato all'inizio dei tag edit_tagRep_tagEnd=Marcatore finale: edit_tagRep_tagEnd_tooltip=Marcatore usato alla fine dei tag edit_tagRep_file=File edit_tagRep_fileName=File o URL: edit_tagRep_fileName_tooltip=Nome o URL del file contenente i valori che sostituiranno le etichette edit_tagRep_charset=Set di caratteri: edit_tagRep_charset_tooltip=Set di caratteri usati nel file edit_tagRep_browseFile=Sfoglia... edit_tagRep_browseFile_tooltip=Sfoglia il sistema degli archivi edit_tagRep_title=Sostituzione dei tag edit_text_act_clearStylesBtn=Rimuovi gli stili di testo... edit_text_act_clearStylesPrompt=Attenzione: Questa azione rimuover\u00E0 gli specifici attributi di testo applicati al documento, ritornando allo stile principale. Questa azione non pu\u00F2 essere annullata. Vuoi procedere? img_max_size=Dimensione massima delle immagini: img_max_width_tooltip=Larghezza massima delle immagini importate nella libreria multimediale. img_max_height_tooltip=Altezza massima delle immagini importate nella libreria multimediale. img_resize_prompt=L'immagine "%s" ha una dimensione di %s pixel. Supera perci\u00F2 il massimo consentito da JClic Author (%s). Vuoi ridimensionarla? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_es.properties0000644000175000017500000013134711377161311026016 0ustar #JClic Author messages edit_act_description_block=Descripci\u00F3n edit_act_name_tooltip=Nombre de la actividad edit_act_name=Nombre: edit_act_description_tooltip=Descripci\u00F3n de la actividad edit_act_reports_block=Informes edit_act_includeInReports=Incluir esta actividad en los informes edit_act_includeInReports_tooltip=Incluir los resultados de esta actividad en los informes de usuario edit_act_code=Codigo: edit_act_code_tooltip=C\u00F3digo opcional utilizado para agrupar y filtrar en la base de datos de informes. edit_act_reportActions=Registrar tambi\u00E9n las acciones edit_act_reportActions_tooltip=Registrar los detalles de todas las acciones efectuadas por los usuarios. edit_act_counters_block=Contadores edit_act_timeCounter=Contador de tiempo edit_act_timeCounter_tooltip=Mostrar u ocultar el contador de tiempo. edit_act_actionsCounter=Contador de intentos edit_act_actionsCounter_tooltip=Mostrar u ocultar el contador de intentos. edit_act_scoreCounter=Contador de aciertos edit_act_scoreCounter_tooltip=Mostrar u ocultar el contador de aciertos. edit_act_maxTime=Tiempo m\u00E1ximo: edit_act_maxTime_tooltip=Tiempo m\u00E1ximo permitido para resolver la actividad, en segundos. El cero significa tiempo ilimitado. edit_act_countdown=Cuenta atr\u00E1s edit_act_countdown_tooltip=El contador empieza al valor m\u00E1ximo, decreciendo hasta cero. edit_act_maxActions=Intentos m\u00E1x.: edit_act_maxActions_tooltip=N\u00FAmero m\u00E1ximo de intentos permitidos, o cero para ilimitado. edit_act_buttons_block=Botones edit_act_helpBtn=Ayuda edit_act_helpBtn_tooltip=Mostrar o esconder el bot\u00F3n de ayuda edit_act_helpBtn_solution=Mostrar la soluci\u00F3n edit_act_helpBtn_msg=Mostrar este mensaje: edit_act_infoBtn=Informaci\u00F3n edit_act_infoBtn_tooltip=Mostrar u ocultar el bot\u00F3n de informaci\u00F3n edit_act_infoBtn_url=Mostrar esta URL: edit_act_infoBtn_cmd=Ejecutar el comando: edit_act_infoBtn_url_tooltip=Direcci\u00F3n de la p\u00E1gina web que se mostrar\u00E1 al hacer clic en el bot\u00F3n de informaci\u00F3n. edit_act_infoBtn_cmd_tooltip=Linea de \u00F3rdenes que se ejecutar\u00E1 al hacer clic en el bot\u00F3n de informaci\u00F3n. edit_act_mainWindow=Ventana principal: edit_act_gameWindow=Ventana de juego: edit_act_margin=Margen: edit_act_margin_tooltip=Espacio vertical y horizontal entre objetos visuales. edit_act_bgColor=Color de fondo: edit_act_bgColor_tooltip=Cambiar el color de fondo. edit_gradient_startColor=Color inicial: edit_gradient_endColor=Color final: edit_gradient_startColor_tooltip=Selecci\u00F3n del color inicial edit_gradient_endColor_tooltip=Selecci\u00F3n del color final edit_gradient_cycles=Ciclos: edit_gradient_cycles_tooltip=N\u00FAmero de repeticiones del gradiente sobre la superficie a pintar. edit_gradient_orientation=Orientacion: edit_gradient_orientation_tooltip=Orientaci\u00F3n del gradiente, medida en grados sobre la horizontal. edit_act_gradient=Gradiente: edit_act_gradient_tooltip=Utilizar un gradiente de colores edit_color_opacity=Opacidad edit_color_opacity_tooltip=Ajusta el valor del canal alfa (opacidad) de color. edit_gradient_title=Gradiente edit_gradient_default=Utilizar los valores por defecto (gradiente nulo) edit_act_image=Imagen: edit_act_descriptionTab=Descripci\u00F3n edit_act_descriptionTab_tooltip=Nombre y descripci\u00F3n edit_act_tiledBgImg=En mosaico edit_act_tiledBgImg_tooltip=Pinta toda la superficie con la imagen, repiti\u00E9ndola a lo largo de los ejes X e Y tantas veces como sea necesario. edit_act_preview=Vista previa: edit_act_border=Borde edit_act_border_tooltip=Dibujar una linea de borde alrededor de la ventana edit_act_transparent=Transparente edit_act_transparent_tooltip=La ventana tiene el fondo transparente edit_act_width=Anchura: edit_act_height=Altura: edit_act_width_tooltip=Anchura del objeto, indicada en pixels edit_act_height_tooltip=Altura del objeto, en pixels edit_act_centered=Centrada edit_act_centered_tooltip=El objeto se situa centrado respecto a la ventana principal edit_act_x=X: edit_act_x_tooltip=Posici\u00F3n horizontal absoluta edit_act_y=Y: edit_act_y_tooltip=Posici\u00F3n vertical absoluta edit_act_ui_block=Interfaz de usuario edit_act_image_tooltip=Seleccionar una imagen edit_act_text=Texto: edit_act_text_tooltip=Texto que se mostrar\u00E1 en este objeto edit_font_face=Tipo: edit_font_size=Tama\u00F1o: edit_font_bold=Negrita edit_font_italic=Cursiva edit_font_underline=Subrayado edit_font_style=Estilo: edit_cell_title=Contenido de la casilla edit_act_messages=Mensajes edit_act_msg_initial=Mensaje inicial: edit_act_msg_final=Mensaje final: edit_act_msg_prev=Mensaje previo: edit_act_msg_error=Mensaje de error: edit_act_msg_initial_tooltip=Mensaje que se muestra al inicar la actividad edit_act_msg_final_tooltip=Mensaje que se muestra al acabar la actividad edit_act_msg_error_tooltip=Mensaje que se muestra al acabar la actividad con errores edit_act_msg_prev_tooltip=Mensaje que se muestra antes de empezar (solo en ciertos tipos de actividades) edit_align=Orientaci\u00F3n: edit_act_textColor=Color del texto: edit_act_textColor_tooltip=Color utilizado para dibujar el texto edit_act_shadowColor=Color de la sombra: edit_act_shadowColor_tooltip=Color utilizado en la sombra del texto, si existe. edit_act_shadow=Sombra edit_act_shadow_tooltip=Dibujar el texto con sombra edit_act_borderColor=Color del borde: edit_act_borderColor_tooltip=Color utilizado para dibujar el borde de la casilla edit_act_inactiveColor=Color de estado inactivo: edit_act_inactiveColor_tooltip=Color utilizado cuando la casilla est\u00E1 desactivada edit_act_altColor=Color alternativo: edit_act_altColor_tooltip=Color con el que se muestra el contenido alternativo de las casillas una vez solucionadas. edit_cell_marked=Marcada edit_cell_disabled=Desactivada edit_cell_alt=Alternativa edit_cell_textMargin=Margen interno: edit_cell_textMargin_tooltip=Espacio entre los bordes de la celda y el texto. edit_cell_borderWidth=Grosor del borde: edit_cell_borderWidth_tooltip=Grosor del trazo utilizado para dibujar el borde. edit_cell_markerWidth=Grosor del marcador: edit_cell_markerWidth_tooltip=Grosor del trazo utilizado para dibujar el borde cuando la casilla se encuentra marcada o seleccionada. edit_cell_alt_tooltip=Vista previa de la casilla en estado "alternativo" edit_cell_disabled_tooltip=Vista previa en estado "desactivado" edit_cell_marked_tooltip=Vista previa en estado "marcado" edit_act_testAction=Mostrar actividad edit_act_testAction_tooltip=Probar el funcionamiento de la actividad edit_act_panels_description=Descripci\u00F3n edit_act_panels_description_tooltip=T\u00EDtulo y descripci\u00F3n de la actividad edit_act_panels_options=Opciones edit_act_panels_options_tooltip=Opciones de la actividad edit_act_panels_frame=Ventana edit_act_panels_frame_tooltip=Aspecto, tama\u00F1o y posici\u00F3n de la ventana en la que corre la actividad edit_act_panels_messages=Mensajes edit_act_panels_messages_tooltip=Contenido de los mensajes de la actividad edit_act_panels_panel=Panel edit_act_panels_panel_tooltip=Contenido del panel edit_style_title=Estilo edit_style_tooltip=Ajustar el color, tipo y tama\u00F1o de letra de las celdas edit_act_style=Estilo: edit_act_overlap=Evitar sobreposici\u00F3n imagen/texto edit_act_overlap_tooltip=Intentar evitar que texto e imagen se solapen edit_media_exists_1=El archivo edit_media_exists_2=ya se encuentra en la mediateca! edit_act_shaper=Recortador: edit_act_shaper_err=Error en el generador de formas: edit_act_num_cols=Columnas: edit_act_num_rows=Filas: edit_act_toothHeightFactor=Altura de los dientes: edit_act_toothWidthFactor=Anchura de los dientes: edit_act_toothRandom=Distribuci\u00F3n aleatoria edit_act_shaper_properties=Propiedades del generador de formas edit_act_panels_text=Texto edit_act_panels_text_tooltip=Texto de la actividad action_saveFile_caption=Guardar... action_saveFile_keys=GG action_saveFile_tooltip=Guardar el proyecto action_docTree_caption=\u00C1rbol del documento... action_docTree_keys=A* action_docTree_tooltip=Mostrar el documento del proyecto en forma de \u00E1rbol edit_docTree_title=\u00C1rbol del documento edit_media_referencedBy=Referenciado por: msg_prompt_loadReferences=Atenci\u00F3n:

Este proyecto enlaza con otros proyectos.
\u00BFDesea explorar los enlaces y cargar todos los archivos relacionados?

(Se recomienda responder SI cuando se est\u00E1 importando un paquete de actividades Clic 3.0) edit_mc_type=Tipo: edit_mc_type_unknown=Desconocido edit_mc_type_sound=Interpretar sonido edit_mc_type_video=Interpretar video edit_mc_type_midi=Interpretar MIDI edit_mc_type_cdaudio=Interpretar CD audio edit_mc_type_record=Grabar sonido edit_mc_type_play_recorded=Interpretar grabaci\u00F3n edit_mc_type_run_activity=Ir a la actividad edit_mc_type_run_sequence=Ir a la secuencia edit_mc_type_run_external=Ejecutar un programa edit_mc_type_url=Mostrar la URL edit_mc_type_exit=Acabar edit_mc_type_return=Volver edit_mc_level=Nivel de prioridad: edit_mc_file=Archivo: edit_mc_externalParam=Par\u00E1metros: edit_mc_from=Desde: edit_mc_to=Hasta: edit_mc_length=Duraci\u00F3n m\u00E1x.: edit_mc_recBuffer=Cinta de grabaci\u00F3n: edit_mc_stretch=Comprimir si no cabe edit_mc_location=Posici\u00F3n: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Desde: edit_mc_location_from_box=Celda edit_mc_location_from_window=Ventana edit_mc_location_from_frame=Marco edit_mc_loop=Repetir indefinidamente edit_mc_autostart=Arranque autom\u00E1tico edit_mc_catchmouse=Capturar rat\u00F3n edit_mc_title=Contenido activo y multimedia edit_mc_label=Contenido activo: edit_media_dlg_title=Selecci\u00F3n del objeto multimedia edit_media_title=Biblioteca de recursos edit_mc_pos_cell=Centrado en la celda edit_mc_pos_window=Centrado en la ventana edit_mc_pos_absolute=Especificar posici\u00F3n: edit_tree_badFormat=La estructura o los datos del \u00E1rbol son incorrectos. edit_act_panels_controls=Controles edit_act_panels_controls_tooltip=Opciones de botones y contadores edit_act_class=Tipo: edit_act_gridLayout=Distribuci\u00F3n de los paneles: edit_act_gridLayout_tooltip=Posici\u00F3n relativa de los paneles A y B. edit_act_inverseResolution=Resoluci\u00F3n inversa edit_act_inverseResolution_tooltip=La actividad se considerar\u00E1 resuelta cuando todos los elementos de "B" est\u00E9n emparejados. edit_act_showAllArrows=Mostrar todas las flechas edit_act_alt=Contenido alternativo: edit_act_alt_tooltip=Contenido que se muestra en las casillas ya resueltas o no asignadas. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Editar el contenido alternativo edit_act_grid=Panel edit_act_grid_A=Panel A edit_act_grid_B=Panel B edit_act_grid_layout=Distribuci\u00F3n edit_act_grid_relationship=Relaciones edit_seq_activity_header=actividad edit_seq_tag_header=etiqueta edit_seq_jump_header=salto a edit_seq_activity=Actividad: edit_seq_tag=Etiqueta: edit_seq_description=Descripci\u00F3n: edit_seq_auto=Avance autom\u00E1tico edit_seq_delay=Retardo: edit_seq_action_fwd=Avanzar edit_seq_action_back=Retroceder edit_seq_action_jump=Saltar a... edit_seq_action_stop=Detenerse edit_seq_action_return=Volver edit_seq_action_exit=Salir de JClic edit_seq_arrow_fwd=Flecha adelante: edit_seq_arrow_back=Flecha atr\u00E1s: edit_seq_action=Acci\u00F3n: edit_seq_button_enabled=Mostrar bot\u00F3n edit_seq_project=Proyecto JClic: edit_act_absolute=Posici\u00F3n absoluta edit_act_absolute_tooltip=El objeto se situar\u00E1 en las coordenadas X e Y que se especifiquen edit_act_location=Posici\u00F3n: edit_seq_newElement=Nuevo elemento de secuencia... edit_seq_newElement_tooltip=Insertar un nuevo elemento en la secuencia de actividades edit_seq_newElement_msg=Seleccione una actividad para el nuevo elemento de secuencia. edit_seq_newElement_error_noAct=\u00A1No se puede crear un nuevo elemento de secuencia sin indicar la actividad! edit_seq_newElement_error_emptyList=En este proyecto no hay ninguna actividad. No se pueden crear elementos de secuencia en un proyecto vac\u00EDo. edit_seq_jump_msg=Destino del salto: edit_seq_jump_title=Destino del salto edit_act_newActivity_tooltip=A\u00F1adir una nueva actividad al projecto edit_act_prompt_class=Tipo de actividad: edit_act_prompt_name=Nombre: edit_act_newActivity_msg=Seleccione el tipo de actividad que desea crear y as\u00EDgnele un nombre: edit_act_newActivity_error_noAct=\u00A1Hay que seleccionar un tipo de actividad! edit_act_newActivity_error_noName=\u00A1Hay que indicar un nombre para la actividad! edit_act_newActivity_error_creating=\u00A1No se ha podido crear la actividad! edit_act_newActivity_class=Clase Java: edit_text_act_format=Formato edit_text_act_answer=Respuesta edit_text_act_popup=Ventana emergente edit_text_act_answer_label=Respuestas v\u00E1lidas: edit_list_newElement_tooltip=A\u00F1adir un nuevo elemento a la lista edit_list_editElement_tooltip=Modificar el elemento seleccionado edit_list_deleteElement_tooltip=Eliminar el elemento seleccionado de la lista edit_list_upBtn_tooltip=Mover arriba edit_list_downBtn_tooltip=Mover abajo edit_list_newValue=Nuevo texto: edit_list_addElement=A\u00F1adir un nuevo elemento de texto edit_list_modifyValue=Modificaci\u00F3n del texto seleccionado edit_text_act_target=Inc\u00F3gnita edit_text_act_maxLen=Longitud m\u00E1xima: edit_text_act_maxLen_tooltip=N\u00FAmero m\u00E1ximo de caracteres permitidos en la respuesta. edit_text_act_fillingChar=Car\u00E1cter de relleno edit_text_act_fillingChar_tooltip=Car\u00E1cter utilizado para indicar la inc\u00F3gnita edit_text_act_iniLen=Longitud inicial: edit_text_act_iniLen_tooltip=N\u00FAmero de caracteres de relleno que se mostraran al inicio de la actividad. edit_text_act_iniText=Texto inicial: edit_text_act_iniText_tooltip=Texto que se mostrar\u00E1 en la inc\u00F3gnita al iniciar la actividad. edit_text_act_list=Mostrar una lista de opciones: edit_text_act_list_tooltip=El usuario/a deber\u00E1 elegir una opci\u00F3n en una lista. edit_text_act_check_title=Opciones de evaluaci\u00F3n edit_text_act_popup_no=Sin ventana emergente edit_text_act_popup_always=Aparici\u00F3n autom\u00E1tica edit_text_act_popup_onError=Aparici\u00F3n en errores edit_text_act_popup_onDemand=Aparici\u00F3n con F1 edit_text_act_popup_type=Tipo: edit_text_act_popup_delay=Retardo de aparicion: edit_text_act_popup_maxTime=Tiempo m\u00E1ximo: edit_text_act_popup_onlyPlay=Solamente interpretar sonido edit_text_act_err_noSelection=Para crear una nueva inc\u00F3gnita es necesario seleccionar un fragmento de texto. edit_text_act_err_badCharInSelection=El texto de las inc\u00F3gnitas no puede incluir retornos de p\u00E1rrafo ni tabuladores. edit_text_act_err_nestedTargets=Las inc\u00F3gnitas no se pueden solapar edit_text_act_err_cellInTarget=\u00A1Las inc\u00F3gnitas no pueden contener celdas! edit_text_act_pageBgColor=Color del papel: edit_text_act_editStylesBtn=Editar los estilos del documento... edit_text_act_mainStyle=Estilo principal: edit_text_act_tabSpc=Tab space: edit_text_act_tabSize=Espacios entre marcas de tabulador: edit_text_act_colors=Colores: edit_text_act_targetStyle=Colores de las inc\u00F3gnitas: edit_text_act_errorStyle=Colores de error: edit_text_act_preview=Vista preliminar: edit_text_act_styleSample_default_start=Texto normal edit_text_act_styleSample_target=inc\u00F3gnita edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=texto normal edit_text_act_styleSample_default_end=texto normal. edit_text_act_warnDeleteTarget=Atenci\u00F3n: esta acci\u00F3n suprimir\u00E1 la inc\u00F3gnita actualmente seleccionada. \u00BFSeguro que desea hacerlo? edit_text_act_prevScreen_title=Ventana previa... edit_text_act_prevScreen_no=No mostrar ning\u00FAn texto antes de empezar la actividad edit_text_act_prevScreen_original=Mostrar el texto completo del ejercicio edit_text_act_prevScreen_special=Mostrar este texto: edit_text_act_prevScreen_time=Tiempo m\u00E0ximo: edit_text_act_edit_target=Inc\u00F3gnita... edit_text_act_checkButton_show=Mostrar bot\u00F3n de evaluaci\u00F3n edit_text_act_checkButtonText=Texto del bot\u00F3n: edit_text_act_checkCase=Comprobar may\u00FAsculas / min\u00FAsculas edit_text_act_checkAccents=Considerar acentos y caracteres especiales edit_text_act_checkPunct=Considerar los s\u00EDmbolos de puntuaci\u00F3n edit_text_act_checkDoubleSpc=Permitir espacios repetidos edit_text_act_checkOptions=Criterios edit_text_act_checkAutoJump=Saltar autom\u00E1ticamente a la siguiente inc\u00F3gnita edit_text_act_checkForceOk=Avanzar solo si se responde correctamente edit_text_act_checkDetail=Indicar la posici\u00F3n de los errores edit_text_act_checkDetail_params=Par\u00E1metros del algoritmo de an\u00E1lisis: edit_text_act_checkDetail_steps=Pasos: edit_text_act_checkDetail_field=Campo de exploraci\u00F3n: edit_text_act_defaultCheckButtonText=Evaluaci\u00F3n edit_text_act_advancedCorrectionOptions=An\u00E1lisis de las respuestas edit_text_act_check_bt=Evaluaci\u00F3n... edit_text_act_checkButton=Bot\u00F3n de evaluaci\u00F3n edit_text_act_checkProgress=Progreso edit_text_act_typeBtn=Tipo... edit_text_act_orderParagraphs=Ordenar p\u00E1rrafos edit_text_act_orderWords=Ordenar palabras edit_text_act_order_amongstPar=Barajar palabras entre p\u00E1rrafos edit_text_act_type_title=Tipo de actividad edit_text_act_warnChangeType=Esta acci\u00F3n suprimir\u00E1 todas las inc\u00F3gnitas actualmente definidas. \u00BFSeguro que desea hacerlo? edit_text_act_identWords=Identificar palabras edit_text_act_identChars=Identificar caracteres edit_media_change_name=Cambiar nombre... edit_media_change_file=Cambiar el archivo... edit_media_includeInZip=Guardarlo en el archivo ZIP edit_media_type=Tipo de recurso: edit_media_size=Tama\u00F1o del archivo: edit_media_show_type=Tipo de archivos: edit_media_preview=Visualizar objeto edit_media_preview_tooltip=Previsualizaci\u00F3n del recurso multimedia edit_media_rename=Cambiar el nombre del recurso edit_media_rename_title=Renombrar edit_media_rename_prompt=Nuevo nombre: edit_media_rename_invalid=\u00A1Nombre de recurso no v\u00E1lido! edit_media_rename_exists=Ya existe otro recurso con este nombre. Los recursos deben tener un nombre \u00FAnico en el proyecto. edit_media_chfile_invalid=Archivo incorrecto err_media_chfile_different=File must be of same type edit_media_font_error=No se pudo cargar el tipo de letra. edit_media_save_file=Guardar el archivo (extraerlo del ZIP) edit_media_refresh_file=Actualizar el contenido del recurso desde el archivo edit_media_warn_zipFileNotExternal=Este no es un archivo real, sino un objeto situado en el interior de un contenedor ZIP. Para utilizar esta funci\u00F3n es necesario que exista un archivo con el mismo nombre en la carpeta donde se halla el archivo ZIP. edit_activities=Actividades edit_sequences=Secuencias edit_media=Mediateca edit_media_tooltip=Gesti\u00F3n de las im\u00E1genes y otros recursos utilizados en el proyecto. edit_activities_tooltip=Creaci\u00F3n y edici\u00F3n de las actividades del proyecto edit_sequences_tooltip=Creaci\u00F3n y edici\u00F3n de secuencias de actividades edit_project_title=T\u00EDtulo: edit_project_title_tooltip=T\u00EDtulo del proyecto edit_project=Proyecto edit_project_tooltip=Edici\u00F3n de las propiedades del proyecto edit_project_description=Descripci\u00F3n: edit_project_description_tooltip=Descripci\u00F3n general del proyecto edit_project_area=Areas: edit_project_area_tooltip=\u00C1reas curriculares a las que se orienta el proyecto edit_project_level=Niveles: edit_project_level_tooltip=Niveles y ciclos educativos a los que se orienta el proyecto edit_project_descriptors=Descriptores: edit_project_descriptors_tooltip=Descriptores del proyecto (separados por comas) edit_project_languages=Idiomas: edit_project_languages_tooltip=Idiomas utilizados en el proyecto edit_project_languages_modify=Cambio del idioma seleccionado edit_project_languages_add=A\u00F1adir idioma edit_project_languages_select=C\u00F3digos de idioma ISO-639: edit_project_authors=Autores/as: edit_project_authors_tooltip=Personas que han participado en la creaci\u00F3n del proyecto edit_project_author_name=Nombre: edit_project_author_mail=Correo electr\u00F3nico: edit_project_author_rol=Rol: edit_project_author_organization=Organizaci\u00F3n: edit_project_author_comments=Comentarios: edit_project_author_url=URL: edit_project_author_name_tooltip=Nombre del autor/a (campo obligatorio) edit_project_author_mail_tooltip=Direcci\u00F3n de correo electr\u00F3nico del autor/a (opcional) edit_project_author_rol_tooltip=Rol de la persona en el proyecto: autor, colaborador, dibujos, sonidos... (opcional) edit_project_author_organization_tooltip=Escuela, universidad, asociaci\u00F3n... (campo opcional) edit_project_author_url_tooltip=P\u00E1gina web personal (campo opcional) edit_project_author_comments_tooltip=Otras caracter\u00EDsticas (campo opcional) edit_project_author_info=Datos del autor/a: edit_project_author_add=A\u00F1adir un autor a la lista edit_project_author_edit=Modificaci\u00F3n de los datos del autor/a edit_project_org_name=Nombre: edit_project_org_name_tooltip=Nombre de la escuela edit_project_org_mail=Correo electr\u00F3nico: edit_project_org_mail_tooltip=Direcci\u00F3n de correo electr\u00F3nico de la escuela edit_project_org_url=URL: edit_project_org_url_tooltip=Direcci\u00F3n web de la escuela edit_project_org_address=Direcci\u00F3n: edit_project_org_address_tooltip=Direcci\u00F3n postal de la escuela edit_project_org_pc=CP: edit_project_org_pc_tooltip=C\u00F3digo postal edit_project_org_city=Localidad: edit_project_org_city_tooltip=Localidad de la escuela edit_project_org_country=Pais: edit_project_org_state=Estado: edit_project_org_comments=Comentarios: edit_project_org=Centro/s: edit_project_org_tooltip=Escuelas y otras instituciones que han participado en el proyecto edit_project_org_info=Datos de la organizaci\u00F3n: edit_project_org_add=A\u00F1adir una nueva organizaci\u00F3n edit_project_org_edit=Modificar los datos de la organizaci\u00F3n edit_project_org_country_tooltip=Estado, pais, federaci\u00F3n... edit_project_org_state_tooltip=Estado federal, nacionalidad, comunidad, regi\u00F3n... edit_project_org_comments_tooltip=Otros datos... edit_project_rev_date=Fecha: edit_project_rev_date_tooltip=Fecha de la revisi\u00F3n edit_project_rev_authors=Autores/as: edit_project_rev_authors_tooltip=Autores/as de la revisi\u00F3n edit_project_rev_description=Descripci\u00F3n: edit_project_rev_description_tooltip=Breve descripci\u00F3n de los cambios realizados edit_project_rev_comments=Comentarios: edit_project_rev_comments_tooltip=Informaci\u00F3n adicional edit_project_rev=Revisiones: edit_project_rev_tooltip=Historial de las principales modificaciones efectuadas al proyecto edit_project_rev_add=A\u00F1adir un registro de revisi\u00F3n edit_project_rev_edit=Edici\u00F3n de los datos de la revisi\u00F3n edit_project_rev_info=Caracter\u00EDsticas de la revisi\u00F3n edit_media_objects=objetos edit_media_object=objeto edit_evsounds_start=Inicio de actividad: edit_evsounds_click=Hacer clic en un objeto: edit_evsounds_actionError=Acci\u00F3n err\u00F3nea: edit_evsounds_actionOk=Acci\u00F3n correcta: edit_evsounds_finishedError=Actividad finalizada con errores: edit_evsounds_finishedOk=Actividad correctamente finalizada: edit_project_rev_err_nodesc=Error: La descripci\u00F3n no se puede dejar en blanco edit_evsounds_dlg_title=Edici\u00F3n de los sonidos de evento edit_project_evsounds=Sonidos de evento: edit_project_evsounds_tooltip=Asignar sonidos espec\u00EDficos a cada evento de JClic edit_act_evsounds=Sonidos de evento: edit_act_evsounds_tooltip=Asignar sonidos espec\u00EDficos a cada evento de JClic edit_evsounds_default=sonido por defecto edit_evsounds_disabled=desactivado edit_evsounds_chk_tooltip=Activa o desactiva el sonido para este evento edit_evsounds_select_tooltip=Haga clic para seleccionar el sonido ligado a este evento, o desmarque para utilizar el sonido por defecto action_newProject_caption=Nuevo proyecto... action_newProject_keys=NN action_newProject_tooltip=Crear un nuevo proyecto JClic edit_arith_op_from=Desde: edit_arith_op_from_tooltip=Valor m\u00EDnimo del operando edit_arith_op_to=Hasta: edit_arith_op_to_tooltip=Valor m\u00E1ximo del operando edit_arith_op_with=Con: edit_arith_op_with_tooltip=Si se marca, el operando puede tener tambi\u00E9n este valor edit_arith_op_fromList=Uno de la lista: edit_arith_op_fromList_tooltip=Lista de posibles valores del operando edit_arith_op_decimals=Decimales: edit_arith_op_decimals_tooltip=N\u00FAmero de decimales del operando edit_arith_op_dec0=# (entero) edit_arith_op_dec1=#,# edit_arith_op_dec2=#,## edit_arith_firstOp=Primer operando edit_arith_secondOp=Segundo operando edit_arith_title=Arith2 para JClic edit_arith_operations=Operaciones: edit_arith_operations_tooltip=Selecciona el tipo de operaciones a efectuar edit_arith_operations_plus=Sumas edit_arith_operations_minus=Restas edit_arith_operations_multiply=Multiplicaciones edit_arith_operations_divide=Divisiones edit_arith_unknown=Inc\u00F3gnita: edit_arith_unknown_tooltip=Selecciona el elemento que har\u00E1 de inc\u00F3gnita edit_arith_unknown_aobx=La inc\u00F3gnita es el resultado edit_arith_unknown_aoxr=La inc\u00F3gnita es el segundo operando edit_arith_unknown_xobr=El primer operando es la inc\u00F3gnita edit_arith_unknown_axbr=La operaci\u00F3n es la inc\u00F3gnita edit_arith_unknown_invert=Escribir la expressi\u00F3n empezando por el resultado edit_arith_result=Resultado: edit_arith_result_notCarry=Sin "llevar" edit_arith_result_random=Aleatorio edit_arith_result_asc=Ascendente edit_arith_result_order=Ordenar por resultado: edit_arith_result_desc=Descendente edit_arith_result_avoidDup=Evitar duplicados edit_arith_cond=Condiciones: edit_arith_cond_ind=Indiferente edit_arith_cond_agb=El primer operando debe ser mayor que el segundo edit_arith_cond_alb=El primer operando debe ser menor que el segundo edit_arith_cond_tooltip=Otras condiciones edit_autocp=Generador autom\u00E1tico de contenido: edit_autocp_tooltip=Selecci\u00F3n del tipo de generador autom\u00E1tico de contenido para esta actividad. edit_autocp_block=Generador de contenido edit_autocp_btn=Configuraci\u00F3n... edit_autocp_btn_tooltip=Configuraci\u00F3n de los par\u00E1metros del generador de contenido edit_data=Edici\u00F3n de datos edit_act=Edici\u00F3n de la actividad edit_acp=Edici\u00F3n del generador de contenido edit_acp_err_creating=\u00A1Error de creaci\u00F3n del generador autom\u00E1tico de contenido! edit_project_author_group=Creaci\u00F3n edit_project_description_block=Descripci\u00F3n edit_project_ui_block=Interfaz de usuario edit_act_description=Descripci\u00F3n: m_Edit=Edici\u00F3n m_Edit_Mnemonic=E edit_media_preview_keys=V* edit_act_newActivity=Nueva actividad... edit_act_newActivity_keys=A* edit_act_testAction_keys=M#10 edit_seq_newElement_keys=S* m_Insert=Insertar m_Insert_Mnemonic=I m_View=Ver m_View_Mnemonic=V action_editProject_caption=Proyecto action_editProject_keys=PP action_editProject_tooltip=Editar las propiedades del proyecto action_editMedia_caption=Mediateca action_editMedia_keys=MM action_editMedia_tooltip=Edici\u00F3n de la biblioteca multimedia del proyecto action_editActivities_caption=Actividades action_editActivities_keys=AA action_editActivities_tooltip=Edici\u00F3n de las actividades action_editSeq_caption=Secuencias action_editSeq_keys=SS action_editSeq_tooltip=Edici\u00F3n de las secuencias de actividades warn_project_modified=El proyecto actual ha sido modificado. \u00BFDesea guardar los cambios? edit_project_descriptors_block=Descriptores edit_media_new=Nuevo objeto multimedia... edit_media_new_tooltip=A\u00F1adir una imagen o un objeto multimedia a la mediateca edit_media_new_keys=M* edit_seq_threshold=Umbral de puntuaci\u00F3n: edit_seq_threshold_tooltip_up=Seguir este camino cuando la puntuaci\u00F3n global sea mayor o igual que... edit_seq_time=Umbral de tiempo: edit_seq_time_tooltip_up=Para seguir este camino hay que haber realizado las actividades en un tiempo inferior a... edit_seq_threshold_tooltip_down=Sigue este camino siempre que la puntuaci\u00F3n global sea inferior a... edit_seq_time_tooltip_down=Seguir este camino siempre que el tiempo empleado en las actividades sea superior a... edit_seq_condJump=Saltos condicionales edit_seq_condJump_tooltip=Especificar saltos que se ejecutaran \u00FAnicamente si se dan determinadas condiciones edit_seq_condJump_upper_tooltip=Indicar las condiciones para saltar a un nivel superior edit_seq_condJump_lower=Salto inferior: edit_seq_condJump_upper=Salto superior: edit_seq_condJump_lower_tooltip=Indicar las condiciones para saltar a un nivel inferior edit_seq_action_tooltip_fw=Acci\u00F3n asignada al bot\u00F3n de avanzar edit_seq_action_tooltip_bk=Acci\u00F3n asignada al bot\u00F3n de retroceder edit_seq_jump_tooltip=Indicar el destino del salto edit_seq_action_tooltip=Acci\u00F3n a realizar edit_seq_activity_tooltip=Actividad asociada a este elemento de secuencia edit_seq_tag_tooltip=Etiqueta utilizada para referirse a este elemento de secuencia (campo opcional) edit_seq_description_tooltip=Descripci\u00F3n del elemento de secuencia (campo opcional) edit_seq_button_enabled_tooltip=Activar o desactivar el bot\u00F3n de paso de actividad edit_seq_auto_tooltip=Avanzar autom\u00E1ticamente al acabar la actividad edit_seq_delay_tooltip=N\u00FAmero de segundos a esperar antes de realizar el paso autom\u00E1tico edit_color_dlgTitle=Selecci\u00F3n del color edit_media_renaming=Por favor, espere mientras se cambia el nombre del recurso... edit_act_cell_width=Ancho: edit_act_cell_width_tooltip=Anchura de las celdas (en pixels) edit_act_cell_height=Alto: edit_act_cell_height_tooltip=Altura de las celdas (en pixels) edit_act_hiddenWords=Palabras escondidas: edit_act_hiddenWords_tooltip=Lista de las palabras escondidas en el panel edit_act_wordSearch_panelB=Utilizar el panel B edit_act_wordSearch_panelB_tooltip=Usar un segundo panel, que se mostrar\u00E1 a medida que se vayan encontrando las palabras edit_act_shaper_tooltip=Selecci\u00F3n del tipo de generador de formas del panel edit_act_num_cols_tooltip=N\u00FAmero de columnas del panel edit_act_num_rows_tooltip=N\u00FAmero de filas del panel edit_act_wildTransparent=Separadores transparentes edit_act_wildTransparent_tooltip=Mostrar los separadores (casillas negras) como agujeros transparentes edit_act_behavior_scramble_times=Mezclas: edit_act_behavior_scramble_times_tooltip=N\u00FAmero de veces que se mezclaran las piezas edit_act_copy_title=Copiar atributos a... edit_act_copy_attributes=Atributos: edit_act_copy_dest=Aplicar a: edit_act_copy_style_main=Ventana principal edit_act_copy_style_play=Ventana de juego edit_act_copy_activities=Actividades a modificar: edit_act_copyAttributes=Copiar atributos edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copiar a otras actividades algunos de los atributos de la actividad actual edit_new_project_name=Nombre del proyecto: edit_new_project_name_tooltip=Nombre corto y descriptivo del proyecto edit_new_project_filename=Nombre del archivo: edit_new_project_filename_tooltip=Nombre del archivo del proyecto, sin extensi\u00F3n edit_new_project_folder=Carpeta: edit_new_project_folder_tooltip=Nombre de la carpeta en la que se guardar\u00E1 el proyecto edit_new_project_folder_browse=Navegar... edit_new_project_title=Creaci\u00F3n de un nuevo proyecto JClic edit_new_project_err_empty=Error: Tanto el proyecto como el archivo y la carpeta deben tener nombres v\u00E1lido. edit_new_project_warning_noEmptyFolder=En esta carpeta existe ya otro proyecto Clic3.0 o JClic. Para evitar confusiones se recomienda mantener cada proyecto en una carpeta independiente, aunque no es un requisito imprescindible. \u00BFRealmente desea crear el nuevo proyecto en esta carpeta? edit_new_project_err_folderCreation=Error: \u00A1No fue posible crear la carpeta indicada! edit_act_copy_err_noSelection=Error: No se ha seleccionado ninguna actividad. Para utilizar esta funci\u00F3n es necesario seleccionar en la lista la actividad o actividades a las que se aplicaran los atributos indicados. edit_act_copy_action_prefix=Copiando atributos a: edit_act_copy_margin=Margen edit_act_copy_bgColor=Color de fondo edit_act_copy_gradient=Gradiente edit_act_copy_bgImage=Imagen de fondo edit_act_copy_border=Borde edit_act_copy_transparentBg=Fondo transparente edit_act_copy_position=Posici\u00F3 edit_act_copy_messages=Mensajes edit_act_copy_messages_ini=Estilo del mensaje inicial edit_act_copy_messages_end=Estilo del mensaje final edit_act_copy_messages_err=Estilo del mensaje de error edit_act_copy_reports=Informes edit_act_copy_rep_include=Incluir la actividad en los informes edit_act_copy_rep_actions=Registrar acciones edit_act_copy_interface=Interfaz de usuario edit_act_copy_skin=Entorno visual edit_act_copy_evSounds=Sonidos de evento edit_act_copy_counters=Contadores edit_act_copy_cTime=Contador de tiempo edit_act_copy_maxTime=Tiempo m\u00E1ximo edit_act_copy_cTries=Contador de intentos edit_act_copy_maxTries=N\u00FAmero m\u00E1ximo de intentos edit_act_copy_cScore=Contador de aciertos edit_act_copy_scramble=N\u00FAmero de veces que hay que barajar edit_act_copy_buttons=Botones edit_act_copy_btnHelp=Bot\u00F3n de ayuda edit_act_copy_btnInfo=Bot\u00F3n de informaci\u00F3n edit_act_copy_grids=Paneles edit_act_copy_gridA=Estilo del panel A edit_act_copy_gridB=Estilo del panel B edit_act_copy_textGrid=Estilo de los paneles de texto edit_act_copy_text=Actividades de texto edit_act_copy_fontFace=Tipo de letra edit_act_copy_fontSize=Tama\u00F1o de letra edit_act_copy_fontStyle=Estilo de letra edit_act_copy_textColour=Color del texto principal edit_act_copy_textTargetColour=Color de las inc\u00F3gnitas edit_act_copy_textErrorColour=Color de los errores edit_act_copy_tabSpace=Espacio entre tabuladores edit_act_copy_messages_prev=Estilo del mensaje previo edit_act_changeType=Cambiar el tipo de actividad edit_act_newActivity_class_tooltip=Nombre completo de la clase que se utilizar\u00E1 para construir la actividad (usuarios avanzados!) edit_act_newActivity_other=Otras... edit_act_newActivity_info=Los usuarios/as avanzados/as pueden crear tambi\u00E9n otros tipos de actividades JClic no registradas. Escriba debajo el nombre completo de la clase, precedida por el del paquete (por ejemplo: "com.acme.activities.FooActivity"). Las nuevas actividades deben extender edu.xtec.jclic.Activity, y han de ser accesibles al cargador de clases de la m\u00E1quina virtual de Java. edit_act_newActivity_name=Nombre de la actividad edit_act_newActivity_name_tooltip=Cada actividad debe tener un nombre \u00FAnico en el proyecto edit_act_changeType_warning=

Atenci\u00F3n: El cambio del tipo puede causar la p\u00E9rdida de algunos de los atributos y objetos de la actividad que se est\u00E1 editando. \u00A1Utilice est\u00E1 funci\u00F3n con cuidado!

 

applet_codebase=Ubicaci\u00F3n del c\u00F3digo JClic: applet_codebase_tooltip=URL que apunta a una carpeta en la que est\u00E9n ubicados los archivos de programa de JClic applet_prev_text=C\u00F3digo HTML previo: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Texto o c\u00F3digo HTMl que aparecer\u00E1 antes del applet applet_post_text=C\u00F3digo HTML posterior: applet_post_text_tooltip=Texto o c\u00F3digo HTMl que aparecer\u00E1 despu\u00E9s del applet applet_size=Tama\u00F1o del applet: applet_size_tooltip=Anchura y altura del applet, en valores absolutos o porcentuales. applet_page_title=T\u00EDtulo de la p\u00E1gina: applet_page_title_tooltip=Texto que se mostrar\u00E1 en la parte superior de la ventana del navegador applet_created_info=La p\u00E1gina web "%s" ha sido creada con \u00E9xito. applet_created_prompt=\u00BFDesea abrirla ahora con el navegador? action_createHTML_caption=Crear p\u00E1gina web... applet_create_title=Creaci\u00F3n de una p\u00E1gina HTML con un applet JClic action_createHTML_tooltip=Creaci\u00F3n de una p\u00E1gina HTML con un applet que contenga el proyecto actual. applet_filename=Nombre del archivo: applet_filename_tooltip=Nombre del archivo HTML a crear action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valores por defecto usados en la creaci\u00F3n de p\u00E1ginas web applet_bgcolor=Color de fondo: applet_bgcolor_tooltip=Color de fondo de la p\u00E1gina web applet_centered=Centrado applet_centered_tooltip=Situar el applet centrado horizontalmente applet_width_tooltip=Anchura del applet (en valor absoluto o porcentual) applet_height_tooltip=Altura del applet (en valor absoluto o porcentual) applet_exitUrl=Al salir, ir a: applet_exitUrl_tooltip=URL hacia el que se redirigir\u00E1 la navegaci\u00F3n al salir de JClic applet_infoFrame=Marco de informaci\u00F3n: applet_infoFrame_tooltip=Name of the frame used to show the content related to the "info" button action_createInstaller_caption=Crear instalador del proyecto... action_createInstaller_keys=I* action_createInstaller_tooltip=Creaci\u00F3n de un archivo de instalaci\u00F3n del proyecto para JClic player installer_caption=Edici\u00F3n del archivo de instalaci\u00F3n del proyecto installer_title=T\u00EDtulo: installer_title_tooltip=T\u00EDtulo del proyecto que se mostrar\u00E1 en el asistente de instalaci\u00F3n installer_authors=Autores/as: installer_authors_tooltip=Autores/as del proyecto (texto corto) installer_folder=Carpeta: installer_folder_tooltip=Nombre de carpeta que sugerir\u00E1 el asistente de instalaci\u00F3n installer_files=Archivos a copiar: installer_files_tooltip=Archivos que se copiaran durante la instalaci\u00F3n installer_files_available=Archivos disponibles installer_files_selected=Archivos seleccionados installer_files_add=>> a\u00F1adir >> installer_files_add_tooltip=A\u00F1adir el archivo seleccionado a la lista installer_files_remove=<< quitar << installer_files_remove_tooltip=Quitar el archivo seleccionado de la lista installer_button=Bot\u00F3n de activaci\u00F3n installer_button_tooltip=Propiedades del bot\u00F3n que se mostrar\u00E1 en la biblioteca de proyectos installer_button_project=Proyecto principal: installer_button_project_tooltip=Proyecto JClic asociado bot\u00F3n installer_button_text=Etiqueta: installer_button_text_tooltip=Breve etiqueta de texto, que aparecer\u00E1 dentro del bot\u00F3n installer_button_icon=Icono: installer_button_icon_tooltip=Imagen que mostrar\u00E1 el bot\u00F3n. Dejar en blanco para usar el icono por defecto de JClic. installer_button_description=Descripci\u00F3 installer_button_description_tooltip=Texto de ayuda emergente que mostrar\u00E1 el bot\u00F3n installer_error_noTitle=Error: Hay que indicar el t\u00EDtulo del proyecto installer_error_noBaseFolder=Error: Hay que indicar el nombre de la carpeta en la que se instalar\u00E1 el proyecto installer_error_noFilesSelected=Error: No ha seleccionado ning\u00FAn archivo installer_error_noButtonText=Error: Hay que indicar el texto del bot\u00F3n de activaci\u00F3n installer_error_projectNotInFiles=Error: El proyecto asignado al bot\u00F3n de activaci\u00F3n no se encuentra entre los archivos a copiar applet_page_full=El applet ocupa toda la p\u00E1gina applet_page_mixed=El applet tiene unas dimensiones espec\u00EDficas edit_text_align_left=Alinear el texto a la izquierda edit_text_align_center=Texto centrado edit_text_align_right=Alinear el texto a la derecha edit_text_act_target_toggle=Crear una inc\u00F3gnita o suprimirla edit_text_act_insertCell=Insertar una celda edit_text_act_content=Contenido edit_text_act_style=Estilo edit_cell_size=Dimensiones: edit_project_orphanActivities=Las siguientes actividades nunca llegaran a ejecutarse, debido a que no aparecen en ninguna secuencia de actividades del proyecto: edit_project_orphanMedia=Los siguientes objetos de la mediateca no se utilizan directamente en ninguna actividad: edit_project_orphanActivities_prompt=\u00BFDesea a\u00F1adirlas al final de la \u00FAltima secuencia de actividades? edit_project_orphanMedia_prompt=\u00BFDesea eliminarlos? edit_project_orphanMedia_title=Retirada de objetos multimedia no utilizados edit_project_orphanActivities_title=Actividades hu\u00E9rfanas edit_media_refreshAll=Actualizar el contenido de todos los recursos edit_media_refreshAll_tooltip=Actualiza todos los recursos volviendo a cargar sus archivos edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Actualizando recursos... edit_media_exportAll=Exportar todos los recursos edit_media_exportAll_tooltip=Grabar en archivos el contenido de todos los recursos edit_media_exportAll_keys=X* edit_shape_select=Seleccionar edit_shape_addPoint=A\u00F1adir un punto edit_shape_deletePoint=Eliminar edit_shape_drawRect=Dibujar un rect\u00E1ngulo edit_shape_drawEllipse=Dibujar una elipse edit_shape_drawPoly=Dibujar un pol\u00EDgono edit_shape_toLine=Convertir en l\u00EDnea edit_shape_toBezier=Convertir en curva de B\u00E9zier edit_shape_toQuad=Convertir en cu\u00E1drica edit_shape_rLeft=Girar a la izquierda edit_shape_rRight=Girar a la derecha edit_shape_expand=Expandir edit_shape_contract=Contraer edit_shape_zoomIn=Acercar edit_shape_zoomOut=Alejar edit_shape_aproxPoints=Junta puntos cercanos edit_shape_showPoints=Mostrar puntos edit_shape_showPoints_tooltip=Mostrar/Ocultar los puntos edit_shape_gridSize=Rejilla: edit_shape_hideGrid=Mostrar / Ocultar la rejilla edit_shape_magnetRadius=Radio del im\u00E1n: edit_shape_elements=Elementos definidos edit_shape_elemName=Nombre del elemento seleccionado edit_shape_magnetRadius_tooltip=Radio de acci\u00F3n del im\u00E1n, cuando est\u00E1 activado edit_shape_gridSize_tooltip=Tama\u00F1o de la rejilla edit_mc_activity=Actividad: edit_mc_sequence=Secuencia: edit_mc_url=URL: edit_mc_project=Proyecto: edit_mc_activity_selection=Selecci\u00F3n de la actividad edit_mc_sequence_selection=Selecci\u00F3n de la secuencia edit_mc_err_nullContent=\u00A1Datos insuficientes! edit_act_arrowColor=Color de las flechas: edit_act_arrowColor_tooltip=Color utilizado por el editor para dibujar las flechas (no es exacto, ya que se utiliza una m\u00E1scara XOR de bits) edit_act_editActivity=Editar... edit_act_editActivity_tooltip=Editar la actividad seleccionada action_saveFileAs_caption=Guardar como... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Guardar el proyecto con un nombre distinto edit_act_behavior_block=Comportamiento edit_act_behavior=Comportamiento edit_act_behavior_drag=Arrastrar edit_act_behavior_drag_tooltip=Arrastrar los objetos en lugar de unirlos con una linea edit_act_behavior_order=Comprobar orden de resoluci\u00F3n edit_act_behavior_order_tooltip=Las casillas deben resolverse ordenadamente edit_act_scramble=Barajar action_importActivities_caption=Importar actividades... action_importActivities_keys=I* action_importActivities_tooltip=Importar actividades de otro proyecto import_warn_samefile=El archivo que ha seleccionado corresponde al proyecto actual. La importaci\u00F3n de actividades solo puede realizarse entre proyectos distintos. Por favor, seleccione otro archivo de proyecto. import_selectActivities=Seleccione una o m\u00E1s actividades para importarlas al proyecto actual: import_importing=Importando... import_checkdep=Comprobando dependencias... import_impmedia=Importando medios: import_impact=Importando la actividad: import_selectProject=Seleccione el proyecto JClic del cual desea importar actividades edit_tagRep_tags=Marcas edit_tagRep_tagStart=Marca de inicio: edit_tagRep_tagStart_tooltip=Marca que indica inicio de etiqueta edit_tagRep_tagEnd=Marca final: edit_tagRep_tagEnd_tooltip=Marca que indica final de etiqueta edit_tagRep_file=Archivo edit_tagRep_fileName=Archivo o URL: edit_tagRep_fileName_tooltip=Nombre o URL del archivo que contiene los valores que substituir\u00E1n a las etiquetas edit_tagRep_charset=Codificaci\u00F3n: edit_tagRep_charset_tooltip=Tipo de codificaci\u00F3n utilizada en el archivo edit_tagRep_browseFile=Buscar... edit_tagRep_browseFile_tooltip=Buscar en el sistema de archivos edit_tagRep_title=Substituci\u00F3n de etiquetas edit_text_act_clearStylesBtn=Limpiar estilos de texto... edit_text_act_clearStylesPrompt=Atenci\u00F3n: Esta acci\u00F3n limpiar\u00E1 los atributos especiales de car\u00E1cter existentes en el documento, devolvi\u00E9ndolo a su estilo principal. La operaci\u00F3n no se puede deshacer. \u00BFDesea realizarla? img_max_size=Tama\u00F1o m\u00E1ximo de las im\u00E1genes: img_max_width_tooltip=Anchura m\u00E1xima de las im\u00E1genes al importarlas en la mediateca. img_max_height_tooltip=Altura m\u00E1xima de las im\u00E1genes al importarlas en la mediateca. img_resize_prompt=La imagen "%s" tiene unas dimensiones de %s pixels, que exceden el m\u00E1ximo permitido por JClic Author (%s). \u00BFDesea redimensionarla? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_eu.properties0000644000175000017500000012244511377161311026017 0ustar #JClic Author messages edit_act_description_block=Deskribapena edit_act_name_tooltip=Jardueraren izena edit_act_name=Izena: edit_act_description_tooltip=Jardueraren deskribapena edit_act_reports_block=Txostenak edit_act_includeInReports=Jarduera hau txostenetan sartu edit_act_includeInReports_tooltip=Jarduera honen emaitzak erabiltzaileen txostenetan sartu edit_act_code=Kodea: edit_act_code_tooltip=Aukerazko kodea txostenen datu-basean saikapenak eta bilaketak egiteko. edit_act_reportActions=Erabiltzaileen ekintzak jaso edit_act_reportActions_tooltip=Erregistratu erabiltzaileek egindako ekintza guztien xehetasunak edit_act_counters_block=Kontagailuak edit_act_timeCounter=Denbora-kontagailua edit_act_timeCounter_tooltip=Erakutsi/ezkutatu denbora-kontagailua edit_act_actionsCounter=Saiakera-kontagailua edit_act_actionsCounter_tooltip=Erakutsi/ezkutatu saiakera-kontagailua edit_act_scoreCounter=Puntuazio-kontagailua edit_act_scoreCounter_tooltip=Erakutsi/ezkutatu puntuazio-kontagailua edit_act_maxTime=Gehienezko denbora: edit_act_maxTime_tooltip=Jarduera egiteko gehienezko denbora, segundutan, edo 0 denbora-mugarik ez ezartzeko. edit_act_countdown=Atzerako kontaketa edit_act_countdown_tooltip=Kontagailua balore handienetik hasten da, 0raino jaitsiz. edit_act_maxActions=Gehieneko saiakerak: edit_act_maxActions_tooltip=Baimendutako saiakeren gehieneko kopurua, edo 0 mugagabeak izateko edit_act_buttons_block=Botoiak edit_act_helpBtn=Laguntza edit_act_helpBtn_tooltip=Erakutsi/ezkutatu laguntza-botoia edit_act_helpBtn_solution=Erakutsi erantzuna edit_act_helpBtn_msg=Erakutsi mezu hau: edit_act_infoBtn=Informazioa edit_act_infoBtn_tooltip=Erakutsi/ezkutatu informazio-botoia edit_act_infoBtn_url=Erakutsi URL hau: edit_act_infoBtn_cmd=Exekutatu komandoa edit_act_infoBtn_url_tooltip=Informazio-botoiari sakatuta erakutsi beharreko web-gunearen helbidea edit_act_infoBtn_cmd_tooltip=Informazio-botoiari sakatuta exekutatuko den komando-lerroa edit_act_mainWindow=Leiho nagusia: edit_act_gameWindow=Jolas-leihoa: edit_act_margin=Marjina: edit_act_margin_tooltip=Ikusteko objektuen arteko espazio horizontala eta bertikala edit_act_bgColor=Atzealdeko kolorea: edit_act_bgColor_tooltip=Aldatu atzealdeko kolorea edit_gradient_startColor=Hasierako kolorea: edit_gradient_endColor=Amaierako kolorea: edit_gradient_startColor_tooltip=Hasierako kolorearen aukeraketa edit_gradient_endColor_tooltip=Amaierako kolorearen aukeraketa edit_gradient_cycles=Zikloak: edit_gradient_cycles_tooltip=Gradientearen errepikapenak margotzeko azalearen gainean edit_gradient_orientation=Orientazioa: edit_gradient_orientation_tooltip=Gradientearen orientazioa, gradutan neurtua horizontalarekiko edit_act_gradient=Gradientea: edit_act_gradient_tooltip=Erabili kolore-gradientea edit_color_opacity=Opakutasuna edit_color_opacity_tooltip=Kolorearen alfa kanalaren balorea (opakutasuna) zehazten du edit_gradient_title=Gradientea edit_gradient_default=Berezko baloreak erabili edit_act_image=Irudia: edit_act_descriptionTab=Deskribapena edit_act_descriptionTab_tooltip=Izena eta deskribapena edit_act_tiledBgImg=Mosaikoan edit_act_tiledBgImg_tooltip=Irudiaren azalera osoa margotzen du, X eta Y ardatzen inguruan behar beste aldiz errepikatuz edit_act_preview=Aurrebista: edit_act_border=Ertza edit_act_border_tooltip=Marraztu lerro bat ertzean leiho inguruan edit_act_transparent=Gardena edit_act_transparent_tooltip=Leihoak atzeko aldea gardena du edit_act_width=Zabalera edit_act_height=Altuera: edit_act_width_tooltip=Objektuaren zabalera, pixeletan neurtua edit_act_height_tooltip=Objektuaren altuera, pixeletan neurtua edit_act_centered=Zentratuta edit_act_centered_tooltip=Objetktuak zentratuta egon behar du leiho nagusian edit_act_x=X: edit_act_x_tooltip=Kokapen erabat horizontala edit_act_y=Y: edit_act_y_tooltip=Kokapen erabat bertikala edit_act_ui_block=Erabiltzailearen interfazea edit_act_image_tooltip=Aukeratu irudi bat edit_act_text=Testua: edit_act_text_tooltip=Objektu honen barruan erakutsi beharreko testua edit_font_face=Mota: edit_font_size=Tamaina: edit_font_bold=Lodia edit_font_italic=Etzana edit_font_underline=Azpimarratu edit_font_style=Estiloa: edit_cell_title=Gelaxkaren edukia edit_act_messages=Mezuak edit_act_msg_initial=Hasierako mezua edit_act_msg_final=Amaierako mezua edit_act_msg_prev=Aurreko mezua: edit_act_msg_error=Errore-mezua: edit_act_msg_initial_tooltip=Jarduera hasten denean erakutsi beharreko mezua edit_act_msg_final_tooltip=Jarduera bukatutakoan erakutsi beharreko mezua edit_act_msg_error_tooltip=Jarduera hainbat errorerekin bukatzen denean erakutsi beharreko mezua edit_act_msg_prev_tooltip=Jarduera hasi aurretik erakusten den mezua (jarduera-mota jakin batzuetan baino ez) edit_align=Lerrokatu: edit_act_textColor=Testuaren kolorea: edit_act_textColor_tooltip=Testua marrazteko erabilitako kolorea edit_act_shadowColor=Itzalaren kolorea: edit_act_shadowColor_tooltip=Testuaren itzala marrazteko erabilitako kolorea, baldin bada edit_act_shadow=Itzala edit_act_shadow_tooltip=Testua itzalarekin marraztu edit_act_borderColor=Ertzaren kolorea: edit_act_borderColor_tooltip=Gelaxkaren ertza marrazteko erabilitako kolorea edit_act_inactiveColor=Inaktibo-egoeraren kolorea edit_act_inactiveColor_tooltip=Gelaxka desgaituta dagoenean erabilitako kolorea edit_act_altColor=Ordezko kolorea: edit_act_altColor_tooltip=Gelaxken ordezko edukia erakusteko kolorea, behin erantzuna emandakoan edit_cell_marked=Markatua edit_cell_disabled=Desgaituta edit_cell_alt=Ordezkoa edit_cell_textMargin=Barneko ertza: edit_cell_textMargin_tooltip=Gelaxkaren eta testuaren ertzen arteko espazioa edit_cell_borderWidth=Ertzaren zabalera: edit_cell_borderWidth_tooltip=Ertza margotzeko erabilitako marraren lodiera edit_cell_markerWidth=Markatzailearen lodiera: edit_cell_markerWidth_tooltip=Ertza margotzeko erabilitako marraren lodiera, gelaxka markatuta edo aukeratuta dagoenean edit_cell_alt_tooltip=Aurreikusi "ordezkoa" egoeran edit_cell_disabled_tooltip=Aurreikusi "desgaituta" egoeran edit_cell_marked_tooltip=Aurreikusi "markatuta" egoeran edit_act_testAction=Jarduera aurreikusi edit_act_testAction_tooltip=Jarduera aurreikusi eta probatu edit_act_panels_description=Deskribapena edit_act_panels_description_tooltip=Jardueraren izenburua eta deskribapena edit_act_panels_options=Aukerak edit_act_panels_options_tooltip=Jardueraren aukerak edit_act_panels_frame=Leihoa edit_act_panels_frame_tooltip=Jarduera-leihoaren itxura, tamaina eta kokapena edit_act_panels_messages=Mezuak edit_act_panels_messages_tooltip=Jarduera-mezuen edukia edit_act_panels_panel=Panela edit_act_panels_panel_tooltip=Panelaren edukia edit_style_title=Estiloa edit_style_tooltip=Aukeratu gelaxken kolorea, mota eta tamaina edit_act_style=Estiloa: edit_act_overlap=Ekidin irudia eta testua gainjartzea edit_act_overlap_tooltip=Saiatu ekiditen irudia eta testua gainjartzea edit_media_exists_1=Fitxategia edit_media_exists_2=dagoeneko badago media-biltegian! edit_act_shaper=Piezak: edit_act_shaper_err=Errorea piezan: edit_act_num_cols=Zutabeak: edit_act_num_rows=Lerroak: edit_act_toothHeightFactor=Hortzen altuera: edit_act_toothWidthFactor=Hortzen zabalera: edit_act_toothRandom=Ausazko banaketa edit_act_shaper_properties=Piezen ezaugarriak edit_act_panels_text=Testua edit_act_panels_text_tooltip=Jardueraren testua action_saveFile_caption=Gorde... action_saveFile_keys=HH action_saveFile_tooltip=Gorde oraingo proiektua action_docTree_caption=Dokumentuaren zuhaitza... action_docTree_keys=I* action_docTree_tooltip=Erakutsi proiektuaren dokumentua zuhaitz moduan edit_docTree_title=Dokumentuaren zuhaitza edit_media_referencedBy=Noren erreferentzia: msg_prompt_loadReferences=Kontuz:

Proiektu hau beste batzuekin lotuta dago.
Estekak arakatu eta lotutako fitxategi guztiak bilatu nahi al dituzu?

(Ez da gomendagarria BAI erantzutea Clic 3.0 jarduerak inportatzean) edit_mc_type=Mota: edit_mc_type_unknown=Ezezaguna edit_mc_type_sound=Soinua erreproduzitu edit_mc_type_video=Bideoa erreproduzitu edit_mc_type_midi=MIDI erreproduzitu edit_mc_type_cdaudio=Audio CD-a erreproduzitu edit_mc_type_record=Grabatu soinua edit_mc_type_play_recorded=Grabatutako soinua erreproduzitu edit_mc_type_run_activity=Joan jarduerara edit_mc_type_run_sequence=Joan sekuentziara edit_mc_type_run_external=Programa abiarazi edit_mc_type_url=Erakutsi URLa edit_mc_type_exit=Amaitu edit_mc_type_return=Itzuli edit_mc_level=Lehentasun-maila: edit_mc_file=Fitxategia: edit_mc_externalParam=Parametroak: edit_mc_from=Hemendik: edit_mc_to=Hona: edit_mc_length=Geh. iraupena: edit_mc_recBuffer=Grabazio-zinta: edit_mc_stretch=Sartzen ez bada, konprimitu edit_mc_location=Kokapena: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Hemendik: edit_mc_location_from_box=Gelaxka edit_mc_location_from_window=Leihoa edit_mc_location_from_frame=Markoa edit_mc_loop=Errepikatu etengabe edit_mc_autostart=Hasiera automatikoa edit_mc_catchmouse=Sagua harrapatu edit_mc_title=Eduki aktiboa eta multimedia edit_mc_label=Eduki aktiboa: edit_media_dlg_title=Aukeratu objektu multimedia edit_media_title=Media-biltegia edit_mc_pos_cell=Gelaxkan zentratuta edit_mc_pos_window=Leihoan zentratuta edit_mc_pos_absolute=Zehaztu kokapena: edit_tree_badFormat=Zuhaitzaren egitura edo datuak ez dira zuzenak! edit_act_panels_controls=Kontrolak edit_act_panels_controls_tooltip=Botoi eta kontagailuen ezarpenak edit_act_class=Mota: edit_act_gridLayout=Panelen banaketa: edit_act_gridLayout_tooltip=A eta B panelen kokapen erlatiboa edit_act_inverseResolution=Alderantzizko erresoluzioa edit_act_inverseResolution_tooltip=Jarduera bukatutzat emango da "B"ri ezarritako elementu guztiak egindakoan. edit_act_showAllArrows=Erakutsi gezi guztiak edit_act_alt=Ordezko edukia: edit_act_alt_tooltip=Burututako edo ezarri gabeko gelaxketan erakutsitako edukia edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Editatu ordezko edukia edit_act_grid=Taula edit_act_grid_A=A taula edit_act_grid_B=B taula edit_act_grid_layout=Diseinua edit_act_grid_relationship=Erlazioa edit_seq_activity_header=jarduera edit_seq_tag_header=etiketa edit_seq_jump_header=jauzi hona: edit_seq_activity=Jarduera: edit_seq_tag=Etiketa: edit_seq_description=Deskribapena: edit_seq_auto=Aurrera joan automatikoki edit_seq_delay=Denbora-tartea: edit_seq_action_fwd=Joan aurrera edit_seq_action_back=Joan atzera edit_seq_action_jump=Jauzi hona... edit_seq_action_stop=Gelditu edit_seq_action_return=Itzuli edit_seq_action_exit=Itxi JClic edit_seq_arrow_fwd=Aurrera gezia: edit_seq_arrow_back=Atzera gezia: edit_seq_action=Ekintza: edit_seq_button_enabled=Erakutsi botoia edit_seq_project=JClic Proiektua: edit_act_absolute=Kokapen absolutua edit_act_absolute_tooltip=Objektua adierazitako X eta Y koordenadetan ezarriko da edit_act_location=Kokapena: edit_seq_newElement=Sekuentzia-elementu berria... edit_seq_newElement_tooltip=Sartu elementu berria jarduera-sekuentzian edit_seq_newElement_msg=Mesedez, aukeratu jarduera bat sekuentzia-elementu berrirako. edit_seq_newElement_error_noAct=Jarduerarik gabe ezin da sekuentzia-elementu berririk sortu! edit_seq_newElement_error_emptyList=Proiketu honek ez du jarduerarik! Ezin, beraz, elementu-sekuentziarik sortu hutsik dagoen proiektuan. edit_seq_jump_msg=Jauziaren helmuga: edit_seq_jump_title=Jauziaren helmuga edit_act_newActivity_tooltip=Gaineratu jarduera proiektuari edit_act_prompt_class=Jarduera-mota: edit_act_prompt_name=Izena: edit_act_newActivity_msg=Mesedez, aukeratu sortu beharreko jarduera-mota eta eman izena: edit_act_newActivity_error_noAct=Jarduera-mota bat aukeratu behar duzu! edit_act_newActivity_error_noName=Jarduerari izena eman behar diozu! edit_act_newActivity_error_creating=Ezin da jarduerarik sortu! edit_act_newActivity_class=Java mota: edit_text_act_format=Formatua edit_text_act_answer=Erantzuna edit_text_act_popup=Pop up edit_text_act_answer_label=Balio duten erantzunak: edit_list_newElement_tooltip=Zerrrendako elementu berria gaineratu edit_list_editElement_tooltip=Editatu aukeratutako zerrendako elementua edit_list_deleteElement_tooltip=Ezabatu aukeratutako zerrendako elementua edit_list_upBtn_tooltip=Eraman gora edit_list_downBtn_tooltip=Eraman behera edit_list_newValue=Testu berria: edit_list_addElement=Gaineratu zerrendako elementu berria edit_list_modifyValue=Aldatu aukeratutako testua edit_text_act_target=Helburua edit_text_act_maxLen=Geh. iraupena: edit_text_act_maxLen_tooltip=Erantzunaren gehienezko karaktere-kopurua. edit_text_act_fillingChar=Bete-lanetarako karakterea edit_text_act_fillingChar_tooltip=Zuriunea adierazteko erabilitako karaktera edit_text_act_iniLen=Hasierako iraupena: edit_text_act_iniLen_tooltip=Jardueraren hasieran erakutsiko diren bete-lanetarako karaktere-kopurua. edit_text_act_iniText=Hasierako testua: edit_text_act_iniText_tooltip=Jarduera hasieran zuriunean erakutsitako testua. edit_text_act_list=Erakutsi aukera-zerrenda: edit_text_act_list_tooltip=Erakutsi aukera-zerrenda. Hortik aukeratu beharko du bat erabiltzaileak. edit_text_act_check_title=Zuzenketarako aukerak edit_text_act_popup_no=Pop up-ik ez edit_text_act_popup_always=Pop up-ak automatikoki edit_text_act_popup_onError=Errorerako pop up-a edit_text_act_popup_onDemand=Pop up-a F1ekin edit_text_act_popup_type=Mota: edit_text_act_popup_delay=Itxaroteko pop up-a: edit_text_act_popup_maxTime=Geh. denbora: edit_text_act_popup_onlyPlay=Soinua bakarrik edit_text_act_err_noSelection=Testu zati bat aukeratu behar duzu helburu testu berria sortzeko! edit_text_act_err_badCharInSelection=Helburu testuak ezin du paragrafo-jauzirik eta tabuladorerik izan. edit_text_act_err_nestedTargets=Ezezagunak ezin dira pilatu edit_text_act_err_cellInTarget=Ezezagunek ezin dute gelaxkarik izan! edit_text_act_pageBgColor=Paperaren kolorea: edit_text_act_editStylesBtn=Editatu dokumentuaren estiloak... edit_text_act_mainStyle=Hasierako estiloa: edit_text_act_tabSpc=Tabuladorea: edit_text_act_tabSize=Tabuladore-marken arteko espazioak: edit_text_act_colors=Koloreak: edit_text_act_targetStyle=Ezezagunen koloreak: edit_text_act_errorStyle=Errorea koloreetan: edit_text_act_preview=Aurrebista: edit_text_act_styleSample_default_start=Testu estandarra edit_text_act_styleSample_target=helburua edit_text_act_styleSample_error=errorea edit_text_act_styleSample_default_fill=testu estandarra edit_text_act_styleSample_default_end=testu estandarra. edit_text_act_warnDeleteTarget=Kontuz: Ekintza honek une honetan aukeratutako helburua kenduko du. Aurrera egin nahi al duzu? edit_text_act_prevScreen_title=Aurreko pantaila... edit_text_act_prevScreen_no=Ez erakutsi testurik jarduera hasi arte edit_text_act_prevScreen_original=Erakutsi ariketaren testu osoa edit_text_act_prevScreen_special=Erakutsi testu hau: edit_text_act_prevScreen_time=Geh. denbora: edit_text_act_edit_target=Helburua... edit_text_act_checkButton_show=Erakutsi zuzenketarako botoia edit_text_act_checkButtonText=Botoiaren testua: edit_text_act_checkCase=Larria/xeheak edit_text_act_checkAccents=Azentuak eta karaktere bereziak kontuan izan edit_text_act_checkPunct=Kontuan hartu puntuazio-markak edit_text_act_checkDoubleSpc=Baimendu errepikatutako espazioak edit_text_act_checkOptions=Irizpideak edit_text_act_checkAutoJump=Hurrengo ezezagunera jauzi egin automatikoki edit_text_act_checkForceOk=Erantzun zuzenarren ondoren bakarrik mugitu edit_text_act_checkDetail=Adierazi erroreak letraz letra edit_text_act_checkDetail_params=Analisi-algoritmoaren parametroak: edit_text_act_checkDetail_steps=Pausoak: edit_text_act_checkDetail_field=Arakatu eremua: edit_text_act_defaultCheckButtonText=Egiaztatu edit_text_act_advancedCorrectionOptions=Erantzunen azterketa edit_text_act_check_bt=Zuzenketa... edit_text_act_checkButton=Zuzenketa-botoia edit_text_act_checkProgress=Progresioa edit_text_act_typeBtn=Mota... edit_text_act_orderParagraphs=Paragrafoen ordena edit_text_act_orderWords=Hitzen ordena edit_text_act_order_amongstPar=Hitzak nahastu paragrafo artean edit_text_act_type_title=Jarduera-mota edit_text_act_warnChangeType=Une honetan definitutako ezezagun guztiak ezabatuko ditu ekintza honek. Hori egin nahi al duzu? edit_text_act_identWords=Identifikatu hitzak edit_text_act_identChars=Identifikatu karaktereak edit_media_change_name=Aldatu izena... edit_media_change_file=Aldatu fitxategia... edit_media_includeInZip=Gorde ZIP fitxategian edit_media_type=Media-mota: edit_media_size=Fitxategiaren tamaina: edit_media_show_type=Mota honetako fitxategiak: edit_media_preview=Aurreikusi media edit_media_preview_tooltip=Aurreikusi media-baliabidea edit_media_rename=Aldatu baliabidearen izena edit_media_rename_title=Izena aldatu edit_media_rename_prompt=Izen berria: edit_media_rename_invalid=Baliabide-izen okerra! edit_media_rename_exists=Bada izen hori duen beste baliabide bat! Baliabide bakoitzak izen ezberdin bat behar du. edit_media_chfile_invalid=Fitxategi okerra! err_media_chfile_different=Fitxategiak mota berekoa izan behar du edit_media_font_error=Ezin izan da letra-mota kargatu! edit_media_save_file=Fitxategia gorde (ZIPetik atera) edit_media_refresh_file=Baliabidearen edukia fitxategitik eguneratu edit_media_warn_zipFileNotExternal=Hau ez da "benetako" fitxategi bat, ZIP edukiontzi batean kokatutako objektu bat baizik. Funtzio hau erabiltzeko, izen bereko fitxategiak ZIP fitxategia dagoen direktorio berean egon behar du. edit_activities=Jarduerak edit_sequences=Sekuentziak edit_media=Media-biltegia edit_media_tooltip=Proiektuan erabilitako irudiak eta bestelako media fitxategiak kudeatu edit_activities_tooltip=Proiektu-jarduerak sortu eta editatu edit_sequences_tooltip=Jarduera-sekuentziak sortu eta editatu edit_project_title=Izenburua: edit_project_title_tooltip=Proiektuaren izenburua edit_project=Proiektua edit_project_tooltip=Editatu proiektuaren ezaugarriak edit_project_description=Deskribapena: edit_project_description_tooltip=Proiektuaren deskribapen orokorra edit_project_area=Atalak: edit_project_area_tooltip=Proiektuaren kurrikulu-atalak edit_project_level=Mailak: edit_project_level_tooltip=Proiektuaren hezkuntza-mailak edit_project_descriptors=Deskribatzaileak: edit_project_descriptors_tooltip=Proiektuaren deskribatzaileak (komaz banatuta) edit_project_languages=Hizkuntzak: edit_project_languages_tooltip=Proiektuan erabilitako hizkuntzak edit_project_languages_modify=Aldatu aukeratutako hizkuntza edit_project_languages_add=Gaineratu hizkuntza edit_project_languages_select=ISO-639 hizkuntza-kodeak: edit_project_authors=Egileak: edit_project_authors_tooltip=Proiektua sortzen ari direnak edit_project_author_name=Izena: edit_project_author_mail=e-posta: edit_project_author_rol=Rola: edit_project_author_organization=Erakundea: edit_project_author_comments=Iruzkinak: edit_project_author_url=URL-a: edit_project_author_name_tooltip=Egilearen izena (derrigorrezkoa) edit_project_author_mail_tooltip=Egilearen e-posta (aukerakoa) edit_project_author_rol_tooltip=Pertsonen rolak proiektuan: egilea, laguntzailea, marrazkilaria, soinuak... (aukerakoa) edit_project_author_organization_tooltip=Eskola, unibertsitatea, elkartea... (aukerakoa) edit_project_author_url_tooltip=Web-orri pertsonala (aukerakoa) edit_project_author_comments_tooltip=Bestelako informaziorako eremua (aukerakoa) edit_project_author_info=Egilearen informazioa: edit_project_author_add=Gaineratu egilea zerrendara edit_project_author_edit=Editatu egilearen informazioa edit_project_org_name=Izena: edit_project_org_name_tooltip=Eskolaren izena edit_project_org_mail=e-posta: edit_project_org_mail_tooltip=Eskolaren e-posta helbidea edit_project_org_url=URL-a: edit_project_org_url_tooltip=Eskolaren web-gunea edit_project_org_address=Helbidea edit_project_org_address_tooltip=Eskolaren posta-helbidea edit_project_org_pc=PC: edit_project_org_pc_tooltip=Posta-kodea edit_project_org_city=Herria: edit_project_org_city_tooltip=Eskola dagoen hiria edit_project_org_country=Herrialdea/Estatua: edit_project_org_state=Herrialdea: edit_project_org_comments=Iruzkinak: edit_project_org=Eskola/k: edit_project_org_tooltip=Proiektuan ari den eskola edota beste erakundea edit_project_org_info=Erakundearen informazioa: edit_project_org_add=Gaineratu erakundea edit_project_org_edit=Editatu erakundearen datuak edit_project_org_country_tooltip=Estatua edit_project_org_state_tooltip=Herrialdea edit_project_org_comments_tooltip=Bestelako informazioa... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Berrikusketaren data edit_project_rev_authors=Egileak: edit_project_rev_authors_tooltip=Berrikusketaren egileak edit_project_rev_description=Deskribapena: edit_project_rev_description_tooltip=Egindako aldaketen deskribapen laburra edit_project_rev_comments=Iruzkinak: edit_project_rev_comments_tooltip=Bestelako informazio garrantzitsua edit_project_rev=Berrikusketak: edit_project_rev_tooltip=Proiektuari egindako aldaketa nagusien historiala edit_project_rev_add=Berrikusketa-erregistroa gaineratu edit_project_rev_edit=Berrikusketa-erregistroa editatu edit_project_rev_info=Berrikusketa-data edit_media_objects=objektuak edit_media_object=objektua edit_evsounds_start=Jardueraren hasiera: edit_evsounds_click=Sakatu objetktuari: edit_evsounds_actionError=Okerreko ekintza: edit_evsounds_actionOk=Ekintza zuzena: edit_evsounds_finishedError=Hainbat okerrekin bukatutako jarduera: edit_evsounds_finishedOk=Egoki bukatutako jarduera: edit_project_rev_err_nodesc=Errorea: deskribapenerako eremua ezin da hutsik utzi! edit_evsounds_dlg_title=Editatu ekintzaren soinuak edit_project_evsounds=Ekintzaren soinuak: edit_project_evsounds_tooltip=Ezarri soinu zehatzak JClic ekintza bakoitzerako edit_act_evsounds=Ekintzaren soinuak: edit_act_evsounds_tooltip=Ezarri soinu zehatzak JClic ekintza bakoitzerako edit_evsounds_default=berezko soinua edit_evsounds_disabled=ezgaituta edit_evsounds_chk_tooltip=Gaitu edo ezgaitu ekintza honetarako soinua edit_evsounds_select_tooltip=Sakatu ekintza honetarako soinua aukeratzeko, edo markatu gabe utzi berezko soinua erabiltzeko action_newProject_caption=Proiektu berria... action_newProject_keys=NN action_newProject_tooltip=Sortu JClic proiektu berria edit_arith_op_from=Hemendik: edit_arith_op_from_tooltip=Operatzailearen gutxieneko balorea edit_arith_op_to=Hona: edit_arith_op_to_tooltip=Operatzailearen gehienezko balorea edit_arith_op_with=Honekin: edit_arith_op_with_tooltip=Markatuta, operatzaileak balore hau ere izan dezake edit_arith_op_fromList=Zerrendako bat: edit_arith_op_fromList_tooltip=Operatzaileak izan ditzakeen baloreen zerrenda edit_arith_op_decimals=Hamarrenak: edit_arith_op_decimals_tooltip=Operatzailearen hamarren-kopurua edit_arith_op_dec0=# (osoa) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=Lehen operatzailea edit_arith_secondOp=Bigarren operatzailea edit_arith_title=JClic-erako Arith2 edit_arith_operations=Eragiketak: edit_arith_operations_tooltip=Aukeratu egin beharreko eragiketa-mota edit_arith_operations_plus=Plus edit_arith_operations_minus=Minus edit_arith_operations_multiply=Biderkatu edit_arith_operations_divide=Zatitu edit_arith_unknown=Ezezaguna: edit_arith_unknown_tooltip=Aukeratu zein elementu izango den ezezaguna edit_arith_unknown_aobx=Emaitza da ezezaguna edit_arith_unknown_aoxr=Bigarren operatzailea da ezezaguna edit_arith_unknown_xobr=Lehen operatzailea da ezezaguna edit_arith_unknown_axbr=Eragiketa da ezezaguna edit_arith_unknown_invert=Emaitza espresioaren hasieran idatzi edit_arith_result=Emaitza: edit_arith_result_notCarry="Eraman" gabe edit_arith_result_random=Ausazkoa edit_arith_result_asc=Gorantz edit_arith_result_order=Ordenatu emaitzaren arabera: edit_arith_result_desc=Beherantz edit_arith_result_avoidDup=Ekidin bikoizpenak edit_arith_cond=Baldintzak: edit_arith_cond_ind=Berdin da edit_arith_cond_agb=Lehenengo operatzaileak bigarrenak baino handiagoa izan behar du edit_arith_cond_alb=Lehenengo operatzaileak bigarrenak baino txikiagoa izan behar du edit_arith_cond_tooltip=Bestelako baldintzak edit_autocp=Eduki-sortzaile automatikoa: edit_autocp_tooltip=Aukeratu jarduera honetarako eduki-sortzaile automatikoa. edit_autocp_block=Eduki-sortzailea edit_autocp_btn=Ezarpenak... edit_autocp_btn_tooltip=Eduki-sortzailearen ezarpenak ezarri edit_data=Editatu datua edit_act=Editatu jarduera edit_acp=Eduki-sortzailearen edizioa edit_acp_err_creating=Errorea eduki-sortzaile automatikoa sortzean! edit_project_author_group=Sorrera edit_project_description_block=Deskribapena edit_project_ui_block=Erabiltzailearen interfazea edit_act_description=Deskribapena: m_Edit=Editatu m_Edit_Mnemonic=E edit_media_preview_keys=A* edit_act_newActivity=Jarduera berria... edit_act_newActivity_keys=J* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Txertatu m_Insert_Mnemonic=T* m_View=Ikusi m_View_Mnemonic=I action_editProject_caption=Proiektua action_editProject_keys=PP action_editProject_tooltip=Editatu proiektuaren ezarpenak action_editMedia_caption=Media action_editMedia_keys=BB action_editMedia_tooltip=Editatu proiektuaren multimedia-biltegia action_editActivities_caption=Jarduerak action_editActivities_keys=JJ action_editActivities_tooltip=Jarduerak editatu action_editSeq_caption=Sekuentziak action_editSeq_keys=SS action_editSeq_tooltip=Jarduera-sekuentziak editatu warn_project_modified=Oraingo proiektua aldatu egin da. Gorde egin nahi al dituzu aldaketak? edit_project_descriptors_block=Deskribatzaileak edit_media_new=Media-objektu berria... edit_media_new_tooltip=Gaineratu irudi edo multimedia-objektu berria biltegian edit_media_new_keys=M* edit_seq_threshold=Atalase-puntuazioa: edit_seq_threshold_tooltip_up=Egin hau puntuazio orokorra honen berdina edo handiagoa denean... edit_seq_time=Atalase-denbora: edit_seq_time_tooltip_up=Bide honi segitzeko, jarduerak ondorengo denbora-tartea baino lehen egin behar izan dira: edit_seq_threshold_tooltip_down=Egin hau puntuazio orokorra hau baino txikiagoa denean... edit_seq_time_tooltip_down=Segitu bide honi, jardueretan emandako denbora hau baino luzeagoa bada: edit_seq_condJump=Baldintzatutako jauziak edit_seq_condJump_tooltip=Baldintza zehatzetan egin behar diren jauzi bereziak ezarri edit_seq_condJump_upper_tooltip=Ezarri goragoko maila baterako jauzia egiteko baldintzak edit_seq_condJump_lower=Beherako jauzia: edit_seq_condJump_upper=Gorako jauzia: edit_seq_condJump_lower_tooltip=Ezarri beherako maila baterako jauzia egiteko baldintzak edit_seq_action_tooltip_fw="Hurrengoa" botoiari ezarritako ekintza edit_seq_action_tooltip_bk="Aurrekoa" botoiari ezarritako ekintza edit_seq_jump_tooltip=Jauziaren helmuga adierazi edit_seq_action_tooltip=Egin beharreko ekintza edit_seq_activity_tooltip=Sekuentzia-elementu honi egokitutako jarduera edit_seq_tag_tooltip=Sekuentziako elementu honi erreferentzia egiteko erabilitako etiketa (aukerako eremua) edit_seq_description_tooltip=Sekuentzia-elementuaren deskribapena (aukerako eremua) edit_seq_button_enabled_tooltip=Jardueretan aurrera egiteko botoia gaitu edo ezgaitu edit_seq_auto_tooltip=Mugitu automatikoki jarduera bukatzean edit_seq_delay_tooltip=Zenbat segundu itxaron behar da automatikoki mugitu aurretik edit_color_dlgTitle=Aukeratu kolorea edit_media_renaming=Mesedez, itxaron baliabidea berrizendatu arte edit_act_cell_width=Zabalera: edit_act_cell_width_tooltip=Gelaxkaren zabalera (pixeletan) edit_act_cell_height=Altuera: edit_act_cell_height_tooltip=Gelaxkaren altuera (pixeletan) edit_act_hiddenWords=Ezkutuko hitzak: edit_act_hiddenWords_tooltip=Panelean ezarritako ezkutuko hitzen zerrenda edit_act_wordSearch_panelB=Erabili B panela edit_act_wordSearch_panelB_tooltip=Bigarren paneleko edukian hitzak dauden daudenean erakutsiko dira edit_act_shaper_tooltip=Aukeratu panelean erabili beharreko pieza-mota edit_act_num_cols_tooltip=Panelaren zutabe-kopurua edit_act_num_rows_tooltip=Panelaren lerro-kopurua edit_act_wildTransparent=Banatzaile gardenak edit_act_wildTransparent_tooltip=Erakutsi banatzaileak (laukitxo beltzak) zulo garden gisa edit_act_behavior_scramble_times=Nahasketak: edit_act_behavior_scramble_times_tooltip=Piezak zenbat aldiz nahastuko diren edit_act_copy_title=Kopiatu ezaugarriak hona... edit_act_copy_attributes=Ezaugarriak edit_act_copy_dest=Aplikatu honi: edit_act_copy_style_main=Leiho nagusia edit_act_copy_style_play=Jolas-leihoa edit_act_copy_activities=Aldatu beharreko jarduerak: edit_act_copyAttributes=Kopiatu ezaugarriak edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Kopiatu oraingo jardueraren ezaugarriak beste jarduera batzuei edit_new_project_name=Proiektuaren izena: edit_new_project_name_tooltip=Proiektua deskribatzeko izen laburra edit_new_project_filename=Fitxategiaren izena: edit_new_project_filename_tooltip=Proiektu- fitxategiaren izena, luzapenik gabe edit_new_project_folder=Karpeta: edit_new_project_folder_tooltip=Proiektua gordetzeko karpetaren izena edit_new_project_folder_browse=Arakatu... edit_new_project_title=Sortu JClic proiektu berria edit_new_project_err_empty=Errorea: Proiektu, fitxategi eta direktorioek izen onargarria izan behar dute. edit_new_project_warning_noEmptyFolder=Karpeta honek badu beste Clic 3.0 edo JClic proiektu bat dagoeneko. Ez nahasteko, hobe da proiektu bakoitza aparteko karpeta batean gordetzea, baina ez da derrigorrezkoa. Benetan gorde nahi al duzu proiektu berria karpeta honetan? edit_new_project_err_folderCreation=Errorea: ezin da sortu adierazitako karpeta! edit_act_copy_err_noSelection=Errorea: Ez da jarduerarik aukeratu! Funtzio hau erabiltzeko zerrendatik jardueraren bat aukeratu behar duzu aipatutako ezaugarriak horri/horiei aplikatzeko. edit_act_copy_action_prefix=Kopiatu ezaugarriak hona: edit_act_copy_margin=Marjina edit_act_copy_bgColor=Atzeko aldearen kolorea edit_act_copy_gradient=Gradientea edit_act_copy_bgImage=Atzeko aldearen irudia edit_act_copy_border=Ertza edit_act_copy_transparentBg=Atzeko alde gardena edit_act_copy_position=Kokapena edit_act_copy_messages=Mezuak edit_act_copy_messages_ini=Hasierako mezuaren estiloa edit_act_copy_messages_end=Bukaerako mezuaren estiloa edit_act_copy_messages_err=Errore-mezuaren estiloa edit_act_copy_reports=Txostenak edit_act_copy_rep_include=Txostenetan jarduera sartu edit_act_copy_rep_actions=Ekintzak erregistratu edit_act_copy_interface=Erabiltzailearen interfazea edit_act_copy_skin=Itxura edit_act_copy_evSounds=Ekintza-soinuak edit_act_copy_counters=Kontagailuak edit_act_copy_cTime=Denbora-kontagailua edit_act_copy_maxTime=Gehinezko denbora edit_act_copy_cTries=Saiakera-kontagailua edit_act_copy_maxTries=Gehi. saiakera-kopurua edit_act_copy_cScore=Puntuazio-kontagailua edit_act_copy_scramble=Zenbat aldiz nahastu behar den edit_act_copy_buttons=Botoiak edit_act_copy_btnHelp=Laguntza-botoia edit_act_copy_btnInfo=Informazio-botoia edit_act_copy_grids=Taulak edit_act_copy_gridA=A taularen estiloa edit_act_copy_gridB=B taularen estiloa edit_act_copy_textGrid=Testu-panelen estiloa edit_act_copy_text=Testu-jarduerak edit_act_copy_fontFace=Letra-tipoaren izena edit_act_copy_fontSize=Letra-tamaina edit_act_copy_fontStyle=Letra-tipoaren estiloa edit_act_copy_textColour=Testu nagusiaren kolorea edit_act_copy_textTargetColour=Aukeratu zein JClic proiektutatik inportatu behar diren jarduerak edit_act_copy_textErrorColour=Errore-kolorea edit_act_copy_tabSpace=Tabuladoreen arteko espazioa edit_act_copy_messages_prev=Aurreko mezuaren estiloa edit_act_changeType=Aldatu jarduera-mota edit_act_newActivity_class_tooltip=Jarduera egiteko erabiliko den motaren izen osoa (erabiltzaile aurreratuak bakarrik!) edit_act_newActivity_other=Bestelakoa... edit_act_newActivity_info=Erabiltzaile aurreratuek erregistratu gabeko beste JClic jarduera-mota batzuk ere sor ditzakete. Idatzi azpian motaren izen osoa, aurretik paketearena duela (adibidez, "com.acme.activities.FooActivity"). Jarduera-motek edu.xtec.jclic.Activity zabaldu behar dute eta JVM bilatzailearekin eskuratzeko moduan egon behar dute. edit_act_newActivity_name=Jardueraren izena: edit_act_newActivity_name_tooltip=Jarduera bakoitzak izen bat izan behar du proiektuan edit_act_changeType_warning=

Adi: Mota aldaketak editatzen ari den jardueraren ezaugarri eta objektuak galtzea ekar dezake. Kontu handiz erabili funtzio hau!

 

applet_codebase=JClic kodearen kokapena: applet_codebase_tooltip=JClic programaren fitxategiak dauden karpetara zuzenduko duen URL-a applet_prev_text=Aurreko HTML kodea: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Aplikazioaren aurretik ipini beharreko testua edo HTML kodea applet_post_text=Ondorengo HTML kodea: applet_post_text_tooltip=Aplikazioaren ondoren ipini beharreko testua edo HTML kodea applet_size=Aplikazioaren tamaina: applet_size_tooltip=Applet-aren zabalera eta altuera, balore absolutuetan edo ehunekoetan. applet_page_title=Orriaren izenburua: applet_page_title_tooltip=Nabigatzailearen leihoaren goiko aldean erakutsi beharreko testua applet_created_info="%s" web-orria egoki sortu da. applet_created_prompt=Orain nabigatzailearekin irekitzea nahi al duzu? action_createHTML_caption=Sortu web-orria... applet_create_title=Sortu HTML orri bat JClic aplikazioarekin action_createHTML_tooltip=Sortu HTML orri bat oraingo proiektua duen aplikazioarekin applet_filename=Fitxategi-izena: applet_filename_tooltip=Sortu beharreko HTML fitxategiaren izena action_createHTML_keys=H* settings_applet=Aplikazioa settings_applet_tooltip=Web-orria sortzeko erabilitako berezko baloreak applet_bgcolor=Atzealdeko kolorea: applet_bgcolor_tooltip=HTML orriaren atzealdeko kolorea applet_centered=Erdian applet_centered_tooltip=Applet-a erdian ipini horizontalean applet_width_tooltip=Applet-aren zabalera (balore absolutuan edo ehunekoetan) applet_height_tooltip=Applet-aren altuera (balore absolutuan edo ehunekoetan) applet_exitUrl=Irtetean, joan hona: applet_exitUrl_tooltip=JClic-etik irtetean zein URL-tara zuzendu behar den nabigazioa applet_infoFrame=Informazio-markoaren izena: applet_infoFrame_tooltip="Informazioa" botoiko edukia erakusteko markoaren izena action_createInstaller_caption=Proiektuaren instalatzailea sortu... action_createInstaller_keys=I* action_createInstaller_tooltip=Proiektuaren instalaziorako fitxategia sortu JClic player-erako installer_caption=Editatu proiektuaren instalazio-script-a installer_title=Izenburua: installer_title_tooltip=Instalazio-laguntzailean erakutsiko den proiektuaren izenburua installer_authors=Egileak: installer_authors_tooltip=Proiektuaren egilea/k (izen laburra) installer_folder=Karpeta: installer_folder_tooltip=Instalaziorako laguntzaileak aholkatuko duen karpetaren izena installer_files=Kopiatu behareko fitxategiak: installer_files_tooltip=Instalatzaileak kopiatu beharreko fitxategiak installer_files_available=Eskura dauden fitxategiak installer_files_selected=Aukeratutako fitxategiak installer_files_add=>>gaineratu>> installer_files_add_tooltip=Gaineratu aukeratutako fitxategia zerrendara installer_files_remove=<Warning:

This project connects with other projects.
Do you want to explore the links and to load all the related files?

(It's advisable to answer YES when importing Clic 3.0 activities) edit_mc_type=Type: edit_mc_type_unknown=Unknown edit_mc_type_sound=Play sound edit_mc_type_video=Play video edit_mc_type_midi=Play MIDI edit_mc_type_cdaudio=Play CD audio edit_mc_type_record=Record sound edit_mc_type_play_recorded=Play recorded sound edit_mc_type_run_activity=Go to activity edit_mc_type_run_sequence=Go to sequence edit_mc_type_run_external=Run program edit_mc_type_url=Show URL edit_mc_type_exit=End edit_mc_type_return=Return edit_mc_level=Priority level: edit_mc_file=File: edit_mc_externalParam=Parameters: edit_mc_from=From: edit_mc_to=To: edit_mc_length=Max. length: edit_mc_recBuffer=Record tape: edit_mc_stretch=Stretch size edit_mc_location=Location: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=From: edit_mc_location_from_box=Cell edit_mc_location_from_window=Window edit_mc_location_from_frame=Frame edit_mc_loop=Loop playback edit_mc_autostart=Auto start edit_mc_catchmouse=Catch mouse edit_mc_title=Multimedia and active content edit_mc_label=Active content: edit_media_dlg_title=Multimedia object selection edit_media_title=Media library edit_mc_pos_cell=Centered over cell edit_mc_pos_window=Centered over window edit_mc_pos_absolute=Specify position: edit_tree_badFormat=Incorrect tree structure or data! edit_act_panels_controls=Controls edit_act_panels_controls_tooltip=Options for buttons and counters edit_act_class=Type: edit_act_gridLayout=Grid layout: edit_act_gridLayout_tooltip=Relative postion of the panels A and B. edit_act_inverseResolution=Inverse resolution edit_act_inverseResolution_tooltip=The activity is solved when all assigned elements of "B" are matched. edit_act_showAllArrows=Show all arrows edit_act_alt=Alternative content: edit_act_alt_tooltip=Content shown in solved cells and non-assigned cells. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Edit the alternative content edit_act_grid=Grid edit_act_grid_A=Grid A edit_act_grid_B=Grid B edit_act_grid_layout=Layout edit_act_grid_relationship=Relationship edit_seq_activity_header=activity edit_seq_tag_header=tag edit_seq_jump_header=jump to edit_seq_activity=Activity: edit_seq_tag=Label: edit_seq_description=Description: edit_seq_auto=Move on automatically edit_seq_delay=Delay: edit_seq_action_fwd=Go forward edit_seq_action_back=Go bak edit_seq_action_jump=Jump to... edit_seq_action_stop=Stop edit_seq_action_return=Return edit_seq_action_exit=Exit JClic edit_seq_arrow_fwd=Forward arrow: edit_seq_arrow_back=Back arrow: edit_seq_action=Action: edit_seq_button_enabled=Show button edit_seq_project=JClic Project: edit_act_absolute=Absolute position edit_act_absolute_tooltip=The object will be placed at the specified X and Y co-ordinates edit_act_location=Location: edit_seq_newElement=New sequence element... edit_seq_newElement_tooltip=Insert a new element into the activity sequence edit_seq_newElement_msg=Please select an activity for the new sequence element. edit_seq_newElement_error_noAct=Cannot create a new sequence element without activity! edit_seq_newElement_error_emptyList=This project has no activities! Unable to create sequence elements in an empty project. edit_seq_jump_msg=Jump target: edit_seq_jump_title=Jump target edit_act_newActivity_tooltip=Add a new activity to project edit_act_prompt_class=Type of activity: edit_act_prompt_name=Name: edit_act_newActivity_msg=Please select the type of activity to create and give it a name: edit_act_newActivity_error_noAct=You must select an activity type! edit_act_newActivity_error_noName=You must especify a name for the activity! edit_act_newActivity_error_creating=Unable to create activity! edit_act_newActivity_class=Java class name: edit_text_act_format=Format edit_text_act_answer=Answer edit_text_act_popup=Pop up edit_text_act_answer_label=Valid answers: edit_list_newElement_tooltip=Add a new list element edit_list_editElement_tooltip=Edit the selected list element edit_list_deleteElement_tooltip=Delete the selected list element edit_list_upBtn_tooltip=Move up edit_list_downBtn_tooltip=Move down edit_list_newValue=New text: edit_list_addElement=Add new list element edit_list_modifyValue=Modify selected text edit_text_act_target=Target edit_text_act_maxLen=Max. length: edit_text_act_maxLen_tooltip=Maximum amount of characters in the answer. edit_text_act_fillingChar=Filling character edit_text_act_fillingChar_tooltip=Character used to indicate the blank edit_text_act_iniLen=Initial length: edit_text_act_iniLen_tooltip=Number of filling chars that will be displayed at the beginning of the activity. edit_text_act_iniText=Initial text: edit_text_act_iniText_tooltip=Text displayed in the blank at the beggining of the activity. edit_text_act_list=Show a list of options: edit_text_act_list_tooltip=Display a list of options from which the user must select one. edit_text_act_check_title=Correction options edit_text_act_popup_no=No pop up edit_text_act_popup_always=Pop up automatically edit_text_act_popup_onError=Pop up in errors edit_text_act_popup_onDemand=Pop up with F1 edit_text_act_popup_type=Type: edit_text_act_popup_delay=Pop up delay: edit_text_act_popup_maxTime=Max. time: edit_text_act_popup_onlyPlay=Sound only edit_text_act_err_noSelection=You must select a fragment of text in order to create a new text target! edit_text_act_err_badCharInSelection=Target text cannot include paragraph returns nor tabs. edit_text_act_err_nestedTargets=Targets cannot nest! edit_text_act_err_cellInTarget=Targets cannot contain cells! edit_text_act_pageBgColor=Paper colour: edit_text_act_editStylesBtn=Edit document styles... edit_text_act_mainStyle=Main style: edit_text_act_tabSpc=Tab space: edit_text_act_tabSize=Spaces between tab marks: edit_text_act_colors=Colors: edit_text_act_targetStyle=Target colors: edit_text_act_errorStyle=Error colors: edit_text_act_preview=Preview: edit_text_act_styleSample_default_start=Standard text edit_text_act_styleSample_target=target edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=standard text edit_text_act_styleSample_default_end=standard text. edit_text_act_warnDeleteTarget=Warning: This action will supress the currently selected target. Do you want to proceed? edit_text_act_prevScreen_title=Previous screen... edit_text_act_prevScreen_no=Don't display any text before starting the activity edit_text_act_prevScreen_original=Display the complete text of the exercise edit_text_act_prevScreen_special=Display this text: edit_text_act_prevScreen_time=Max. time: edit_text_act_edit_target=Target... edit_text_act_checkButton_show=Show correction button edit_text_act_checkButtonText=Button text: edit_text_act_checkCase=Match case edit_text_act_checkAccents=Consider accents and special characters edit_text_act_checkPunct=Consider punctuation marks edit_text_act_checkDoubleSpc=Allow repeated spaces edit_text_act_checkOptions=Criteria edit_text_act_checkAutoJump=Move on to next target when filled in edit_text_act_checkForceOk=Move only after correct guess edit_text_act_checkDetail=Indicate mistakes letter by letter edit_text_act_checkDetail_params=Analysis algorithm parameters: edit_text_act_checkDetail_steps=Steps: edit_text_act_checkDetail_field=Exploration field: edit_text_act_defaultCheckButtonText=Check edit_text_act_advancedCorrectionOptions=Answer analysis edit_text_act_check_bt=Correction... edit_text_act_checkButton=Correction button edit_text_act_checkProgress=Progress edit_text_act_typeBtn=Type... edit_text_act_orderParagraphs=Order paragraphs edit_text_act_orderWords=Order words edit_text_act_order_amongstPar=Shuffle words amongst paragraphs edit_text_act_type_title=Activity type edit_text_act_warnChangeType=This action will clear all the existing targets. Do you want to proceed? edit_text_act_identWords=Identify words edit_text_act_identChars=Identify characters edit_media_change_name=Change name... edit_media_change_file=Change file... edit_media_includeInZip=Save into ZIP file edit_media_type=Media type: edit_media_size=File size: edit_media_show_type=Files of type: edit_media_preview=Preview media edit_media_preview_tooltip=Preview media resource edit_media_rename=Change resource name edit_media_rename_title=Rename edit_media_rename_prompt=New name: edit_media_rename_invalid=Invalid resource name! edit_media_rename_exists=There is another resource with this name! Each resource must have a unique name. edit_media_chfile_invalid=Invalid file! err_media_chfile_different=File must be of same type edit_media_font_error=Unable to load font! edit_media_save_file=Save file (extract from ZIP) edit_media_refresh_file=Update media content from file edit_media_warn_zipFileNotExternal=This is not a "real" file, but a object located into a ZIP container. In order to use this feature, a file with the same name must be present in the folder where the ZIP file is located. edit_activities=Activities edit_sequences=Sequences edit_media=Media library edit_media_tooltip=Manage images and other media files used in the project edit_activities_tooltip=Create and edit project activities edit_sequences_tooltip=Edit and create sequences of activities edit_project_title=Title: edit_project_title_tooltip=Project's title edit_project=Project edit_project_tooltip=Edit project properties edit_project_description=Description: edit_project_description_tooltip=General description of the project edit_project_area=Areas: edit_project_area_tooltip=Curricular areas of the project edit_project_level=Levels: edit_project_level_tooltip=Educational levels of the project edit_project_descriptors=Descriptors: edit_project_descriptors_tooltip=Descriptors of the project (separed with comma) edit_project_languages=Languages: edit_project_languages_tooltip=Languages used in the project edit_project_languages_modify=Change the selected language edit_project_languages_add=Add language edit_project_languages_select=ISO-639 language codes: edit_project_authors=Authors: edit_project_authors_tooltip=People involved in the creation of the project edit_project_author_name=Name: edit_project_author_mail=e-mail: edit_project_author_rol=Rol: edit_project_author_organization=Organization: edit_project_author_comments=Comments: edit_project_author_url=URL: edit_project_author_name_tooltip=Author's name (required) edit_project_author_mail_tooltip=Author's e-mail (optional) edit_project_author_rol_tooltip=Person's rol in the project: author, collaborator, drawings, sounds... (optional) edit_project_author_organization_tooltip=School, university, association... (optional) edit_project_author_url_tooltip=Personal web page (optional) edit_project_author_comments_tooltip=Field for other information (optional) edit_project_author_info=Author info: edit_project_author_add=Add author to list edit_project_author_edit=Edit author info edit_project_org_name=Name: edit_project_org_name_tooltip=School name edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=e-mail address of the school edit_project_org_url=URL: edit_project_org_url_tooltip=School website edit_project_org_address=Address: edit_project_org_address_tooltip=Snail-mail address edit_project_org_pc=PC: edit_project_org_pc_tooltip=Postal code edit_project_org_city=City: edit_project_org_city_tooltip=School city edit_project_org_country=Country: edit_project_org_state=State: edit_project_org_comments=Comments: edit_project_org=School/s: edit_project_org_tooltip=School or other institution involved in the project edit_project_org_info=Organization info: edit_project_org_add=Add organization edit_project_org_edit=Edit organization data edit_project_org_country_tooltip=Country, federation, union... edit_project_org_state_tooltip=Federal state, community, region... edit_project_org_comments_tooltip=Other info... edit_project_rev_date=Date: edit_project_rev_date_tooltip=Date of the revision edit_project_rev_authors=Authors: edit_project_rev_authors_tooltip=Authors of the revision edit_project_rev_description=Description: edit_project_rev_description_tooltip=Brief description of the changes made edit_project_rev_comments=Comments: edit_project_rev_comments_tooltip=Other relevant info edit_project_rev=Revisions: edit_project_rev_tooltip=History of main modifications made to the project edit_project_rev_add=Add revision record edit_project_rev_edit=Edit revision record edit_project_rev_info=Revision data edit_media_objects=objects edit_media_object=object edit_evsounds_start=Start of activity: edit_evsounds_click=Click on object: edit_evsounds_actionError=Erroneous action: edit_evsounds_actionOk=Correct action: edit_evsounds_finishedError=Activity finished with errors: edit_evsounds_finishedOk=Activity finished OK: edit_project_rev_err_nodesc=Error: The description field cannot be leaved blank! edit_evsounds_dlg_title=Edit event sounds edit_project_evsounds=Event sounds: edit_project_evsounds_tooltip=Set specific sounds for each JClic event edit_act_evsounds=Event sounds: edit_act_evsounds_tooltip=Set specific sounds for each JClic event edit_evsounds_default=default sound edit_evsounds_disabled=disabled edit_evsounds_chk_tooltip=Enable or disable the sound for this event edit_evsounds_select_tooltip=Click to select a sound for this event, or uncheck to use the default sound action_newProject_caption=New project... action_newProject_keys=NN action_newProject_tooltip=Create a new JClic project edit_arith_op_from=From: edit_arith_op_from_tooltip=Minimum value of the operator edit_arith_op_to=To: edit_arith_op_to_tooltip=Maximum value of the operator edit_arith_op_with=With: edit_arith_op_with_tooltip=If checked, the operator can also have this value edit_arith_op_fromList=One from the list: edit_arith_op_fromList_tooltip=List of possible values for the operator edit_arith_op_decimals=Decimals: edit_arith_op_decimals_tooltip=Number of decimals of the operand edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=First operand edit_arith_secondOp=Second operand edit_arith_title=Arith2 for JClic edit_arith_operations=Operations: edit_arith_operations_tooltip=Select the kind of operations to be performed edit_arith_operations_plus=Plus edit_arith_operations_minus=Minus edit_arith_operations_multiply=Multiply edit_arith_operations_divide=Divide edit_arith_unknown=Unknown: edit_arith_unknown_tooltip=Select the item that will act as a unknown edit_arith_unknown_aobx=The result is the unknown edit_arith_unknown_aoxr=The second operator is the unknown edit_arith_unknown_xobr=The first operator is the unknown edit_arith_unknown_axbr=The operation is the unknown edit_arith_unknown_invert=Write the result at the beggining of the expression edit_arith_result=Result: edit_arith_result_notCarry=Do not carry edit_arith_result_random=Random edit_arith_result_asc=Ascending edit_arith_result_order=Order by result: edit_arith_result_desc=Descending edit_arith_result_avoidDup=Avoid duplicates edit_arith_cond=Conditions: edit_arith_cond_ind=Indifferent edit_arith_cond_agb=The first operator must be greather than the second one edit_arith_cond_alb=The first operator must be lesser than the second one edit_arith_cond_tooltip=Other conditions edit_autocp=Automatic content generator: edit_autocp_tooltip=Select the type of automatic content generator for this activity. edit_autocp_block=Content generator edit_autocp_btn=Settings... edit_autocp_btn_tooltip=Configure the content provider settings edit_data=Edit data edit_act=Activity edit edit_acp=Content provider edit edit_acp_err_creating=Error creating the content provider! edit_project_author_group=Creation edit_project_description_block=Description edit_project_ui_block=User interface edit_act_description=Description: m_Edit=Edit m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=New activity... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Insert m_Insert_Mnemonic=I m_View=View m_View_Mnemonic=V action_editProject_caption=Project action_editProject_keys=PP action_editProject_tooltip=Edit project settings action_editMedia_caption=Media action_editMedia_keys=MM action_editMedia_tooltip=Edit the project's multimedia library action_editActivities_caption=Activities action_editActivities_keys=AA action_editActivities_tooltip=Edit the activities action_editSeq_caption=Sequences action_editSeq_keys=SS action_editSeq_tooltip=Edit the sequences of activities warn_project_modified=Current project has been modified. Do you want to save the changes? edit_project_descriptors_block=Descriptors edit_media_new=New media object... edit_media_new_tooltip=Add a new image or multimedia object to the library edit_media_new_keys=M* edit_seq_threshold=Score threshold: edit_seq_threshold_tooltip_up=Take this way when the global score is equal to or higher than... edit_seq_time=Time threshold: edit_seq_time_tooltip_up=In order to take this way, the time spent on the activities must be less than... edit_seq_threshold_tooltip_down=Take this way when the global score is lower than... edit_seq_time_tooltip_down=Take this way when the time spent on the activities is more than... edit_seq_condJump=Conditional jumps edit_seq_condJump_tooltip=Set special jumps to be executed only under specific condicions edit_seq_condJump_upper_tooltip=Set conditions to jump to an upper level edit_seq_condJump_lower=Lower jump: edit_seq_condJump_upper=Upper jump: edit_seq_condJump_lower_tooltip=Set conditions to jump to an lower level edit_seq_action_tooltip_fw=Action assigned to the "next" button edit_seq_action_tooltip_bk=Action assigned to the "previous" button edit_seq_jump_tooltip=Set the jump target edit_seq_action_tooltip=Action to be done edit_seq_activity_tooltip=Activity assigned to this sequence element edit_seq_tag_tooltip=Tag used to reference this sequence element (optional field) edit_seq_description_tooltip=Description of the sequence element (optional field) edit_seq_button_enabled_tooltip=Enable or disable the arrow button edit_seq_auto_tooltip=Move on automatically when the activity finishes edit_seq_delay_tooltip=Seconds to wait before to do the automatic move edit_color_dlgTitle=Select color edit_media_renaming=Please wait while the resource is being renamed... edit_act_cell_width=Width: edit_act_cell_width_tooltip=Cell width (in pixels) edit_act_cell_height=Height: edit_act_cell_height_tooltip=Cell height (in pixels) edit_act_hiddenWords=Hidden words: edit_act_hiddenWords_tooltip=List of the hidden words placed in the panel edit_act_wordSearch_panelB=Use panel B edit_act_wordSearch_panelB_tooltip=The contents of a second panel will be displayed as words are found edit_act_shaper_tooltip=Select the shaper type to be used in the panel edit_act_num_cols_tooltip=Number of columns of the panel edit_act_num_rows_tooltip=Number of rows of the panel edit_act_wildTransparent=Transparent delimiters edit_act_wildTransparent_tooltip=Treat the delimiters (black boxes) as transparent holes edit_act_behavior_scramble_times=Mixes: edit_act_behavior_scramble_times_tooltip=Number of times to shuffle edit_act_copy_title=Copy attributtes to... edit_act_copy_attributes=Attributes edit_act_copy_dest=Apply to: edit_act_copy_style_main=Main window edit_act_copy_style_play=Play window edit_act_copy_activities=Activities to be modified: edit_act_copyAttributes=Copy attributes edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copy current activity attributes to other activities edit_new_project_name=Project name: edit_new_project_name_tooltip=Short, descriptive name of the project edit_new_project_filename=File name: edit_new_project_filename_tooltip=Name of the project file, without extension edit_new_project_folder=Folder: edit_new_project_folder_tooltip=Name of the folder where the project will be stored edit_new_project_folder_browse=Browse... edit_new_project_title=Create new JClic project edit_new_project_err_empty=Error: Project, file and folder must have valid, non-empty names. edit_new_project_warning_noEmptyFolder=This folder already contains another Clic 3.0 or JClic project. In order to avoid confusions, is preferable to maintain each project in a separate folder, but that isn't a strict rule. Do you really want to create the new project in this folder? edit_new_project_err_folderCreation=Error: Unable to create the specified folder! edit_act_copy_err_noSelection=Error: No activity selected! In order to use this function you must select in the list the activity or activities to wich the indicated attributes will be applied. edit_act_copy_action_prefix=Copying attributes to: edit_act_copy_margin=Margin edit_act_copy_bgColor=Background color edit_act_copy_gradient=Gradient edit_act_copy_bgImage=Background image edit_act_copy_border=Border edit_act_copy_transparentBg=Transparent background edit_act_copy_position=Position edit_act_copy_messages=Messages edit_act_copy_messages_ini=Style of initial message edit_act_copy_messages_end=Style of end message edit_act_copy_messages_err=Style of error message edit_act_copy_reports=Reports edit_act_copy_rep_include=Include activity in reports edit_act_copy_rep_actions=Record actions edit_act_copy_interface=User interface edit_act_copy_skin=Skin edit_act_copy_evSounds=Event sounds edit_act_copy_counters=Counters edit_act_copy_cTime=Time counter edit_act_copy_maxTime=Max. time edit_act_copy_cTries=Tries counter edit_act_copy_maxTries=Max. tries edit_act_copy_cScore=Score counter edit_act_copy_scramble=Times to scramble edit_act_copy_buttons=Buttons edit_act_copy_btnHelp=Help button edit_act_copy_btnInfo=Information button edit_act_copy_grids=Grids edit_act_copy_gridA=Style of grid A edit_act_copy_gridB=Style of grid B edit_act_copy_textGrid=Style of text grids edit_act_copy_text=Text activities edit_act_copy_fontFace=Font face edit_act_copy_fontSize=Font size edit_act_copy_fontStyle=Font style edit_act_copy_textColour=Main text colour edit_act_copy_textTargetColour=Select the JClic project of which the activities will be imported edit_act_copy_textErrorColour=Errors colour edit_act_copy_tabSpace=Tab space edit_act_copy_messages_prev=Style of previous message edit_act_changeType=Change activity type edit_act_newActivity_class_tooltip=Full name of the class to be used to build the activity (advanced users only!) edit_act_newActivity_other=Other... edit_act_newActivity_info=Advanced users can also create unregistered types of JClic activities. Just write below the full class name, prefixed by the package (like "com.acme.activities.FooActivity"). Activity classes must extend edu.xtec.jclic.Activity, and must be accessibles to the JVM classloader. edit_act_newActivity_name=Name of the activity: edit_act_newActivity_name_tooltip=Each activity must have a name unique in the project edit_act_changeType_warning=

Warning: Changing the type of activity can cause lost of some of the current activity attributes and objects. Use it with care!

 

applet_codebase=Location of JClic code: applet_codebase_tooltip=URL pointing to a folder with the JClic program files and scripts applet_prev_text=HTML code before: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Text or HTML code to be placed before the applet applet_post_text=HTML code after: applet_post_text_tooltip=Text or HTML code to be placed after the applet applet_size=Applet size: applet_size_tooltip=Width and height of the applet, in absolute or percentage values. applet_page_title=Page title: applet_page_title_tooltip=Text to be shown at the top of the browser window applet_created_info=The web page "%s" has been created successfully. applet_created_prompt=Do you want to open it now with the browser? action_createHTML_caption=Create web page... applet_create_title=Creation of an HTML page with a JClic applet action_createHTML_tooltip=Create a HTML page with an applet containing the current project applet_filename=File name: applet_filename_tooltip=Name of the HTML file to be created action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Default values used in web page creation applet_bgcolor=Background color: applet_bgcolor_tooltip=HTML page background color applet_centered=Centered applet_centered_tooltip=Place the applet horizontally centered applet_width_tooltip=Applet width (absolute or percentage) applet_height_tooltip=Applet height (absolute or percentage) applet_exitUrl=On exit, go to: applet_exitUrl_tooltip=URL where to redirect the navigation on JClic exit applet_infoFrame=Info frame name: applet_infoFrame_tooltip=Name of the frame used to show the content related to the "info" button action_createInstaller_caption=Create project installer... action_createInstaller_keys=I* action_createInstaller_tooltip=Create a project installer script for JClic player installer_caption=Edit project installer script installer_title=Title: installer_title_tooltip=Project title, to be shown on the installer wizard installer_authors=Autors: installer_authors_tooltip=Author/s of the project (short text) installer_folder=Folder: installer_folder_tooltip=Folder name to be suggested by the installer wizard installer_files=Files to be copied: installer_files_tooltip=Files to be copied by the installer installer_files_available=Available files installer_files_selected=Selected files installer_files_add=>> add >> installer_files_add_tooltip=Add selected file to the list installer_files_remove=<< remove << installer_files_remove_tooltip=Remove selected file from the list installer_button=Launch button installer_button_tooltip=Properties of the button to be shown in the project library installer_button_project=Main project: installer_button_project_tooltip=JClic project to be launched by the button installer_button_text=Label: installer_button_text_tooltip=Short text label, to be shown inside the button installer_button_icon=Icon: installer_button_icon_tooltip=Picture to be used as button icon. Leave blank to use the default JClic icon. installer_button_description=Description installer_button_description_tooltip=Tooltip to be shown by the button installer_error_noTitle=Error: Missing project title installer_error_noBaseFolder=Error: Missing folder name installer_error_noFilesSelected=Error: No files selected installer_error_noButtonText=Error: Missing launch button text label installer_error_projectNotInFiles=Error: The project assigned to the launch button is not in the list of files to be copied applet_page_full=Full-page applet applet_page_mixed=Applet with specific dimensions edit_text_align_left=Align text left edit_text_align_center=Center text edit_text_align_right=Align text right edit_text_act_target_toggle=Create or remove target edit_text_act_insertCell=Insert a cell edit_text_act_content=Content edit_text_act_style=Style edit_cell_size=Cell size: edit_project_orphanActivities=The following activities never appear in any of the project's activity sequences, so they never will be displayed: edit_project_orphanMedia=The following media objects are not used directly in any activity: edit_project_orphanActivities_prompt=Do you want to add them at the end of the last activity sequence? edit_project_orphanMedia_prompt=Do you want to remove them? edit_project_orphanMedia_title=Removal of unused media objects edit_project_orphanActivities_title=Orphan activities edit_media_refreshAll=Update all media content edit_media_refreshAll_tooltip=Update all media objects reloading its files edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Updating media... edit_media_exportAll=Export all media edit_media_exportAll_tooltip=Save to files the content of all media elements edit_media_exportAll_keys=X* edit_shape_select=Select edit_shape_addPoint=Add point edit_shape_deletePoint=Delete edit_shape_drawRect=Draw rectangle edit_shape_drawEllipse=Draw ellipse edit_shape_drawPoly=Draw polygon edit_shape_toLine=Convert to line edit_shape_toBezier=Convert to B\u00E9zier curve edit_shape_toQuad=Convert to quadratic curve edit_shape_rLeft=Rotate left edit_shape_rRight=Rotate right edit_shape_expand=Expand edit_shape_contract=Contract edit_shape_zoomIn=Zoom in edit_shape_zoomOut=Zoom out edit_shape_aproxPoints=Join nearest points edit_shape_showPoints=Show points edit_shape_showPoints_tooltip=Show/Hide the points edit_shape_gridSize=Grid size: edit_shape_hideGrid=Show / Hide grid edit_shape_magnetRadius=Magnet radius: edit_shape_elements=Defined elements edit_shape_elemName=Name of the selected element edit_shape_magnetRadius_tooltip=Action radius of the magnet, when enabled edit_shape_gridSize_tooltip=Size of the grid edit_mc_activity=Activity: edit_mc_sequence=Sequence: edit_mc_url=URL: edit_mc_project=Project: edit_mc_activity_selection=Choose activity edit_mc_sequence_selection=Choose sequence edit_mc_err_nullContent=Insufficient data! edit_act_arrowColor=Arrow color: edit_act_arrowColor_tooltip=Color used by the editor to draw the arrows (not exactly, because an XOR bit mask is used) edit_act_editActivity=Edit... edit_act_editActivity_tooltip=Edit the selected activity action_saveFileAs_caption=Save as... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Save the current project with a different name edit_act_behavior_block=Behavior edit_act_behavior=Behavior edit_act_behavior_drag=Drag objects edit_act_behavior_drag_tooltip=Drag objects instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=Scramble action_importActivities_caption=Import activities... action_importActivities_keys=I* action_importActivities_tooltip=Import activities from another project import_warn_samefile=The selected file corresponds to the current project. Activities can be imported only between different projects. Please select another project file. import_selectActivities=Select one or more activities to import into the current project: import_importing=Importing... import_checkdep=Checking dependencies... import_impmedia=Importing media: import_impact=Importing activity: import_selectProject=Select the JClic project of which the activities will be imported edit_tagRep_tags=Tag marks edit_tagRep_tagStart=Start mark: edit_tagRep_tagStart_tooltip=Mark used at the beginning of tags edit_tagRep_tagEnd=End mark: edit_tagRep_tagEnd_tooltip=Mark used at the end of tags edit_tagRep_file=File edit_tagRep_fileName=File or URL: edit_tagRep_fileName_tooltip=Name or URL of the file containing the values that will replace tags edit_tagRep_charset=Charset: edit_tagRep_charset_tooltip=Character encoding used in the file edit_tagRep_browseFile=Browse... edit_tagRep_browseFile_tooltip=Browse the filesystem edit_tagRep_title=Tag replacing edit_text_act_clearStylesBtn=Clear text styles... edit_text_act_clearStylesPrompt=Warning: This action will clear the specific character attributes applied to the document, setting it back to its main style. This action cannot be undone. Do you want to do it? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages.properties0000644000175000017500000011542711377161311025330 0ustar #JClic Author messages edit_act_description_block=Description edit_act_name_tooltip=Name of the activity edit_act_name=Name: edit_act_description_tooltip=Description of the activity edit_act_reports_block=Reports edit_act_includeInReports=Include this activity in reports edit_act_includeInReports_tooltip=Include the results of this activity in users' reports edit_act_code=Code: edit_act_code_tooltip=Optional code used to group and search in the reports database. edit_act_reportActions=Report user actions edit_act_reportActions_tooltip=Register the details of all the actions performed by users edit_act_counters_block=Counters edit_act_timeCounter=Time counter edit_act_timeCounter_tooltip=Show/hide the time conter edit_act_actionsCounter=Tries counter edit_act_actionsCounter_tooltip=Show/hide the tries counter edit_act_scoreCounter=Score counter edit_act_scoreCounter_tooltip=Show/hide the score counter. edit_act_maxTime=Max time: edit_act_maxTime_tooltip=Maximum time to to solve the activity, in seconds, or 0 for unlimited time. edit_act_countdown=Countdown edit_act_countdown_tooltip=The counter starts at m\u00E1ximum value, decreasing to 0. edit_act_maxActions=Max tries: edit_act_maxActions_tooltip=Maximum number of tries allowed, or 0 for unlimited tries. edit_act_buttons_block=Buttons edit_act_helpBtn=Help edit_act_helpBtn_tooltip=Show/hide help button edit_act_helpBtn_solution=Show solution edit_act_helpBtn_msg=Show this message: edit_act_infoBtn=Information edit_act_infoBtn_tooltip=Show/Hide the button of information edit_act_infoBtn_url=Show this URL: edit_act_infoBtn_cmd=Execute this command: edit_act_infoBtn_url_tooltip=Web site address to show when click on the info button edit_act_infoBtn_cmd_tooltip=Command line to be executed on click to the info button. edit_act_mainWindow=Main window: edit_act_gameWindow=Game window: edit_act_margin=Margin: edit_act_margin_tooltip=Horizontal and vertical spacing between visual objects. edit_act_bgColor=Background color: edit_act_bgColor_tooltip=Change the background color. edit_gradient_startColor=Start color: edit_gradient_endColor=End color: edit_gradient_startColor_tooltip=Selection of the start color edit_gradient_endColor_tooltip=Selection of the end color edit_gradient_cycles=Cycles: edit_gradient_cycles_tooltip=Number of repetitions of the gradient over the paint surface edit_gradient_orientation=Orientation: edit_gradient_orientation_tooltip=Gradient's orientation, measured in degrees over the horizontal edit_act_gradient=Gradient: edit_act_gradient_tooltip=Use gradient of colours edit_color_opacity=Opacity edit_color_opacity_tooltip=Set the color's alpha channel (opacity) value. edit_gradient_title=Gradient edit_gradient_default=Use default values (null gradient) edit_act_image=Image: edit_act_descriptionTab=Description edit_act_descriptionTab_tooltip=Name and description edit_act_tiledBgImg=Tiled edit_act_tiledBgImg_tooltip=Paint all the surface with the image, repeating it along the X and Y axis as needed. edit_act_preview=Preview: edit_act_border=Border edit_act_border_tooltip=Draw a line border arround the window edit_act_transparent=Transparent edit_act_transparent_tooltip=Window has transparent background edit_act_width=Width: edit_act_height=Height: edit_act_width_tooltip=Width of the object, measured in pixels edit_act_height_tooltip=Height of the object, measured in pixels edit_act_centered=Centered edit_act_centered_tooltip=The object will be centered over the main window edit_act_x=X: edit_act_x_tooltip=Absolute horizontal location edit_act_y=Y: edit_act_y_tooltip=Absolute vertical location edit_act_ui_block=User interface edit_act_image_tooltip=Select an image edit_act_text=Text: edit_act_text_tooltip=Text to be shown inside this object edit_font_face=Typeface: edit_font_size=Size: edit_font_bold=Bold edit_font_italic=Italic edit_font_underline=Underline edit_font_style=Style: edit_cell_title=Cell contents edit_act_messages=Messages edit_act_msg_initial=Initial message: edit_act_msg_final=Final message: edit_act_msg_prev=Previous message: edit_act_msg_error=Error message: edit_act_msg_initial_tooltip=Message to be shown when the activity starts edit_act_msg_final_tooltip=Message to be shown when the activity is finished edit_act_msg_error_tooltip=Message to be shown when the activity ends with errors edit_act_msg_prev_tooltip=Message to be shown prior to the start of the activity (only in certain types of activities) edit_align=Align: edit_act_textColor=Text color: edit_act_textColor_tooltip=Color used to draw text edit_act_shadowColor=Shadow color: edit_act_shadowColor_tooltip=Color used for drawing the text's shadow, when appliable edit_act_shadow=Shadow edit_act_shadow_tooltip=Draw text with shadow edit_act_borderColor=Border color: edit_act_borderColor_tooltip=Color used to draw the cell's border edit_act_inactiveColor=Inactive state color: edit_act_inactiveColor_tooltip=Color used when the cell is disabled edit_act_altColor=Alternative color: edit_act_altColor_tooltip=Color used to draw the alternative content in solved cells. edit_cell_marked=Marked edit_cell_disabled=Disabled edit_cell_alt=Alternative edit_cell_textMargin=Internal margin: edit_cell_textMargin_tooltip=Amount of space between cell's border and text. edit_cell_borderWidth=Border width: edit_cell_borderWidth_tooltip=Width of the stroke used to draw the standard border edit_cell_markerWidth=Marker width: edit_cell_markerWidth_tooltip=Width of the stroke used to draw the border when the cell is marked or selected edit_cell_alt_tooltip=Preview in "alternative" state edit_cell_disabled_tooltip=Preview in "disabled" state edit_cell_marked_tooltip=Preview in "marked" state edit_act_testAction=Preview activity edit_act_testAction_tooltip=Preview and test the activity edit_act_panels_description=Description edit_act_panels_description_tooltip=Title and description of the activity edit_act_panels_options=Options edit_act_panels_options_tooltip=Options of the activity edit_act_panels_frame=Window edit_act_panels_frame_tooltip=Aspect, size and position of the activity window edit_act_panels_messages=Messages edit_act_panels_messages_tooltip=Content of the activity messages edit_act_panels_panel=Panel edit_act_panels_panel_tooltip=Contents of the panel edit_style_title=Style edit_style_tooltip=Set the cells color, font and size edit_act_style=Style: edit_act_overlap=Avoid text overlap image edit_act_overlap_tooltip=Try to avoid text overlapping over image edit_media_exists_1=The file edit_media_exists_2=already exists in the media library! edit_act_shaper=Shaper: edit_act_shaper_err=Shaper error: edit_act_num_cols=Columns: edit_act_num_rows=Rows: edit_act_toothHeightFactor=Tooth height: edit_act_toothWidthFactor=Tooth width: edit_act_toothRandom=Random distribution edit_act_shaper_properties=Shaper properties edit_act_panels_text=Text edit_act_panels_text_tooltip=Text of the activity action_saveFile_caption=Save... action_saveFile_keys=SS action_saveFile_tooltip=Save the current project action_docTree_caption=Document tree... action_docTree_keys=T* action_docTree_tooltip=Show the project's document as a tree edit_docTree_title=Document tree edit_media_referencedBy=Referenced by: msg_prompt_loadReferences=Warning:

This project connects with other projects.
Do you want to explore the links and to load all the related files?

(It's advisable to answer YES when importing Clic 3.0 activities) edit_mc_type=Type: edit_mc_type_unknown=Unknown edit_mc_type_sound=Play sound edit_mc_type_video=Play video edit_mc_type_midi=Play MIDI edit_mc_type_cdaudio=Play CD audio edit_mc_type_record=Record sound edit_mc_type_play_recorded=Play recorded sound edit_mc_type_run_activity=Go to activity edit_mc_type_run_sequence=Go to sequence edit_mc_type_run_external=Run program edit_mc_type_url=Show URL edit_mc_type_exit=End edit_mc_type_return=Return edit_mc_level=Priority level: edit_mc_file=File: edit_mc_externalParam=Parameters: edit_mc_from=From: edit_mc_to=To: edit_mc_length=Max. length: edit_mc_recBuffer=Record tape: edit_mc_stretch=Stretch size edit_mc_location=Location: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=From: edit_mc_location_from_box=Cell edit_mc_location_from_window=Window edit_mc_location_from_frame=Frame edit_mc_loop=Loop playback edit_mc_autostart=Auto start edit_mc_catchmouse=Catch mouse edit_mc_title=Multimedia and active content edit_mc_label=Active content: edit_media_dlg_title=Multimedia object selection edit_media_title=Media library edit_mc_pos_cell=Centered over cell edit_mc_pos_window=Centered over window edit_mc_pos_absolute=Specify position: edit_tree_badFormat=Incorrect tree structure or data! edit_act_panels_controls=Controls edit_act_panels_controls_tooltip=Options for buttons and counters edit_act_class=Type: edit_act_gridLayout=Grid layout: edit_act_gridLayout_tooltip=Relative postion of the panels A and B. edit_act_inverseResolution=Inverse resolution edit_act_inverseResolution_tooltip=The activity is solved when all assigned elements of "B" are matched. edit_act_showAllArrows=Show all arrows edit_act_alt=Alternative content: edit_act_alt_tooltip=Content shown in solved cells and non-assigned cells. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Edit the alternative content edit_act_grid=Grid edit_act_grid_A=Grid A edit_act_grid_B=Grid B edit_act_grid_layout=Layout edit_act_grid_relationship=Relationship edit_seq_activity_header=activity edit_seq_tag_header=tag edit_seq_jump_header=jump to edit_seq_activity=Activity: edit_seq_tag=Label: edit_seq_description=Description: edit_seq_auto=Move on automatically edit_seq_delay=Delay: edit_seq_action_fwd=Go forward edit_seq_action_back=Go bak edit_seq_action_jump=Jump to... edit_seq_action_stop=Stop edit_seq_action_return=Return edit_seq_action_exit=Exit JClic edit_seq_arrow_fwd=Forward arrow: edit_seq_arrow_back=Back arrow: edit_seq_action=Action: edit_seq_button_enabled=Show button edit_seq_project=JClic Project: edit_act_absolute=Absolute position edit_act_absolute_tooltip=The object will be placed at the specified X and Y co-ordinates edit_act_location=Location: edit_seq_newElement=New sequence element... edit_seq_newElement_tooltip=Insert a new element into the activity sequence edit_seq_newElement_msg=Please select an activity for the new sequence element. edit_seq_newElement_error_noAct=Cannot create a new sequence element without activity! edit_seq_newElement_error_emptyList=This project has no activities! Unable to create sequence elements in an empty project. edit_seq_jump_msg=Jump target: edit_seq_jump_title=Jump target edit_act_newActivity_tooltip=Add a new activity to project edit_act_prompt_class=Type of activity: edit_act_prompt_name=Name: edit_act_newActivity_msg=Please select the type of activity to create and give it a name: edit_act_newActivity_error_noAct=You must select an activity type! edit_act_newActivity_error_noName=You must especify a name for the activity! edit_act_newActivity_error_creating=Unable to create activity! edit_act_newActivity_class=Java class name: edit_text_act_format=Format edit_text_act_answer=Answer edit_text_act_popup=Pop up edit_text_act_answer_label=Valid answers: edit_list_newElement_tooltip=Add a new list element edit_list_editElement_tooltip=Edit the selected list element edit_list_deleteElement_tooltip=Delete the selected list element edit_list_upBtn_tooltip=Move up edit_list_downBtn_tooltip=Move down edit_list_newValue=New text: edit_list_addElement=Add new list element edit_list_modifyValue=Modify selected text edit_text_act_target=Target edit_text_act_maxLen=Max. length: edit_text_act_maxLen_tooltip=Maximum amount of characters in the answer. edit_text_act_fillingChar=Filling character edit_text_act_fillingChar_tooltip=Character used to indicate the blank edit_text_act_iniLen=Initial length: edit_text_act_iniLen_tooltip=Number of filling chars that will be displayed at the beginning of the activity. edit_text_act_iniText=Initial text: edit_text_act_iniText_tooltip=Text displayed in the blank at the beggining of the activity. edit_text_act_list=Show a list of options: edit_text_act_list_tooltip=Display a list of options from which the user must select one. edit_text_act_check_title=Correction options edit_text_act_popup_no=No pop up edit_text_act_popup_always=Pop up automatically edit_text_act_popup_onError=Pop up in errors edit_text_act_popup_onDemand=Pop up with F1 edit_text_act_popup_type=Type: edit_text_act_popup_delay=Pop up delay: edit_text_act_popup_maxTime=Max. time: edit_text_act_popup_onlyPlay=Sound only edit_text_act_err_noSelection=You must select a fragment of text in order to create a new text target! edit_text_act_err_badCharInSelection=Target text cannot include paragraph returns nor tabs. edit_text_act_err_nestedTargets=Targets cannot nest! edit_text_act_err_cellInTarget=Targets cannot contain cells! edit_text_act_pageBgColor=Paper colour: edit_text_act_editStylesBtn=Edit document styles... edit_text_act_mainStyle=Main style: edit_text_act_tabSpc=Tab space: edit_text_act_tabSize=Spaces between tab marks: edit_text_act_colors=Colors: edit_text_act_targetStyle=Target colors: edit_text_act_errorStyle=Error colors: edit_text_act_preview=Preview: edit_text_act_styleSample_default_start=Standard text edit_text_act_styleSample_target=target edit_text_act_styleSample_error=error edit_text_act_styleSample_default_fill=standard text edit_text_act_styleSample_default_end=standard text. edit_text_act_warnDeleteTarget=Warning: This action will supress the currently selected target. Do you want to proceed? edit_text_act_prevScreen_title=Previous screen... edit_text_act_prevScreen_no=Don't display any text before starting the activity edit_text_act_prevScreen_original=Display the complete text of the exercise edit_text_act_prevScreen_special=Display this text: edit_text_act_prevScreen_time=Max. time: edit_text_act_edit_target=Target... edit_text_act_checkButton_show=Show correction button edit_text_act_checkButtonText=Button text: edit_text_act_checkCase=Match case edit_text_act_checkAccents=Consider accents and special characters edit_text_act_checkPunct=Consider punctuation marks edit_text_act_checkDoubleSpc=Allow repeated spaces edit_text_act_checkOptions=Criteria edit_text_act_checkAutoJump=Move on to next target when filled in edit_text_act_checkForceOk=Move only after correct guess edit_text_act_checkDetail=Indicate mistakes letter by letter edit_text_act_checkDetail_params=Analysis algorithm parameters: edit_text_act_checkDetail_steps=Steps: edit_text_act_checkDetail_field=Exploration field: edit_text_act_defaultCheckButtonText=Check edit_text_act_advancedCorrectionOptions=Answer analysis edit_text_act_check_bt=Correction... edit_text_act_checkButton=Correction button edit_text_act_checkProgress=Progress edit_text_act_typeBtn=Type... edit_text_act_orderParagraphs=Order paragraphs edit_text_act_orderWords=Order words edit_text_act_order_amongstPar=Shuffle words amongst paragraphs edit_text_act_type_title=Activity type edit_text_act_warnChangeType=This action will clear all the existing targets. Do you want to proceed? edit_text_act_identWords=Identify words edit_text_act_identChars=Identify characters edit_media_change_name=Change name... edit_media_change_file=Change file... edit_media_includeInZip=Save into ZIP file edit_media_type=Media type: edit_media_size=File size: edit_media_show_type=Files of type: edit_media_preview=Preview media edit_media_preview_tooltip=Preview media resource edit_media_rename=Change resource name edit_media_rename_title=Rename edit_media_rename_prompt=New name: edit_media_rename_invalid=Invalid resource name! edit_media_rename_exists=There is another resource with this name! Each resource must have a unique name. edit_media_chfile_invalid=Invalid file! err_media_chfile_different=File must be of same type edit_media_font_error=Unable to load font! edit_media_save_file=Save file (extract from ZIP) edit_media_refresh_file=Update media content from file edit_media_warn_zipFileNotExternal=This is not a "real" file, but a object located into a ZIP container. In order to use this feature, a file with the same name must be present in the folder where the ZIP file is located. edit_activities=Activities edit_sequences=Sequences edit_media=Media library edit_media_tooltip=Manage images and other media files used in the project edit_activities_tooltip=Create and edit project activities edit_sequences_tooltip=Edit and create sequences of activities edit_project_title=Title: edit_project_title_tooltip=Project's title edit_project=Project edit_project_tooltip=Edit project properties edit_project_description=Description: edit_project_description_tooltip=General description of the project edit_project_area=Areas: edit_project_area_tooltip=Curricular areas of the project edit_project_level=Levels: edit_project_level_tooltip=Educational levels of the project edit_project_descriptors=Descriptors: edit_project_descriptors_tooltip=Descriptors of the project (separed with comma) edit_project_languages=Languages: edit_project_languages_tooltip=Languages used in the project edit_project_languages_modify=Change the selected language edit_project_languages_add=Add language edit_project_languages_select=ISO-639 language codes: edit_project_authors=Authors: edit_project_authors_tooltip=People involved in the creation of the project edit_project_author_name=Name: edit_project_author_mail=e-mail: edit_project_author_rol=Rol: edit_project_author_organization=Organization: edit_project_author_comments=Comments: edit_project_author_url=URL: edit_project_author_name_tooltip=Author's name (required) edit_project_author_mail_tooltip=Author's e-mail (optional) edit_project_author_rol_tooltip=Person's rol in the project: author, collaborator, drawings, sounds... (optional) edit_project_author_organization_tooltip=School, university, association... (optional) edit_project_author_url_tooltip=Personal web page (optional) edit_project_author_comments_tooltip=Field for other information (optional) edit_project_author_info=Author info: edit_project_author_add=Add author to list edit_project_author_edit=Edit author info edit_project_org_name=Name: edit_project_org_name_tooltip=School name edit_project_org_mail=e-mail: edit_project_org_mail_tooltip=e-mail address of the school edit_project_org_url=URL: edit_project_org_url_tooltip=School website edit_project_org_address=Address: edit_project_org_address_tooltip=Snail-mail address edit_project_org_pc=PC: edit_project_org_pc_tooltip=Postal code edit_project_org_city=City: edit_project_org_city_tooltip=School city edit_project_org_country=Country: edit_project_org_state=State: edit_project_org_comments=Comments: edit_project_org=School/s: edit_project_org_tooltip=School or other institution involved in the project edit_project_org_info=Organization info: edit_project_org_add=Add organization edit_project_org_edit=Edit organization data edit_project_org_country_tooltip=Country, federation, union... edit_project_org_state_tooltip=Federal state, community, region... edit_project_org_comments_tooltip=Other info... edit_project_rev_date=Date: edit_project_rev_date_tooltip=Date of the revision edit_project_rev_authors=Authors: edit_project_rev_authors_tooltip=Authors of the revision edit_project_rev_description=Description: edit_project_rev_description_tooltip=Brief description of the changes made edit_project_rev_comments=Comments: edit_project_rev_comments_tooltip=Other relevant info edit_project_rev=Revisions: edit_project_rev_tooltip=History of main modifications made to the project edit_project_rev_add=Add revision record edit_project_rev_edit=Edit revision record edit_project_rev_info=Revision data edit_media_objects=objects edit_media_object=object edit_evsounds_start=Start of activity: edit_evsounds_click=Click on object: edit_evsounds_actionError=Erroneous action: edit_evsounds_actionOk=Correct action: edit_evsounds_finishedError=Activity finished with errors: edit_evsounds_finishedOk=Activity finished OK: edit_project_rev_err_nodesc=Error: The description field cannot be leaved blank! edit_evsounds_dlg_title=Edit event sounds edit_project_evsounds=Event sounds: edit_project_evsounds_tooltip=Set specific sounds for each JClic event edit_act_evsounds=Event sounds: edit_act_evsounds_tooltip=Set specific sounds for each JClic event edit_evsounds_default=default sound edit_evsounds_disabled=disabled edit_evsounds_chk_tooltip=Enable or disable the sound for this event edit_evsounds_select_tooltip=Click to select a sound for this event, or uncheck to use the default sound action_newProject_caption=New project... action_newProject_keys=NN action_newProject_tooltip=Create a new JClic project edit_arith_op_from=From: edit_arith_op_from_tooltip=Minimum value of the operator edit_arith_op_to=To: edit_arith_op_to_tooltip=Maximum value of the operator edit_arith_op_with=With: edit_arith_op_with_tooltip=If checked, the operator can also have this value edit_arith_op_fromList=One from the list: edit_arith_op_fromList_tooltip=List of possible values for the operator edit_arith_op_decimals=Decimals: edit_arith_op_decimals_tooltip=Number of decimals of the operand edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=First operand edit_arith_secondOp=Second operand edit_arith_title=Arith2 for JClic edit_arith_operations=Operations: edit_arith_operations_tooltip=Select the kind of operations to be performed edit_arith_operations_plus=Plus edit_arith_operations_minus=Minus edit_arith_operations_multiply=Multiply edit_arith_operations_divide=Divide edit_arith_unknown=Unknown: edit_arith_unknown_tooltip=Select the item that will act as a unknown edit_arith_unknown_aobx=The result is the unknown edit_arith_unknown_aoxr=The second operator is the unknown edit_arith_unknown_xobr=The first operator is the unknown edit_arith_unknown_axbr=The operation is the unknown edit_arith_unknown_invert=Write the result at the beggining of the expression edit_arith_result=Result: edit_arith_result_notCarry=Do not carry edit_arith_result_random=Random edit_arith_result_asc=Ascending edit_arith_result_order=Order by result: edit_arith_result_desc=Descending edit_arith_result_avoidDup=Avoid duplicates edit_arith_cond=Conditions: edit_arith_cond_ind=Indifferent edit_arith_cond_agb=The first operator must be greather than the second one edit_arith_cond_alb=The first operator must be lesser than the second one edit_arith_cond_tooltip=Other conditions edit_autocp=Automatic content generator: edit_autocp_tooltip=Select the type of automatic content generator for this activity. edit_autocp_block=Content generator edit_autocp_btn=Settings... edit_autocp_btn_tooltip=Configure the content provider settings edit_data=Edit data edit_act=Activity edit edit_acp=Content provider edit edit_acp_err_creating=Error creating the content provider! edit_project_author_group=Creation edit_project_description_block=Description edit_project_ui_block=User interface edit_act_description=Description: m_Edit=Edit m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=New activity... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Insert m_Insert_Mnemonic=I m_View=View m_View_Mnemonic=V action_editProject_caption=Project action_editProject_keys=PP action_editProject_tooltip=Edit project settings action_editMedia_caption=Media action_editMedia_keys=MM action_editMedia_tooltip=Edit the project's multimedia library action_editActivities_caption=Activities action_editActivities_keys=AA action_editActivities_tooltip=Edit the activities action_editSeq_caption=Sequences action_editSeq_keys=SS action_editSeq_tooltip=Edit the sequences of activities warn_project_modified=Current project has been modified. Do you want to save the changes? edit_project_descriptors_block=Descriptors edit_media_new=New media object... edit_media_new_tooltip=Add a new image or multimedia object to the library edit_media_new_keys=M* edit_seq_threshold=Score threshold: edit_seq_threshold_tooltip_up=Take this way when the global score is equal to or higher than... edit_seq_time=Time threshold: edit_seq_time_tooltip_up=In order to take this way, the time spent on the activities must be less than... edit_seq_threshold_tooltip_down=Take this way when the global score is lower than... edit_seq_time_tooltip_down=Take this way when the time spent on the activities is more than... edit_seq_condJump=Conditional jumps edit_seq_condJump_tooltip=Set special jumps to be executed only under specific condicions edit_seq_condJump_upper_tooltip=Set conditions to jump to an upper level edit_seq_condJump_lower=Lower jump: edit_seq_condJump_upper=Upper jump: edit_seq_condJump_lower_tooltip=Set conditions to jump to an lower level edit_seq_action_tooltip_fw=Action assigned to the "next" button edit_seq_action_tooltip_bk=Action assigned to the "previous" button edit_seq_jump_tooltip=Set the jump target edit_seq_action_tooltip=Action to be done edit_seq_activity_tooltip=Activity assigned to this sequence element edit_seq_tag_tooltip=Tag used to reference this sequence element (optional field) edit_seq_description_tooltip=Description of the sequence element (optional field) edit_seq_button_enabled_tooltip=Enable or disable the arrow button edit_seq_auto_tooltip=Move on automatically when the activity finishes edit_seq_delay_tooltip=Seconds to wait before to do the automatic move edit_color_dlgTitle=Select color edit_media_renaming=Please wait while the resource is being renamed... edit_act_cell_width=Width: edit_act_cell_width_tooltip=Cell width (in pixels) edit_act_cell_height=Height: edit_act_cell_height_tooltip=Cell height (in pixels) edit_act_hiddenWords=Hidden words: edit_act_hiddenWords_tooltip=List of the hidden words placed in the panel edit_act_wordSearch_panelB=Use panel B edit_act_wordSearch_panelB_tooltip=The contents of a second panel will be displayed as words are found edit_act_shaper_tooltip=Select the shaper type to be used in the panel edit_act_num_cols_tooltip=Number of columns of the panel edit_act_num_rows_tooltip=Number of rows of the panel edit_act_wildTransparent=Transparent delimiters edit_act_wildTransparent_tooltip=Treat the delimiters (black boxes) as transparent holes edit_act_behavior_scramble_times=Mixes\: edit_act_behavior_scramble_times_tooltip=Number of times to shuffle edit_act_copy_title=Copy attributtes to... edit_act_copy_attributes=Attributes edit_act_copy_dest=Apply to: edit_act_copy_style_main=Main window edit_act_copy_style_play=Play window edit_act_copy_activities=Activities to be modified: edit_act_copyAttributes=Copy attributes edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copy current activity attributes to other activities edit_new_project_name=Project name: edit_new_project_name_tooltip=Short, descriptive name of the project edit_new_project_filename=File name: edit_new_project_filename_tooltip=Name of the project file, without extension edit_new_project_folder=Folder: edit_new_project_folder_tooltip=Name of the folder where the project will be stored edit_new_project_folder_browse=Browse... edit_new_project_title=Create new JClic project edit_new_project_err_empty=Error: Project, file and folder must have valid, non-empty names. edit_new_project_warning_noEmptyFolder=This folder already contains another Clic 3.0 or JClic project. In order to avoid confusions, is preferable to maintain each project in a separate folder, but that isn't a strict rule. Do you really want to create the new project in this folder? edit_new_project_err_folderCreation=Error: Unable to create the specified folder! edit_act_copy_err_noSelection=Error: No activity selected! In order to use this function you must select in the list the activity or activities to wich the indicated attributes will be applied. edit_act_copy_action_prefix=Copying attributes to: edit_act_copy_margin=Margin edit_act_copy_bgColor=Background color edit_act_copy_gradient=Gradient edit_act_copy_bgImage=Background image edit_act_copy_border=Border edit_act_copy_transparentBg=Transparent background edit_act_copy_position=Position edit_act_copy_messages=Messages edit_act_copy_messages_ini=Style of initial message edit_act_copy_messages_end=Style of end message edit_act_copy_messages_err=Style of error message edit_act_copy_reports=Reports edit_act_copy_rep_include=Include activity in reports edit_act_copy_rep_actions=Record actions edit_act_copy_interface=User interface edit_act_copy_skin=Skin edit_act_copy_evSounds=Event sounds edit_act_copy_counters=Counters edit_act_copy_cTime=Time counter edit_act_copy_maxTime=Max. time edit_act_copy_cTries=Tries counter edit_act_copy_maxTries=Max. tries edit_act_copy_cScore=Score counter edit_act_copy_scramble=Times to scramble edit_act_copy_buttons=Buttons edit_act_copy_btnHelp=Help button edit_act_copy_btnInfo=Information button edit_act_copy_grids=Grids edit_act_copy_gridA=Style of grid A edit_act_copy_gridB=Style of grid B edit_act_copy_textGrid=Style of text grids edit_act_copy_text=Text activities edit_act_copy_fontFace=Font face edit_act_copy_fontSize=Font size edit_act_copy_fontStyle=Font style edit_act_copy_textColour=Main text colour edit_act_copy_textTargetColour=Select the JClic project of which the activities will be imported edit_act_copy_textErrorColour=Errors colour edit_act_copy_tabSpace=Tab space edit_act_copy_messages_prev=Style of previous message edit_act_changeType=Change activity type edit_act_newActivity_class_tooltip=Full name of the class to be used to build the activity (advanced users only!) edit_act_newActivity_other=Other... edit_act_newActivity_info=Advanced users can also create unregistered types of JClic activities. Just write below the full class name, prefixed by the package (like "com.acme.activities.FooActivity"). Activity classes must extend edu.xtec.jclic.Activity, and must be accessibles to the JVM classloader. edit_act_newActivity_name=Name of the activity: edit_act_newActivity_name_tooltip=Each activity must have a name unique in the project edit_act_changeType_warning=

Warning: Changing the type of activity can cause lost of some of the current activity attributes and objects. Use it with care!

 

applet_codebase=Location of JClic code: applet_codebase_tooltip=URL pointing to a folder with the JClic program files and scripts applet_prev_text=HTML code before: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Text or HTML code to be placed before the applet applet_post_text=HTML code after: applet_post_text_tooltip=Text or HTML code to be placed after the applet applet_size=Applet size: applet_size_tooltip=Width and height of the applet, in absolute or percentage values. applet_page_title=Page title: applet_page_title_tooltip=Text to be shown at the top of the browser window applet_created_info=The web page "%s" has been created successfully. applet_created_prompt=Do you want to open it now with the browser? action_createHTML_caption=Create web page... applet_create_title=Creation of an HTML page with a JClic applet action_createHTML_tooltip=Create a HTML page with an applet containing the current project applet_filename=File name: applet_filename_tooltip=Name of the HTML file to be created action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Default values used in web page creation applet_bgcolor=Background color: applet_bgcolor_tooltip=HTML page background color applet_centered=Centered applet_centered_tooltip=Place the applet horizontally centered applet_width_tooltip=Applet width (absolute or percentage) applet_height_tooltip=Applet height (absolute or percentage) applet_exitUrl=On exit, go to: applet_exitUrl_tooltip=URL where to redirect the navigation on JClic exit applet_infoFrame=Info frame name: applet_infoFrame_tooltip=Name of the frame used to show the content related to the "info" button action_createInstaller_caption=Create project installer... action_createInstaller_keys=I* action_createInstaller_tooltip=Create a project installer script for JClic player installer_caption=Edit project installer script installer_title=Title: installer_title_tooltip=Project title, to be shown on the installer wizard installer_authors=Autors: installer_authors_tooltip=Author/s of the project (short text) installer_folder=Folder: installer_folder_tooltip=Folder name to be suggested by the installer wizard installer_files=Files to be copied: installer_files_tooltip=Files to be copied by the installer installer_files_available=Available files installer_files_selected=Selected files installer_files_add=>> add >> installer_files_add_tooltip=Add selected file to the list installer_files_remove=<< remove << installer_files_remove_tooltip=Remove selected file from the list installer_button=Launch button installer_button_tooltip=Properties of the button to be shown in the project library installer_button_project=Main project: installer_button_project_tooltip=JClic project to be launched by the button installer_button_text=Label: installer_button_text_tooltip=Short text label, to be shown inside the button installer_button_icon=Icon: installer_button_icon_tooltip=Picture to be used as button icon. Leave blank to use the default JClic icon. installer_button_description=Description installer_button_description_tooltip=Tooltip to be shown by the button installer_error_noTitle=Error: Missing project title installer_error_noBaseFolder=Error: Missing folder name installer_error_noFilesSelected=Error: No files selected installer_error_noButtonText=Error: Missing launch button text label installer_error_projectNotInFiles=Error: The project assigned to the launch button is not in the list of files to be copied applet_page_full=Full-page applet applet_page_mixed=Applet with specific dimensions edit_text_align_left=Align text left edit_text_align_center=Center text edit_text_align_right=Align text right edit_text_act_target_toggle=Create or remove target edit_text_act_insertCell=Insert a cell edit_text_act_content=Content edit_text_act_style=Style edit_cell_size=Cell size: edit_project_orphanActivities=The following activities never appear in any of the project's activity sequences, so they never will be displayed: edit_project_orphanMedia=The following media objects are not used directly in any activity: edit_project_orphanActivities_prompt=Do you want to add them at the end of the last activity sequence? edit_project_orphanMedia_prompt=Do you want to remove them? edit_project_orphanMedia_title=Removal of unused media objects edit_project_orphanActivities_title=Orphan activities edit_media_refreshAll=Update all media content edit_media_refreshAll_tooltip=Update all media objects reloading its files edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Updating media... edit_media_exportAll=Export all media edit_media_exportAll_tooltip=Save to files the content of all media elements edit_media_exportAll_keys=X* edit_shape_select=Select edit_shape_addPoint=Add point edit_shape_deletePoint=Delete edit_shape_drawRect=Draw rectangle edit_shape_drawEllipse=Draw ellipse edit_shape_drawPoly=Draw polygon edit_shape_toLine=Convert to line edit_shape_toBezier=Convert to B\u00E9zier curve edit_shape_toQuad=Convert to quadratic curve edit_shape_rLeft=Rotate left edit_shape_rRight=Rotate right edit_shape_expand=Expand edit_shape_contract=Contract edit_shape_zoomIn=Zoom in edit_shape_zoomOut=Zoom out edit_shape_aproxPoints=Join nearest points edit_shape_showPoints=Show points edit_shape_showPoints_tooltip=Show/Hide the points edit_shape_gridSize=Grid size: edit_shape_hideGrid=Show / Hide grid edit_shape_magnetRadius=Magnet radius: edit_shape_elements=Defined elements edit_shape_elemName=Name of the selected element edit_shape_magnetRadius_tooltip=Action radius of the magnet, when enabled edit_shape_gridSize_tooltip=Size of the grid edit_mc_activity=Activity: edit_mc_sequence=Sequence: edit_mc_url=URL: edit_mc_project=Project: edit_mc_activity_selection=Choose activity edit_mc_sequence_selection=Choose sequence edit_mc_err_nullContent=Insufficient data! edit_act_arrowColor=Arrow color: edit_act_arrowColor_tooltip=Color used by the editor to draw the arrows (not exactly, because an XOR bit mask is used) edit_act_editActivity=Edit... edit_act_editActivity_tooltip=Edit the selected activity action_saveFileAs_caption=Save as... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Save the current project with a different name edit_act_behavior_block=Behavior edit_act_behavior=Behavior edit_act_behavior_drag=Drag objects edit_act_behavior_drag_tooltip=Drag objects instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=Scramble action_importActivities_caption=Import activities... action_importActivities_keys=I* action_importActivities_tooltip=Import activities from another project import_warn_samefile=The selected file corresponds to the current project. Activities can be imported only between different projects. Please select another project file. import_selectActivities=Select one or more activities to import into the current project\: import_importing=Importing... import_checkdep=Checking dependencies... import_impmedia=Importing media\: import_impact=Importing activity\: import_selectProject=Select the JClic project of which the activities will be imported edit_tagRep_tags=Tag marks edit_tagRep_tagStart=Start mark\: edit_tagRep_tagStart_tooltip=Mark used at the beginning of tags edit_tagRep_tagEnd=End mark\: edit_tagRep_tagEnd_tooltip=Mark used at the end of tags edit_tagRep_file=File edit_tagRep_fileName=File or URL\: edit_tagRep_fileName_tooltip=Name or URL of the file containing the values that will replace tags edit_tagRep_charset=Charset\: edit_tagRep_charset_tooltip=Character encoding used in the file edit_tagRep_browseFile=Browse... edit_tagRep_browseFile_tooltip=Browse the filesystem edit_tagRep_title=Tag replacing edit_text_act_clearStylesBtn=Clear text styles... edit_text_act_clearStylesPrompt=Warning\: This action will clear the specific character attributes applied to the document, setting it back to its main style. This action cannot be undone. Do you want to do it? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_gl.properties0000644000175000017500000012731411377161311026010 0ustar #JClic Author messages edit_act_description_block=Descrici\u00F3n edit_act_name_tooltip=Nome da actividade edit_act_name=Nome: edit_act_description_tooltip=Descrici\u00F3n da actividade edit_act_reports_block=Informes edit_act_includeInReports=Engadir esta actividade nos informes edit_act_includeInReports_tooltip=Engadir os resultados desta actividade nos informes de usuario edit_act_code=C\u00F3digo: edit_act_code_tooltip=C\u00F3digo opcional empregado para agrupar e filtrar na base de datos de informes. edit_act_reportActions=Rexistrar tam\u00E9n as acci\u00F3ns edit_act_reportActions_tooltip=Rexistrar os detalles de todas as acci\u00F3ns feitas polos usuarios edit_act_counters_block=Contadores edit_act_timeCounter=Contador de tempo edit_act_timeCounter_tooltip=Mostrar ou ocultar o contador de tempo edit_act_actionsCounter=Contador de intentos edit_act_actionsCounter_tooltip=Mostra ou oculta o contador de intentos edit_act_scoreCounter=Contador de acertos edit_act_scoreCounter_tooltip=Mostrar ou ocultar o contador de acertos. edit_act_maxTime=Tempo m\u00E1ximo: edit_act_maxTime_tooltip=Tempo m\u00E1ximo para resolver a actividade, en segundos, ou cero para ilimitado. edit_act_countdown=Conta atr\u00E1s edit_act_countdown_tooltip=O contador comeza no m\u00E1ximo valor, decrecendo ata cero. edit_act_maxActions=Intentos m\u00E1x: edit_act_maxActions_tooltip=N\u00FAmero m\u00E1ximo de intentos permitidos, ou cero para ilimitado. edit_act_buttons_block=Bot\u00F3ns edit_act_helpBtn=Axuda edit_act_helpBtn_tooltip=Mostra ou oculta o bot\u00F3n de axuda edit_act_helpBtn_solution=Mostra a soluci\u00F3n edit_act_helpBtn_msg=Mostra esta mensaxe: edit_act_infoBtn=Informaci\u00F3n edit_act_infoBtn_tooltip=Mostra ou oculta o bot\u00F3n de informaci\u00F3n edit_act_infoBtn_url=Mostra esta URL: edit_act_infoBtn_cmd=Executa o comando: edit_act_infoBtn_url_tooltip=Enderezo da p\u00E1xina web que se mostrar\u00E1 ao facer clic no bot\u00F3n de informaci\u00F3n edit_act_infoBtn_cmd_tooltip=Li\u00F1a de ordes que se executar\u00E1 ao facer clic no bot\u00F3n de informaci\u00F3n. edit_act_mainWindow=Xanela principal: edit_act_gameWindow=Xanela de xogo: edit_act_margin=Marxe: edit_act_margin_tooltip=Espacio horizontal e vertical entre obxectos visuais. edit_act_bgColor=Cor de fondo: edit_act_bgColor_tooltip=Cambia a cor de fondo. edit_gradient_startColor=Cor inicial: edit_gradient_endColor=Cor final: edit_gradient_startColor_tooltip=Selecci\u00F3n da cor inicial edit_gradient_endColor_tooltip=Selecci\u00F3n da cor final. edit_gradient_cycles=Ciclos: edit_gradient_cycles_tooltip=N\u00FAmero de repetici\u00F3ns do gradiente sobre a superficie a pintar. edit_gradient_orientation=Orientaci\u00F3n: edit_gradient_orientation_tooltip=Orientaci\u00F3n do gradiente, medida en graos sobre a horizontal. edit_act_gradient=Gradiente: edit_act_gradient_tooltip=Emprega un gradiente de cores edit_color_opacity=Opacidade edit_color_opacity_tooltip=Axusta o valor da canle alfa (opacidade) de cor. edit_gradient_title=Gradiente edit_gradient_default=Empregar os valores por defecto (gradiente nulo). edit_act_image=Imaxe: edit_act_descriptionTab=Descrici\u00F3ns edit_act_descriptionTab_tooltip=Nome e descrici\u00F3n edit_act_tiledBgImg=En mosaico edit_act_tiledBgImg_tooltip=Pinta toda a superficie coa imaxe, repet\u00EDndoa ao longo dos eixes X e Y tantas veces como for necesario. edit_act_preview=Vista previa: edit_act_border=Beira edit_act_border_tooltip=Debuxar unha li\u00F1a de beira arredor da xanela edit_act_transparent=Transparente edit_act_transparent_tooltip=A xanela ten o fondo transparente edit_act_width=Anchura: edit_act_height=Altura: edit_act_width_tooltip=Anchura do obxecto, indicada en p\u00EDxeles edit_act_height_tooltip=Altura do obxecto, en p\u00EDxeles edit_act_centered=Centrada edit_act_centered_tooltip=O obxecto sit\u00FAase centrado respecto \u00E1 xanela principal edit_act_x=X: edit_act_x_tooltip=Posici\u00F3n horizontal absoluta edit_act_y=Y: edit_act_y_tooltip=Posici\u00F3n vertical absoluta edit_act_ui_block=Interface de usuario edit_act_image_tooltip=Selecciona unha imaxe edit_act_text=Texto: edit_act_text_tooltip=Texto que se mostrar\u00E1 neste obxecto edit_font_face=Tipo: edit_font_size=Tama\u00F1o: edit_font_bold=Negra edit_font_italic=Cursiva edit_font_underline=Subli\u00F1ado edit_font_style=Estilo: edit_cell_title=Contido da cela edit_act_messages=Mensaxes edit_act_msg_initial=Mensaxe inicial: edit_act_msg_final=Mensaxe final: edit_act_msg_prev=Mensaxe previa: edit_act_msg_error=Mensaxe de erro: edit_act_msg_initial_tooltip=Mensaxe que se mostra cando comezar a actividade edit_act_msg_final_tooltip=Mensaxe que se mostra cando rematar a actividade edit_act_msg_error_tooltip=Mensaxe que se mostra cando rematar a actividade con erros edit_act_msg_prev_tooltip=Mensaxe que se mostra antes de comezar a actividade (s\u00F3 en certos tipos de actividades) edit_align=Orientaci\u00F3n: edit_act_textColor=Cor do texto: edit_act_textColor_tooltip=Cor empregada para debuxar o texto edit_act_shadowColor=Cor da sombra: edit_act_shadowColor_tooltip=Cor empregada na sombra do texto, se existe edit_act_shadow=Sombra edit_act_shadow_tooltip=Debuxar o texto con sombra edit_act_borderColor=Cor do beira: edit_act_borderColor_tooltip=Cor empregada para debuxar a beira da cela edit_act_inactiveColor=Cor de estado inactiva: edit_act_inactiveColor_tooltip=Cor empregada cando a cela est\u00E1 desactivada edit_act_altColor=Cor alternativa: edit_act_altColor_tooltip=Cor coa que se mostra o contido alternativo das celas unha vez solucionadas edit_cell_marked=Marcada edit_cell_disabled=Desactivada edit_cell_alt=Alternativa edit_cell_textMargin=Marxe interna: edit_cell_textMargin_tooltip=Espacio entre as beiras da cela e o texto edit_cell_borderWidth=Groso da beira: edit_cell_borderWidth_tooltip=Groso do trazo empregado para debuxar a beira edit_cell_markerWidth=Groso do marcador: edit_cell_markerWidth_tooltip=Groso do trazo empregado para debuxar a beira cando a cela se acha marcada ou seleccionada edit_cell_alt_tooltip=Vista previa da cela en estado "alternativo" edit_cell_disabled_tooltip=Vista previa en estado "desactivado" edit_cell_marked_tooltip=Vista previa en estado "marcado" edit_act_testAction=Mostrar a actividade: edit_act_testAction_tooltip=Probar o funcionamento da actividade edit_act_panels_description=Descrici\u00F3n edit_act_panels_description_tooltip=T\u00EDtulo e descrici\u00F3n da actividade edit_act_panels_options=Opci\u00F3ns edit_act_panels_options_tooltip=Opci\u00F3ns da actividade edit_act_panels_frame=Xanela edit_act_panels_frame_tooltip=Aspecto, tama\u00F1o e posici\u00F3n da xanela na que corre a actividade edit_act_panels_messages=Mensaxes edit_act_panels_messages_tooltip=Contido das mensaxes da actividade edit_act_panels_panel=Panel edit_act_panels_panel_tooltip=Contidos do panel edit_style_title=Estilo edit_style_tooltip=Axustar a cor, tipo e tama\u00F1o de letra das celas edit_act_style=Estilo: edit_act_overlap=Evitar superposici\u00F3n imaxe/texto edit_act_overlap_tooltip=Intentar evitar que texto e imaxe se superpo\u00F1an edit_media_exists_1=O arquivo edit_media_exists_2=xa existe na mediateca! edit_act_shaper=Recortador: edit_act_shaper_err=Erro no xerador de formas: edit_act_num_cols=Columnas: edit_act_num_rows=Filas: edit_act_toothHeightFactor=Altura dos dentes: edit_act_toothWidthFactor=Anchura dos dentes: edit_act_toothRandom=Distribuci\u00F3n aleatoria edit_act_shaper_properties=Propiedades do xerador de formas edit_act_panels_text=Texto edit_act_panels_text_tooltip=Texto da actividade action_saveFile_caption=Gardar... action_saveFile_keys=SS action_saveFile_tooltip=Gardar o proxecto action_docTree_caption=\u00C1rbore do documento... action_docTree_keys=T* action_docTree_tooltip=Mostra o documento do proxecto en forma de \u00E1rbore edit_docTree_title=\u00C1rbore do documento edit_media_referencedBy=Referenciado por: msg_prompt_loadReferences=Atenci\u00F3n:

Este proxecto enlaza con outros proxectos.
\u00BFDesexa explorar as ligaz\u00F3ns e cargar todos os arquivos relacionados?

(Recom\u00E9ndase responder SI cando se est\u00E1 importando un paquete de actividades Clic 3.0) edit_mc_type=Tipo: edit_mc_type_unknown=Desco\u00F1ecido edit_mc_type_sound=Reproducir son edit_mc_type_video=Reproducir v\u00EDdeo edit_mc_type_midi=Reproducir MIDI edit_mc_type_cdaudio=Reproducir CD de audio edit_mc_type_record=Gravar son edit_mc_type_play_recorded=Interpretar son gravado edit_mc_type_run_activity=Ir \u00E1 actividade edit_mc_type_run_sequence=Ir \u00E1 secuencia edit_mc_type_run_external=Executar un programa edit_mc_type_url=Mostrar URL edit_mc_type_exit=Fin edit_mc_type_return=Volver edit_mc_level=Nivel de prioridade: edit_mc_file=Arquivo: edit_mc_externalParam=Par\u00E1metros edit_mc_from=Desde: edit_mc_to=Ata: edit_mc_length=Lonxitude m\u00E1x.: edit_mc_recBuffer=Cinta de gravaci\u00F3n: edit_mc_stretch=Comprimir se non collese edit_mc_location=Posici\u00F3n: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=Desde: edit_mc_location_from_box=Cela edit_mc_location_from_window=Xanela edit_mc_location_from_frame=Marco edit_mc_loop=Repetir indefinidamente edit_mc_autostart=Comezo autom\u00E1tico edit_mc_catchmouse=Capturar o rato edit_mc_title=Contido activo e multimedia edit_mc_label=Contido activo: edit_media_dlg_title=Selecci\u00F3n do obxecto multimedia edit_media_title=Mediateca edit_mc_pos_cell=Centrado na cela edit_mc_pos_window=Centrado na xanela edit_mc_pos_absolute=Especificar posici\u00F3n: edit_tree_badFormat=A estrutura ou os datos da \u00E1rbore son incorrectos! edit_act_panels_controls=Controis edit_act_panels_controls_tooltip=Opci\u00F3ns de bot\u00F3ns e contadores edit_act_class=Tipo: edit_act_gridLayout=Distribuci\u00F3n dos paneis: edit_act_gridLayout_tooltip=Posici\u00F3n relativa dos paneis A e B. edit_act_inverseResolution=Resoluci\u00F3n inversa edit_act_inverseResolution_tooltip=A actividade considerarase resolta cando todos os elementos de "B" estexan emparellados. edit_act_showAllArrows=Mostrar todas as frechas edit_act_alt=Contido alternativo: edit_act_alt_tooltip=Contido que se mostra nas celas xa resoltas ou non asignadas. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=Editar o contido alternativo edit_act_grid=Panel edit_act_grid_A=Panel A edit_act_grid_B=Panel B edit_act_grid_layout=Distribuci\u00F3n edit_act_grid_relationship=Relaci\u00F3ns edit_seq_activity_header=actividade edit_seq_tag_header=etiqueta edit_seq_jump_header=saltar a edit_seq_activity=Actividade: edit_seq_tag=Etiqueta: edit_seq_description=Descrici\u00F3n: edit_seq_auto=Avance autom\u00E1tico edit_seq_delay=Retardo: edit_seq_action_fwd=Avanzar edit_seq_action_back=Retroceder edit_seq_action_jump=Saltar a... edit_seq_action_stop=Parar edit_seq_action_return=Volver edit_seq_action_exit=Sa\u00EDr de JClic edit_seq_arrow_fwd=Frecha adiante edit_seq_arrow_back=Frecha atr\u00E1s edit_seq_action=Acci\u00F3n: edit_seq_button_enabled=Mostrar o bot\u00F3n edit_seq_project=Proxecto JClic: edit_act_absolute=Posici\u00F3n absoluta edit_act_absolute_tooltip=O obxecto situarase nas coordenadas X e Y especificadas edit_act_location=Posici\u00F3n: edit_seq_newElement=Novo elemento da secuencia... edit_seq_newElement_tooltip=Inserir un novo elemento na secuencia de actividades edit_seq_newElement_msg=Seleccione unha actividade para o novo elemento de secuencia. edit_seq_newElement_error_noAct=Non se pode crear un novo elemento de secuencia sen indicar a actividade! edit_seq_newElement_error_emptyList=En este proxecto non hai ningunha actividade! Non se poden empregar elementos de secuencia nun proxecto valeiro. edit_seq_jump_msg=Destino do salto: edit_seq_jump_title=Destino do salto edit_act_newActivity_tooltip=Engadir unha nova actividade ao proxecto edit_act_prompt_class=Tipo de actividade: edit_act_prompt_name=Nome: edit_act_newActivity_msg=Seleccione o tipo de actividade que desexe crear e d\u00E9alle un nome: edit_act_newActivity_error_noAct=\u00A1Hai que seleccionar un tipo de actividade! edit_act_newActivity_error_noName=\u00A1Hai que indicar un nome para a actividade! edit_act_newActivity_error_creating=\u00A1Non se puido crear a actividade! edit_act_newActivity_class=Clase Java: edit_text_act_format=Formato edit_text_act_answer=Resposta edit_text_act_popup=Xanela emerxente edit_text_act_answer_label=Respostas v\u00E1lidas: edit_list_newElement_tooltip=Engadir un novo elemento \u00E1 lista edit_list_editElement_tooltip=Modificar o elemento seleccionado edit_list_deleteElement_tooltip=Eliminar da lista o elemento seleccionado edit_list_upBtn_tooltip=Arriba edit_list_downBtn_tooltip=Baixar edit_list_newValue=Novo texto: edit_list_addElement=Engadir un novo elemento de texto edit_list_modifyValue=Modificar o texto seleccionado edit_text_act_target=Inc\u00F3gnita edit_text_act_maxLen=Lonxitude m\u00E1x.: edit_text_act_maxLen_tooltip=N\u00FAmero m\u00E1ximo de caracteres permitidos na resposta. edit_text_act_fillingChar=Car\u00E1cter de recheo edit_text_act_fillingChar_tooltip=Car\u00E1cter empregado para indicar a inc\u00F3gnita edit_text_act_iniLen=Lonxitude inicial edit_text_act_iniLen_tooltip=N\u00FAmero de caracteres de recheo que se mostrar\u00E1n ao comezo da actividade. edit_text_act_iniText=Texto inicial: edit_text_act_iniText_tooltip=Texto que se mostrar\u00E1 na inc\u00F3gnita ao comezo da actividade. edit_text_act_list=Mostrar unha lista de opci\u00F3ns: edit_text_act_list_tooltip=O usuario deber\u00E1 elixir unha opci\u00F3n da lista. edit_text_act_check_title=Opci\u00F3ns de avaliaci\u00F3n edit_text_act_popup_no=Sen xanela emerxente edit_text_act_popup_always=Aparici\u00F3n autom\u00E1tica edit_text_act_popup_onError=Aparici\u00F3n en erros edit_text_act_popup_onDemand=Aparici\u00F3n con F1 edit_text_act_popup_type=Tipo: edit_text_act_popup_delay=Retardo de aparici\u00F3n: edit_text_act_popup_maxTime=Tempo m\u00E1x.: edit_text_act_popup_onlyPlay=Reproducir s\u00F3 son edit_text_act_err_noSelection=\u00C9 necesario seleccionar un fragmento de texto para crear unha nova inc\u00F3gnita! edit_text_act_err_badCharInSelection=O texto das inc\u00F3gnitas non pode inclu\u00EDr retornos de par\u00E1grafo nin tabuladores. edit_text_act_err_nestedTargets=As inc\u00F3gnitas non se poden solapar! edit_text_act_err_cellInTarget=As inc\u00F3gnitas non poden conter celas! edit_text_act_pageBgColor=Cor de papel: edit_text_act_editStylesBtn=Editar os estilos do documento... edit_text_act_mainStyle=Estilo principal: edit_text_act_tabSpc=Tab espacio: edit_text_act_tabSize=Espacios entre marcas de tabulador: edit_text_act_colors=Cores: edit_text_act_targetStyle=Cores das inc\u00F3gnitas: edit_text_act_errorStyle=Cores de erro: edit_text_act_preview=Vista preliminar: edit_text_act_styleSample_default_start=Texto normal edit_text_act_styleSample_target=inc\u00F3gnita edit_text_act_styleSample_error=erro edit_text_act_styleSample_default_fill=texto normal edit_text_act_styleSample_default_end=texto normal. edit_text_act_warnDeleteTarget=Atenci\u00F3n: Esta acci\u00F3n suprimir\u00E1 a inc\u00F3gnita actualmente seleccionada. Desexa facelo? edit_text_act_prevScreen_title=Xanela previa... edit_text_act_prevScreen_no=Non mostrar ning\u00FAn texto antes de comezar a actividade edit_text_act_prevScreen_original=Mostrar o texto completo do exercicio edit_text_act_prevScreen_special=Mostrar este texto: edit_text_act_prevScreen_time=Tempo m\u00E1x.: edit_text_act_edit_target=Inc\u00F3gnita... edit_text_act_checkButton_show=Mostrar o bot\u00F3n de avaliaci\u00F3n edit_text_act_checkButtonText=Texto do bot\u00F3n: edit_text_act_checkCase=Comprobar mai\u00FAsculas/min\u00FAsculas edit_text_act_checkAccents=Ter en conta tiles e caracteres especiais edit_text_act_checkPunct=Ter en conta os signos de puntuaci\u00F3n edit_text_act_checkDoubleSpc=Permitir espacios repetidos edit_text_act_checkOptions=Criterios edit_text_act_checkAutoJump=Saltar automaticamente \u00E1 seguinte inc\u00F3gnita edit_text_act_checkForceOk=Avanzar s\u00F3 se a resposta \u00E9 correcta edit_text_act_checkDetail=Indicar a posici\u00F3n dos erros edit_text_act_checkDetail_params=Par\u00E1metros do algoritmo de an\u00E1lises edit_text_act_checkDetail_steps=Pasos: edit_text_act_checkDetail_field=Campo de exploraci\u00F3n: edit_text_act_defaultCheckButtonText=Avaliaci\u00F3n edit_text_act_advancedCorrectionOptions=An\u00E1lise das respostas edit_text_act_check_bt=Correcci\u00F3n... edit_text_act_checkButton=Bot\u00F3n de avaliaci\u00F3n edit_text_act_checkProgress=Progreso edit_text_act_typeBtn=Tipo... edit_text_act_orderParagraphs=Ordenar par\u00E1grafos edit_text_act_orderWords=Ordenar palabras edit_text_act_order_amongstPar=Barallar palabras entre par\u00E1grafos edit_text_act_type_title=Tipo de actividade edit_text_act_warnChangeType=Esta acci\u00F3n suprimir\u00E1 todas as inc\u00F3gnitas actualmente definidas. Seguro que desexa facelo? edit_text_act_identWords=Identificar palabras edit_text_act_identChars=Identificar caracteres edit_media_change_name=Cambiar o nome... edit_media_change_file=Cambiar o arquivo... edit_media_includeInZip=Gardar no arquivo ZIP edit_media_type=Tipo de recurso: edit_media_size=Tama\u00F1o do arquivo: edit_media_show_type=Tipo de arquivos: edit_media_preview=Visualizar o obxecto edit_media_preview_tooltip=Visualizaci\u00F3n do recurso edit_media_rename=Cambiar o nome do recurso edit_media_rename_title=Renomear edit_media_rename_prompt=Nome novo: edit_media_rename_invalid=Nome de recurso non v\u00E1lido! edit_media_rename_exists=Xa existe outro recurso con este nome! Cada recurso debe ter un \u00FAnico nome no proxecto. edit_media_chfile_invalid=Arquivo incorrecto! err_media_chfile_different=O arquivo debe ser do mesmo tipo edit_media_font_error=Non se puido cargar o tipo de letra! edit_media_save_file=Gardar o arquivo (extraelo desde o ZIP) edit_media_refresh_file=Actualizar o contido do recurso desde o arquivo edit_media_warn_zipFileNotExternal=Isto non \u00E9 un arquivo real, sen\u00F3n un obxecto localizado nun contedor ZIP. Para empregar este recurso \u00E9 preciso que exista un arquivo co mesmo nome no cartafol onde est\u00E1 ubicado o ZIP. edit_activities=Actividades edit_sequences=Secuencias edit_media=Mediateca edit_media_tooltip=Xesti\u00F3n de imaxes e outros recursos multimedia empregados no proxecto edit_activities_tooltip=Creaci\u00F3n e edici\u00F3n das actividades do proxecto edit_sequences_tooltip=Creaci\u00F3n e edici\u00F3n de secuencias de actividades edit_project_title=T\u00EDtulo: edit_project_title_tooltip=T\u00EDtulo do proxecto edit_project=Proxecto edit_project_tooltip=Edici\u00F3n das propiedades do proxecto edit_project_description=Descrici\u00F3n: edit_project_description_tooltip=Descrici\u00F3n xeral do proxecto edit_project_area=\u00C1reas: edit_project_area_tooltip=\u00C1reas curriculares do proxecto edit_project_level=Niveis: edit_project_level_tooltip=Niveis educativos do proxecto edit_project_descriptors=Descritores: edit_project_descriptors_tooltip=Descritores do proxecto (separados por comas) edit_project_languages=Idiomas: edit_project_languages_tooltip=Idiomas empregados no proxecto edit_project_languages_modify=Cambiar o idioma seleccionado edit_project_languages_add=Engadir un idioma: edit_project_languages_select=C\u00F3digos de idioma ISO-639: edit_project_authors=Autores: edit_project_authors_tooltip=Persoas que participaron na creaci\u00F3n do proxecto edit_project_author_name=Nome: edit_project_author_mail=Correo electr\u00F3nico: edit_project_author_rol=Rol: edit_project_author_organization=Organizaci\u00F3n: edit_project_author_comments=Comentarios: edit_project_author_url=URL: edit_project_author_name_tooltip=Nome do autor (campo obrigatorio) edit_project_author_mail_tooltip=Direcci\u00F3n de correo electr\u00F3nico do autor (opcional) edit_project_author_rol_tooltip=Rol da persoa no proxecto: autor, colaborador, debuxos, sons... (campo opcional) edit_project_author_organization_tooltip=Escola, universidade, asociaci\u00F3n... (campo opcional) edit_project_author_url_tooltip=P\u00E1xina web persoal (campo opcional) edit_project_author_comments_tooltip=Outras caracter\u00EDsticas (campo opcional) edit_project_author_info=Datos do autor: edit_project_author_add=Engadir un autor \u00E1 lista edit_project_author_edit=Editar informaci\u00F3n sobre o autor edit_project_org_name=Nome: edit_project_org_name_tooltip=Nome da escola edit_project_org_mail=Correo electr\u00F3nico: edit_project_org_mail_tooltip=Direcci\u00F3n de correo electr\u00F3nico da escola edit_project_org_url=URL: edit_project_org_url_tooltip=Direcci\u00F3n web da escola edit_project_org_address=Enderezo: edit_project_org_address_tooltip=Enderezo postal da escola edit_project_org_pc=CP: edit_project_org_pc_tooltip=C\u00F3digo postal edit_project_org_city=Localidade: edit_project_org_city_tooltip=Localidade da escola edit_project_org_country=Pa\u00EDs: edit_project_org_state=Estado: edit_project_org_comments=Comentarios: edit_project_org=Centro/s: edit_project_org_tooltip=Escolas e outras instituci\u00F3ns que participaron no proxecto edit_project_org_info=Datos da organizaci\u00F3n: edit_project_org_add=Engadir unha nova organizaci\u00F3n edit_project_org_edit=Modificar os datos da organizaci\u00F3n edit_project_org_country_tooltip=Estado, pa\u00EDs, federaci\u00F3n... edit_project_org_state_tooltip=Estado federal, nacionalidade, comunidade, rexi\u00F3n... edit_project_org_comments_tooltip=Outros datos... edit_project_rev_date=Data: edit_project_rev_date_tooltip=Data da revisi\u00F3n: edit_project_rev_authors=Autores: edit_project_rev_authors_tooltip=Autor da revisi\u00F3n edit_project_rev_description=Descrici\u00F3n: edit_project_rev_description_tooltip=Breve descrici\u00F3n dos cambios realizados edit_project_rev_comments=Comentarios: edit_project_rev_comments_tooltip=Informaci\u00F3n adicional edit_project_rev=Revisi\u00F3ns: edit_project_rev_tooltip=Historial das principais modificaci\u00F3ns efectuadas no proxecto edit_project_rev_add=Engadir un rexistro de revisi\u00F3n edit_project_rev_edit=Modificaci\u00F3n dos datos da revisi\u00F3n edit_project_rev_info=Caracter\u00EDsticas da revisi\u00F3n edit_media_objects=obxectos edit_media_object=obxecto edit_evsounds_start=Comezo da actividade: edit_evsounds_click=Facer clic nun obxecto: edit_evsounds_actionError=Acci\u00F3n err\u00F3nea: edit_evsounds_actionOk=Acci\u00F3n correcta: edit_evsounds_finishedError=Actividade rematada con erros: edit_evsounds_finishedOk=Actividade rematada correctamente: edit_project_rev_err_nodesc=Erro: O campo da descrici\u00F3n non pode quedar en branco! edit_evsounds_dlg_title=Edici\u00F3n dos sons de evento edit_project_evsounds=Sons de evento: edit_project_evsounds_tooltip=Asignar sons espec\u00EDficos a cada evento JClic edit_act_evsounds=Sons de evento: edit_act_evsounds_tooltip=Po\u00F1er sons espec\u00EDficos a cada evento de JClic edit_evsounds_default=son por defecto edit_evsounds_disabled=desactivado edit_evsounds_chk_tooltip=Activa ou desactiva o son para este evento edit_evsounds_select_tooltip=Faga clic para seleccionar un son para este evento, ou desmarque para empregar o son por defecto action_newProject_caption=Novo proxecto... action_newProject_keys=NN action_newProject_tooltip=Crea un novo proxecto JClic edit_arith_op_from=Desde: edit_arith_op_from_tooltip=Valor m\u00EDnimo do operando edit_arith_op_to=Ata: edit_arith_op_to_tooltip=Valor m\u00E1ximo do operando edit_arith_op_with=Con: edit_arith_op_with_tooltip=Se se marca, o operando pode ter tam\u00E9n este valor edit_arith_op_fromList=Un da lista: edit_arith_op_fromList_tooltip=Lista de pos\u00EDbeis valores do operando edit_arith_op_decimals=Decimais: edit_arith_op_decimals_tooltip=N\u00FAmero de decimais do operando edit_arith_op_dec0=# (integer) edit_arith_op_dec1=#,# edit_arith_op_dec2=#,## edit_arith_firstOp=Primeiro operando edit_arith_secondOp=Segundo operando edit_arith_title=Arith2 para JClic edit_arith_operations=Operaci\u00F3ns: edit_arith_operations_tooltip=Selecciona o tipo de operaci\u00F3ns a realizar edit_arith_operations_plus=Sumas edit_arith_operations_minus=Restas edit_arith_operations_multiply=Multiplicaci\u00F3ns edit_arith_operations_divide=Divisi\u00F3ns edit_arith_unknown=Inc\u00F3gnita: edit_arith_unknown_tooltip=Selecciona o elemento que far\u00E1 de inc\u00F3gnita edit_arith_unknown_aobx=A inc\u00F3gnita \u00E9 o resultado edit_arith_unknown_aoxr=A inc\u00F3gnita \u00E9 o segundo operando edit_arith_unknown_xobr=O primeiro operando \u00E9 a inc\u00F3gnita edit_arith_unknown_axbr=A operaci\u00F3n \u00E9 a inc\u00F3gnita edit_arith_unknown_invert=Escribe a expresi\u00F3n comezando polo resultado edit_arith_result=Resultado: edit_arith_result_notCarry=Sen "levar" edit_arith_result_random=Aleatorio edit_arith_result_asc=Ascendente edit_arith_result_order=Ordenar por resultado: edit_arith_result_desc=Descendente edit_arith_result_avoidDup=Evitar duplicados edit_arith_cond=Condici\u00F3ns: edit_arith_cond_ind=Indiferente edit_arith_cond_agb=O primeiro operando debe ser maior que o segundo edit_arith_cond_alb=O primeiro operando debe ser menor que o segundo edit_arith_cond_tooltip=Outras condici\u00F3ns edit_autocp=Xerador autom\u00E1tico de contido: edit_autocp_tooltip=Selecci\u00F3n do tipo de xerador autom\u00E1tico de contido para esta actividade. edit_autocp_block=Xerador de contido edit_autocp_btn=Configuraci\u00F3n... edit_autocp_btn_tooltip=Configuraci\u00F3n dos par\u00E1metros do xerador de contido edit_data=Edici\u00F3n de datos edit_act=Edici\u00F3n da actividade edit_acp=Edici\u00F3n do xerador de contido edit_acp_err_creating=\u00A1Erro de creaci\u00F3n do xerador autom\u00E1tico de contido! edit_project_author_group=Creaci\u00F3n edit_project_description_block=Descrici\u00F3n edit_project_ui_block=Interface de usuario edit_act_description=Descrici\u00F3n: m_Edit=Edici\u00F3n m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=Nova actividade... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=Inserir m_Insert_Mnemonic=I m_View=Ver m_View_Mnemonic=V action_editProject_caption=Proxecto action_editProject_keys=PP action_editProject_tooltip=Edita as propiedades do proxecto action_editMedia_caption=Mediateca action_editMedia_keys=MM action_editMedia_tooltip=Edita a biblioteca multimedia do proxecto action_editActivities_caption=Actividades action_editActivities_keys=AA action_editActivities_tooltip=Edita as actividades action_editSeq_caption=Secuencias action_editSeq_keys=SS action_editSeq_tooltip=Edita as secuencias das actividades warn_project_modified=O proxecto actual foi modificado. Desexa gardar os cambios? edit_project_descriptors_block=Descritores edit_media_new=Novo obxecto multimedia... edit_media_new_tooltip=Engadir unha nova imaxe ou obxecto multimedia \u00E1 mediateca edit_media_new_keys=M* edit_seq_threshold=L\u00EDmite de puntuaci\u00F3n: edit_seq_threshold_tooltip_up=Segue este cami\u00F1o cando a puntuaci\u00F3n global for igual ou maior que... edit_seq_time=L\u00EDmite de tempo: edit_seq_time_tooltip_up=Para seguir este cami\u00F1o, o tempo empregado nas actividades debe ser inferior a... edit_seq_threshold_tooltip_down=Segue este cami\u00F1o cando a puntuaci\u00F3n global for inferior a... edit_seq_time_tooltip_down=Segue este cami\u00F1o cando o tempo empregado nas actividades for maior que... edit_seq_condJump=Saltos condicionais edit_seq_condJump_tooltip=Especificar saltos especiais que se executar\u00E1n unicamente se se dan determinadas condici\u00F3ns edit_seq_condJump_upper_tooltip=Indicar as condici\u00F3ns para saltar a un nivel superior edit_seq_condJump_lower=Salto inferior: edit_seq_condJump_upper=Salto superior: edit_seq_condJump_lower_tooltip=Indicar as condici\u00F3ns para saltar a un nivel inferior edit_seq_action_tooltip_fw=Acci\u00F3n asignada ao bot\u00F3n de "avanzar" edit_seq_action_tooltip_bk=Acci\u00F3n asignada ao bot\u00F3n de "retroceder" edit_seq_jump_tooltip=Indicar o destino do salto edit_seq_action_tooltip=Acci\u00F3n a realizar edit_seq_activity_tooltip=Actividade asignada a este elemento da secuencia edit_seq_tag_tooltip=Etiqueta empregada para referirse a este elemento da secuencia (campo opcional) edit_seq_description_tooltip=Descrici\u00F3n do elemento da secuencia (campo opcional) edit_seq_button_enabled_tooltip=Activar ou desactivar o bot\u00F3n de paso de actividade edit_seq_auto_tooltip=Avanzar automaticamente ao finalizar a actividade edit_seq_delay_tooltip=N\u00FAmero de segundos a esperar antes de realizar o paso autom\u00E1tico edit_color_dlgTitle=Selecci\u00F3n da cor edit_media_renaming=Por favor, agarda mentres se cambia o nome do recurso... edit_act_cell_width=Ancho: edit_act_cell_width_tooltip=Anchura das celas (en p\u00EDxeles) edit_act_cell_height=Alto: edit_act_cell_height_tooltip=Altura das celas (en p\u00EDxeles) edit_act_hiddenWords=Palabras ocultas: edit_act_hiddenWords_tooltip=Lista das palabras ocultas no panel edit_act_wordSearch_panelB=Empregar o panel B edit_act_wordSearch_panelB_tooltip=Empregar un segundo panel, que se mostrar\u00E1 segundo se acharen as palabras edit_act_shaper_tooltip=Selecci\u00F3n do tipo de xerador de formas do panel edit_act_num_cols_tooltip=N\u00FAmero de columnas do panel edit_act_num_rows_tooltip=N\u00FAmero de filas do panel edit_act_wildTransparent=Separadores transparentes edit_act_wildTransparent_tooltip=Mostra os separadores (celas negras) como buratos transparentes edit_act_behavior_scramble_times=Mesturas: edit_act_behavior_scramble_times_tooltip=N\u00FAmero de veces que se barallar\u00E1n as pezas edit_act_copy_title=Copiar atributos a... edit_act_copy_attributes=Atributos: edit_act_copy_dest=Aplicar a: edit_act_copy_style_main=Xanela principal edit_act_copy_style_play=Xanela de xogo edit_act_copy_activities=Actividades a modificar: edit_act_copyAttributes=Copiar atributos edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=Copiar a outras actividades alg\u00FAns dos atributos da actividade actual edit_new_project_name=Nome do proxecto: edit_new_project_name_tooltip=Nome curto e descritivo do proxecto edit_new_project_filename=Nome de arquivo: edit_new_project_filename_tooltip=Nome do arquivo do proxecto, sen extensi\u00F3n edit_new_project_folder=Cartafol: edit_new_project_folder_tooltip=Nome do cartafol no que se almacenar\u00E1 o proxecto edit_new_project_folder_browse=Navegar... edit_new_project_title=Crear novo proxecto JClic edit_new_project_err_empty=Erro: Tanto o proxecto como o arquivo e o cartafol deben ter nomes v\u00E1lidos, non pode quedar o campo en branco. edit_new_project_warning_noEmptyFolder=Este cartafol xa cont\u00E9n outro proxecto Clic 3.0 ou JClic. Para evitar confusi\u00F3ns, recom\u00E9ndase manter cada proxecto nun cartafol diferenciado, se ben non \u00E9 un requisito imprescind\u00EDbel. Realmente desexa crear o novo proxecto neste cartafol? edit_new_project_err_folderCreation=Erro: Impos\u00EDbel crear o cartafol especificado! edit_act_copy_err_noSelection=Erro: \u00A1Non seleccionou ningunha actividade! Para empregar esta funci\u00F3n \u00E9 necesario seleccionar a lista de actividade ou actividades \u00E1s que se lle aplicar\u00E1n os atributos indicados. edit_act_copy_action_prefix=Copiando atributos a: edit_act_copy_margin=Marxe edit_act_copy_bgColor=Cor de fondo edit_act_copy_gradient=Gradiente edit_act_copy_bgImage=Imaxe de fondo edit_act_copy_border=Beira edit_act_copy_transparentBg=Fondo transparente edit_act_copy_position=Posici\u00F3n edit_act_copy_messages=Mensaxes edit_act_copy_messages_ini=Estilo da mensaxe inicial edit_act_copy_messages_end=Estilo da mensaxe final edit_act_copy_messages_err=Estilo da mensaxe de erro edit_act_copy_reports=Informes edit_act_copy_rep_include=Engadir a actividade nos informes edit_act_copy_rep_actions=Rexistrar acci\u00F3ns edit_act_copy_interface=Interface de usuario edit_act_copy_skin=Contorno visual edit_act_copy_evSounds=Sons de evento edit_act_copy_counters=Contadores edit_act_copy_cTime=Contador de tempo edit_act_copy_maxTime=Tempo m\u00E1ximo edit_act_copy_cTries=Contador de intentos edit_act_copy_maxTries=N\u00FAmero m\u00E1ximo de intentos edit_act_copy_cScore=Contador de acertos edit_act_copy_scramble=N\u00FAmero de veces que hai que barallar edit_act_copy_buttons=Bot\u00F3ns edit_act_copy_btnHelp=Bot\u00F3n de axuda: edit_act_copy_btnInfo=Bot\u00F3n de informaci\u00F3n edit_act_copy_grids=Paneis edit_act_copy_gridA=Estilo do panel A edit_act_copy_gridB=Estilo do panel B edit_act_copy_textGrid=Estilo dos paneis de texto edit_act_copy_text=Actividades de texto edit_act_copy_fontFace=Tipo de letra edit_act_copy_fontSize=Tama\u00F1o de letra edit_act_copy_fontStyle=Estilo de letra edit_act_copy_textColour=Cor do texto principal edit_act_copy_textTargetColour=Cor das inc\u00F3gnitas edit_act_copy_textErrorColour=Cor dos erros edit_act_copy_tabSpace=Espacio entre tabuladores edit_act_copy_messages_prev=Estilo da mensaxe previa edit_act_changeType=Cambiar o tipo de actividade edit_act_newActivity_class_tooltip=Nome completo da clase que se empregar\u00E1 para constru\u00EDr a actividade (\u00A1s\u00F3 usuarios avanzados!) edit_act_newActivity_other=Outras... edit_act_newActivity_info=Os usuarios/as avanzados/as poden crear tam\u00E9n outros tipos de actividades JClic non rexistradas. Escriba debaixo o nome completo da clase, precedida polo do paquete (por exemplo: "com.acme.activities.FooActivity"). As novas actividades extender\u00E1n edu.xtec.jclic.Activity, e ser\u00E1n acces\u00EDbeis ao cargador de clases da M\u00E1quina Virtual de Java. edit_act_newActivity_name=Nome da actividade: edit_act_newActivity_name_tooltip=Cada actividade ter\u00E1 un nome \u00FAnico no proxecto edit_act_changeType_warning=

Atenci\u00F3n: O cambio de tipo pode causar a perda dalg\u00FAns dos atributos e obxectos da actividade que se est\u00E1 a editar. \u00A1Empregue esta funci\u00F3n con coidado!

applet_codebase=Ubicaci\u00F3n do c\u00F3digo JClic: applet_codebase_tooltip=URL que apunta a un cartafol onde est\u00E1n os arquivos de programa do JClic applet_prev_text=C\u00F3digo HTML previo: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=Texto ou c\u00F3digo HTML que aparecer\u00E1 antes do applet applet_post_text=C\u00F3digo HTML posterior: applet_post_text_tooltip=Texto ou c\u00F3digo HTML que aparecer\u00E1 despois do applet applet_size=Tama\u00F1o do applet: applet_size_tooltip=Anchura e altura do applet, en valores absolutos ou percentuais. applet_page_title=T\u00EDtulo da p\u00E1xina: applet_page_title_tooltip=Texto que se mostrar\u00E1 na parte superior da xanela do navegador applet_created_info=A p\u00E1xina web "%s" creouse con \u00E9xito. applet_created_prompt=\u00BFDesexa abrila agora co navegador? action_createHTML_caption=Crear p\u00E1xina web... applet_create_title=Creaci\u00F3n dunha p\u00E1xina HTML cun applet JClic action_createHTML_tooltip=Creaci\u00F3n dunha p\u00E1xina HTML cun applet que conte\u00F1a o proxecto actual. applet_filename=Nome do arquivo: applet_filename_tooltip=Nome do arquivo HTML que se crear\u00E1 action_createHTML_keys=H* settings_applet=Applet settings_applet_tooltip=Valores por defecto empregados na creaci\u00F3n de p\u00E1xinas web applet_bgcolor=Cor de fondo: applet_bgcolor_tooltip=Cor de fondo da p\u00E1xina web applet_centered=Centrado applet_centered_tooltip=Situar o applet centrado horizontalmente applet_width_tooltip=Anchura do applet (en valor absoluto ou percentual) applet_height_tooltip=Altura do applet (en valor absoluto ou percentual) applet_exitUrl=Ao sa\u00EDr, ir a: applet_exitUrl_tooltip=URL a onde se redirixir\u00E1 a navegaci\u00F3n ao sa\u00EDr de JClic applet_infoFrame=Marco de informaci\u00F3n: applet_infoFrame_tooltip=Nome do marco empregado para mostrar o contido ligado ao bot\u00F3n "info" action_createInstaller_caption=Crear instalador do proxecto... action_createInstaller_keys=I* action_createInstaller_tooltip=Creaci\u00F3n dun arquivo de instalaci\u00F3n do proxecto para JClic player installer_caption=Edici\u00F3n do arquivo de instalaci\u00F3n do proxecto installer_title=T\u00EDtulo: installer_title_tooltip=T\u00EDtulo do proxecto que se mostrar\u00E1 no asistente da instalaci\u00F3n installer_authors=Autores: installer_authors_tooltip=Autor/es do proxecto (texto curto) installer_folder=Cartafol: installer_folder_tooltip=Nome do cartafol que suxerir\u00E1 o asistente da instalaci\u00F3n installer_files=Arquivos a copiar: installer_files_tooltip=Arquivos que se copiar\u00E1n durante a instalaci\u00F3n installer_files_available=Arquivos dispo\u00F1\u00EDbeis installer_files_selected=Arquivos seleccionados installer_files_add=>> engadir >> installer_files_add_tooltip=Engadir o arquivo seleccionado \u00E1 lista installer_files_remove=<< suprimir << installer_files_remove_tooltip=Quitar o arquivo seleccionado da lista installer_button=Bot\u00F3n de activaci\u00F3n installer_button_tooltip=Propiedades do bot\u00F3n que se mostrar\u00E1 na biblioteca de proxectos installer_button_project=Proxecto principal installer_button_project_tooltip=Proxecto JClic asociado ao bot\u00F3n installer_button_text=Etiqueta installer_button_text_tooltip=Breve etiqueta de texto, que aparecer\u00E1 dentro do bot\u00F3n installer_button_icon=Icona: installer_button_icon_tooltip=Imaxe que mostrar\u00E1 o bot\u00F3n. Deixar en branco para empregar o bot\u00F3n JClic por defecto. installer_button_description=Descrici\u00F3n installer_button_description_tooltip=Texto de axuda emerxente que mostrar\u00E1 o bot\u00F3n installer_error_noTitle=Erro: Hai que indicar o t\u00EDtulo do proxecto installer_error_noBaseFolder=Erro: Hai que indicar o nome do cartafol no que se instalar\u00E1 o proxecto installer_error_noFilesSelected=Erro: Non hai ning\u00FAn arquivo seleccionado installer_error_noButtonText=Erro: Hai que indicar o texto do bot\u00F3n de activaci\u00F3n installer_error_projectNotInFiles=Erro: O proxecto asignado ao bot\u00F3n de activaci\u00F3n non se acha entre os arquivos a copiar applet_page_full=O applet ocupa toda a p\u00E1xina applet_page_mixed=O applet ten unhas dimensi\u00F3ns espec\u00EDficas edit_text_align_left=Ali\u00F1ar o texto \u00E1 esquerda edit_text_align_center=Texto centrado edit_text_align_right=Ali\u00F1ar o texto \u00E1 dereita edit_text_act_target_toggle=Crear unha inc\u00F3gnita ou suprimila edit_text_act_insertCell=Inserir unha cela edit_text_act_content=Contido edit_text_act_style=Estilo edit_cell_size=Dimensi\u00F3ns: edit_project_orphanActivities=As seguintes actividades non chegaron a executarse, posto que non aparecen en ningunha secuencia de actividades do proxecto: edit_project_orphanMedia=Os seguintes obxectos da mediateca non se empregan directamente en ninguha actividade: edit_project_orphanActivities_prompt=Desexa engadilas ao remate da \u00FAltima secuencia de actividades? edit_project_orphanMedia_prompt=Desexa eliminalos? edit_project_orphanMedia_title=Retirada de obxectos multimedia non empregados edit_project_orphanActivities_title=Actividades orfas: edit_media_refreshAll=Actualizar o contido de todos os recursos edit_media_refreshAll_tooltip=Actualizar todos os recursos recargando os seus arquivos edit_media_refreshAll_keys=R* edit_media_refreshAll_working=Actualizando recursos... edit_media_exportAll=Exportar todos os recursos edit_media_exportAll_tooltip=Gravar en arquivos o contido de todos os recursos edit_media_exportAll_keys=X* edit_shape_select=Seleccionar edit_shape_addPoint=Engadir un punto edit_shape_deletePoint=Borrar edit_shape_drawRect=Debuxar un rect\u00E1ngulo edit_shape_drawEllipse=Debuxar unha elipse edit_shape_drawPoly=Debuxar un pol\u00EDgono edit_shape_toLine=Converter en li\u00F1a edit_shape_toBezier=Converter en curva de B\u00E9zier edit_shape_toQuad=Converter en curva cuadr\u00E1tica edit_shape_rLeft=Xirar \u00E1 esquerda edit_shape_rRight=Xirar \u00E1 dereita edit_shape_expand=Expandir edit_shape_contract=Contraer edit_shape_zoomIn=Acercar edit_shape_zoomOut=Afastar edit_shape_aproxPoints=Adxuntar puntos pr\u00F3ximos edit_shape_showPoints=Mostrar os puntos edit_shape_showPoints_tooltip=Mostrar/Ocultar os puntos edit_shape_gridSize=Grella edit_shape_hideGrid=Mostrar / Ocultar a grella edit_shape_magnetRadius=Radio do im\u00E1n: edit_shape_elements=Elementos definidos edit_shape_elemName=Nome do elemento seleccionado edit_shape_magnetRadius_tooltip=Radio de acci\u00F3n do im\u00E1n cando est\u00E1 activado edit_shape_gridSize_tooltip=Tama\u00F1o da grella edit_mc_activity=Actividade: edit_mc_sequence=Secuencia: edit_mc_url=URL: edit_mc_project=Proxecto: edit_mc_activity_selection=Escoller actividade edit_mc_sequence_selection=Escoller secuencia edit_mc_err_nullContent=Datos insuficientes! edit_act_arrowColor=Cor das frechas: edit_act_arrowColor_tooltip=Cor empregada polo editor para debuxar as frechas (non \u00E9 exacto, xa que se emprega unha m\u00E1scara XOR de bits) edit_act_editActivity=Editar... edit_act_editActivity_tooltip=Editar a actividade seleccionada action_saveFileAs_caption=Gardar como... action_saveFileAs_keys=AA action_saveFileAs_tooltip=Garda o proxecto cun nome diferente edit_act_behavior_block=Comportamento edit_act_behavior=Comportamento edit_act_behavior_drag=Arrastrar edit_act_behavior_drag_tooltip=Drag cells instead of use a connection line edit_act_behavior_order=Check solving order edit_act_behavior_order_tooltip=Cells must be solved in order edit_act_scramble=Barallar action_importActivities_caption=Importar actividades... action_importActivities_keys=I* action_importActivities_tooltip=Importar actividades dende outro proxecto import_warn_samefile=O ficheiro seleccionado corresp\u00F3ndese co proxecto actual. As actividades poden ser importadas s\u00F3 entre proxectos diferentes. Por favor, escolla outro ficheiro de proxecto. import_selectActivities=Escolla unha ou m\u00E1is actividades a importar no proxecto actual: import_importing=A importar... import_checkdep=Comprobaci\u00F3n de dependencias... import_impmedia=Importando multimedia: import_impact=Importando actividade: import_selectProject=Escolla o proxecto JClic a partir do cal desexa importar actividades edit_tagRep_tags=Marcas de etiquetas edit_tagRep_tagStart=Marca inicial: edit_tagRep_tagStart_tooltip=Marca usada ao inicio das etiquetas edit_tagRep_tagEnd=Marca final: edit_tagRep_tagEnd_tooltip=Marca usada ao final das etiquetas edit_tagRep_file=Arquivo edit_tagRep_fileName=Arquivo ou URL: edit_tagRep_fileName_tooltip=Nome ou URL do ficheiro que cont\u00E9n os valores que remprazar\u00E1n as etiquetas edit_tagRep_charset=Codificaci\u00F3n de caracteres: edit_tagRep_charset_tooltip=Codificaci\u00F3n de caracteres empregada no ficheiro edit_tagRep_browseFile=Explorar... edit_tagRep_browseFile_tooltip=Explorar o sistema de ficheiros edit_tagRep_title=Remprazo de etiqueta edit_text_act_clearStylesBtn=Borrar estilos de texto... edit_text_act_clearStylesPrompt=Atenci\u00F3n: Esta acci\u00F3n borrar\u00E1 os atributos dos caracteres espec\u00EDficos aplicados ao documento, restaur\u00E1ndoos ao seu estilo principal. Esta acci\u00F3n non se pode desfacer. Est\u00E1 seguro de querer continuar? img_max_size=Maximum size of images: img_max_width_tooltip=Maximum width of images imported into the media library. img_max_height_tooltip=Maximum height of images imported into the media library. img_resize_prompt=The image "%s" has a size of %s pixels. This exceeds the maximum allowed by JClic Author (%s). Do you want to resize it? jclic-0.2.1.0.orig/src/author/edu/xtec/resources/messages/AuthorMessages_el.properties0000644000175000017500000043161311377161311026006 0ustar #JClic Author messages edit_act_description_block=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE edit_act_name_tooltip=\u039F\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_name=\u038C\u03BD\u03BF\u03BC\u03B1 : edit_act_description_tooltip=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_reports_block=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 edit_act_includeInReports=\u03A3\u03C5\u03BC\u03C0\u03B5\u03C1\u03AF\u03BB\u03B7\u03C8\u03B7 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03C3\u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 edit_act_includeInReports_tooltip=\u03A3\u03C5\u03BC\u03C0\u03B5\u03C1\u03AF\u03BB\u03B7\u03C8\u03B7 \u03C4\u03C9\u03BD \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03B5\u03C3\u03BC\u03AC\u03C4\u03C9\u03BD \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03C3\u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C4\u03C9\u03BD \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD edit_act_code=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2: edit_act_code_tooltip=\u03A0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03AE \u03C7\u03C1\u03AE\u03C3\u03B7 \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03B3\u03B9\u03B1 \u03C4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B1\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03C3\u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C4\u03B7\u03C2 \u03B2\u03AC\u03C3\u03B7\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD. edit_act_reportActions=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC \u03B5\u03BD\u03B5\u03C1\u03B3\u03B5\u03B9\u03CE\u03BD \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 edit_act_reportActions_tooltip=\u0395\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE \u03C4\u03C9\u03BD \u03BB\u03B5\u03C0\u03C4\u03BF\u03BC\u03B5\u03C1\u03B5\u03B9\u03CE\u03BD \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03B5\u03BD\u03B5\u03C1\u03B3\u03B5\u03B9\u03CE\u03BD \u03C0\u03BF\u03C5 \u03AD\u03B3\u03B9\u03BD\u03B1\u03BD \u03B1\u03C0\u03CC \u03C4\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 edit_act_counters_block=\u039C\u03B5\u03C4\u03C1\u03B7\u03C4\u03AD\u03C2 edit_act_timeCounter=\u03A7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF edit_act_timeCounter_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u03B1\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03C7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF\u03C5 edit_act_actionsCounter=\u039C\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE\u03C2 \u03C0\u03C1\u03BF\u03C3\u03C0\u03B1\u03B8\u03B5\u03B9\u03CE\u03BD edit_act_actionsCounter_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u03B1\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE \u03C0\u03C1\u03BF\u03C3\u03C0\u03B1\u03B8\u03B5\u03B9\u03CE\u03BD edit_act_scoreCounter=\u039C\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE\u03C2 \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1\u03C2 edit_act_scoreCounter_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u03B1\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1\u03C2 edit_act_maxTime=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2: edit_act_maxTime_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B4\u03B9\u03B5\u03BA\u03C0\u03B5\u03C1\u03B1\u03AF\u03C9\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03C3\u03B5 \u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1, \u03AE 0 \u03B3\u03B9\u03B1 \u03B1\u03C0\u03B5\u03C1\u03B9\u03CC\u03C1\u03B9\u03C3\u03C4\u03BF \u03C7\u03C1\u03CC\u03BD\u03BF. edit_act_countdown=\u0391\u03BD\u03C4\u03AF\u03C3\u03C4\u03C1\u03BF\u03C6\u03B7 \u03BC\u03AD\u03C4\u03C1\u03B7\u03C3\u03B7 edit_act_countdown_tooltip=\u039F \u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE\u03C2 \u03BE\u03B5\u03BA\u03B9\u03BD\u03AC \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BC\u03AD\u03B3\u03B9\u03C3\u03C4\u03B7 \u03C4\u03B9\u03BC\u03AE \u03BA\u03B1\u03B9 \u03BC\u03B5\u03B9\u03CE\u03BD\u03B5\u03C4\u03B1\u03B9 \u03C9\u03C2 \u03C4\u03BF 0. edit_act_maxActions=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C0\u03C1\u03BF\u03C3\u03C0\u03B1\u03B8\u03B5\u03B9\u03CE\u03BD: edit_act_maxActions_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03B5\u03C0\u03B9\u03C4\u03C1\u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03C9\u03BD \u03C0\u03C1\u03BF\u03C3\u03C0\u03B1\u03B8\u03B5\u03B9\u03CE\u03BD, \u03AE 0 \u03B3\u03B9\u03B1 \u03B1\u03C0\u03B5\u03C1\u03B9\u03CC\u03C1\u03B9\u03C3\u03C4\u03B5\u03C2 \u03C0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B5\u03C2. edit_act_buttons_block=\u03A0\u03BB\u03AE\u03BA\u03C4\u03C1\u03B1 edit_act_helpBtn=\u0392\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1 edit_act_helpBtn_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u03B1\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03B2\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1\u03C2 edit_act_helpBtn_solution=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BB\u03CD\u03C3\u03B7\u03C2 edit_act_helpBtn_msg=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03B1\u03C5\u03C4\u03BF\u03CD \u03C4\u03BF\u03C5 \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03BF\u03C2: edit_act_infoBtn=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 edit_act_infoBtn_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u0391\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD edit_act_infoBtn_url=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03B1\u03C5\u03C4\u03BF\u03CD \u03C4\u03BF\u03C5 URL: edit_act_infoBtn_cmd=\u0395\u03BA\u03C4\u03AD\u03BB\u03B5\u03C3\u03B7 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03B5\u03BD\u03C4\u03BF\u03BB\u03AE\u03C2: edit_act_infoBtn_url_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7\u03C2 \u03C4\u03B7\u03C2 \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03BC\u03B5 \u03C0\u03AC\u03C4\u03B7\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD edit_act_infoBtn_cmd_tooltip=\u0397 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AE \u03B5\u03BD\u03C4\u03BF\u03BB\u03CE\u03BD \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03AF\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C0\u03AC\u03C4\u03B7\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD edit_act_mainWindow=\u039A\u03CD\u03C1\u03B9\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF: edit_act_gameWindow=\u03A0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF \u03C0\u03B1\u03B9\u03C7\u03BD\u03B9\u03B4\u03B9\u03BF\u03CD; edit_act_margin=\u03A0\u03B5\u03C1\u03B9\u03B8\u03CE\u03C1\u03B9\u03BF: edit_act_margin_tooltip=\u039F\u03C1\u03B9\u03B6\u03CC\u03BD\u03C4\u03B9\u03B1 \u03BA\u03B1\u03B9 \u03BA\u03AC\u03B8\u03B5\u03C4\u03B7 \u03C7\u03C9\u03C1\u03B9\u03BA\u03AE \u03B1\u03BD\u03AC\u03C0\u03C4\u03C5\u03BE\u03B7 \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C4\u03C9\u03BD \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03C9\u03BD. edit_act_bgColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5: edit_act_bgColor_tooltip=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03C7\u03C1\u03CE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5: edit_gradient_startColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03B1\u03C1\u03C7\u03AE\u03C2: edit_gradient_endColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C4\u03AD\u03BB\u03BF\u03C5\u03C2: edit_gradient_startColor_tooltip=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C4\u03BF\u03C5 \u03C7\u03C1\u03CE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B1\u03C1\u03C7\u03AE\u03C2 edit_gradient_endColor_tooltip=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C4\u03BF\u03C5 \u03C7\u03C1\u03CE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C4\u03AD\u03BB\u03BF\u03C5\u03C2 edit_gradient_cycles=\u039A\u03CD\u03BA\u03BB\u03BF\u03B9: edit_gradient_cycles_tooltip=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03B5\u03C0\u03B1\u03BD\u03B1\u03BB\u03AE\u03C8\u03B5\u03C9\u03BD \u03B4\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7\u03C2 \u03C3\u03C4\u03B7\u03BD \u03B5\u03C0\u03B9\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1 edit_gradient_orientation=\u03A0\u03C1\u03BF\u03C3\u03B1\u03BD\u03B1\u03C4\u03BF\u03BB\u03B9\u03C3\u03BC\u03CC\u03C2: edit_gradient_orientation_tooltip=\u03A0\u03C1\u03BF\u03C3\u03B1\u03BD\u03B1\u03C4\u03BF\u03BB\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B4\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7\u03C2 \u03C5\u03C0\u03BF\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2 \u03C3\u03B5 \u03BC\u03BF\u03AF\u03C1\u03B5\u03C2 \u03BF\u03C1\u03B9\u03B6\u03BF\u03BD\u03C4\u03AF\u03C9\u03C2 edit_act_gradient=\u0394\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7: edit_act_gradient_tooltip=\u03A7\u03C1\u03AE\u03C3\u03B7 \u03B4\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7\u03C2 \u03C7\u03C1\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD edit_color_opacity=\u0391\u03B4\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1 edit_color_opacity_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C4\u03B7\u03C2 \u03C4\u03B9\u03BC\u03AE\u03C2 \u03C4\u03BF\u03C5 \u03BA\u03B1\u03BD\u03B1\u03BB\u03B9\u03BF\u03CD alpha (\u03B1\u03B4\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1) \u03C4\u03BF\u03C5 \u03C7\u03C1\u03CE\u03BC\u03B1\u03C4\u03BF\u03C2. edit_gradient_title=\u0394\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7 edit_gradient_default=\u03A7\u03C1\u03AE\u03C3\u03B7 \u03C0\u03C1\u03BF\u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C4\u03B9\u03BC\u03CE\u03BD (\u03BC\u03B7\u03B4\u03B5\u03BD\u03B9\u03BA\u03AE \u03B4\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7) edit_act_image=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1: edit_act_descriptionTab=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE edit_act_descriptionTab_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03BA\u03B1\u03B9 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE edit_act_tiledBgImg=\u03A3\u03B5 \u03C0\u03B1\u03C1\u03AC\u03B8\u03B5\u03C3\u03B7 edit_act_tiledBgImg_tooltip=\u03A7\u03C1\u03C9\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C4\u03B7\u03C2 \u03B5\u03C0\u03B9\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 \u03C4\u03B7\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 \u03BC\u03B5 \u03B5\u03C0\u03B1\u03BD\u03AC\u03BB\u03B7\u03C8\u03B7 \u03BA\u03B1\u03C4\u03AC \u03BC\u03AE\u03BA\u03BF\u03C2 \u03C4\u03C9\u03BD \u03B1\u03BE\u03CC\u03BD\u03C9\u03BD \u03A7 \u03BA\u03B1\u03B9 Y \u03CC\u03C0\u03BF\u03C5 \u03C7\u03C1\u03B5\u03B9\u03AC\u03B6\u03B5\u03C4\u03B1\u03B9. edit_act_preview=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7: edit_act_border=\u03A0\u03B5\u03C1\u03AF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1 edit_act_border_tooltip=\u03A3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03BC\u03CC\u03C2 \u03BC\u03B9\u03B1\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AE\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B3\u03CD\u03C1\u03C9 \u03B1\u03C0\u03CC \u03C4\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_act_transparent=\u0394\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1 edit_act_transparent_tooltip=\u03A4\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF \u03AD\u03C7\u03B5\u03B9 \u03B4\u03B9\u03B1\u03C6\u03B1\u03BD\u03AD\u03C2 \u03C6\u03CC\u03BD\u03C4\u03BF edit_act_width=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2: edit_act_height=\u038E\u03C8\u03BF\u03C2: edit_act_width_tooltip=\u03A4\u03BF \u03C0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C5\u03C0\u03BF\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF \u03C3\u03B5 \u03B5\u03B9\u03BA\u03BF\u03BD\u03BF\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 edit_act_height_tooltip=\u03A4\u03BF \u03CD\u03C8\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C5\u03C0\u03BF\u03BB\u03BF\u03B3\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF \u03C3\u03B5 \u03B5\u03B9\u03BA\u03BF\u03BD\u03BF\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 edit_act_centered=\u039A\u03B5\u03BD\u03C4\u03C1\u03B1\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF edit_act_centered_tooltip=\u03A4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B8\u03B1 \u03BA\u03B5\u03BD\u03C4\u03C1\u03B1\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03C0\u03AC\u03BD\u03C9 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03CD\u03C1\u03B9\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_act_x=X: edit_act_x_tooltip=\u0391\u03C0\u03CC\u03BB\u03C5\u03C4\u03B7 \u03BF\u03C1\u03B9\u03B6\u03CC\u03BD\u03C4\u03B9\u03B1 \u03B8\u03AD\u03C3\u03B7 edit_act_y=Y: edit_act_y_tooltip=\u0391\u03C0\u03CC\u03BB\u03C5\u03C4\u03B7 \u03BA\u03AC\u03B8\u03B5\u03C4\u03B7 \u03B8\u03AD\u03C3\u03B7 edit_act_ui_block=\u0394\u03B9\u03B5\u03C0\u03B1\u03C6\u03AE \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 edit_act_image_tooltip=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BC\u03B9\u03B1\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 edit_act_text=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: edit_act_text_tooltip=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03BC\u03AD\u03C3\u03B1 \u03C3\u03C4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF edit_font_face=\u0393\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC edit_font_size=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2: edit_font_bold=\u0388\u03BD\u03C4\u03BF\u03BD\u03B1 edit_font_italic=\u03A0\u03BB\u03AC\u03B3\u03B9\u03B1 edit_font_underline=\u03A5\u03C0\u03BF\u03B3\u03C1\u03AC\u03BC\u03BC\u03B9\u03C3\u03B7 edit_font_style=\u03A3\u03C4\u03C5\u03BB: edit_cell_title=\u03A0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03B1 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD edit_act_messages=\u039C\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1 edit_act_msg_initial=\u0391\u03C1\u03C7\u03B9\u03BA\u03CC \u03BC\u03AE\u03BD\u03C5\u03BC\u03B1: edit_act_msg_final=\u03A4\u03B5\u03BB\u03B9\u03BA\u03CC \u03BC\u03AE\u03BD\u03C5\u03BC\u03B1: edit_act_msg_prev=\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF \u03BC\u03AE\u03BD\u03C5\u03BC\u03B1: edit_act_msg_error=\u039C\u03AE\u03BD\u03C5\u03BC\u03B1 \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1\u03C4\u03BF\u03C2: edit_act_msg_initial_tooltip=\u039C\u03AE\u03BD\u03C5\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C4\u03B7\u03BD \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_msg_final_tooltip=\u039C\u03AE\u03BD\u03C5\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03CC\u03C4\u03B1\u03BD \u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03C9\u03B8\u03B5\u03AF edit_act_msg_error_tooltip=\u039C\u03AE\u03BD\u03C5\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03CC\u03C4\u03B1\u03BD \u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03BD\u03B5\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1\u03C4\u03B1. edit_act_msg_prev_tooltip=\u039C\u03AE\u03BD\u03C5\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03C0\u03C1\u03B9\u03BD \u03C4\u03B7\u03BD \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 (\u03BC\u03CC\u03BD\u03BF \u03C3\u03B5 \u03C3\u03C5\u03B3\u03BA\u03B5\u03BA\u03C1\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03C4\u03CD\u03C0\u03BF\u03C5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD) edit_align=\u03A3\u03C4\u03BF\u03AF\u03C7\u03B9\u03C3\u03B7: edit_act_textColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5: edit_act_textColor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 edit_act_shadowColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C3\u03BA\u03AF\u03B1\u03C3\u03B7\u03C2: edit_act_shadowColor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03C3\u03BA\u03AF\u03B1\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5, \u03CC\u03C4\u03B1\u03BD \u03C4\u03AF\u03B8\u03B5\u03C4\u03B1\u03B9 \u03C3\u03B5 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE edit_act_shadow=\u03A3\u03BA\u03B9\u03AC edit_act_shadow_tooltip=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03BC\u03B5 \u03C3\u03BA\u03B9\u03AC edit_act_borderColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2: edit_act_borderColor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD edit_act_inactiveColor=\u039A\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03C7\u03C1\u03CE\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B1\u03BD\u03B5\u03BD\u03B5\u03C1\u03B3\u03AE edit_act_inactiveColor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03CC\u03C4\u03B1\u03BD \u03C4\u03BF \u03BA\u03B5\u03BB\u03AF \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03BF edit_act_altColor=\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03BA\u03C4\u03B9\u03BA\u03CC \u03C7\u03C1\u03CE\u03BC\u03B1: edit_act_altColor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03B5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03BD\u03B1\u03BB\u03BB\u03B1\u03BA\u03C4\u03B9\u03BA\u03BF\u03CD \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C3\u03B5 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03C9\u03BC\u03AD\u03BD\u03B1 \u03BA\u03B5\u03BB\u03B9\u03AC edit_cell_marked=\u03A3\u03B7\u03BC\u03B5\u03B9\u03C9\u03BC\u03AD\u03BD\u03BF edit_cell_disabled=\u0391\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03BF edit_cell_alt=\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03BA\u03C4\u03B9\u03BA\u03CC edit_cell_textMargin=\u0395\u03C3\u03C9\u03C4\u03B5\u03C1\u03B9\u03BA\u03CC \u03C0\u03B5\u03C1\u03B9\u03B8\u03CE\u03C1\u03B9\u03BF edit_cell_textMargin_tooltip=\u0394\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1 \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03BA\u03B1\u03B9 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B5\u03BD\u03CC\u03C2 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD. edit_cell_borderWidth=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2: edit_cell_borderWidth_tooltip=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AE\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03BF \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03BC\u03CC \u03C0\u03C1\u03CC\u03C4\u03C5\u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 edit_cell_markerWidth=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03B3\u03C1\u03B1\u03C6\u03AF\u03B4\u03B1\u03C2; edit_cell_markerWidth_tooltip=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AE\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03CC\u03C4\u03B1\u03BD \u03C4\u03BF \u03BA\u03B5\u03BB\u03AF \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C3\u03B7\u03BC\u03B1\u03B4\u03B5\u03BC\u03AD\u03BD\u03BF \u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF edit_cell_alt_tooltip=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03C3\u03B5 "\u03B5\u03BD\u03B1\u03BB\u03BB\u03B1\u03BA\u03C4\u03B9\u03BA\u03AE" \u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 edit_cell_disabled_tooltip=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03C3\u03B5 "\u03B1\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B7" \u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 edit_cell_marked_tooltip=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03C3\u03B5 "\u03C3\u03B7\u03BC\u03B5\u03B9\u03C9\u03BC\u03AD\u03BD\u03B7" \u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 edit_act_testAction=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_testAction_tooltip=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03BA\u03B1\u03B9 \u03B4\u03BF\u03BA\u03B9\u03BC\u03AE \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_panels_description=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE edit_act_panels_description_tooltip=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2 \u03BA\u03B1\u03B9 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_panels_options=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 edit_act_panels_options_tooltip=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_panels_frame=\u03A0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_act_panels_frame_tooltip=\u0391\u03BD\u03B1\u03BB\u03BF\u03B3\u03AF\u03B1, \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03BA\u03B1\u03B9 \u03B8\u03AD\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03C0\u03B1\u03C1\u03B1\u03B8\u03CD\u03C1\u03BF\u03C5 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_panels_messages=\u039C\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1 edit_act_panels_messages_tooltip=\u03A0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03BF \u03BC\u03B7\u03BD\u03C5\u03BC\u03AC\u03C4\u03C9\u03BD \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_panels_panel=\u03A0\u03AF\u03BD\u03B1\u03BA\u03B1\u03C2 edit_act_panels_panel_tooltip=\u03A0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03B1 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 edit_style_title=\u03A3\u03C4\u03C5\u03BB edit_style_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C4\u03BF \u03C7\u03C1\u03CE\u03BC\u03B1, \u03C4\u03B7 \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03BA\u03B1\u03B9 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C4\u03C9\u03BD \u03BA\u03B5\u03BB\u03B9\u03CE\u03BD edit_act_style=\u03A3\u03C4\u03C5\u03BB: edit_act_overlap=\u03A4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03BD\u03B1 \u03BC\u03B7\u03BD \u03B5\u03C0\u03B9\u03BA\u03B1\u03BB\u03CD\u03C0\u03C4\u03B5\u03B9 \u03C4\u03B7\u03BD \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1 edit_act_overlap_tooltip=\u0391\u03C0\u03BF\u03C6\u03C5\u03B3\u03AE \u03B5\u03C0\u03B9\u03BA\u03AC\u03BB\u03C5\u03C8\u03B7\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF edit_media_exists_1=\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF edit_media_exists_2=\u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03AE\u03B4\u03B7 \u03C3\u03C4\u03B7 \u03B2\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD! edit_act_shaper=\u03A3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03C4\u03AE\u03C2: edit_act_shaper_err=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03C4\u03AE: edit_act_num_cols=\u03A3\u03C4\u03AE\u03BB\u03B5\u03C2: edit_act_num_rows=\u0393\u03C1\u03B1\u03BC\u03BC\u03AD\u03C2: edit_act_toothHeightFactor=\u038E\u03C8\u03BF\u03C2 \u03B4\u03BF\u03BD\u03C4\u03B9\u03BF\u03CD: edit_act_toothWidthFactor=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03B4\u03BF\u03BD\u03C4\u03B9\u03BF\u03CD: edit_act_toothRandom=\u03A4\u03C5\u03C7\u03B1\u03AF\u03B1 \u03B4\u03B9\u03B1\u03BD\u03BF\u03BC\u03AE edit_act_shaper_properties=\u0399\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03C4\u03AE edit_act_panels_text=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF edit_act_panels_text_tooltip=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 action_saveFile_caption=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7... action_saveFile_keys=SS action_saveFile_tooltip=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C4\u03C1\u03AD\u03C7\u03BF\u03BD\u03C4\u03BF\u03C2 \u03AD\u03C1\u03B3\u03BF\u03C5 action_docTree_caption=\u0394\u03B5\u03BD\u03B4\u03C1\u03BF\u03B5\u03B9\u03B4\u03AE\u03C2 \u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03AD\u03C1\u03B3\u03BF\u03C5... action_docTree_keys=T* action_docTree_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03B4\u03B5\u03BD\u03B4\u03C1\u03BF\u03B5\u03B9\u03B4\u03BF\u03CD\u03C2 \u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7\u03C2 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_docTree_title=\u0394\u03B5\u03BD\u03B4\u03C1\u03BF\u03B5\u03B9\u03B4\u03AE\u03C2 \u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_media_referencedBy=\u0391\u03BD\u03B1\u03C6\u03AD\u03C1\u03B5\u03C4\u03B1\u03B9: msg_prompt_loadReferences=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE:

\u0391\u03C5\u03C4\u03CC \u03C4\u03BF \u03AD\u03C1\u03B3\u03BF \u03C3\u03C5\u03BD\u03B4\u03AD\u03B5\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03AC\u03BB\u03BB\u03B1 \u03AD\u03C1\u03B3\u03B1.
\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B5\u03BE\u03B5\u03C1\u03B5\u03C5\u03BD\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03B5\u03B9\u03C2 \u03BA\u03B1\u03B9 \u03BD\u03B1 \u03C6\u03BF\u03C1\u03C4\u03CE\u03C3\u03B5\u03C4\u03B5 \u03AC\u03BB\u03BB\u03B1 \u03C3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AC \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1;

(\u03A0\u03C1\u03BF\u03C4\u03B5\u03AF\u03BD\u03B5\u03C4\u03B1\u03B9 \u03BD\u03B1 \u03B1\u03C0\u03B1\u03BD\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5 \u039D\u0391\u0399 \u03CC\u03C4\u03B1\u03BD \u03B5\u03B9\u03C3\u03AC\u03B3\u03B5\u03C4\u03B1\u03B9 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C4\u03BF\u03C5 Clic 3.0) edit_mc_type=\u03A4\u03CD\u03C0\u03BF\u03C2: edit_mc_type_unknown=\u0386\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF edit_mc_type_sound=\u0391\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AE \u03AE\u03C7\u03BF\u03C5 edit_mc_type_video=\u0391\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AE \u03B2\u03AF\u03BD\u03C4\u03B5\u03BF edit_mc_type_midi=\u0391\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AE MIDI edit_mc_type_cdaudio=\u0391\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AE CD \u03AE\u03C7\u03BF\u03C5 edit_mc_type_record=\u0397\u03C7\u03BF\u03B3\u03C1\u03AC\u03C6\u03B7\u03C3\u03B7 \u03AE\u03C7\u03BF\u03C5 edit_mc_type_play_recorded=\u0391\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AE \u03B7\u03C7\u03BF\u03B3\u03C1\u03B1\u03C6\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5 \u03AE\u03C7\u03BF\u03C5 edit_mc_type_run_activity=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03C4\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 edit_mc_type_run_sequence=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03C4\u03B7\u03BD \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1 edit_mc_type_run_external=\u0395\u03BA\u03C4\u03AD\u03BB\u03B5\u03C3\u03B7 \u03C0\u03C1\u03BF\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 edit_mc_type_url=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 URL edit_mc_type_exit=\u03A4\u03AD\u03BB\u03BF\u03C2 edit_mc_type_return=\u0395\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE edit_mc_level=\u0395\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF \u03C0\u03C1\u03BF\u03C4\u03B5\u03C1\u03B1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2: edit_mc_file=\u0391\u03C1\u03C7\u03B5\u03AF\u03BF: edit_mc_externalParam=\u03A0\u03B1\u03C1\u03AC\u03BC\u03B5\u03C4\u03C1\u03BF\u03B9: edit_mc_from=\u0391\u03C0\u03CC: edit_mc_to=\u03A0\u03C1\u03BF\u03C2: edit_mc_length=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF \u03BC\u03AE\u03BA\u03BF\u03C2: edit_mc_recBuffer=\u0395\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE \u03BA\u03B1\u03C3\u03AD\u03C4\u03B1\u03C2: edit_mc_stretch=\u03A4\u03AD\u03BD\u03C4\u03C9\u03BC\u03B1 \u03BC\u03B5\u03B3\u03AD\u03B8\u03BF\u03C5\u03C2 edit_mc_location=\u03A4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C3\u03AF\u03B1: edit_mc_location_x=X: edit_mc_location_y=Y: edit_mc_location_from=\u0391\u03C0\u03CC: edit_mc_location_from_box=\u039A\u03B5\u03BB\u03AF edit_mc_location_from_window=\u03A0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_mc_location_from_frame=\u03A0\u03BB\u03B1\u03AF\u03C3\u03B9\u03BF edit_mc_loop=\u0395\u03C0\u03B1\u03BD\u03AC\u03BB\u03B7\u03C8\u03B7 edit_mc_autostart=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B5\u03BA\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 edit_mc_catchmouse=\u03A0\u03BF\u03BD\u03C4\u03AF\u03BA\u03B9 \u03C3\u03CD\u03BB\u03BB\u03B7\u03C8\u03B7\u03C2 edit_mc_title=\u03A0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03B1 \u03BA\u03B1\u03B9 \u03B5\u03BD\u03B5\u03C1\u03B3\u03CC \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03BF edit_mc_label=\u0395\u03BD\u03B5\u03C1\u03B3\u03CC \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03BF edit_media_dlg_title=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD edit_media_title=\u0392\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD edit_mc_pos_cell=\u03A3\u03C4\u03BF\u03AF\u03C7\u03B9\u03C3\u03B7 \u03C3\u03C4\u03BF \u03BA\u03AD\u03BD\u03C4\u03C1\u03BF \u03C4\u03BF\u03C5 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD edit_mc_pos_window=\u039A\u03B5\u03BD\u03C4\u03C1\u03AC\u03C1\u03B9\u03C3\u03BC\u03B1 \u03C3\u03C4\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_mc_pos_absolute=\u039A\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B8\u03AD\u03C3\u03B7\u03C2: edit_tree_badFormat=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03B7 \u03B4\u03B5\u03BD\u03B4\u03C1\u03BF\u03B5\u03B9\u03B4\u03AE\u03C2 \u03B4\u03BF\u03BC\u03AE \u03AE \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1 edit_act_panels_controls=\u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 \u03B5\u03BB\u03AD\u03B3\u03C7\u03BF\u03C5 edit_act_panels_controls_tooltip=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 \u03B3\u03B9\u03B1 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03B1 \u03BA\u03B1\u03B9 \u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AD\u03C2 edit_act_class=\u03A4\u03CD\u03C0\u03BF\u03C2: edit_act_gridLayout=\u0394\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2: edit_act_gridLayout_tooltip=\u03A3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AE \u03B8\u03AD\u03C3\u03B7 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 \u0391 \u03BA\u03B1\u03B9 \u0392 edit_act_inverseResolution=\u0391\u03BD\u03C4\u03AF\u03C3\u03C4\u03C1\u03BF\u03C6\u03B7 \u03B1\u03BD\u03AC\u03BB\u03C5\u03C3\u03B7 edit_act_inverseResolution_tooltip=\u0397 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03BD\u03B5\u03C4\u03B1\u03B9 \u03CC\u03C4\u03B1\u03BD \u03CC\u03BB\u03B1 \u03C4\u03B1 \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 \u03B1\u03C0\u03CC \u03C4\u03BF "\u0392" \u03AD\u03C7\u03BF\u03C5\u03BD \u03C3\u03C5\u03C3\u03C7\u03B5\u03C4\u03B9\u03C3\u03C4\u03B5\u03AF edit_act_showAllArrows=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03B2\u03B5\u03BB\u03CE\u03BD edit_act_alt=\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03BA\u03C4\u03B9\u03BA\u03CC \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03BF: edit_act_alt_tooltip=\u03A0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03BF \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03C3\u03B5 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03C9\u03BC\u03AD\u03BD\u03B1 \u03BA\u03B1\u03B9 \u03C3\u03B5 \u03BC\u03B7 \u03C0\u03C1\u03BF\u03C3\u03B4\u03B9\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B1 \u03BA\u03B5\u03BB\u03B9\u03AC. edit_act_alt_toggle=ALT edit_act_alt_toggle_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B5\u03BD\u03B1\u03BB\u03BB\u03B1\u03BA\u03C4\u03B9\u03BA\u03BF\u03CD \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 edit_act_grid=\u03A0\u03BB\u03AD\u03B3\u03BC\u03B1 edit_act_grid_A=\u03A0\u03BB\u03AD\u03B3\u03BC\u03B1 \u0391 edit_act_grid_B=\u03A0\u03BB\u03AD\u03B3\u03BC\u03B1 \u0392 edit_act_grid_layout=\u0394\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 edit_act_grid_relationship=\u03A3\u03C7\u03AD\u03C3\u03B7 edit_seq_activity_header=\u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 edit_seq_tag_header=\u03B5\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1 edit_seq_jump_header=\u03BC\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5 edit_seq_activity=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1: edit_seq_tag=\u0395\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1: edit_seq_description=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE: edit_seq_auto=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 edit_seq_delay=\u039A\u03B1\u03B8\u03C5\u03C3\u03C4\u03AD\u03C1\u03B7\u03C3\u03B7: edit_seq_action_fwd=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03BC\u03C0\u03C1\u03BF\u03C3\u03C4\u03AC edit_seq_action_back=\u03A0\u03AF\u03C3\u03C9 edit_seq_action_jump=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5 edit_seq_action_stop=\u0394\u03B9\u03B1\u03BA\u03BF\u03C0\u03AE edit_seq_action_return=\u0395\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE edit_seq_action_exit=\u0388\u03BE\u03BF\u03B4\u03BF\u03C2 \u03B1\u03C0\u03CC JClic edit_seq_arrow_fwd=\u039C\u03C0\u03C1\u03BF\u03C3\u03C4\u03AC: edit_seq_arrow_back=\u03A0\u03AF\u03C3\u03C9: edit_seq_action=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1: edit_seq_button_enabled=\u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE \u03BA\u03BF\u03C5\u03BC\u03C0\u03B9\u03BF\u03CD edit_seq_project=\u0388\u03C1\u03B3\u03BF Jclic: edit_act_absolute=\u0398\u03AD\u03C3\u03B7 \u03C4\u03B9\u03BC\u03AE\u03C2 edit_act_absolute_tooltip=\u03A4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B8\u03B1 \u03C4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C4\u03B7\u03B8\u03B5\u03AF \u03C3\u03C4\u03B7\u03BD \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B7 \u03B8\u03AD\u03C3\u03B7 \u03C4\u03C9\u03BD \u03C3\u03C5\u03BD\u03C4\u03B5\u03C4\u03B1\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03A7 \u03BA\u03B1\u03B9 \u03A5 edit_act_location=\u03A4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C3\u03AF\u03B1: edit_seq_newElement=\u039D\u03AD\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF\u03C5 edit_seq_newElement_tooltip=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03BD\u03AD\u03BF\u03C5 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C3\u03C4\u03B7\u03BD \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_seq_newElement_msg=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03BC\u03B9\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03BD\u03AD\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF\u03C5 edit_seq_newElement_error_noAct=\u0394\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03B7\u03B8\u03B5\u03AF \u03BC\u03B9\u03B1 \u03BA\u03B1\u03B9\u03BD\u03BF\u03CD\u03C1\u03B3\u03B9\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1 \u03C7\u03C9\u03C1\u03AF\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1! edit_seq_newElement_error_emptyList=\u03A4\u03BF \u03AD\u03C1\u03B3\u03BF \u03B4\u03B5\u03BD \u03AD\u03C7\u03B5\u03B9 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2! \u0391\u03B4\u03C5\u03BD\u03B1\u03BC\u03AF\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1\u03C2 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1\u03C2 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD \u03C3\u03B5 \u03BA\u03B5\u03BD\u03CC \u03AD\u03C1\u03B3\u03BF. edit_seq_jump_msg=\u03A3\u03C4\u03CC\u03C7\u03BF\u03C2 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7\u03C2: edit_seq_jump_title=\u03A3\u03C4\u03CC\u03C7\u03BF\u03C2 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7\u03C2 edit_act_newActivity_tooltip=\u03A0\u03C1\u03CC\u03C3\u03B8\u03B7\u03BA\u03B7 \u03BD\u03AD\u03B1\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03C3\u03C4\u03BF \u03AD\u03C1\u03B3\u03BF edit_act_prompt_class=\u03A4\u03CD\u03C0\u03BF\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_prompt_name=\u038C\u03BD\u03BF\u03BC\u03B1 edit_act_newActivity_msg=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF\u03BD \u03C4\u03CD\u03C0\u03BF \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03BA\u03B1\u03B9 \u03B4\u03CE\u03C3\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03CC\u03BD\u03BF\u03BC\u03B1: edit_act_newActivity_error_noAct=\u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03B5\u03C4\u03B5 \u03C4\u03CD\u03C0\u03BF \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2! edit_act_newActivity_error_noName=\u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BF\u03C1\u03AF\u03C3\u03B5\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03CC\u03BD\u03BF\u03BC\u03B1 \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1! edit_act_newActivity_error_creating=\u0391\u03B4\u03CD\u03BD\u03B1\u03C4\u03B7 \u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_newActivity_class=\u038C\u03BD\u03BF\u03BC\u03B1 \u03BA\u03B1\u03C4\u03B7\u03B3\u03BF\u03C1\u03AF\u03B1\u03C2 Java: edit_text_act_format=\u039C\u03BF\u03C1\u03C6\u03AE edit_text_act_answer=\u0391\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7 edit_text_act_popup=\u0391\u03BD\u03B1\u03B4\u03C5\u03CC\u03BC\u03B5\u03BD\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_text_act_answer_label=\u0388\u03B3\u03BA\u03C5\u03C1\u03B5\u03C2 \u03B1\u03C0\u03B1\u03BD\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2 edit_list_newElement_tooltip=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BD\u03AD\u03B1\u03C2 \u03BB\u03AF\u03C3\u03C4\u03B1\u03C2 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD edit_list_editElement_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7\u03C2 \u03BB\u03AF\u03C3\u03C4\u03B1\u03C2 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD edit_list_deleteElement_tooltip=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7\u03C2 \u03BB\u03AF\u03C3\u03C4\u03B1\u03C2 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD edit_list_upBtn_tooltip=\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03C0\u03AC\u03BD\u03C9 edit_list_downBtn_tooltip=\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03BA\u03AC\u03C4\u03C9 edit_list_newValue=\u039D\u03AD\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: edit_list_addElement=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BD\u03AD\u03B1\u03C2 \u03BB\u03AF\u03C3\u03C4\u03B1\u03C2 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD edit_list_modifyValue=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 edit_text_act_target=\u03A0\u03C1\u03BF\u03BF\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 edit_text_act_maxLen=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF \u03BC\u03AE\u03BA\u03BF\u03C2: edit_text_act_maxLen_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD \u03C4\u03B7\u03C2 \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7\u03C2: edit_text_act_fillingChar=\u0393\u03AD\u03BC\u03B9\u03C3\u03BC\u03B1 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B1 edit_text_act_fillingChar_tooltip=\u039F\u03B9 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B4\u03B7\u03BB\u03CE\u03BD\u03BF\u03C5\u03BD \u03C4\u03BF \u03BA\u03B5\u03BD\u03CC edit_text_act_iniLen=\u0391\u03C1\u03C7\u03B9\u03BA\u03CC \u03BC\u03AE\u03BA\u03BF\u03C2: edit_text_act_iniLen_tooltip=\u039F \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C4\u03C9\u03BD \u03C3\u03C5\u03BC\u03C0\u03BB\u03B7\u03C1\u03C9\u03BC\u03AD\u03BD\u03C9\u03BD \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03B9\u03C3\u03C4\u03B5\u03AF \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2. edit_text_act_iniText=\u0391\u03C1\u03C7\u03B9\u03BA\u03CC \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: edit_text_act_iniText_tooltip=\u03A4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2. edit_text_act_list=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1\u03C2 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03CE\u03BD: edit_text_act_list_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1\u03C2 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03CE\u03BD \u03B1\u03C0\u03CC \u03C4\u03B7\u03BD \u03BF\u03C0\u03BF\u03AF\u03B1 \u03BF \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03B5\u03B9 \u03BC\u03AF\u03B1: edit_text_act_check_title=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 \u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7\u03C2 edit_text_act_popup_no=\u03A6\u03C1\u03B1\u03B3\u03AE \u03B1\u03BD\u03B1\u03B4\u03C5\u03CC\u03BC\u03B5\u03BD\u03C9\u03BD \u03C0\u03B1\u03C1\u03B1\u03B8\u03CD\u03C1\u03C9\u03BD edit_text_act_popup_always=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03B1\u03BD\u03AC\u03B4\u03C5\u03C3\u03B7 \u03C0\u03B1\u03C1\u03B1\u03B8\u03CD\u03C1\u03BF\u03C5 edit_text_act_popup_onError=\u0391\u03BD\u03AC\u03B4\u03C5\u03C3\u03B7 \u03C0\u03B1\u03C1\u03B1\u03B8\u03CD\u03C1\u03BF\u03C5 \u03C3\u03B5 \u03C0\u03B5\u03C1\u03AF\u03C0\u03C4\u03C9\u03C3\u03B7 \u03BB\u03AC\u03B8\u03BF\u03C5\u03C2 edit_text_act_popup_onDemand=\u0391\u03BD\u03AC\u03B4\u03C5\u03C3\u03B7 \u03C0\u03B1\u03C1\u03B1\u03B8\u03CD\u03C1\u03BF\u03C5 \u03BC\u03B5 F1 edit_text_act_popup_type=\u03A4\u03CD\u03C0\u03BF\u03C2: edit_text_act_popup_delay=\u039A\u03B1\u03B8\u03C5\u03C3\u03C4\u03AD\u03C1\u03B7\u03C3\u03B7 \u03B1\u03BD\u03AC\u03B4\u03C5\u03C3\u03B7\u03C2 \u03C0\u03B1\u03C1\u03B1\u03B8\u03CD\u03C1\u03BF\u03C5: edit_text_act_popup_maxTime=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2: edit_text_act_popup_onlyPlay=\u039C\u03CC\u03BD\u03BF \u03AE\u03C7\u03BF\u03C2 edit_text_act_err_noSelection=\u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03B5\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC\u03C3\u03C0\u03B1\u03C3\u03BC\u03B1 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03BD \u03C3\u03C4\u03BF\u03C7\u03B5\u03CD\u03B5\u03C4\u03B5 \u03C3\u03C4\u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B5\u03BD\u03CC\u03C2 \u03BD\u03AD\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5! edit_text_act_err_badCharInSelection=\u03A4\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03BB\u03B1\u03BC\u03B2\u03AC\u03BD\u03B5\u03B9 \u03C0\u03B1\u03C1\u03AC\u03B3\u03C1\u03B1\u03C6\u03BF \u03C0\u03BF\u03C5 \u03B4\u03B5\u03BD \u03B4\u03B9\u03B1\u03B8\u03AD\u03C4\u03B5\u03B9 \u03C3\u03C4\u03B7\u03BB\u03BF\u03B8\u03AD\u03C4\u03B5\u03C2. edit_text_act_err_nestedTargets=\u039F\u03B9 \u03C3\u03C4\u03CC\u03C7\u03BF\u03B9 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03BD\u03B1 \u03C4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C4\u03B7\u03B8\u03BF\u03CD\u03BD edit_text_act_err_cellInTarget=\u039F \u03C0\u03C1\u03BF\u03BF\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03BA\u03B5\u03BB\u03B9\u03AC edit_text_act_pageBgColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C7\u03B1\u03C1\u03C4\u03B9\u03BF\u03CD: edit_text_act_editStylesBtn=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C3\u03C4\u03C5\u03BB \u03B5\u03B3\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5... edit_text_act_mainStyle=\u039A\u03CD\u03C1\u03B9\u03BF \u03C3\u03C4\u03C5\u03BB: edit_text_act_tabSpc=\u0394\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1 \u03C3\u03C4\u03B7\u03BB\u03BF\u03B8\u03AD\u03C4\u03B7: edit_text_act_tabSize=\u0394\u03B9\u03B1\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03B1 \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C3\u03C4\u03B7\u03BB\u03BF\u03B8\u03B5\u03C4\u03CE\u03BD: edit_text_act_colors=\u03A7\u03C1\u03CE\u03BC\u03B1\u03C4\u03B1: edit_text_act_targetStyle=\u03A0\u03C1\u03BF\u03BF\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C7\u03C1\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD: edit_text_act_errorStyle=\u03A7\u03C1\u03CE\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C6\u03B1\u03BB\u03BC\u03AC\u03C4\u03C9\u03BD: edit_text_act_preview=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7: edit_text_act_styleSample_default_start=\u03A4\u03C5\u03C0\u03B9\u03BA\u03CC \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF edit_text_act_styleSample_target=\u03C3\u03C4\u03CC\u03C7\u03BF\u03C2 edit_text_act_styleSample_error=\u03C3\u03C6\u03AC\u03BB\u03BC\u03B1 edit_text_act_styleSample_default_fill=\u03C4\u03C5\u03C0\u03B9\u03BA\u03CC \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF edit_text_act_styleSample_default_end=\u03C4\u03C5\u03C0\u03B9\u03BA\u03CC \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF. edit_text_act_warnDeleteTarget=\u03A0\u03C1\u03BF\u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7: \u0391\u03C5\u03C4\u03AE \u03B7 \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03B8\u03B1 \u03C5\u03C0\u03B5\u03C1\u03B9\u03C3\u03C7\u03CD\u03C3\u03B5\u03B9 \u03B1\u03C0\u03CC \u03C4\u03BF\u03BD \u03C4\u03C1\u03AD\u03C7\u03BF\u03BD\u03C4\u03B1 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF \u03C3\u03C4\u03CC\u03C7\u03BF. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03C3\u03C5\u03BD\u03B5\u03C7\u03AF\u03C3\u03B5\u03C4\u03B5; edit_text_act_prevScreen_title=\u03A0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03B7 \u03BF\u03B8\u03CC\u03BD\u03B7... edit_text_act_prevScreen_no=\u039A\u03B1\u03BC\u03AF\u03B1 \u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03C1\u03B9\u03BD \u03C4\u03B7\u03BD \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_text_act_prevScreen_original=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C0\u03BB\u03AE\u03C1\u03BF\u03C5\u03C2 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C4\u03B7\u03C2 \u03AC\u03C3\u03BA\u03B7\u03C3\u03B7\u03C2. edit_text_act_prevScreen_special=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03B1\u03C5\u03C4\u03BF\u03CD \u03C4\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5: edit_text_act_prevScreen_time=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2: edit_text_act_edit_target=\u03A3\u03C4\u03CC\u03C7\u03BF\u03C2... edit_text_act_checkButton_show=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7\u03C2 edit_text_act_checkButtonText=\u03A0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5; edit_text_act_checkCase=\u03A4\u03B1\u03AF\u03C1\u03B9\u03B1\u03C3\u03BC\u03B1 \u03C0\u03B5\u03B6\u03CE\u03BD/\u03BA\u03B5\u03C6\u03B1\u03BB\u03B1\u03AF\u03C9\u03BD edit_text_act_checkAccents=\u0395\u03BE\u03AD\u03C4\u03B1\u03C3\u03B7 \u03C4\u03BF\u03BD\u03B9\u03C3\u03BC\u03BF\u03CD \u03BA\u03B1\u03B9 \u03B5\u03B9\u03B4\u03B9\u03BA\u03CE\u03BD \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD edit_text_act_checkPunct=\u0395\u03BE\u03AD\u03C4\u03B1\u03C3\u03B7 \u03C3\u03B7\u03BC\u03B5\u03AF\u03C9\u03BD \u03C3\u03C4\u03AF\u03BE\u03B7\u03C2 edit_text_act_checkDoubleSpc=\u0395\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B5\u03C0\u03B1\u03BD\u03B1\u03BB\u03B1\u03BC\u03B2\u03B1\u03BD\u03CC\u03BC\u03B5\u03BD\u03B1 \u03B4\u03B9\u03B1\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03B1 edit_text_act_checkOptions=\u039A\u03C1\u03B9\u03C4\u03AE\u03C1\u03B9\u03B1 edit_text_act_checkAutoJump=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03C4\u03BF\u03BD \u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF \u03C3\u03C4\u03CC\u03C7\u03BF \u03CC\u03C4\u03B1\u03BD \u03C3\u03C5\u03BC\u03C0\u03BB\u03B7\u03C1\u03C9\u03B8\u03B5\u03AF edit_text_act_checkForceOk=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03BC\u03CC\u03BD\u03BF \u03BC\u03B5\u03C4\u03AC \u03C3\u03C9\u03C3\u03C4\u03AE \u03C0\u03C1\u03CC\u03B2\u03BB\u03B5\u03C8\u03B7 edit_text_act_checkDetail=\u0395\u03C0\u03B9\u03C3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7 \u03BB\u03B1\u03B8\u03CE\u03BD, \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1 \u03C0\u03C1\u03BF\u03C2 \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1 edit_text_act_checkDetail_params=\u03A0\u03B1\u03C1\u03AC\u03BC\u03B5\u03C4\u03C1\u03BF\u03B9 \u03B1\u03BD\u03AC\u03BB\u03C5\u03C3\u03B7\u03C2 \u03B1\u03BB\u03B3\u03BF\u03C1\u03AF\u03B8\u03BC\u03C9\u03BD: edit_text_act_checkDetail_steps=\u0392\u03AE\u03BC\u03B1\u03C4\u03B1: edit_text_act_checkDetail_field=\u03A0\u03B5\u03B4\u03AF\u03BF \u03B5\u03BE\u03B5\u03C1\u03B5\u03CD\u03BD\u03B7\u03C3\u03B7\u03C2: edit_text_act_defaultCheckButtonText=\u0388\u03BB\u03B5\u03B3\u03C7\u03BF\u03C2 edit_text_act_advancedCorrectionOptions=\u0391\u03BD\u03AC\u03BB\u03C5\u03C3\u03B7 \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7\u03C2 edit_text_act_check_bt=\u0394\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7... edit_text_act_checkButton=\u03A0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF \u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7\u03C2 edit_text_act_checkProgress=\u03A0\u03C1\u03CC\u03BF\u03B4\u03BF\u03C2 edit_text_act_typeBtn=\u03A4\u03CD\u03C0\u03BF\u03C2... edit_text_act_orderParagraphs=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u03C0\u03B1\u03C1\u03B1\u03B3\u03C1\u03AC\u03C6\u03C9\u03BD edit_text_act_orderWords=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD edit_text_act_order_amongstPar=\u0391\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD \u03BC\u03AD\u03C3\u03B1 \u03C3\u03C4\u03B9\u03C2 \u03C0\u03B1\u03C1\u03B1\u03B3\u03C1\u03AC\u03C6\u03BF\u03C5\u03C2 edit_text_act_type_title=\u0395\u03AF\u03B4\u03BF\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_text_act_warnChangeType=\u0391\u03C5\u03C4\u03AE \u03B7 \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03B8\u03B1 \u03B1\u03C6\u03B1\u03B9\u03C1\u03AD\u03C3\u03B5\u03B9 \u03CC\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03BD\u03C4\u03B5\u03C2 \u03C3\u03C4\u03CC\u03C7\u03BF\u03C5\u03C2. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03C3\u03C5\u03BD\u03B5\u03C7\u03AF\u03C3\u03B5\u03C4\u03B5; edit_text_act_identWords=\u0391\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD edit_text_act_identChars=\u0391\u03BD\u03B1\u03B3\u03BD\u03CE\u03C1\u03B9\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD edit_media_change_name=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03BF\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2... edit_media_change_file=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5... edit_media_includeInZip=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C3\u03B5 \u03C3\u03C5\u03BC\u03C0\u03B9\u03B5\u03C3\u03BC\u03AD\u03BD\u03BF (.zip) \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF edit_media_type=\u0395\u03AF\u03B4\u03BF\u03C2 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03BF\u03C5: edit_media_size=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5: edit_media_show_type=\u03A4\u03CD\u03C0\u03BF\u03B9 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD: edit_media_preview=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD edit_media_preview_tooltip=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03C3\u03BA\u03CC\u03C0\u03B7\u03C3\u03B7 \u03C0\u03B7\u03B3\u03CE\u03BD \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD edit_media_rename=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03BF\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C0\u03B7\u03B3\u03AE\u03C2: edit_media_rename_title=\u039C\u03B5\u03C4\u03BF\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 edit_media_rename_prompt=\u039D\u03AD\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1: edit_media_rename_invalid=\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C0\u03B7\u03B3\u03AE\u03C2! edit_media_rename_exists=\u03A5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03BC\u03B9\u03B1 \u03B1\u03BA\u03CC\u03BC\u03B7 \u03C0\u03B7\u03B3\u03AE \u03BC\u03B5 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1! \u039A\u03AC\u03B8\u03B5 \u03C0\u03B7\u03B3\u03AE \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 \u03AD\u03BD\u03B1 \u03BC\u03BF\u03BD\u03B1\u03B4\u03B9\u03BA\u03CC \u03CC\u03BD\u03BF\u03BC\u03B1. edit_media_chfile_invalid=\u039C\u03B7 \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF! err_media_chfile_different=\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C4\u03BF\u03C5 \u03AF\u03B4\u03B9\u03BF\u03C5 \u03B5\u03AF\u03B4\u03BF\u03C5\u03C2 edit_media_font_error=\u0391\u03B4\u03C5\u03BD\u03B1\u03BC\u03AF\u03B1 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2! edit_media_save_file=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 (\u03B5\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03B1\u03C0\u03CC ZIP) edit_media_refresh_file=\u0395\u03BD\u03B7\u03BC\u03AD\u03C1\u03C9\u03C3\u03B7 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD \u03B1\u03C0\u03CC \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF edit_media_warn_zipFileNotExternal=\u0391\u03C5\u03C4\u03CC \u03B4\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03AD\u03BD\u03B1 "\u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03B9\u03BA\u03CC" \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF, \u03B1\u03BB\u03BB\u03AC \u03AD\u03BD\u03B1 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C0\u03BF\u03C5 \u03B2\u03C1\u03AF\u03C3\u03BA\u03B5\u03C4\u03B1\u03B9 \u03C3\u03B5 \u03AD\u03BD\u03B1 \u03C3\u03C5\u03BC\u03C0\u03B9\u03B5\u03C3\u03BC\u03AD\u03BD\u03BF \u03C0\u03B1\u03BA\u03AD\u03C4\u03BF. \u0393\u03B9\u03B1 \u03BD\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03C5\u03BD\u03B1\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1, \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03B9\u03C3\u03C4\u03B5\u03AF \u03AD\u03BD\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03BC\u03B5 \u03C4\u03BF \u03AF\u03B4\u03B9\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C3\u03C4\u03BF\u03BD \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF \u03CC\u03C0\u03BF\u03C5 \u03B2\u03C1\u03AF\u03C3\u03BA\u03B5\u03C4\u03B1\u03B9 \u03C4\u03BF \u03C3\u03C5\u03BC\u03C0\u03B9\u03B5\u03C3\u03BC\u03AD\u03BD\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF. edit_activities=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 edit_sequences=\u0391\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B5\u03C2 edit_media=\u0392\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD edit_media_tooltip=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD \u03BA\u03B1\u03B9 \u03AC\u03BB\u03BB\u03C9\u03BD \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03AD\u03C1\u03B3\u03BF edit_activities_tooltip=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03AD\u03C1\u03B3\u03BF\u03C5 edit_sequences_tooltip=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03B9\u03CE\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD edit_project_title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2: edit_project_title_tooltip=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_project=\u0388\u03C1\u03B3\u03BF edit_project_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B9\u03B4\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_project_description=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE: edit_project_description_tooltip=\u0393\u03B5\u03BD\u03B9\u03BA\u03AE \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_project_area=\u0393\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA\u03AD\u03C2 \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AD\u03C2: edit_project_area_tooltip=\u0394\u03B9\u03B4\u03B1\u03BA\u03C4\u03B9\u03BA\u03AC \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03B1 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_project_level=\u0393\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA\u03AC \u03B5\u03C0\u03AF\u03C0\u03B5\u03B4\u03B1: edit_project_level_tooltip=\u0395\u03BA\u03C0\u03B1\u03B9\u03B4\u03B5\u03C5\u03C4\u03B9\u03BA\u03AC \u03B5\u03C0\u03AF\u03C0\u03B5\u03B4\u03B1 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_project_descriptors=\u039B\u03AD\u03BE\u03B5\u03B9\u03C2 \u03BA\u03BB\u03B5\u03B9\u03B4\u03B9\u03AC: edit_project_descriptors_tooltip=\u039B\u03AD\u03BE\u03B5\u03B9\u03C2 \u03BA\u03BB\u03B5\u03B9\u03B4\u03B9\u03AC \u03B3\u03B9\u03B1 \u03C4\u03BF \u03AD\u03C1\u03B3\u03BF (\u03B4\u03B9\u03B1\u03C7\u03C9\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03BC\u03B5 \u03BA\u03CC\u03BC\u03BC\u03B1) edit_project_languages=\u0393\u03BB\u03CE\u03C3\u03C3\u03B5\u03C2: edit_project_languages_tooltip=\u0393\u03BB\u03CE\u03C3\u03C3\u03B5\u03C2 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03AD\u03C1\u03B3\u03BF edit_project_languages_modify=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7\u03C2 \u03B3\u03BB\u03CE\u03C3\u03C3\u03B1\u03C2 edit_project_languages_add=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B3\u03BB\u03CE\u03C3\u03C3\u03B1\u03C2 edit_project_languages_select=ISO-639 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03B3\u03BB\u03CE\u03C3\u03C3\u03B1\u03C2: edit_project_authors=\u03A3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03B5\u03AF\u03C2: edit_project_authors_tooltip=\u0386\u03C4\u03BF\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03C3\u03C5\u03BD\u03B5\u03B9\u03C3\u03AD\u03C6\u03B5\u03C1\u03B1\u03BD \u03C3\u03C4\u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B1\u03C5\u03C4\u03BF\u03CD \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_project_author_name=\u038C\u03BD\u03BF\u03BC\u03B1 edit_project_author_mail=\u0397\u03BB\u03B5\u03BA\u03C4\u03C1\u03BF\u03BD\u03B9\u03BA\u03AE \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7: edit_project_author_rol=\u03A1\u03CC\u03BB\u03BF\u03C2: edit_project_author_organization=\u039F\u03C1\u03B3\u03B1\u03BD\u03B9\u03C3\u03BC\u03CC\u03C2: edit_project_author_comments=\u03A3\u03C7\u03CC\u03BB\u03B9\u03B1: edit_project_author_url=URL: edit_project_author_name_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AD\u03B1 (\u03B1\u03C0\u03B1\u03B9\u03C4\u03B5\u03AF\u03C4\u03B1\u03B9) edit_project_author_mail_tooltip=\u0397\u03BB\u03B5\u03BA\u03C4\u03C1\u03BF\u03BD\u03B9\u03BA\u03AE \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 \u03C3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AD\u03C9\u03BD (\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC) edit_project_author_rol_tooltip=\u03A1\u03CC\u03BB\u03BF\u03C2 \u03B1\u03C4\u03CC\u03BC\u03BF\u03C5 \u03C3\u03C4\u03BF \u03AD\u03C1\u03B3\u03BF: \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03CC\u03C2, \u03C3\u03C5\u03BD\u03B5\u03C1\u03B3\u03AC\u03C4\u03B7\u03C2, \u03C0\u03C1\u03BF\u03BC\u03B7\u03B8\u03B5\u03C5\u03C4\u03AE\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD, \u03AE\u03C7\u03C9\u03BD... (\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC) edit_project_author_organization_tooltip=\u03A3\u03C7\u03BF\u03BB\u03B5\u03AF\u03BF, \u03C0\u03B1\u03BD\u03B5\u03C0\u03B9\u03C3\u03C4\u03AE\u03BC\u03B9\u03BF, \u03C3\u03CD\u03BB\u03BB\u03BF\u03B3\u03BF\u03C2....(\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC) edit_project_author_url_tooltip=\u03A0\u03C1\u03BF\u03C3\u03C9\u03C0\u03B9\u03BA\u03AE \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 (\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC) edit_project_author_comments_tooltip=\u03A0\u03B5\u03B4\u03AF\u03BF \u03B3\u03B9\u03B1 \u03AC\u03BB\u03BB\u03B5\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 (\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC) edit_project_author_info=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 \u03C3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AD\u03B1: edit_project_author_add=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AD\u03B1 \u03C3\u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 edit_project_author_edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03C3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AD\u03B1 edit_project_org_name=\u038C\u03BD\u03BF\u03BC\u03B1: edit_project_org_name_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C3\u03C7\u03BF\u03BB\u03B5\u03AF\u03BF\u03C5 edit_project_org_mail=\u0397\u03BB\u03B5\u03BA\u03C4\u03C1\u03BF\u03BD\u03B9\u03BA\u03AE \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7: edit_project_org_mail_tooltip=\u0397\u03BB\u03B5\u03BA\u03C4\u03C1\u03BF\u03BD\u03B9\u03B8\u03BA\u03AE \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 \u03C3\u03C7\u03BF\u03BB\u03B5\u03AF\u03BF\u03C5 edit_project_org_url=URL: edit_project_org_url_tooltip=\u0399\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 \u03C3\u03C7\u03BF\u03BB\u03B5\u03AF\u03BF\u03C5 edit_project_org_address=\u0394\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7: edit_project_org_address_tooltip=\u03A4\u03B1\u03C7\u03C5\u03B4\u03C1\u03BF\u03BC\u03B9\u03BA\u03AE \u03B4\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 edit_project_org_pc=\u0397/\u03A5: edit_project_org_pc_tooltip=\u03A4\u03B1\u03C7\u03C5\u03B4\u03C1\u03BF\u03BC\u03B9\u03BA\u03CC\u03C2 \u03BA\u03CE\u03B4\u03B9\u03BA\u03B1\u03C2 edit_project_org_city=\u03A0\u03CC\u03BB\u03B7: edit_project_org_city_tooltip=\u03A0\u03CC\u03BB\u03B7 edit_project_org_country=\u03A7\u03CE\u03C1\u03B1: edit_project_org_state=\u03A0\u03BF\u03BB\u03B9\u03C4\u03B5\u03AF\u03B1: edit_project_org_comments=\u03A3\u03C7\u03CC\u03BB\u03B9\u03B1: edit_project_org=\u03A3\u03C7\u03BF\u03BB\u03B5\u03AF\u03B1: edit_project_org_tooltip=\u03A3\u03C7\u03BF\u03BB\u03B5\u03AF\u03BF \u03AE \u03AC\u03BB\u03BB\u03BF \u03AF\u03B4\u03C1\u03C5\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03C3\u03C5\u03BC\u03BC\u03B5\u03C4\u03AD\u03C7\u03B5\u03B9 \u03C3\u03C4\u03BF \u03AD\u03C1\u03B3\u03BF! edit_project_org_info=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 \u03BF\u03C1\u03B3\u03B1\u03BD\u03B9\u03C3\u03BC\u03BF\u03CD: edit_project_org_add=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BF\u03C1\u03B3\u03B1\u03BD\u03B9\u03C3\u03BC\u03BF\u03CD edit_project_org_edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03BF\u03C1\u03B3\u03B1\u03BD\u03B9\u03C3\u03BC\u03BF\u03CD edit_project_org_country_tooltip=\u03A7\u03CE\u03C1\u03B1, \u03BF\u03BC\u03BF\u03C3\u03C0\u03BF\u03BD\u03B4\u03AF\u03B1, \u03AD\u03BD\u03C9\u03C3\u03B7 ... edit_project_org_state_tooltip=\u039F\u03BC\u03BF\u03C3\u03C0\u03BF\u03BD\u03B4\u03B9\u03B1\u03BA\u03AE \u03C0\u03BF\u03BB\u03B9\u03C4\u03B5\u03AF\u03B1, \u03BA\u03BF\u03B9\u03BD\u03CC\u03C4\u03B7\u03C4\u03B1, \u03C0\u03B5\u03C1\u03B9\u03BF\u03C7\u03AE ... edit_project_org_comments_tooltip=\u0386\u03BB\u03BB\u03B5\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2... edit_project_rev_date=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 edit_project_rev_date_tooltip=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03B1\u03BD\u03B1\u03B8\u03B5\u03CE\u03C1\u03B7\u03C3\u03B7\u03C2 edit_project_rev_authors=\u03A3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03B5\u03AF\u03C2: edit_project_rev_authors_tooltip=\u03A3\u03C5\u03B3\u03B3\u03C1\u03B1\u03C6\u03B5\u03AF\u03C2 \u03B1\u03BD\u03B1\u03B8\u03B5\u03CE\u03C1\u03B7\u03C3\u03B7\u03C2 edit_project_rev_description=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE: edit_project_rev_description_tooltip=\u03A3\u03CD\u03BD\u03C4\u03BF\u03BC\u03B7 \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C4\u03C9\u03BD \u03B1\u03BB\u03BB\u03B1\u03B3\u03CE\u03BD \u03C0\u03BF\u03C5 \u03AD\u03B3\u03B9\u03BD\u03B1\u03BD edit_project_rev_comments=\u03A3\u03C7\u03CC\u03BB\u03B9\u03B1: edit_project_rev_comments_tooltip=\u0386\u03BB\u03BB\u03B5\u03C2 \u03C3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AD\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 edit_project_rev=\u0391\u03BD\u03B1\u03B8\u03B5\u03C9\u03C1\u03AE\u03C3\u03B5\u03B9\u03C2: edit_project_rev_tooltip=\u0399\u03C3\u03C4\u03BF\u03C1\u03B9\u03BA\u03CC \u03C4\u03C9\u03BD \u03BA\u03C5\u03C1\u03B9\u03CC\u03C4\u03B5\u03C1\u03C9\u03BD \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03C9\u03BD \u03C0\u03BF\u03C5 \u03AD\u03B3\u03B9\u03BD\u03B1\u03BD \u03C3\u03C4\u03BF \u03AD\u03C1\u03B3\u03BF edit_project_rev_add=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BA\u03B1\u03C4\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03B1\u03BD\u03B1\u03B8\u03B5\u03C9\u03C1\u03AE\u03C3\u03B5\u03C9\u03BD edit_project_rev_edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03BA\u03B1\u03C4\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03B1\u03BD\u03B1\u03B8\u03B5\u03C9\u03C1\u03AE\u03C3\u03B5\u03C9\u03BD edit_project_rev_info=\u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1 \u03B1\u03BD\u03B1\u03B8\u03B5\u03CE\u03C1\u03B7\u03C3\u03B7\u03C2 edit_media_objects=\u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03B1 edit_media_object=\u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF edit_evsounds_start=\u0388\u03BD\u03B1\u03C1\u03BE\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2: edit_evsounds_click=\u039A\u03AC\u03BD\u03C4\u03B5 \u03BA\u03BB\u03B9\u03BA \u03C3\u03C4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: edit_evsounds_actionError=\u0395\u03C3\u03C6\u03B1\u03BB\u03BC\u03AD\u03BD\u03B7 \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1: edit_evsounds_actionOk=\u03A3\u03C9\u03C3\u03C4\u03AE \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1: edit_evsounds_finishedError=\u0397 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03B8\u03B7\u03BA\u03B5 \u03BC\u03B5 \u03BB\u03AC\u03B8\u03B7: edit_evsounds_finishedOk=\u0397 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C9\u03C3\u03C4\u03AC: edit_project_rev_err_nodesc=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u03A4\u03BF \u03C0\u03B5\u03B4\u03AF\u03BF \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03BC\u03B5\u03AF\u03BD\u03B5\u03B9 \u03BA\u03B5\u03BD\u03CC: edit_evsounds_dlg_title=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03AE\u03C7\u03BF\u03C5 \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD\u03C4\u03C9\u03BD edit_project_evsounds=\u0389\u03C7\u03BF\u03B9 \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD\u03C4\u03C9\u03BD: edit_project_evsounds_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C3\u03C5\u03B3\u03BA\u03B5\u03BA\u03C1\u03B9\u03BC\u03AD\u03BD\u03BF \u03AE\u03C7\u03BF \u03B3\u03B9\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD \u03C4\u03BF\u03C5 JClic edit_act_evsounds=\u0389\u03C7\u03BF\u03B9 \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD\u03C4\u03C9\u03BD: edit_act_evsounds_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C3\u03C5\u03B3\u03BA\u03B5\u03BA\u03C1\u03B9\u03BC\u03AD\u03BD\u03BF \u03AE\u03C7\u03BF \u03B3\u03B9\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD \u03C4\u03BF\u03C5 JClic edit_evsounds_default=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C2 \u03AE\u03C7\u03BF\u03C2 edit_evsounds_disabled=\u03B1\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03BF edit_evsounds_chk_tooltip=\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03AE \u03B1\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03AE\u03C7\u03BF\u03C5 \u03B3\u03B9\u03B1 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD edit_evsounds_select_tooltip=\u039A\u03AC\u03BD\u03B5 \u03BA\u03BB\u03B9\u03BA \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03B5\u03B9\u03C2 \u03AE\u03C7\u03BF \u03B3\u03B9\u03B1 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD \u03AE \u03B1\u03C0\u03BF\u03B5\u03C0\u03AD\u03BB\u03B5\u03BE\u03B5 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2 \u03C4\u03BF\u03BD \u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF \u03AE\u03C7\u03BF action_newProject_caption=\u039D\u03AD\u03BF \u03AD\u03C1\u03B3\u03BF action_newProject_keys=NN action_newProject_tooltip=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BD\u03AD\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 Jclic edit_arith_op_from=\u0391\u03C0\u03CC: edit_arith_op_from_tooltip=\u0395\u03BB\u03AC\u03C7\u03B9\u03C3\u03C4\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE edit_arith_op_to=\u03A0\u03C1\u03BF\u03C2: edit_arith_op_to_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03B7 \u03C4\u03B9\u03BC\u03AE \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE edit_arith_op_with=\u039C\u03B5: edit_arith_op_with_tooltip=\u0395\u03AC\u03BD \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03B5\u03AF, \u03BF \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03B5\u03C0\u03AF\u03C3\u03B7\u03C2 \u03BD\u03B1 \u03C0\u03AC\u03C1\u03B5\u03B9 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7\u03BD \u03C4\u03B9\u03BC\u03AE edit_arith_op_fromList=\u0388\u03BD\u03B1 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1: edit_arith_op_fromList_tooltip=\u039B\u03AF\u03C3\u03C4\u03B1 \u03C0\u03B9\u03B8\u03B1\u03BD\u03CE\u03BD \u03C4\u03B9\u03BC\u03CE\u03BD \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03CE\u03BD edit_arith_op_decimals=\u0394\u03B5\u03BA\u03B1\u03B4\u03B9\u03BA\u03AC: edit_arith_op_decimals_tooltip=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03B4\u03B5\u03BA\u03B1\u03B4\u03B9\u03BA\u03CE\u03BD \u03C8\u03B7\u03C6\u03AF\u03C9\u03BD \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE edit_arith_op_dec0=# (\u03B1\u03BA\u03AD\u03C1\u03B1\u03B9\u03BF\u03C2) edit_arith_op_dec1=#.# edit_arith_op_dec2=#.## edit_arith_firstOp=\u0391\u03C1\u03C7\u03B9\u03BA\u03CC\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 edit_arith_secondOp=\u0394\u03B5\u03CD\u03C4\u03B5\u03C1\u03BF\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 edit_arith_title=Arith2 for JClic edit_arith_operations=\u03A0\u03C1\u03AC\u03BE\u03B5\u03B9\u03C2: edit_arith_operations_tooltip=\u0395\u03C0\u03AD\u03BB\u03B5\u03BE\u03B5 \u03C4\u03BF \u03B5\u03AF\u03B4\u03BF\u03C2 \u03C4\u03C9\u03BD \u03B5\u03BD\u03B5\u03C1\u03B3\u03B5\u03B9\u03CE\u03BD \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03BF\u03CD\u03BD edit_arith_operations_plus=\u03A0\u03C1\u03CC\u03C3\u03B8\u03B5\u03C3\u03B7 edit_arith_operations_minus=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 edit_arith_operations_multiply=\u03A0\u03BF\u03BB\u03BB\u03B1\u03C0\u03BB\u03B1\u03C3\u03B9\u03B1\u03C3\u03BC\u03CC\u03C2 edit_arith_operations_divide=\u0394\u03B9\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 edit_arith_unknown=\u0386\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF: edit_arith_unknown_tooltip=\u0395\u03C0\u03AD\u03BB\u03B5\u03BE\u03B5 \u03C4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03B5\u03AF \u03C9\u03C2 \u03BF \u03AC\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF\u03C2 edit_arith_unknown_aobx=\u03A4\u03BF \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BF \u03AC\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF\u03C2 edit_arith_unknown_aoxr=\u039F \u03B4\u03B5\u03CD\u03C4\u03B5\u03C1\u03BF\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BF \u03AC\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF\u03C2 edit_arith_unknown_xobr=\u039F \u03C0\u03C1\u03CE\u03C4\u03BF\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BF \u03AC\u03B3\u03BD\u03C9\u03C3\u03C4\u03BF\u03C2 edit_arith_unknown_axbr=\u0386\u03B3\u03BD\u03C9\u03C3\u03C4\u03B7 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 edit_arith_unknown_invert=\u0393\u03C1\u03AC\u03C8\u03B5 \u03C4\u03BF \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1 \u03C3\u03C4\u03B7 \u03B1\u03C1\u03C7\u03AE \u03C4\u03B7\u03C2 \u03AD\u03BA\u03C6\u03C1\u03B1\u03C3\u03B7\u03C2 edit_arith_result=\u0391\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1: edit_arith_result_notCarry=\u039C\u03B7\u03BD \u03BC\u03B5\u03C4\u03B1\u03C6\u03AD\u03C1\u03B5\u03B9\u03C2 edit_arith_result_random=\u03A4\u03C5\u03C7\u03B1\u03AF\u03BF edit_arith_result_asc=\u0391\u03CD\u03BE\u03BF\u03C5\u03C3\u03B1 edit_arith_result_order=\u03A4\u03B1\u03BE\u03B9\u03BD\u03CC\u03BC\u03B7\u03C3\u03B7 \u03BA\u03B1\u03C4\u03AC \u03B1\u03C0\u03BF\u03C4\u03AD\u03BB\u03B5\u03C3\u03BC\u03B1 edit_arith_result_desc=\u03A6\u03B8\u03AF\u03BD\u03BF\u03C5\u03C3\u03B1 edit_arith_result_avoidDup=\u0391\u03C0\u03BF\u03C6\u03C5\u03B3\u03AE \u03B4\u03B9\u03C0\u03BB\u03CC\u03C4\u03C5\u03C0\u03C9\u03BD edit_arith_cond=\u03A3\u03C5\u03BD\u03B8\u03AE\u03BA\u03B5\u03C2: edit_arith_cond_ind=\u03CC\u03BC\u03BF\u03B9\u03B1 edit_arith_cond_agb=\u039F \u03C0\u03C1\u03CE\u03C4\u03BF\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03BF\u03C2 \u03B1\u03C0\u03CC \u03C4\u03BF\u03BD \u03B4\u03B5\u03CD\u03C4\u03B5\u03C1\u03BF edit_arith_cond_alb=\u039F \u03C0\u03C1\u03CE\u03C4\u03BF\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03AE\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03B9\u03BA\u03C1\u03CC\u03C4\u03B5\u03C1\u03BF\u03C2 \u03B1\u03C0\u03CC \u03C4\u03BF\u03BD \u03B4\u03B5\u03CD\u03C4\u03B5\u03C1\u03BF edit_arith_cond_tooltip=\u0386\u03BB\u03BB\u03B5\u03C2 \u03C3\u03C5\u03BD\u03B8\u03AE\u03BA\u03B5\u03C2 edit_autocp=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03CC\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD: edit_autocp_tooltip=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C4\u03CD\u03C0\u03BF\u03C5 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03BF\u03CD \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B3\u03B9\u03B1 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1. edit_autocp_block=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03CC\u03C2 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD edit_autocp_btn=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2... edit_autocp_btn_tooltip=\u0394\u03B9\u03B1\u03BC\u03CC\u03C1\u03C6\u03C9\u03C3\u03B7 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C0\u03AC\u03C1\u03BF\u03C7\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 edit_data=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD edit_act=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_acp=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C0\u03B1\u03C1\u03BF\u03C7\u03AD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD edit_acp_err_creating=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03C3\u03C4\u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03C0\u03AC\u03C1\u03BF\u03C7\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5! edit_project_author_group=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 edit_project_description_block=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE edit_project_ui_block=\u0394\u03B9\u03B5\u03C0\u03B1\u03C6\u03AE \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 edit_act_description=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE: m_Edit=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 m_Edit_Mnemonic=E edit_media_preview_keys=P* edit_act_newActivity=\u039D\u03AD\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1... edit_act_newActivity_keys=A* edit_act_testAction_keys=P#10 edit_seq_newElement_keys=S* m_Insert=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE m_Insert_Mnemonic=\u0399 m_View=\u03A0\u03C1\u03BF\u03B2\u03BF\u03BB\u03AE m_View_Mnemonic=V action_editProject_caption=\u0388\u03C1\u03B3\u03BF action_editProject_keys=PP action_editProject_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03AD\u03C1\u03B3\u03BF\u03C5 action_editMedia_caption=\u039C\u03AD\u03C3\u03B1 action_editMedia_keys=MM action_editMedia_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03B2\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7\u03C2 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 action_editActivities_caption=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 action_editActivities_keys=AA action_editActivities_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD action_editSeq_caption=\u0391\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B5\u03C2 action_editSeq_keys=SS action_editSeq_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03B9\u03CE\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD warn_project_modified=\u03A4\u03BF \u03C0\u03B1\u03C1\u03CC\u03BD \u03AD\u03C1\u03B3\u03BF \u03AD\u03C7\u03B5\u03B9 \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03B8\u03B7\u03BA\u03B5\u03CD\u03C3\u03B5\u03C4\u03B5 \u03C4\u03B9\u03C2 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AD\u03C2; edit_project_descriptors_block=\u03A0\u03B1\u03B9\u03B4\u03B1\u03B3\u03C9\u03B3\u03B9\u03BA\u03AC \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03AC edit_media_new=\u039D\u03AD\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD... edit_media_new_tooltip=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03BD\u03AD\u03B1\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1\u03C2 \u03AE \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD \u03C3\u03C4\u03B7\u03BD \u03B2\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 edit_media_new_keys=M* edit_seq_threshold=\u039A\u03B1\u03C4\u03CE\u03C4\u03B1\u03C4\u03BF \u03CC\u03C1\u03B9\u03BF \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1\u03C2: edit_seq_threshold_tooltip_up=\u0391\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AE\u03C3\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03B9\u03B1\u03B4\u03C1\u03BF\u03BC\u03AE, \u03CC\u03C4\u03B1\u03BD \u03B7 \u03C3\u03C5\u03BD\u03BF\u03BB\u03B9\u03BA\u03AE \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03AF\u03C3\u03B7 \u03AE \u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03B7 \u03B1\u03C0\u03CC... edit_seq_time=\u0391\u03C6\u03B5\u03C4\u03B7\u03C1\u03AF\u03B1 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C5: edit_seq_time_tooltip_up=\u0393\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AE\u03C3\u03B5\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03B9\u03B1\u03B4\u03C1\u03BF\u03BC\u03AE, \u03BF \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B1\u03BB\u03CE\u03B8\u03B7\u03BA\u03B5 \u03B3\u03B9\u03B1 \u03C4\u03B9\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03B9\u03BA\u03C1\u03CC\u03C4\u03B5\u03C1\u03BF\u03C2 \u03B1\u03C0\u03CC... edit_seq_threshold_tooltip_down=\u0391\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AE\u03C3\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03B9\u03B1\u03B4\u03C1\u03BF\u03BC\u03AE \u03CC\u03C4\u03B1\u03BD \u03B7 \u03C3\u03C5\u03BD\u03BF\u03BB\u03B9\u03BA\u03AE \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C7\u03B1\u03BC\u03B7\u03BB\u03CC\u03C4\u03B5\u03C1\u03B7 \u03B1\u03C0\u03CC... edit_seq_time_tooltip_down=\u0391\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AE\u03C3\u03C4\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03B9\u03B1\u03B4\u03C1\u03BF\u03BC\u03AE, \u03CC\u03C4\u03B1\u03BD \u03BF \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B1\u03BB\u03CE\u03B8\u03B7\u03BA\u03B5 \u03B3\u03B9\u03B1 \u03C4\u03B9\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03B5\u03B3\u03B1\u03BB\u03CD\u03C4\u03B5\u03C1\u03BF\u03C2 \u03B1\u03C0\u03CC... edit_seq_condJump=\u0395\u03BE\u03B1\u03C1\u03C4\u03B7\u03BC\u03AD\u03BD\u03B1 \u03B2\u03AE\u03BC\u03B1\u03C4\u03B1 edit_seq_condJump_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03B5\u03B9\u03B4\u03B9\u03BA\u03AC \u03B2\u03AE\u03BC\u03B1\u03C4\u03B1 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03BA\u03C4\u03B5\u03BB\u03B5\u03C3\u03C4\u03BF\u03CD\u03BD \u03BC\u03CC\u03BD\u03BF \u03BA\u03AC\u03C4\u03C9 \u03B1\u03C0\u03CC \u03C3\u03C5\u03B3\u03BA\u03B5\u03BA\u03C1\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03CC\u03C1\u03BF\u03C5\u03C2 edit_seq_condJump_upper_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C4\u03BF\u03C5\u03C2 \u03CC\u03C1\u03BF\u03C5\u03C2 \u03B3\u03B9\u03B1 \u03BC\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5 \u03B1\u03BD\u03CE\u03C4\u03B5\u03C1\u03BF \u03B5\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF edit_seq_condJump_lower=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03BA\u03AC\u03C4\u03C9: edit_seq_condJump_upper=\u039C\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03AC\u03BD\u03C9: edit_seq_condJump_lower_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C4\u03BF\u03C5\u03C2 \u03CC\u03C1\u03BF\u03C5\u03C2 \u03B3\u03B9\u03B1 \u03BC\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5 \u03BA\u03B1\u03C4\u03CE\u03C4\u03B5\u03C1\u03BF \u03B5\u03C0\u03AF\u03C0\u03B5\u03B4\u03BF edit_seq_action_tooltip_fw=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B1\u03C4\u03AD\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF "\u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03BF" edit_seq_action_tooltip_bk=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B1\u03C4\u03AD\u03B8\u03B7\u03BA\u03B5 \u03C3\u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF "\u03C0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF" edit_seq_jump_tooltip=\u039A\u03B1\u03B8\u03BF\u03C1\u03AF\u03C3\u03C4\u03B5 \u03C4\u03BF \u03C3\u03C4\u03CC\u03C7\u03BF \u03C4\u03B7\u03C2 \u03BC\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7\u03C2 edit_seq_action_tooltip=\u0388\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 edit_seq_activity_tooltip=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03C0\u03BF\u03C5 \u03B1\u03BD\u03B1\u03C4\u03AD\u03B8\u03B7\u03BA\u03B5 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF \u03C4\u03B7\u03C2 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1\u03C2 edit_seq_tag_tooltip=\u0395\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03C9\u03C2 \u03C0\u03B1\u03C1\u03B1\u03C0\u03BF\u03BC\u03C0\u03AE \u03B3\u03B9\u03B1 \u03B1\u03C5\u03C4\u03CC \u03C4\u03BF \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF \u03C4\u03B7\u03C2 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1\u03C2 (\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC \u03C0\u03B5\u03B4\u03AF\u03BF) edit_seq_description_tooltip=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF\u03C5 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1\u03C2 (\u03C0\u03C1\u03BF\u03B1\u03B9\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC \u03C0\u03B5\u03B4\u03AF\u03BF) edit_seq_button_enabled_tooltip=\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03AE \u03B1\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03B2\u03AD\u03BB\u03BF\u03C5\u03C2 edit_seq_auto_tooltip=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03CC\u03C4\u03B1\u03BD \u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03CE\u03BD\u03B5\u03C4\u03B1\u03B9 edit_seq_delay_tooltip=\u0394\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1 \u03B1\u03BD\u03B1\u03BC\u03BF\u03BD\u03AE\u03C2 \u03C0\u03C1\u03B9\u03BD \u03C4\u03B7\u03BD \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 edit_color_dlgTitle=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03C7\u03C1\u03CE\u03BC\u03B1\u03C4\u03BF\u03C2 edit_media_renaming=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03C0\u03B5\u03C1\u03B9\u03BC\u03AD\u03BD\u03B5\u03C4\u03B5 \u03B5\u03BD\u03CC\u03C3\u03C9 \u03B7 \u03C0\u03B7\u03B3\u03AE \u03BC\u03B5\u03C4\u03B1\u03BD\u03BF\u03BC\u03AC\u03B6\u03B5\u03C4\u03B1\u03B9... edit_act_cell_width=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2: edit_act_cell_width_tooltip=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD (\u03C3\u03B5 \u03B5\u03B9\u03BA\u03BF\u03BD\u03BF\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1) edit_act_cell_height=\u038E\u03C8\u03BF\u03C2: edit_act_cell_height_tooltip=\u038E\u03C8\u03BF\u03C2 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD (\u03C3\u03B5 pixels) edit_act_hiddenWords=\u039A\u03C1\u03C5\u03BC\u03BC\u03AD\u03BD\u03B5\u03C2 \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2: edit_act_hiddenWords_tooltip=\u039B\u03AF\u03C3\u03C4\u03B1 \u03BA\u03C1\u03C5\u03BC\u03BC\u03AD\u03BD\u03C9\u03BD \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD \u03C4\u03BF\u03C5 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 edit_act_wordSearch_panelB=\u03A7\u03C1\u03AE\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 \u0392 edit_act_wordSearch_panelB_tooltip=\u03A4\u03B1 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03B1 \u03C4\u03BF\u03C5 \u03B4\u03B5\u03CD\u03C4\u03B5\u03C1\u03BF\u03C5 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C9\u03C2 \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2 \u03C0\u03BF\u03C5 \u03B2\u03C1\u03AD\u03B8\u03B7\u03BA\u03B1\u03BD edit_act_shaper_tooltip=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03B7 \u03BC\u03BF\u03C1\u03C6\u03AE \u03C4\u03BF\u03C5 \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03C4\u03AE \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03C3\u03C4\u03BF\u03BD \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 edit_act_num_cols_tooltip=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03C3\u03C4\u03B7\u03BB\u03CE\u03BD \u03C4\u03BF\u03C5 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 edit_act_num_rows_tooltip=\u0391\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03CE\u03BD \u03C4\u03BF\u03C5 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B1 edit_act_wildTransparent=\u038C\u03C1\u03B9\u03B1 \u03B4\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 edit_act_wildTransparent_tooltip=\u0391\u03BD\u03C4\u03B9\u03BC\u03B5\u03C4\u03CE\u03C0\u03B9\u03C3\u03B7 \u03C4\u03C9\u03BD \u03BF\u03C1\u03AF\u03C9\u03BD (\u03BC\u03B1\u03CD\u03C1\u03B1 \u03C0\u03BB\u03B1\u03AF\u03C3\u03B9\u03B1) \u03C9\u03C2 \u03B1\u03B4\u03CD\u03BD\u03B1\u03C4\u03B1 \u03C3\u03B7\u03BC\u03B5\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03B4\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 edit_act_behavior_scramble_times=\u039C\u03B5\u03AF\u03B3\u03BC\u03B1\u03C4\u03B1: edit_act_behavior_scramble_times_tooltip=\u03A0\u03CC\u03C3\u03B5\u03C2 \u03C6\u03BF\u03C1\u03AD\u03C2 \u03B8\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 \u03B1\u03BD\u03B1\u03BA\u03AC\u03C4\u03C9\u03BC\u03B1 edit_act_copy_title=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CE\u03BD \u03C3\u03C4\u03BF... edit_act_copy_attributes=\u03A7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03AC edit_act_copy_dest=\u0395\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C3\u03B5: edit_act_copy_style_main=\u039A\u03CD\u03C1\u03B9\u03BF \u03C0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF edit_act_copy_style_play=\u03A0\u03B1\u03C1\u03AC\u03B8\u03C5\u03C1\u03BF \u03B1\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AE\u03C2 edit_act_copy_activities=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03C1\u03BF\u03C0\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03BF\u03CD\u03BD: edit_act_copyAttributes=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B9\u03B4\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD edit_act_copyAttributes_keys=T edit_act_copyAttributes_tooltip=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CE\u03BD \u03C4\u03B7\u03C2 \u03C4\u03C1\u03AD\u03C7\u03BF\u03C5\u03C3\u03B1\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03C3\u03B5 \u03AC\u03BB\u03BB\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 edit_new_project_name=\u038C\u03BD\u03BF\u03BC\u03B1 \u03AD\u03C1\u03B3\u03BF\u03C5: edit_new_project_name_tooltip=\u03A3\u03CD\u03BD\u03C4\u03BF\u03BC\u03BF \u03C0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03B9\u03BA\u03CC \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 edit_new_project_filename=\u038C\u03BD\u03BF\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5: edit_new_project_filename_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5, \u03C7\u03C9\u03C1\u03AF\u03C2 \u03B5\u03C0\u03AD\u03BA\u03C4\u03B1\u03C3\u03B7 edit_new_project_folder=\u03A6\u03AC\u03BA\u03B5\u03BB\u03BF\u03C2: edit_new_project_folder_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C6\u03B1\u03BA\u03AD\u03BB\u03BF\u03C5 \u03CC\u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B1\u03C0\u03BF\u03B8\u03B7\u03BA\u03B5\u03C5\u03C4\u03B5\u03AF \u03C4\u03BF \u03AD\u03C1\u03B3\u03BF edit_new_project_folder_browse=\u03A0\u03B5\u03C1\u03B9\u03AE\u03B3\u03B7\u03C3\u03B7... edit_new_project_title=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BD\u03AD\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 JClic edit_new_project_err_empty=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u03A4\u03BF \u03AD\u03C1\u03B3\u03BF, \u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03BA\u03B1\u03B9 \u03BF \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03AD\u03B3\u03BA\u03C5\u03C1\u03B1 \u03BF\u03BD\u03CC\u03BC\u03B1\u03C4\u03B1. edit_new_project_warning_noEmptyFolder=\u0391\u03C5\u03C4\u03CC\u03C2 \u03BF \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF\u03C2 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03AE\u03B4\u03B7 \u03AD\u03BD\u03B1 \u03AC\u03BB\u03BB\u03BF \u03AD\u03C1\u03B3\u03BF \u03C4\u03BF\u03C5 Clic 3.0 \u03AE \u03C4\u03BF\u03C5 JClic. \u0393\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03C6\u03CD\u03B3\u03B5\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B1\u03BD\u03B1\u03C3\u03C4\u03AC\u03C4\u03C9\u03C3\u03B7, \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C4\u03B9\u03BC\u03CC\u03C4\u03B5\u03C1\u03BF \u03BD\u03B1 \u03B4\u03B9\u03B1\u03C4\u03B7\u03C1\u03B5\u03AF\u03C4\u03B5 \u03BA\u03AC\u03B8\u03B5 \u03AD\u03C1\u03B3\u03BF \u03C3\u03B5 \u03BE\u03B5\u03C7\u03C9\u03C1\u03B9\u03C3\u03C4\u03CC \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF, \u03B1\u03BD \u03BA\u03B1\u03B9 \u03B1\u03C5\u03C4\u03CC \u03B4\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03C5\u03C3\u03C4\u03B7\u03C1\u03CC\u03C2 \u03BA\u03B1\u03BD\u03CC\u03BD\u03B1\u03C2. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03B9\u03BA\u03AC \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C4\u03BF \u03BD\u03AD\u03BF \u03AD\u03C1\u03B3\u03BF \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC\u03BD \u03C4\u03BF\u03BD \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF; edit_new_project_err_folderCreation=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u0391\u03B4\u03CD\u03BD\u03B1\u03C4\u03B7 \u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03C4\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C6\u03B1\u03BA\u03AD\u03BB\u03BF\u03C5! edit_act_copy_err_noSelection=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u0394\u03B5\u03BD \u03B5\u03C0\u03B9\u03BB\u03AD\u03C7\u03B8\u03B7\u03BA\u03B5 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1! \u0393\u03B9\u03B1 \u03BD\u03B1 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03C3\u03C4\u03BF\u03CD\u03BD \u03C4\u03B1 \u03C5\u03C0\u03BF\u03B4\u03B5\u03B9\u03BA\u03BD\u03C5\u03CC\u03BC\u03B5\u03BD\u03B1 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03AC, \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03B5\u03C4\u03B5 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C4\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03AE \u03C4\u03B9\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C3\u03C4\u03B9\u03C2 \u03BF\u03C0\u03BF\u03AF\u03B5\u03C2 \u03B8\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 \u03B7 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE. edit_act_copy_action_prefix=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B9\u03B4\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03C3\u03C4\u03BF: edit_act_copy_margin=\u03A0\u03B5\u03C1\u03B9\u03B8\u03CE\u03C1\u03B9\u03BF edit_act_copy_bgColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C5\u03C0\u03BF\u03B2\u03AC\u03B8\u03C1\u03BF\u03C5 edit_act_copy_gradient=\u0394\u03B9\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7 edit_act_copy_bgImage=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5 edit_act_copy_border=\u03A0\u03B5\u03C1\u03AF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1 edit_act_copy_transparentBg=\u03A6\u03CC\u03BD\u03C4\u03BF \u03B4\u03B9\u03B1\u03C6\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 edit_act_copy_position=\u0398\u03AD\u03C3\u03B7 edit_act_copy_messages=\u039C\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1 edit_act_copy_messages_ini=\u03A3\u03C4\u03C5\u03BB \u03B1\u03C1\u03C7\u03B9\u03BA\u03BF\u03CD \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03BF\u03C2 edit_act_copy_messages_end=\u03A3\u03C4\u03C5\u03BB \u03C4\u03B5\u03BB\u03B9\u03BA\u03BF\u03CD \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03BF\u03C2 edit_act_copy_messages_err=\u03A3\u03C4\u03C5\u03BB \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C3\u03C6\u03AC\u03BB\u03BC\u03B1\u03C4\u03BF\u03C2 edit_act_copy_reports=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 edit_act_copy_rep_include=\u03A3\u03C5\u03BC\u03C0\u03B5\u03C1\u03B9\u03AD\u03BB\u03B1\u03B2\u03B5 \u03C4\u03B7\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03C3\u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 edit_act_copy_rep_actions=\u039A\u03B1\u03C4\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03BD\u03B5\u03C1\u03B3\u03B5\u03B9\u03CE\u03BD edit_act_copy_interface=\u0394\u03B9\u03B5\u03C0\u03B1\u03C6\u03AE \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 edit_act_copy_skin=\u0398\u03AD\u03BC\u03B1 edit_act_copy_evSounds=\u0389\u03C7\u03BF\u03B9 \u03C3\u03C5\u03BC\u03B2\u03AC\u03BD\u03C4\u03C9\u03BD edit_act_copy_counters=\u039C\u03B5\u03C4\u03C1\u03B7\u03C4\u03AD\u03C2 edit_act_copy_cTime=\u03A7\u03C1\u03BF\u03BD\u03CC\u03BC\u03B5\u03C4\u03C1\u03BF edit_act_copy_maxTime=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2 edit_act_copy_cTries=\u039C\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE\u03C2 \u03C0\u03C1\u03BF\u03C3\u03C0\u03B1\u03B8\u03B5\u03B9\u03CE\u03BD edit_act_copy_maxTries=\u039C\u03AD\u03C3\u03B9\u03C3\u03C4\u03B5\u03C2 \u03C0\u03C1\u03BF\u03C3\u03C0\u03AC\u03B8\u03B5\u03B9\u03B5\u03C2 edit_act_copy_cScore=\u039C\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE\u03C2 \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1\u03C2 edit_act_copy_scramble=\u03A0\u03CC\u03C3\u03B5\u03C2 \u03C6\u03BF\u03C1\u03AD\u03C2 \u03B8\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 \u03C4\u03BF \u03B1\u03BD\u03B1\u03BA\u03AC\u03C4\u03C9\u03BC\u03B1 edit_act_copy_buttons=\u03A0\u03BB\u03AE\u03BA\u03C4\u03C1\u03B1 edit_act_copy_btnHelp=\u03A0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF \u03B2\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1\u03C2 edit_act_copy_btnInfo=\u03A0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2 edit_act_copy_grids=\u03A0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03B1 edit_act_copy_gridA=\u03A3\u03C4\u03C5\u03BB \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2 \u0391 edit_act_copy_gridB=\u03A3\u03C4\u03C5\u03BB \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2 \u0392 edit_act_copy_textGrid=\u03A3\u03C4\u03C5\u03BB \u03C0\u03BB\u03B5\u03B3\u03BC\u03AC\u03C4\u03C9\u03BD \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03C9\u03BD edit_act_copy_text=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 edit_act_copy_fontFace=\u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 edit_act_copy_fontSize=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 edit_act_copy_fontStyle=\u03A3\u03C4\u03C5\u03BB \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 edit_act_copy_textColour=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03BA\u03CD\u03C1\u03B9\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 edit_act_copy_textTargetColour=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03C3\u03C7\u03AD\u03B4\u03B9\u03BF \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1\u03C2 \u03C4\u03BF\u03C5 JClic \u03B1\u03C0\u03CC \u03CC\u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B5\u03B9\u03C3\u03B1\u03C7\u03B8\u03BF\u03CD\u03BD \u03BF\u03B9 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 edit_act_copy_textErrorColour=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C3\u03C6\u03B1\u03BB\u03BC\u03AC\u03C4\u03C9\u03BD edit_act_copy_tabSpace=\u0394\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1 \u03C3\u03C4\u03B7\u03BB\u03BF\u03B8\u03AD\u03C4\u03B7 edit_act_copy_messages_prev=\u03A3\u03C4\u03C5\u03BB \u03C0\u03C1\u03BF\u03B7\u03B3\u03BF\u03CD\u03BC\u03B5\u03BD\u03BF\u03C5 \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03BF\u03C2 edit_act_changeType=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03C4\u03CD\u03C0\u03BF\u03C5 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_newActivity_class_tooltip=\u03A0\u03BB\u03AE\u03C1\u03B5\u03C2 \u03CC\u03BD\u03BF\u03BC\u03B1 \u03B5\u03AF\u03B4\u03BF\u03C5\u03C2 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 (\u03BC\u03CC\u03BD\u03BF \u03B3\u03B9\u03B1 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2!) edit_act_newActivity_other=\u0386\u03BB\u03BB\u03BF... edit_act_newActivity_info=\u039F\u03B9 \u03C0\u03C1\u03BF\u03C7\u03C9\u03C1\u03B7\u03BC\u03AD\u03BD\u03BF\u03B9 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03B5\u03C0\u03AF\u03C3\u03B7\u03C2 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AE\u03C3\u03BF\u03C5\u03BD \u03B4\u03B9\u03BA\u03AD\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03BF JClic. \u0393\u03C1\u03AC\u03C8\u03C4\u03B5 \u03C4\u03BF \u03C0\u03BB\u03AE\u03C1\u03B5\u03C2 \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03B5\u03AF\u03B4\u03BF\u03C5\u03C2 \u03BC\u03B5 \u03C4\u03BF \u03C0\u03C1\u03CC\u03B8\u03B7\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03C0\u03B1\u03BA\u03AD\u03C4\u03BF\u03C5 (\u03C0.\u03C7. "com.acme.activities.FooActivity"). \u03A4\u03B1 \u03B5\u03AF\u03B4\u03B7 \u03C4\u03C9\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B5\u03C0\u03AD\u03BA\u03C4\u03B1\u03C3\u03B7 edu.xtec.jclic.Activity \u03BA\u03B1\u03B9 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03C1\u03BF\u03C3\u03C0\u03B5\u03BB\u03AC\u03C3\u03B9\u03BC\u03B1 \u03B1\u03C0\u03CC \u03C4\u03B7 JVM. edit_act_newActivity_name=\u039F\u03BD\u03BF\u03BC\u03B1\u03C3\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_act_newActivity_name_tooltip=\u039A\u03AC\u03B8\u03B5 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9 \u03AD\u03BD\u03B1 \u03BC\u03BF\u03BD\u03B1\u03B4\u03B9\u03BA\u03CC \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C3\u03C4\u03BF \u03AD\u03C1\u03B3\u03BF edit_act_changeType_warning=

\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE: \u0397 \u03B1\u03BB\u03BB\u03B1\u03B3\u03AE \u03C4\u03BF\u03C5 \u03C4\u03CD\u03C0\u03BF\u03C5 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03C0\u03C1\u03BF\u03BA\u03B1\u03BB\u03AD\u03C3\u03B5\u03B9 \u03B1\u03C0\u03CE\u03BB\u03B5\u03B9\u03B1 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CE\u03BD \u03BA\u03B1\u03B9 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03C9\u03BD \u03C4\u03B7\u03C2 \u03C4\u03C1\u03AD\u03C7\u03BF\u03C5\u03C3\u03B1\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2. \u03A7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03C4\u03B5 \u03C4\u03BF \u03BC\u03B5 \u03C0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE!

 

applet_codebase=\u03A4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C3\u03AF\u03B1 \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03C4\u03BF\u03C5 JClic: applet_codebase_tooltip=URL \u03C0\u03BF\u03C5 \u03C3\u03C4\u03BF\u03C7\u03B5\u03CD\u03B5\u03B9 \u03C3\u03B5 \u03AD\u03BD\u03B1\u03BD \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF \u03BC\u03B5 \u03C4\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03C4\u03B1 \u03C3\u03B5\u03BD\u03AC\u03C1\u03B9\u03B1 \u03C4\u03BF\u03C5 JClic applet_prev_text=\u039A\u03CE\u03B4\u03B9\u03BA\u03B1\u03C2 HTML \u03C0\u03C1\u03B9\u03BD: #Text to be displayed below the applet. HTM code allowed. applet_prev_text_tooltip=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03AE \u03BA\u03CE\u03B4\u03B9\u03BA\u03B1\u03C2 HTML \u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C4\u03B7\u03B8\u03B5\u03AF \u03C0\u03C1\u03B9\u03BD \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE applet_post_text=\u039A\u03CE\u03B4\u03B9\u03BA\u03B1\u03C2 HTML \u03BC\u03B5\u03C4\u03AC: applet_post_text_tooltip=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03AE \u03BA\u03CE\u03B4\u03B9\u03BA\u03B1\u03C2 HTML \u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C4\u03B7\u03B8\u03B5\u03AF \u03BC\u03B5\u03C4\u03AC \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE applet_size=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2: applet_size_tooltip=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03BA\u03B1\u03B9 \u03CD\u03C8\u03BF\u03C2 \u03C4\u03B7\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2, \u03C3\u03B5 \u03B1\u03C0\u03CC\u03BB\u03C5\u03C4\u03B5\u03C2 \u03AE \u03C0\u03BF\u03C3\u03BF\u03C3\u03C4\u03B9\u03B1\u03AF\u03B5\u03C2 \u03C4\u03B9\u03BC\u03AD\u03C2. applet_page_title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2: applet_page_title_tooltip=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03B5\u03C0\u03AC\u03BD\u03C9 \u03BC\u03AD\u03C1\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE applet_created_info=\u0397 \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1 "%s" \u03AD\u03C7\u03B5\u03B9 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03B7\u03B8\u03B5\u03AF \u03BC\u03B5 \u03B5\u03C0\u03B9\u03C4\u03C5\u03C7\u03AF\u03B1. applet_created_prompt=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03C4\u03BF \u03B1\u03BD\u03BF\u03AF\u03BE\u03B5\u03C4\u03B5 \u03BC\u03B5 \u03C4\u03BF\u03BD \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE \u03C4\u03CE\u03C1\u03B1; action_createHTML_caption=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2.. applet_create_title=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BC\u03B9\u03B1\u03C2 HTML \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03BC\u03B5 \u03BC\u03B9\u03BA\u03C1\u03BF\u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C4\u03BF\u03C5 Jclic action_createHTML_tooltip=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BC\u03B9\u03B1\u03C2 HTML \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 \u03BC\u03B5 \u03BC\u03B9\u03BA\u03C1\u03BF\u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03C4\u03C1\u03AD\u03C7\u03BF\u03BD \u03AD\u03C1\u03B3\u03BF applet_filename=\u038C\u03BD\u03BF\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5: applet_filename_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C4\u03BF\u03C5 HTML \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03B7\u03B8\u03B5\u03AF action_createHTML_keys=H* settings_applet=\u039C\u03B9\u03BA\u03C1\u03BF\u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE settings_applet_tooltip=\u03A0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03C4\u03B9\u03BC\u03AD\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03C9\u03BD applet_bgcolor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5: applet_bgcolor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C6\u03CC\u03BD\u03C4\u03BF\u03C5 HTML \u03B9\u03C3\u03C4\u03BF\u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 applet_centered=\u039A\u03B5\u03BD\u03C4\u03C1\u03B1\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF applet_centered_tooltip=\u03A4\u03BF\u03C0\u03BF\u03B8\u03B5\u03C4\u03AE\u03C3\u03C4\u03B5 \u03C4\u03B7\u03BD \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03BA\u03B5\u03BD\u03C4\u03C1\u03B1\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B7 \u03BF\u03C1\u03B9\u03B6\u03CC\u03BD\u03C4\u03B9\u03B1 applet_width_tooltip=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2 (\u03B1\u03C0\u03CC\u03BB\u03C5\u03C4\u03B7 \u03AE \u03C0\u03BF\u03C3\u03BF\u03C3\u03C4\u03B9\u03B1\u03AF\u03B1 \u03C4\u03B9\u03BC\u03AE) applet_height_tooltip=\u038E\u03C8\u03BF\u03C2 \u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE\u03C2 (\u03B1\u03C0\u03CC\u03BB\u03C5\u03C4\u03B7 \u03AE \u03C0\u03BF\u03C3\u03BF\u03C3\u03C4\u03B9\u03B1\u03AF\u03B1 \u03C4\u03B9\u03BC\u03AE) applet_exitUrl=\u039A\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03AD\u03BE\u03BF\u03B4\u03BF, \u03BC\u03B5\u03C4\u03AC\u03B2\u03B1\u03C3\u03B7 \u03C3\u03B5: applet_exitUrl_tooltip=URL \u03C3\u03C4\u03B7\u03BD \u03BF\u03C0\u03BF\u03AF\u03B1 \u03B8\u03B1 \u03B1\u03BD\u03B1\u03BA\u03B1\u03C4\u03B5\u03C5\u03B8\u03CD\u03BD\u03B5\u03C4\u03B1\u03B9 \u03B7 \u03C0\u03B5\u03C1\u03B9\u03AE\u03B3\u03B7\u03C3\u03B7 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03AD\u03BE\u03BF\u03B4\u03BF \u03C4\u03BF\u03C5 JClic. applet_infoFrame=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C0\u03BB\u03B1\u03B9\u03C3\u03AF\u03BF\u03C5 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD: applet_infoFrame_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C0\u03BB\u03B1\u03B9\u03C3\u03AF\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03C4\u03B7\u03BD \u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C3\u03C7\u03B5\u03C4\u03B9\u03BA\u03BF\u03CD \u03BC\u03B5 \u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF "\u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 action_createInstaller_caption=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B5\u03B3\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AC\u03C4\u03B7 \u03AD\u03C1\u03B3\u03BF\u03C5... action_createInstaller_keys=I* action_createInstaller_tooltip=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03C3\u03B5\u03BD\u03B1\u03C1\u03AF\u03BF\u03C5 \u03B5\u03B3\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7\u03C2 \u03AD\u03C1\u03B3\u03BF\u03C5 \u03B3\u03B9\u03B1 \u03C4\u03BF\u03BD \u03B1\u03BD\u03B1\u03C0\u03B1\u03C1\u03B1\u03B3\u03C9\u03B3\u03AD\u03B1 \u03C4\u03BF\u03C5 JClic installer_caption=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C3\u03B5\u03BD\u03B1\u03C1\u03AF\u03BF\u03C5 \u03B5\u03B3\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AC\u03C4\u03B7 \u03AD\u03C1\u03B3\u03BF\u03C5 installer_title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2: installer_title_tooltip=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2 \u03AD\u03C1\u03B3\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03B9\u03C3\u03C4\u03B5\u03AF \u03C3\u03C4\u03BF\u03BD \u03BF\u03B4\u03B7\u03B3\u03CC \u03B5\u03B3\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7\u03C2 installer_authors=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03BF\u03AF: installer_authors_tooltip=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03CC\u03C2/\u03BF\u03AF \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 (\u03C3\u03CD\u03BD\u03C4\u03BF\u03BC\u03BF \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF) installer_folder=\u03A6\u03AC\u03BA\u03B5\u03BB\u03BF\u03C2: installer_folder_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C6\u03B1\u03BA\u03AD\u03BB\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03C0\u03C1\u03BF\u03C4\u03B5\u03AF\u03BD\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C0\u03CC \u03C4\u03BF\u03BD \u03BF\u03B4\u03B7\u03B3\u03CC \u03B5\u03B3\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7\u03C2 installer_files=\u0386\u03C1\u03C7\u03B5\u03B9\u03B1 \u03B3\u03B9\u03B1 \u03B1\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE: installer_files_tooltip=\u0391\u03C1\u03C7\u03B5\u03AF\u03B1 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B1\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03BF\u03CD\u03BD \u03B1\u03C0\u03CC \u03C4\u03BF\u03BD \u03B5\u03B3\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AC\u03C4\u03B7 installer_files_available=\u0394\u03B9\u03B1\u03B8\u03AD\u03C3\u03B9\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 installer_files_selected=\u0395\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 installer_files_add=>> \u03C0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 >> installer_files_add_tooltip=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C3\u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 installer_files_remove=<<\u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE<< installer_files_remove_tooltip=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 installer_button=\u039A\u03BF\u03C5\u03BC\u03C0\u03AF \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7\u03C2 installer_button_tooltip=\u039F\u03B9 \u03B9\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C4\u03BF \u03BA\u03BF\u03C5\u03BC\u03C0\u03B9\u03BF\u03CD \u03C0\u03B1\u03C1\u03BF\u03C5\u03C3\u03B9\u03AC\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03B7 \u03B2\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 \u03C4\u03BF\u03C5 \u03C0\u03C1\u03BF\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 installer_button_project=\u039A\u03CD\u03C1\u03B9\u03BF \u03AD\u03C1\u03B3\u03BF installer_button_project_tooltip=\u0388\u03C1\u03B3\u03BF \u03C4\u03BF\u03C5 JClic \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03C6\u03BF\u03C1\u03C4\u03C9\u03B8\u03B5\u03AF \u03BC\u03B5 \u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF installer_button_text=\u0395\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1: installer_button_text_tooltip=\u0395\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1 \u03C3\u03CD\u03BD\u03C4\u03BF\u03BC\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03B5\u03C3\u03C9\u03C4\u03B5\u03C1\u03B9\u03BA\u03CC \u03C4\u03BF\u03C5 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 installer_button_icon=\u0395\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF: installer_button_icon_tooltip=\u0395\u03B9\u03BA\u03CC\u03BD\u03B1 \u03C0\u03BF\u03C5 \u03B8\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03C9\u03C2 \u03B5\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5. \u0391\u03BD \u03BC\u03B5\u03AF\u03BD\u03B5\u03B9 \u03BA\u03B5\u03BD\u03CC \u03B8\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03B8\u03B5\u03AF \u03C4\u03BF \u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF \u03B5\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF \u03C4\u03BF\u03C5 JClic. installer_button_description=\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE installer_button_description_tooltip=\u03A3\u03C5\u03BC\u03B2\u03BF\u03C5\u03BB\u03AE \u03BF\u03B8\u03CC\u03BD\u03B7\u03C2 \u03C0\u03BF\u03C5 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF installer_error_noTitle=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u039B\u03B5\u03AF\u03C0\u03B5\u03B9 \u03BF \u03C4\u03AF\u03C4\u03BB\u03BF\u03C2 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 installer_error_noBaseFolder=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u039B\u03B5\u03AF\u03C0\u03B5\u03B9 \u03C4\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C6\u03B1\u03BA\u03AD\u03BB\u03BF\u03C5 installer_error_noFilesSelected=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u039C\u03B7 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03B1 installer_error_noButtonText=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u039B\u03B5\u03AF\u03C0\u03B5\u03B9 \u03B7 \u03B5\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C4\u03BF\u03C5 \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF\u03C5 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\u03C2 installer_error_projectNotInFiles=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1: \u03A4\u03BF \u03AD\u03C1\u03B3\u03BF \u03C0\u03BF\u03C5 \u03AD\u03C7\u03B5\u03B9 \u03B1\u03BD\u03B1\u03C4\u03B5\u03B8\u03B5\u03AF \u03C3\u03C4\u03BF \u03C0\u03BB\u03AE\u03BA\u03C4\u03C1\u03BF \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\u03C2, \u03B4\u03B5\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03C3\u03C4\u03B7 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03C4\u03C9\u03BD \u03C0\u03C1\u03BF\u03C2 \u03B1\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD applet_page_full=\u039C\u03B9\u03BA\u03C1\u03BF\u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03C0\u03BB\u03AE\u03C1\u03BF\u03C5\u03C2 \u03C3\u03B5\u03BB\u03AF\u03B4\u03B1\u03C2 applet_page_mixed=\u039C\u03B9\u03BA\u03C1\u03BF\u03B5\u03C6\u03B1\u03C1\u03BC\u03BF\u03B3\u03AE \u03BC\u03B5 \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03B4\u03B9\u03B1\u03C3\u03C4\u03AC\u03C3\u03B5\u03B9\u03C2 edit_text_align_left=\u03A3\u03C4\u03BF\u03AF\u03C7\u03B9\u03C3\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03C1\u03B9\u03C3\u03C4\u03B5\u03C1\u03AC edit_text_align_center=\u03A3\u03C4\u03BF\u03AF\u03C7\u03B9\u03C3\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C3\u03C4\u03BF \u03BA\u03AD\u03BD\u03C4\u03C1\u03BF edit_text_align_right=\u03A3\u03C4\u03BF\u03AF\u03C7\u03B9\u03C3\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B4\u03B5\u03BE\u03B9\u03AC edit_text_act_target_toggle=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03AE \u03B1\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C3\u03C4\u03CC\u03C7\u03BF\u03C5 edit_text_act_insertCell=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03B5\u03BD\u03CC\u03C2 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD edit_text_act_content=\u03A0\u03B5\u03C1\u03B9\u03B5\u03C7\u03CC\u03BC\u03B5\u03BD\u03BF edit_text_act_style=\u03A3\u03C4\u03C5\u03BB edit_cell_size=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03BA\u03B5\u03BB\u03B9\u03BF\u03CD: edit_project_orphanActivities=\u039F\u03B9 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C0\u03BF\u03C5 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03BF\u03CD\u03BD \u03B4\u03B5\u03BD \u03C0\u03B5\u03C1\u03B9\u03BB\u03B1\u03BC\u03B2\u03AC\u03BD\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03B5 \u03BA\u03B1\u03BC\u03AF\u03B1 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5. \u0391\u03C5\u03C4\u03CC \u03C3\u03B7\u03BC\u03B1\u03AF\u03BD\u03B5\u03B9 \u03C0\u03C9\u03C2 \u03B4\u03B5\u03BD \u03B8\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9: edit_project_orphanMedia=\u03A4\u03B1 \u03C0\u03B1\u03C1\u03B1\u03BA\u03AC\u03C4\u03C9 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03B1 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD \u03B4\u03B5\u03BD \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03B1\u03C0\u03B5\u03C5\u03B8\u03B5\u03AF\u03B1\u03C2 \u03C3\u03B5 \u03BA\u03B1\u03BC\u03AF\u03B1 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1: edit_project_orphanActivities_prompt=\u0398\u03AD\u03BB\u03B5\u03B9\u03C2 \u03BD\u03B1 \u03C0\u03C1\u03BF\u03C3\u03C4\u03B5\u03B8\u03BF\u03CD\u03BD \u03C3\u03C4\u03BF \u03C4\u03AD\u03BB\u03BF\u03C2 \u03C4\u03B7\u03C2 \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1\u03C2 \u03C4\u03B7\u03C2 \u03C4\u03B5\u03BB\u03B5\u03C5\u03C4\u03B1\u03AF\u03B1\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2; edit_project_orphanMedia_prompt=\u0398\u03AD\u03BB\u03B5\u03B9\u03C2 \u03BD\u03B1 \u03C4\u03B1 \u03B1\u03C6\u03B1\u03B9\u03C1\u03AD\u03C3\u03B5\u03B9\u03C2; edit_project_orphanMedia_title=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03BC\u03B7 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03C9\u03BD \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD edit_project_orphanActivities_title=\u039F\u03C1\u03C6\u03B1\u03BD\u03AD\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 edit_media_refreshAll=\u0391\u03BD\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03BC\u03AD\u03C3\u03C9\u03BD edit_media_refreshAll_tooltip=\u0395\u03BD\u03B7\u03BC\u03AD\u03C1\u03C9\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C0\u03BF\u03BB\u03C5\u03BC\u03B5\u03C3\u03B9\u03BA\u03CE\u03BD \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5 \u03B5\u03C0\u03B1\u03BD\u03B1\u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03C4\u03C9\u03BD \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03C4\u03BF\u03C5\u03C2 edit_media_refreshAll_keys=R* edit_media_refreshAll_working=\u0391\u03BD\u03B1\u03B2\u03AC\u03B8\u03BC\u03B9\u03C3\u03B7 \u03BC\u03AD\u03C3\u03C9\u03BD... edit_media_exportAll=\u0395\u03BE\u03B1\u03B3\u03C9\u03B3\u03AE \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03BC\u03AD\u03C3\u03C9\u03BD edit_media_exportAll_tooltip=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C3\u03B5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03C4\u03C9\u03BD \u03C0\u03BF\u03BB\u03C5\u03BC\u03B5\u03C3\u03B9\u03BA\u03CE\u03BD \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD edit_media_exportAll_keys=\u03A7* edit_shape_select=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE edit_shape_addPoint=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C3\u03B7\u03BC\u03B5\u03AF\u03BF\u03C5 edit_shape_deletePoint=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE edit_shape_drawRect=\u03A3\u03C7\u03B5\u03B4\u03AF\u03B1\u03C3\u03B7 \u03C4\u03B5\u03C4\u03C1\u03B1\u03C0\u03BB\u03B5\u03CD\u03C1\u03BF\u03C5 edit_shape_drawEllipse=\u03A3\u03C7\u03B5\u03B4\u03AF\u03B1\u03C3\u03B7 \u03AD\u03BB\u03BB\u03B5\u03B9\u03C8\u03B7\u03C2 edit_shape_drawPoly=\u03A3\u03C7\u03B5\u03B4\u03AF\u03B1\u03C3\u03B7 \u03C0\u03BF\u03BB\u03C5\u03B3\u03CE\u03BD\u03BF\u03C5 edit_shape_toLine=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AE edit_shape_toBezier=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u03BA\u03B1\u03BC\u03C0\u03CD\u03BB\u03B7 Bezier edit_shape_toQuad=\u039C\u03B5\u03C4\u03B1\u03C4\u03C1\u03BF\u03C0\u03AE \u03C3\u03B5 \u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03BF\u03B2\u03AC\u03B8\u03BC\u03B9\u03B1 \u03BA\u03B1\u03BC\u03C0\u03CD\u03BB\u03B7 edit_shape_rLeft=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE \u03B1\u03C1\u03B9\u03C3\u03C4\u03B5\u03C1\u03AC edit_shape_rRight=\u03A0\u03B5\u03C1\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE \u03B4\u03B5\u03BE\u03B9\u03AC edit_shape_expand=\u0391\u03BD\u03AC\u03C0\u03C4\u03C5\u03BE\u03B7 edit_shape_contract=\u0391\u03C0\u03BF\u03BC\u03AC\u03BA\u03C1\u03C5\u03BD\u03C3\u03B7 edit_shape_zoomIn=\u039C\u03B5\u03B3\u03AD\u03B8\u03C5\u03BD\u03C3\u03B7 edit_shape_zoomOut=\u03A3\u03BC\u03AF\u03BA\u03C1\u03C5\u03BD\u03C3\u03B7 edit_shape_aproxPoints=\u03A3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03BA\u03BF\u03BD\u03C4\u03B9\u03BD\u03CE\u03BD \u03C3\u03B7\u03BC\u03B5\u03AF\u03C9\u03BD edit_shape_showPoints=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C3\u03B7\u03BC\u03B5\u03AF\u03C9\u03BD edit_shape_showPoints_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u0391\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03C3\u03B7\u03BC\u03B5\u03AF\u03C9\u03BD edit_shape_gridSize=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2: edit_shape_hideGrid=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7/\u0391\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2 edit_shape_magnetRadius=\u0391\u03BA\u03C4\u03AF\u03BD\u03B1 \u03BC\u03B1\u03B3\u03BD\u03AE\u03C4\u03B7: edit_shape_elements=\u039A\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03B1 edit_shape_elemName=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 edit_shape_magnetRadius_tooltip=\u0391\u03BA\u03C4\u03AF\u03BD\u03B1 \u03B4\u03C1\u03AC\u03C3\u03B7\u03C2 \u03C4\u03BF\u03C5 \u03BC\u03B1\u03B3\u03BD\u03AE\u03C4\u03B7, \u03CC\u03C4\u03B1\u03BD \u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 edit_shape_gridSize_tooltip=\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2 edit_mc_activity=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1: edit_mc_sequence=\u0391\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1: edit_mc_url=URL: edit_mc_project=\u0388\u03C1\u03B3\u03BF: edit_mc_activity_selection=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 edit_mc_sequence_selection=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03B1\u03BA\u03BF\u03BB\u03BF\u03C5\u03B8\u03AF\u03B1\u03C2 edit_mc_err_nullContent=\u0391\u03BD\u03B5\u03C0\u03B1\u03C1\u03BA\u03AE \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1! edit_act_arrowColor=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03B2\u03AD\u03BB\u03BF\u03C5\u03C2: edit_act_arrowColor_tooltip=\u03A7\u03C1\u03CE\u03BC\u03B1 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B1\u03C0\u03CC \u03C4\u03BF\u03BD \u03C3\u03C5\u03BD\u03C4\u03AC\u03BA\u03C4\u03B7 \u03B3\u03B9\u03B1 \u03C4\u03BF\u03BD \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03BC\u03CC \u03C4\u03C9\u03BD \u03B2\u03B5\u03BB\u03CE\u03BD (\u03CC\u03C7\u03B9 \u03B1\u03BA\u03C1\u03B9\u03B2\u03CE\u03C2, \u03B5\u03C0\u03B5\u03B9\u03B4\u03AE \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03BC\u03B9\u03B1 XOR \u03BC\u03AC\u03C3\u03BA\u03B1) edit_act_editActivity=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1... edit_act_editActivity_tooltip=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C4\u03B7\u03C2 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 action_saveFileAs_caption=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C9\u03C2... action_saveFileAs_keys=AA action_saveFileAs_tooltip=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C4\u03B7\u03C2 \u03C4\u03C1\u03AD\u03C7\u03BF\u03C5\u03C3\u03B1\u03C2 \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1\u03C2 \u03BC\u03B5 \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC \u03CC\u03BD\u03BF\u03BC\u03B1 edit_act_behavior_block=\u03A3\u03C5\u03BC\u03C0\u03B5\u03C1\u03B9\u03C6\u03BF\u03C1\u03AC edit_act_behavior=\u03A3\u03C5\u03BC\u03C0\u03B5\u03C1\u03B9\u03C6\u03BF\u03C1\u03AC edit_act_behavior_drag=\u03A3\u03CD\u03C1\u03C3\u03B9\u03BC\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03C9\u03BD edit_act_behavior_drag_tooltip=\u03A3\u03CD\u03C1\u03B5 \u03C4\u03B1 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03B1 \u03B1\u03BD\u03C4\u03AF \u03BD\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03AE\u03C3\u03B5\u03B9\u03C2 \u03C4\u03B7 \u03B3\u03C1\u03B1\u03BC\u03BC\u03AE \u03AD\u03BD\u03C9\u03C3\u03B7\u03C2 edit_act_behavior_order=\u0388\u03BB\u03B5\u03B3\u03C7\u03BF\u03C2 \u03C3\u03B5\u03B9\u03C1\u03AC\u03C2 \u03BB\u03CD\u03C3\u03B5\u03C9\u03BD edit_act_behavior_order_tooltip=\u03A4\u03B1 \u03BA\u03B5\u03BB\u03B9\u03AC \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03BB\u03C5\u03B8\u03BF\u03CD\u03BD \u03BC\u03B5 \u03C3\u03B5\u03B9\u03C1\u03AC edit_act_scramble=\u0391\u03BD\u03B1\u03BA\u03AC\u03C4\u03C9\u03BC\u03B1 \u03CC\u03BB\u03C9\u03BD action_importActivities_caption=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD... action_importActivities_keys=I* action_importActivities_tooltip=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03B1\u03C0\u03CC \u03AC\u03BB\u03BB\u03BF \u03C3\u03C7\u03AD\u03B4\u03B9\u03BF \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1\u03C2 import_warn_samefile=\u03A4\u03BF \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03B1\u03BD\u03C4\u03B9\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF \u03C3\u03C4\u03BF \u03C4\u03C1\u03AD\u03C7\u03BF\u03BD \u03AD\u03C1\u03B3\u03BF. \u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03BC\u03C0\u03BF\u03C1\u03BF\u03CD\u03BD \u03BD\u03B1 \u03B5\u03B9\u03C3\u03B1\u03C7\u03B8\u03BF\u03CD\u03BD \u03BC\u03CC\u03BD\u03BF \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03CE\u03BD \u03AD\u03C1\u03B3\u03C9\u03BD. \u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03AD\u03BD\u03B1 \u03AC\u03BB\u03BB\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF \u03AD\u03C1\u03B3\u03BF\u03C5. import_selectActivities=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03BC\u03B9\u03B1 \u03AE \u03C0\u03B5\u03C1\u03B9\u03C3\u03C3\u03CC\u03C4\u03B5\u03C1\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03B3\u03B9\u03B1 \u03B5\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03C3\u03C4\u03BF \u03B5\u03BD\u03B5\u03C1\u03B3\u03CC \u03C3\u03C7\u03AD\u03B4\u03B9\u03BF \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1\u03C2 import_importing=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE... import_checkdep=\u0388\u03BB\u03B5\u03B3\u03C7\u03BF\u03C2 \u03B5\u03BE\u03B1\u03C1\u03C4\u03AE\u03C3\u03B5\u03C9\u03BD import_impmedia=\u0395\u03B9\u03C3\u03B1\u03B3\u03C9\u03B3\u03AE \u03BC\u03AD\u03C3\u03C9\u03BD import_impact=\u0395\u03B9\u03C3\u03B1\u03B3\u03CC\u03BC\u03B5\u03BD\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 import_selectProject=\u0395\u03C0\u03B9\u03BB\u03AD\u03BE\u03C4\u03B5 \u03C4\u03BF \u03C3\u03C7\u03AD\u03B4\u03B9\u03BF \u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1\u03C2 \u03C4\u03BF\u03C5 JClic \u03B1\u03C0\u03CC \u03CC\u03C0\u03BF\u03C5 \u03B8\u03B1 \u03B5\u03B9\u03C3\u03B1\u03C7\u03B8\u03BF\u03CD\u03BD \u03BF\u03B9 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 edit_tagRep_tags=\u03A3\u03B7\u03BC\u03AC\u03BD\u03C3\u03B5\u03B9\u03C2 \u03B5\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1\u03C2 edit_tagRep_tagStart=\u0391\u03C1\u03C7\u03AE \u03C3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7\u03C2 edit_tagRep_tagStart_tooltip=\u03A3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03C3\u03C4\u03B7\u03BD \u03B1\u03C1\u03C7\u03AE \u03C4\u03B7\u03C2 \u03C3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7\u03C2 edit_tagRep_tagEnd=\u03A4\u03AD\u03BB\u03BF\u03C2 \u03C3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7\u03C2 edit_tagRep_tagEnd_tooltip=\u03A3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7 \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03C4\u03AD\u03BB\u03BF\u03C2 \u03C4\u03B7\u03C2 \u03C3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7\u03C2 edit_tagRep_file=\u0391\u03C1\u03C7\u03B5\u03AF\u03BF edit_tagRep_fileName=\u0391\u03C1\u03C7\u03B5\u03AF\u03BF \u03AE \u03B9\u03C3\u03C4\u03BF\u03C4\u03CC\u03C0\u03BF\u03C2 edit_tagRep_fileName_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03AE URL \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03C4\u03B9\u03C2 \u03C4\u03B9\u03BC\u03AD\u03C2, \u03BF\u03B9 \u03BF\u03C0\u03BF\u03AF\u03B5\u03C2 \u03B8\u03B1 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AE\u03C3\u03BF\u03C5\u03BD \u03C4\u03B9\u03C2 \u03B5\u03C4\u03B9\u03BA\u03AD\u03C4\u03B5\u03C2 edit_tagRep_charset=\u03A3\u03B5\u03C4 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD edit_tagRep_charset_tooltip=\u039A\u03C9\u03B4\u03B9\u03BA\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03BF\u03B9 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03BF\u03CD\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF edit_tagRep_browseFile=\u03A0\u03B5\u03C1\u03B9\u03AE\u03B3\u03B7\u03C3\u03B7... edit_tagRep_browseFile_tooltip=\u03A0\u03B5\u03C1\u03B9\u03AE\u03B3\u03B7\u03C3\u03B7 \u03C3\u03C4\u03BF \u03C3\u03CD\u03C3\u03C4\u03B7\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD edit_tagRep_title=\u0391\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03B5\u03C4\u03B9\u03BA\u03AD\u03C4\u03B1\u03C2 edit_text_act_clearStylesBtn=\u0391\u03C6\u03B1\u03AF\u03C1\u03B5\u03C3\u03B7 \u03C3\u03C4\u03C5\u03BB \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5... edit_text_act_clearStylesPrompt=\u03A0\u03C1\u03BF\u03C3\u03BF\u03C7\u03AE: \u0391\u03C5\u03C4\u03AE \u03B7 \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03B8\u03B1 \u03B1\u03C6\u03B1\u03B9\u03C1\u03AD\u03C3\u03B5\u03B9 \u03C4\u03B1 \u03B9\u03B4\u03B9\u03B1\u03AF\u03C4\u03B5\u03C1\u03B1 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03AC \u03C4\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03C0\u03BF\u03C5 \u03B5\u03C6\u03B1\u03C1\u03BC\u03CC\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03AD\u03B3\u03B3\u03C1\u03B1\u03C6\u03BF \u03BA\u03B1\u03B9 \u03B8\u03B1 \u03B5\u03C6\u03B1\u03C1\u03BC\u03CC\u03C3\u03B5\u03B9 \u03C4\u03BF \u03BA\u03CD\u03C1\u03B9\u03BF \u03C3\u03C4\u03C5\u03BB. \u0391\u03C5\u03C4\u03AE \u03B7 \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B1\u03BD\u03B1\u03B9\u03C1\u03B5\u03B8\u03B5\u03AF. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BF\u03C0\u03C9\u03C3\u03B4\u03AE\u03C0\u03BF\u03C4\u03B5 \u03BD\u03B1 \u03C4\u03BF \u03BA\u03AC\u03BD\u03B5\u03C4\u03B5; img_max_size=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD: img_max_width_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF \u03C0\u03BB\u03AC\u03C4\u03BF\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD \u03C0\u03BF\u03C5 \u03B5\u03B9\u03C3\u03AC\u03B3\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03B7 \u03B2\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD. img_max_height_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF \u03CD\u03C8\u03BF\u03C2 \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD \u03C0\u03BF\u03C5 \u03B5\u03B9\u03C3\u03AC\u03B3\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03B7 \u03B2\u03B9\u03B2\u03BB\u03B9\u03BF\u03B8\u03AE\u03BA\u03B7 \u03C0\u03BF\u03BB\u03C5\u03BC\u03AD\u03C3\u03C9\u03BD. img_resize_prompt=\u0397 \u03B5\u03B9\u03BA\u03CC\u03BD\u03B1 "%s" \u03AD\u03C7\u03B5\u03B9 \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 %s \u03B5\u03B9\u03BA\u03BF\u03BD\u03BF\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD. \u0391\u03C5\u03C4\u03CC \u03BE\u03B5\u03C0\u03B5\u03C1\u03BD\u03AC\u03B5\u03B9 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03C0\u03BF\u03C5 \u03B5\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C0\u03CC \u03C4\u03BF JClic Author (%s). \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03BB\u03BB\u03AC\u03BE\u03B5\u03C4\u03B5 \u03C4\u03BF \u03BC\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2; jclic-0.2.1.0.orig/src/author/edu/xtec/resources/about/0000755000175000017500000000000011377161311017551 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/resources/about/logo_author_small.png0000644000175000017500000000412011377161311023766 0ustar PNG  IHDRUV=sBITObPLTE{Y3ff{Y3ffNvY3ffhY3ff{Y3ff{3ff{Y3ff{Y3ff{Y3ff{Y3ff{Y3ff{Y3ff{Y3ff{phY3ffߘ̙ӕ—ބ؂{{ux}r~lipb`\`Y3ffUSTvtRNS"""""3333DDDDUUUUfffwwww=& pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$IDATx_F؞m6ڥK]4 \ORؼ0Z]7fֲu/n#}|~@L|y.q7񿋱[i:F>;316#ƩiNMSsU5(l9vd-0V׷8;~֍bkd$|Qʵ?e7(ظɹdQ3cra%O¿k},j lQZ95{DMrʆ 韋d3u<,FƦ.Ixf(S3g_' *S$5U_'("QgyN.)iYchlY7O蒪3$O)aX9zQSf]R{9ה0jƬDގoJXcxf~3%\cZ}SkFπ)YT5f[,jٵG)n}ըm.|ӴPܣ'd{z[WPL6O`g;̨4LEcb4Uk)l*[Yc|w P!5ώv+͗끢q}c6jr?zFOŋQd?6]FMӷASk"mt{Z Fuivڨ  Iz$ !$8" aUC13jSOT* { 5 EN0]Fz%[4{҆7E)&Jr0<A԰"?"MPh"h$IҴr X%91-OP,Q:pR"J$PΨ$~QBgMTc8(6z>mn5\t_.A۹0Jrf=#bByzf‘ kUi`P@dBy@J.Gny&/6 -T!1ԽLwK(OՃὠgM,toѵ%h "?4j@USLy/FugP[T{Vh+*tݯ:BB䡐WBndf"(G~jpbg?@Re!hAYNO Dv/E#3y({5ݽ1v2rRev@Y٧[)+lxB(!x:zq [/zo]4\h ޖF7G8 k-38HuS#+!^aCQP]-(Oݧ;r~7d6= 5}͕Og^(CR$LAd!%,@zoF"O,YBFgHFW8xz]RM hA:e'# .tKBqa} P~xb#)ٻ1MjFk]SPlP(ퟰ RJmJ(D:$봦D}N;M)}@2EQx5*mg7q7q=? IENDB`jclic-0.2.1.0.orig/src/author/edu/xtec/resources/html/0000755000175000017500000000000011377161311017403 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/resources/html/applet.html0000644000175000017500000000070311377161311021556 0ustar %TITLE %PRE_APPLET %POST_APPLET jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/0000755000175000017500000000000011377161311017552 5ustar jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/s.gif0000644000175000017500000000014411377161311020502 0ustar GIF89a !, PIeUܐQe;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/minus16.gif0000644000175000017500000000007311377161311021543 0ustar GIF89a!,|>;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/media_bag.gif0000644000175000017500000000163511377161311022136 0ustar GIF89a3$$FW U3mzẓRRzz~}zff̏Vlz̙؞𠠤!,z=H=XAB2tp!-T4ؐ 6p42@I pa%Oʜa0j@‚",heS VT)SPv8hѱӦ ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/sequence_new.gif0000644000175000017500000000021611377161311022721 0ustar GIF89aBZZ!,;Ij)U/|ƿ  SA3iCYaҦ4;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/speak.gif0000644000175000017500000000170111377161311021343 0ustar GIF89a磻aann@@JѧMMWۮĶ̵׿վԽӻѷ̵ٿԾӲտӽ嶷򖖖 !I,H`A$"tp$@2بB F bE=x01APb<^ IC:HC0N|    lDr!D-&C*A$2p@)`( "M))!. DFIR 8@€ ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/miniauthor.png0000644000175000017500000000104211377161311022434 0ustar PNG  IHDR(-SsBITOPLTE~~Y~~Y~~\~\\\cz|plgc\xuslؽ5tRNS""DUUfww pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$IDATx]0QEKPZ&PF>9dj9.o{'Lbந[Ǘxzg ] % õʒG+=c~`"ߗ}<?A,D2O]}IENDB`jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/text_target_edit.gif0000644000175000017500000000031111377161311023573 0ustar GIF89a cccccΜcΥRR!, vI89Mc xH2%`%!70K1Q ] Ƙj*1i"=;KTY1y!pjT0ixǔv6Dzdun+(rkW]j_Q;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/adjust_cols.gif0000644000175000017500000000020311377161311022546 0ustar GIF89a!,0I8[T㑮'Ūg4lKClQBȤQD;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/doc_styles_clear.gif0000644000175000017500000000123611377161311023561 0ustar GIF89a mƶZƶ1scR])kJYξJ9}Z˵߽B1Z8Ʈ9QquӥZR{JZUiJ!cӜm1kZB댄U1ckϜI)ƶREc)a!c!ֲce!Ʈ{m!R))R)k{I!E!ƶ9imξBӽRyߵkDŽJ1Ʋ1!m, m J_m"]- )mF\#,mcQb 2Th($90 fWM^KIN3>.%k8Ve=@:1kklO*G6 BZCY΂jD E  h[8zl B L7HP|&pm& 8`p/6ĊTB&Fpe3/Ll dAg1J0P"XhfƎ`㢰m:;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/installer.gif0000644000175000017500000000167211377161311022244 0ustar GIF89a00a==nžϠĠŢŢƥʧʧ̩̪ΪϪϫϫЬЬѵصٶڶ۷۷𠠤! ,`A&\ hB (RTX`Î *\p!FxBHqA(PAL_It-C4"XV%";jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/seq_prev_jump.gif0000644000175000017500000000017411377161311023122 0ustar GIF89a !, )pI5O %t7dƅ#Phk~V]K!oJ";jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/sw.gif0000644000175000017500000000015011377161311020666 0ustar GIF89a fff!, pIR)Bރ慜XifbX;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/copy_properties.gif0000644000175000017500000000023311377161311023465 0ustar GIF89a!,@HpI+& AAc9+Q vyMZU-8NhH?JF7q]49Ě%TZ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/al_center.gif0000644000175000017500000000024311377161311022174 0ustar GIF89a!,!.5d]JI!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/font_bold.gif0000644000175000017500000000025211377161311022206 0ustar GIF89a!,(Kq.&^)WGnKqAG!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/text_edit.gif0000644000175000017500000000024311377161311022231 0ustar GIF89aʛbɦUU!,PI魱k`=Z3}Fj80#٨i,1rIJ]g: (A%?R$)jAP g'= C$;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/al_bottom.gif0000644000175000017500000000016111377161311022217 0ustar GIF89a!,PI8ͻ] `רJf/ R;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/jump_to_activity.gif0000644000175000017500000000013011377161311023624 0ustar GIF89afff!,)#LE}YإAR.ĭwb~R;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/doc_styles.gif0000644000175000017500000000167311377161311022420 0ustar GIF89a !,  H*\hÇ0\ŋ'*Xc5&C"rhIB45)`1͛UIÏ9 R(W)&,:Z(ҟ7qTT^@Fs ,T^+6ڽ)Z`@;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/prev_act.gif0000644000175000017500000000157311377161311022052 0ustar GIF89a!,XHXȐ >ŋ&|0‏3nEAȎ*cʬh̛+YRS#9[L3@F%&]:0 ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/seq_return.gif0000644000175000017500000000017311377161311022431 0ustar GIF89a !, (p xJ[IV} \ŝV< /8;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/unknown_small.gif0000644000175000017500000000022111377161311023123 0ustar GIF89aRBcJkRތ県祔筥ﵭ!,>PI Oj(>`lc 1L8ܕ @TCQcq=ftBN8Xg˕D;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/run_external.gif0000644000175000017500000000166511377161311022757 0ustar GIF89a k\޷ά{{fcRcV򵽙q錵|ZGJ)֭sssZZZJJJ!,@%H PB 00C2fLAŊd0`aa-G0 80 KB`P@ LZϕ3 SK&Xb"1XBl$`A(0K@S #/.S;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/grid_layout.gif0000644000175000017500000000020011377161311022553 0ustar GIF89a!,-I8SO) vL80}ȡ[g5$2;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/bt_minus.gif0000644000175000017500000000015711377161311022064 0ustar GIF89a !, 0I8g+_(Vh^IN*j\mE;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/adjust_width.gif0000644000175000017500000000020711377161311022731 0ustar GIF89a!,4IAO( U^Tzݳ `N2,b|7NN2j0%;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/se.gif0000644000175000017500000000015011377161311020644 0ustar GIF89a fff!, pIV\w؃U8faT;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/ab_icon.gif0000644000175000017500000000020111377161311021624 0ustar GIF89a!,.I8-g}<'T؆3< /Ob+8Ȥ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/import_act.png0000644000175000017500000000116011377161311022417 0ustar PNG  IHDR(-SsBITOPLTElYlYlYYlYlYYr\ys{uz~kl_\{h_ub\{xulfb_rlb|xtrlh\#?@tRNS""33DUUffw. pHYs  ~tEXtCreation Time09/05/04%tEXtSoftwareMacromedia Fireworks MX 2004vIDATxU @+SE,S,6y`.b4m_ ݄Ƨ]ΑRzٝt)+KRҷ Aq^9m#&r1%$B` DŽY*V΅8 聼ș#J[gF&IENDB`jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/seq_next_jump.gif0000644000175000017500000000017411377161311023124 0ustar GIF89a !, )p9J[aaqgrhh tLZ:|No"D;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/content.gif0000644000175000017500000000016111377161311021711 0ustar GIF89a!,6H)C8qxM5IF๤j)+BmІ1"@;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/e.gif0000644000175000017500000000014611377161311020466 0ustar GIF89a !, PIgfwXXiX;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/reset_all.gif0000644000175000017500000000025211377161311022212 0ustar GIF89a ! ,W09H`1 C18lʸXJ 1E B hā8P "J!2T~1nm S94zTGT y6aTpc=5W^w ݁;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/text_target.gif0000644000175000017500000000020511377161311022570 0ustar GIF89aUUʛbɦ!,2I)( ydljھu<[M2@2 |M;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/grid.gif0000644000175000017500000000020611377161311021164 0ustar GIF89a!,3IAO"Hz3,suu[c.Hn܁ aK;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/bt_plus.gif0000644000175000017500000000016211377161311021710 0ustar GIF89a !, 0I8g+c5Ijj؉)fi>E;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/al_right.gif0000644000175000017500000000024511377161311022033 0ustar GIF89a!,#CZ~lY88&嵰;նP!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/bg.gif0000644000175000017500000000021611377161311020630 0ustar GIF89a!,;I8g{Y^Uij@ci7ߏ ,cvH Y @@$;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/panel_closed.gif0000644000175000017500000000015511377161311022672 0ustar GIF89a !, 0IaHc(~ٙ ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/tree.gif0000644000175000017500000000017411377161311021202 0ustar GIF89a!,)IOxg(rხQ9nHF;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/play_speaked.gif0000644000175000017500000000056611377161311022711 0ustar GIF89aԎ00a333nnܞ ===@@J==n߻宮MMW!",@pH,$r"¤eC>2 B eĢ˨,a9`a{P2 nz| P   B { P  C"DCNEF"F""A;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/media_icon.gif0000644000175000017500000000025511377161311022332 0ustar GIF89aBABff):f! ,ZpIT8kUU $yX&)N)BK+B$N% h\&Da[@ $ML qC<$6Ri#;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/music.gif0000644000175000017500000000161711377161311021366 0ustar GIF89agikmoqsuwyÞơȧ𠠤!,lH&bĉ-(QCAzPB&#ŗ ;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/seq_next_return.gif0000644000175000017500000000020311377161311023461 0ustar GIF89a !, 0pI+;mvBJ&W؉R1<;ϭk oNtgd}*[&~?sr @ $՘Q oƦϝ>9Ʀ.\:wB&.-,z!+=7W.Lӳ~:عy{JGٽ.H)hj~zg|(E!o]qcqڽlfCwvo --^!!Tkq RIdoޠ` 0*0y N+kw!$ w,TCB[b]Rx [r~VT;*ȯ8hX?]>Raд~Ot]/o0{ly./CVEDbo{]yqv~%+CY҆k ;;Xf%ݼyI [_bsn=jscސDyonݎkHyܶZWl{6pTA˅ybv/`fJkyB_"Tqh $:jb3Sq`.C,h_mZZ'+a'l_mJw; GU:֏+:SPqQY~]mBn W,ɺ_*mE{Z]\qD&+'}/byX(Bf?9>ȷ~._e12Vlȶ~e҆SDb(6޷D}/m{@:Rw<ïmK-*6GsK-ov/b38q?'cWG}/}##fX8:H06~Nm/wVu}[y]BG78t^~7ff0!PO^šyw&N>wif>|Tq :9} T^|*͝OUC8PF(?lR8t^>Q~)߇ ć"PƈT@@ nnbWU$!a*X֯Pq]*x+]y=_GnT+81"pS-CGRT*^q+ ]J~t\6:ٵ~5(M{~/_ !jf?_?8::zɧ@CNECȧ?㧟#$P?BsC gO)[;Ͽz&Ypu~ GOg*t蕄}Z[?{~sҥt\" GrtD}Lߔ'l69'ҿ>wN1?u"~yoHYS9oHsf< )8R_Fmb}__ǧ,ݬ;O0>SUSQ;%q2(yBf$T[ r [kq!:~-ݓ8&<{J*ɡ~<JYh;Eb}J U ß+wUo9J *}Pa駄_~~J#yMY?XV*Zն?PSoq+N?+κH)7Xb_뙢ʀ{JMmq2nHÓe$Su1+bȺH(е]E+<~K̻Pf,~J=%\E 6bqjǶoT+rɥٷTO"n2s{\er`Lj8}%CS i ]KbFRA?qD4Ȣ.O:~!|O 2K?qTu3TU"y c8 7+i '$1?LT ??)EjY)atM*ᏥkccP 㧮4 ~'PMiTT59Yeh㧊N3 R}"JLGTKETknS5a/?O?fU4wE]_!oD7Q4wE]6^b*t~|qO *jdhfVm9w%כ2r]V.O(Oi^>&tHp=݊¿ʃ?d4U0tR!] /Uq?:L,egrlOWO<~\ShaxpxzTD~vB[4> M=x91^5_KNG%; yEs? zmߴLW< ?ZMo?cfEF_y2_y u Јgm?m͂vY~ѦQ}9~˲Jwe+V mU˨-Q} ~rb-Zf18&mQ Xofg^>nJy_0s55z侯o3RV.;i:BLWޞ5}tU"ƧܵjAȂGqн* PoO=1ܘC%{j2M_r\˩+ :I3djOJMkЗt<)PSoB4g̟]N=զl?RI/;ltPEv iW:PezUs|K'D-ڿ ~ ܉5mbQC\{21Qqgc EnDku6(ώSs{x9zEGϝuɉsʫSm2rK @ ]6hWdjk./?uyMJeh)''OdOj[@ -\ ШQ**Tvѩ#HSbՔo񵇂c VB' ʗjݟq_G-eo5l?9x@I?*Ud<\_Xp&(w#/#'³nƜЁ+DZ;φ_.m>b։L h=7o+jm-]"PD76M|Mi|PXw!  E3W--CuL:Q[8H t㯼]&j{p=jZ/D)㷘W=zW#H Ω/2{H xȹN̩߳g_1 VB/_[ղOO~? U96憋`N~9=jL_- 𳝜zL? ˷bu+{f-[#bw0'_ ނ-]qB#.odG׽{~XVAl  㠉Š:_"OџͲzߌO"^,SwWWsEbҲU^IH zAa|.oګK{Z(Bmbbh+,G)l 5fXIENDB`jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/panel_opened.gif0000644000175000017500000000015111377161311022667 0ustar GIF89a !, 0I8k{޷y$l[E;jclic-0.2.1.0.orig/src/author/edu/xtec/resources/icons/ne.gif0000644000175000017500000000014711377161311020645 0ustar GIF89a fff!, pI,ΖY6aU;jclic-0.2.1.0.orig/src/author/JClicAuthorApplet.java0000644000175000017500000002070411377161311017070 0ustar /* * File : JClicAuthotApplet.java * Created : 27-Apr-2008 21:00 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2008 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ import edu.xtec.jclic.Player; import edu.xtec.jclic.PlayerSettings; import edu.xtec.jclic.RunnableComponent; import edu.xtec.util.Messages; import edu.xtec.util.ResourceManager; import edu.xtec.util.Options; import edu.xtec.util.LFUtil; import edu.xtec.util.Check; import edu.xtec.jclic.media.CheckMediaSystem; import edu.xtec.jclic.project.ProjectInstallerDlg; import edu.xtec.util.BasicResourceBridge; import java.net.URL; import javax.swing.RootPaneContainer; import javax.swing.JApplet; /** JClic Author applet. Shows a splash screen at startup and loads * a {@link AuthorSingleFrame} in a separate process. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JClicAuthorApplet extends javax.swing.JApplet implements edu.xtec.jclic.Constants { private Options options; private RunnableComponent rc; private String activityPack, sequence; private boolean initiated; private boolean trace; private javax.swing.JLabel splashLabel; private boolean isInstaller; // useful constants private static final String HTTP="http:", FILE="file:"; private static final String STRING="string", BOOL="boolean", URL="url"; // parameters private static final String ACTIVITY_PACK="activityPack"; private static final String SEQUENCE="sequence"; private static final int NUM_PRIVATE_PARAMS=2; private static final String[][] pInfo={ {ACTIVITY_PACK, STRING, "absolute or relative URL of the JClic project to load"}, {SEQUENCE, STRING, "optional project's starting sequence name"}, {Messages.LANGUAGE, STRING, "two-char language code"}, {Messages.COUNTRY, STRING, "two-char country code"}, {Messages.VARIANT, STRING, "locale variant code"}, {SKIN, STRING, "skin to be used"}, {COOKIE, STRING, "optional session cookie value. currently not used"}, {REPORTER_CLASS, STRING, "reporter class name"}, {REPORTER_PARAMS, STRING, "reporter parameters"}, {EXIT_URL, URL, "URL where to redirect navigation at end"}, {INFO_URL_FRAME, STRING, "optional frame where to display info documents. If unespecified, _BLANK will be used"}, {SYSTEM_SOUNDS, BOOL, "to play or not system sounds"}, {COMPRESS_IMAGES, BOOL, "to compress or not images in cells"}, {LFUtil.LOOK_AND_FEEL, STRING, "look & feel to use"}, {AUDIO_ENABLED, BOOL, "to have audio enabled or not"}, {MEDIA_SYSTEM, STRING, "preferred multimedia system: 'JMF' for Java Media Framework or 'QT' for QuickTime"}, {TRACE, BOOL, "show debug messages in console"} }; /** Creates new JClicAuthorApplet */ public JClicAuthorApplet() { super(); trace=false; rc=null; initiated=false; activityPack=null; sequence=null; options=new Options(this); splashLabel = new javax.swing.JLabel(" ", ResourceManager.getImageIcon("icons/logo_author.png"), javax.swing.SwingConstants.CENTER); splashLabel.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); splashLabel.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); splashLabel.setBackground(BG_COLOR); splashLabel.setOpaque(true); getContentPane().add(splashLabel, java.awt.BorderLayout.CENTER); } public void init() { // init only once by applet instance if(initiated) return; initiated=true; // get "trace" flag trace=TRUE.equals(getParameter(TRACE)); final StringBuffer sb=new StringBuffer(); final RootPaneContainer rpc=this; edu.xtec.util.SwingWorker sw=new edu.xtec.util.SwingWorker(){ public Object construct(){ // get parameters for(int i=NUM_PRIVATE_PARAMS; i>> param "+pInfo[i][0]+" is "+getParameter(pInfo[i][0])); } Messages messages=null; try{ messages=edu.xtec.util.PersistentSettings.getMessages(options, DEFAULT_BUNDLE); } catch(Exception ex){ System.err.println("Unable to get default user messages language!\n"+ex); messages=Messages.getMessages(options, DEFAULT_BUNDLE); } messages.addBundle(COMMON_SETTINGS); if(splashLabel!=null) splashLabel.setText(messages.get("LOADING")); if(!Check.checkSignature(options, true)) return null; CheckMediaSystem.check(options, false); // build player try{ rc=new edu.xtec.jclic.AuthorSingleFrame(options); } catch(Exception ex){ sb.append("ERROR: ").append(ex); } return rc; } public void finished(){ if(getValue()==null){ if(isInstaller && options.getString(EXIT_URL)!=null){ try{ String url=options.getString(EXIT_URL); if(url.indexOf(':')<0) // no protocol, assume "file://" url="file://"+url; getAppletContext().showDocument(new URL(url)); } catch(Exception ex){ sb.append("ERROR: ").append(ex); } } // no player build! if(splashLabel!=null){ String s=sb.substring(0); splashLabel.setText(s); System.err.println(s); } } else{ // remove label and place player getContentPane().removeAll(); splashLabel=null; //rc.addTo(getContentPane(), java.awt.BorderLayout.CENTER); rc.addTo(rpc, java.awt.BorderLayout.CENTER); getRootPane().revalidate(); // load project javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){ rc.start(activityPack, sequence); } }); } } }; if(trace) System.out.println(">>> initializing..."); // launch swingWorker sw.start(); } public void start(){ if(trace) System.out.println(">>> applet started"); } public void stop(){ if(rc!=null) rc.stop(); if(trace) System.out.println(">>> applet stopped"); } public void destroy(){ if(rc!=null){ if(trace) System.out.println(">>> destroying applet..."); getContentPane().removeAll(); rc.end(); rc=null; initiated=false; } if(trace) System.out.println(">>> applet destroyed"); } public String getAppletInfo(){ return "JClic Author applet"; } public String[][] getParameterInfo(){ return pInfo; } } jclic-0.2.1.0.orig/src/author/JClicAuthor.java0000644000175000017500000000270411377161311015722 0ustar /* * File : JClicAuthor.java * Created : 17-sep-2002 10:41 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ import edu.xtec.jclic.SingleInstanceJFrame; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class JClicAuthor { public static final int INSTANCE_PORT=5874; /** * @param args the command line arguments */ public static void main(String args[]) { SingleInstanceJFrame jcp=new SingleInstanceJFrame( "edu.xtec.jclic.AuthorSingleFrame", args, "JClic author", "icons/logo_author.png", "icons/miniauthor.png", INSTANCE_PORT); if(jcp.isArmed()) //jcp.show(); jcp.setVisible(true); else System.exit(0); } } jclic-0.2.1.0.orig/src/utilities/0000755000175000017500000000000011377161311013416 5ustar jclic-0.2.1.0.orig/src/utilities/edu/0000755000175000017500000000000011377161311014173 5ustar jclic-0.2.1.0.orig/src/utilities/edu/xtec/0000755000175000017500000000000011377161311015136 5ustar jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/0000755000175000017500000000000011377161311016113 5ustar jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/Encryption.java0000644000175000017500000002126311377161311021114 0ustar /* * File : Encryption.java * Created : 03-jul-2001 09:51 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; /** * Utilities to encrypt and decrypt strings using simple methods, just to avoid write * passwords in plain text in data and confiuration files. Do not use it as a * secure cryptographic system! * @author Albert Llastarri (allastar@xtec.net) * @version 1.0 */ public final class Encryption { private static final String BLANK="___blank___##"; public static String Encrypt(String txt) { if(txt==null || txt.length()==0) txt=BLANK; String result=null; try{ result=codify(txt); } catch(Exception ex){ System.err.println("Error encripting text!"); } return result; } public static String Decrypt(String txt) { if(txt==null || txt.length()==0) return null; String s=decodify(txt); if(BLANK.equals(s)) s=new String(); return s; } private static char hexCharArrayToChar(char[] cA, int fromIndex){ char[] hex=new char[4]; int n=0; for (int i=0;i<=3;i++){ int j=Character.digit(cA[fromIndex+i],16); n=(n*16)+j; } return (char)n; } private static char[] charToHexCharArray(char c){ char[] hex=new char[4]; int j=(int)c; for (int i=3;i>=0;i--){ hex[i]=Character.forDigit(j%16,16); j/=16; } return hex; } private static char[] intToHexCharArray(int c){ char[] hex=new char[2]; int j=(int)c; for (int i=1;i>=0;i--){ hex[i]=Character.forDigit(j%16,16); j/=16; } return hex; } private static int hexCharArrayToInt(char[] cA, int fromIndex){ int n=0; for (int i=0;i<=1;i++){ int j=Character.digit(cA[fromIndex+i],16); n=(n*16)+j; } return n; } private static StringBuffer compressZeros(char[] cA){ int total=0; StringBuffer sb=new StringBuffer(cA.length); int[] zeros=new int[(cA.length+7)/8]; //it will be better to use bytes, but //then it takes the first bit as a sign int j; for (j=0;total1){ char c1=hexZeros.charAt(0); char c2=hexZeros.charAt(1); int num=1; int currentChar=2; while (currentChar0){ sb.append(cA[(i*3)+1]); sb.append(cA[(i*3)+2]); num--; k++; } if (cA.length>((i*3)+3)) num=Character.digit(cA[(i*3)+3],32); else num=0; } for (int j=(i*3)+1;j24) throw new TooLargePasswordException(); return new String(changeOrder(compressZeros(codifyToHex(word)))); } private static String decodify(String word){ try{ return decodifyFromHex(decompressZeros(unchangeOrder(word))); } catch (Exception e){ //The supplied word was not codified using this system return ""; } } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/PersistentSettings.java0000644000175000017500000002241011377161311022636 0ustar /* * File : PersistentSettings.java * Created : 28-jun-2002 16:20 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import javax.swing.JOptionPane; import java.util.Properties; import java.util.StringTokenizer; import java.io.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class PersistentSettings { public static final String BASE=".edu.xtec.properties"; public static final String BASE_OLD="edu.xtec.properties"; public static final String BUNDLE="messages.PersistentPathsMessages"; private static File baseFile=null; private PersistentSettings(){ } public static File getBaseFile() throws Exception{ if(baseFile==null){ StringBuffer sb=new StringBuffer(300); sb.append(System.getProperty("user.dir")); sb.append(File.pathSeparator); sb.append(System.getProperty("user.home")); sb.append(File.pathSeparator); sb.append(System.getProperty("java.home")).append(File.separator).append("lib"); sb.append(File.pathSeparator).append(System.getProperty("java.ext.dirs")); /* sb.append(System.getProperty("java.home")).append(File.separator).append("lib"); sb.append(File.pathSeparator).append(System.getProperty("java.ext.dirs")); sb.append(File.pathSeparator).append(System.getProperty("user.home")); sb.append(File.pathSeparator).append(System.getProperty("user.dir")); */ StringTokenizer st=new StringTokenizer(sb.substring(0), File.pathSeparator); while(baseFile==null && st.hasMoreTokens()){ String s=st.nextToken(); File dir=new File(s); if(dir.exists() && dir.isDirectory()){ File testFile=new File(dir, BASE); if(testFile.canRead()){ baseFile=testFile; } else{ File oldTestFile=new File(dir, BASE_OLD); if(oldTestFile.canRead()){ try{ if(oldTestFile.renameTo(testFile)){ baseFile=testFile; } } catch(Exception ex){ // unable to rename! } } /* if(baseFile==null){ try{ FileOutputStream fos=new FileOutputStream(testFile); fos.close(); baseFile=testFile; } catch(Exception ex){ // test failed } } */ } } } if(baseFile==null){ baseFile=new File(System.getProperty("user.home"), BASE); System.out.println("Creating file "+baseFile); saveSettings(new Properties()); } /* if(baseFile==null) throw new Exception("Unable to find or create basic properties file!"); */ } return baseFile; } public static Properties getProperties() throws Exception{ Properties prop=new Properties(); InputStream is=new FileInputStream(getBaseFile()); prop.load(is); is.close(); return prop; } public static File getBasePathTo(String programName, Options options) throws Exception{ Properties prop=getProperties(); String path=(String)prop.get(programName); if(path!=null){ File d=new File(path); if(!d.exists() || !d.isDirectory()){ path=null; } } if(path==null){ String sPath=getSystemProgramsPath(options)+File.separator+programName; Messages messages=getMessages(options, BUNDLE); String msg=messages.get("cl_alert"); int i=msg.indexOf('$'); if(i>=0){ msg=msg.substring(0, i)+programName+msg.substring(i+1); } boolean done=false; File d=new File(sPath); while(!done){ String result=(String)JOptionPane.showInputDialog( options.getMainComponent(), msg, messages.get("cl_prompt_title"), JOptionPane.QUESTION_MESSAGE, null, null, sPath); if(result==null) throw new Exception("bad user input!"); d=new File(result); try{ if(!d.exists() || !d.isDirectory()) d.mkdirs(); done=true; } catch(Exception ex){ messages.showErrorWarning(options.getMainComponent(), "cl_err_unableToCreateDir", ex); } } path=d.getAbsolutePath(); prop.setProperty(programName, path); saveSettings(prop); } return new File(path); } private static void saveSettings(Properties prop) throws Exception{ OutputStream out=new FileOutputStream(baseFile); prop.store(out, null); out.close(); } private static final String[] PRG_LOCATIONS=new String[]{ "C:\\Archivos de programa", // Spanish "C:\\Programmi", // Italian "C:\\Program", // Swedish "C:\\Programme", // Deutsch "C:\\Programas", // Portuguese "C:\\Programfiler", // Norwegian "C:\\Program files" // Default }; public static String getSystemProgramsPath(Options options){ String result=System.getProperty("user.home"); File f=null; if(options.getBoolean(Options.WIN)){ for(int i=0; i=0) put(JAVA131, new Boolean(true)); if(ver!=null && ver.compareTo("1.4.0")>=0) put(JAVA14, new Boolean(true)); if(ver!=null && ver.compareTo("1.4.1")>=0) put(JAVA141, new Boolean(true)); String s=System.getProperty("os.name").toLowerCase(); //String s=System.getProperty("java.vendor"); if(s!=null){ if(s.indexOf("mac")>=0){ put(MAC, new Boolean(true)); put(LFUtil.LOOK_AND_FEEL, LFUtil.SYSTEM); } else if(s.toLowerCase().indexOf("win")>=0) put(WIN, new Boolean(true)); } s=System.getProperty("sun.arch.data.model"); if("64".equals(s)) put(ARCH64BIT, new Boolean(true)); } public Properties toProperties(){ Properties prop=new Properties(); Iterator it=keySet().iterator(); while(it.hasNext()){ Object k=it.next(); if(k!=null && k instanceof String){ int i=0; for(i=0; i=0){ java.util.StringTokenizer st=new java.util.StringTokenizer(values, delim); while(st.hasMoreTokens()){ String e=st.nextToken(); int i=e.indexOf(equals); if(i>0){ String key=e.substring(0, i); String value=e.substring(i+1); if(key!=null && key.length()>0 && (nullsAllowed || values.length()>0)) map.put(key, value); } } } return map; } public static String getString(Map map, String key, String defaultValue){ String result=(String)map.get(key); return result==null ? defaultValue : result; } public static java.awt.Window getWindowForComponent(Component parentComponent){ if(parentComponent == null) return null; if(parentComponent instanceof java.awt.Window) return (java.awt.Window)parentComponent; return getWindowForComponent(parentComponent.getParent()); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/GlobalMouseAdapter.java0000644000175000017500000000501711377161311022473 0ustar /* * File : GlobalMouseAdapter.java * Created : 24-jan-2002 13:20 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.event.*; import java.awt.Component; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class GlobalMouseAdapter implements MouseListener, MouseMotionListener{ protected Component parent; /** Creates new GlobalMouseAdapter */ public GlobalMouseAdapter(Component parent) { this.parent=parent; } public void attachTo(Component cmp, boolean catchMotion){ cmp.addMouseListener(this); if(catchMotion) cmp.addMouseMotionListener(this); } public Component getParent(){ return parent; } public void setParent(Component parent){ this.parent=parent; } public void detach(Component cmp){ if(cmp!=null){ cmp.removeMouseListener(this); cmp.removeMouseMotionListener(this); } } protected void processEvent(MouseEvent e){ java.awt.Point pt=e.getComponent().getLocation(); e.translatePoint(pt.x, pt.y); parent.dispatchEvent(e); } public void mouseDragged(java.awt.event.MouseEvent e) { processEvent(e); } public void mouseExited(java.awt.event.MouseEvent e) { processEvent(e); } public void mouseReleased(java.awt.event.MouseEvent e) { processEvent(e); } public void mouseMoved(java.awt.event.MouseEvent e) { processEvent(e); } public void mousePressed(java.awt.event.MouseEvent e) { processEvent(e); } public void mouseClicked(java.awt.event.MouseEvent e) { processEvent(e); } public void mouseEntered(java.awt.event.MouseEvent e) { processEvent(e); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/TripleString.java0000644000175000017500000001177711377161311021421 0ustar /* * File : TripleString.java * Created : 28-apr-2003 10:14 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.File; import java.io.FileInputStream; import java.util.Iterator; import java.util.Properties; import java.util.Vector; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class TripleString extends Object implements Comparable{ public static final int ELEMENTS=3; public static final int NAME=0, CLASS=1, DESCRIPTION=2; public static final char SEP='|'; String[] str; /** Creates a new instance of TripleString */ public TripleString(String name, String className, String description) { str=new String[ELEMENTS]; str[NAME]=name; str[CLASS]=className; str[DESCRIPTION]=description; } public TripleString(String className, String nameAndDescription){ str=new String[ELEMENTS]; str[CLASS]=className; if(nameAndDescription!=null){ nameAndDescription=nameAndDescription.trim(); int p=nameAndDescription.indexOf(SEP); if(p>=0){ str[NAME]=nameAndDescription.substring(0, p); str[DESCRIPTION]=nameAndDescription.substring(p+1); } else{ str[NAME]=nameAndDescription; } } } public String getStr(int index){ return (index>=0 && index=0 && index0) bundleName=bundleName.substring(k+1); File file=new File(System.getProperty("user.home"), bundleName+".properties"); if(file.exists()){ Properties prop=new Properties(); prop.load(new FileInputStream(file)); Iterator it=prop.keySet().iterator(); while(it.hasNext()){ String key=(String)it.next(); String str=prop.getProperty(key); if(str!=null) v.addElement(new TripleString(key, str)); } } } if(sorted) java.util.Collections.sort(v); if(includeEmpty){ v.add(0, new TripleString(options.getMsg("NONE"), null, null)); } return v; } public int compareTo(Object obj) { String s1=(obj instanceof TripleString) ? ((TripleString)obj).getClassName() : obj==null ? "" : obj.toString(); return getClassName().compareTo(s1); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/BrowserLauncher.java0000644000175000017500000007260111377161311022071 0ustar /* * File : BrowserLauncher.java * Created : 02-jul-2002 18:22 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Taken from: * BrowserLauncher * Author: Eric Albert (ejalbert@cs.stanford.edu) * */ package edu.xtec.util; import java.io.File; import java.io.IOException; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; /** * BrowserLauncher is a class that provides one static method, openURL, which opens the default * web browser for the current user of the system to the given URL. It may support other * protocols depending on the system -- mailto, ftp, etc. -- but that has not been rigorously * tested and is not guaranteed to work. *

* Yes, this is platform-specific code, and yes, it may rely on classes on certain platforms * that are not part of the standard JDK. What we're trying to do, though, is to take something * that's frequently desirable but inherently platform-specific -- opening a default browser -- * and allow programmers (you, for example) to do so without worrying about dropping into native * code or doing anything else similarly evil. *

* Anyway, this code is completely in Java and will run on all JDK 1.1-compliant systems without * modification or a need for additional libraries. All classes that are required on certain * platforms to allow this to run are dynamically loaded at runtime via reflection and, if not * found, will not cause this to do anything other than returning an error when opening the * browser. *

* There are certain system requirements for this class, as it's running through Runtime.exec(), * which is Java's way of making a native system call. Currently, this requires that a Macintosh * have a Finder which supports the GURL event, which is true for Mac OS 8.0 and 8.1 systems that * have the Internet Scripting AppleScript dictionary installed in the Scripting Additions folder * in the Extensions folder (which is installed by default as far as I know under Mac OS 8.0 and * 8.1), and for all Mac OS 8.5 and later systems. On Windows, it only runs under Win32 systems * (Windows 95, 98, and NT 4.0, as well as later versions of all). On other systems, this drops * back from the inherently platform-sensitive concept of a default browser and simply attempts * to launch Netscape via a shell command. *

* This code is Copyright 1999-2001 by Eric Albert (ejalbert@cs.stanford.edu) and may be * redistributed or modified in any form without restrictions as long as the portion of this * comment from this paragraph through the end of the comment is not removed. The author * requests that he be notified of any application, applet, or other binary that makes use of * this code, but that's more out of curiosity than anything and is not required. This software * includes no warranty. The author is not repsonsible for any loss of data or functionality * or any adverse or unexpected effects of using this software. *

* Credits: *
Steven Spencer, JavaWorld magazine (Java Tip 66) *
Thanks also to Ron B. Yeh, Eric Shapiro, Ben Engber, Paul Teitlebaum, Andrea Cantatore, * Larry Barowski, Trevor Bedzek, Frank Miedrich, and Ron Rabakukk * * @author Eric Albert (ejalbert@cs.stanford.edu) * @version 1.4b1 (Released June 20, 2001) */ public class BrowserLauncher { /** * The Java virtual machine that we are running on. Actually, in most cases we only care * about the operating system, but some operating systems require us to switch on the VM. */ private static int jvm; /** The browser for the system */ private static Object browser; /** * Caches whether any classes, methods, and fields that are not part of the JDK and need to * be dynamically loaded at runtime loaded successfully. *

* Note that if this is false, openURL() will always return an * IOException. */ private static boolean loadedWithoutErrors; /** The com.apple.mrj.MRJFileUtils class */ private static Class mrjFileUtilsClass; /** The com.apple.mrj.MRJOSType class */ private static Class mrjOSTypeClass; /** The com.apple.MacOS.AEDesc class */ private static Class aeDescClass; /** The (int) method of com.apple.MacOS.AETarget */ private static Constructor aeTargetConstructor; /** The (int, int, int) method of com.apple.MacOS.AppleEvent */ private static Constructor appleEventConstructor; /** The (String) method of com.apple.MacOS.AEDesc */ private static Constructor aeDescConstructor; /** The findFolder method of com.apple.mrj.MRJFileUtils */ private static Method findFolder; /** The getFileCreator method of com.apple.mrj.MRJFileUtils */ private static Method getFileCreator; /** The getFileType method of com.apple.mrj.MRJFileUtils */ private static Method getFileType; /** The openURL method of com.apple.mrj.MRJFileUtils */ private static Method openURL; /** The makeOSType method of com.apple.MacOS.OSUtils */ private static Method makeOSType; /** The putParameter method of com.apple.MacOS.AppleEvent */ private static Method putParameter; /** The sendNoReply method of com.apple.MacOS.AppleEvent */ private static Method sendNoReply; /** Actually an MRJOSType pointing to the System Folder on a Macintosh */ private static Object kSystemFolderType; /** The keyDirectObject AppleEvent parameter type */ private static Integer keyDirectObject; /** The kAutoGenerateReturnID AppleEvent code */ private static Integer kAutoGenerateReturnID; /** The kAnyTransactionID AppleEvent code */ private static Integer kAnyTransactionID; /** The linkage object required for JDirect 3 on Mac OS X. */ private static Object linkage; /** Added by fbusquets - command that launches the user's preferred browser **/ private static String preferredBrowser; /** Added by fbusquets - Key used to store browser settings in properties files **/ public static final String BROWSER="browser"; /** The framework to reference on Mac OS X */ private static final String JDirect_MacOSX = "/System/Library/Frameworks/Carbon.framework/Frameworks/HIToolbox.framework/HIToolbox"; /** JVM constant for MRJ 2.0 */ private static final int MRJ_2_0 = 0; /** JVM constant for MRJ 2.1 or later */ private static final int MRJ_2_1 = 1; /** JVM constant for Java on Mac OS X 10.0 (MRJ 3.0) */ private static final int MRJ_3_0 = 3; /** JVM constant for MRJ 3.1 */ private static final int MRJ_3_1 = 4; /** JVM constant for any Windows NT JVM */ private static final int WINDOWS_NT = 5; /** JVM constant for any Windows 9x JVM */ private static final int WINDOWS_9x = 6; /** JVM constant for any other platform */ private static final int OTHER = -1; /** * The file type of the Finder on a Macintosh. Hardcoding "Finder" would keep non-U.S. English * systems from working properly. */ private static final String FINDER_TYPE = "FNDR"; /** * The creator code of the Finder on a Macintosh, which is needed to send AppleEvents to the * application. */ private static final String FINDER_CREATOR = "MACS"; /** The name for the AppleEvent type corresponding to a GetURL event. */ private static final String GURL_EVENT = "GURL"; /** * The first parameter that needs to be passed into Runtime.exec() to open the default web * browser on Windows. */ private static final String FIRST_WINDOWS_PARAMETER = "/c"; /** The second parameter for Runtime.exec() on Windows. */ private static final String SECOND_WINDOWS_PARAMETER = "start"; /** * The third parameter for Runtime.exec() on Windows. This is a "title" * parameter that the command line expects. Setting this parameter allows * URLs containing spaces to work. */ private static final String THIRD_WINDOWS_PARAMETER = "\"\""; /** * The shell parameters for Netscape that opens a given URL in an already-open copy of Netscape * on many command-line systems. */ private static final String NETSCAPE_REMOTE_PARAMETER = "-remote"; private static final String NETSCAPE_OPEN_PARAMETER_START = "'openURL("; private static final String NETSCAPE_OPEN_PARAMETER_END = ")'"; /** * The message from any exception thrown throughout the initialization process. */ private static String errorMessage; /** * An initialization block that determines the operating system and loads the necessary * runtime data. */ static { loadedWithoutErrors = true; String osName = System.getProperty("os.name"); if (osName.startsWith("Mac OS")) { String mrjVersion = System.getProperty("mrj.version"); String majorMRJVersion = mrjVersion.substring(0, 3); try { double version = Double.valueOf(majorMRJVersion).doubleValue(); if (version == 2) { jvm = MRJ_2_0; } else if (version >= 2.1 && version < 3) { // Assume that all 2.x versions of MRJ work the same. MRJ 2.1 actually // works via Runtime.exec() and 2.2 supports that but has an openURL() method // as well that we currently ignore. jvm = MRJ_2_1; } else if (version == 3.0) { jvm = MRJ_3_0; } else if (version >= 3.1) { // Assume that all 3.1 and later versions of MRJ work the same. jvm = MRJ_3_1; } else { loadedWithoutErrors = false; errorMessage = "Unsupported MRJ version: " + version; } } catch (NumberFormatException nfe) { loadedWithoutErrors = false; errorMessage = "Invalid MRJ version: " + mrjVersion; } } else if (osName.startsWith("Windows")) { if (osName.indexOf("9") != -1) { jvm = WINDOWS_9x; } else { jvm = WINDOWS_NT; } setPreferredBrowser("iexplore"); } else { jvm = OTHER; setPreferredBrowser("mozilla"); } if (loadedWithoutErrors) { // if we haven't hit any errors yet loadedWithoutErrors = loadClasses(); } } /** * This class should be never be instantiated; this just ensures so. */ private BrowserLauncher() { } /** * Called by a static initializer to load any classes, fields, and methods required at runtime * to locate the user's web browser. * @return true if all intialization succeeded * false if any portion of the initialization failed */ private static boolean loadClasses() { switch (jvm) { case MRJ_2_0: try { Class aeTargetClass = Class.forName("com.apple.MacOS.AETarget"); Class osUtilsClass = Class.forName("com.apple.MacOS.OSUtils"); Class appleEventClass = Class.forName("com.apple.MacOS.AppleEvent"); Class aeClass = Class.forName("com.apple.MacOS.ae"); aeDescClass = Class.forName("com.apple.MacOS.AEDesc"); aeTargetConstructor = aeTargetClass.getDeclaredConstructor(new Class [] { int.class }); appleEventConstructor = appleEventClass.getDeclaredConstructor(new Class[] { int.class, int.class, aeTargetClass, int.class, int.class }); aeDescConstructor = aeDescClass.getDeclaredConstructor(new Class[] { String.class }); makeOSType = osUtilsClass.getDeclaredMethod("makeOSType", new Class [] { String.class }); putParameter = appleEventClass.getDeclaredMethod("putParameter", new Class[] { int.class, aeDescClass }); sendNoReply = appleEventClass.getDeclaredMethod("sendNoReply", new Class[] { }); Field keyDirectObjectField = aeClass.getDeclaredField("keyDirectObject"); keyDirectObject = (Integer) keyDirectObjectField.get(null); Field autoGenerateReturnIDField = appleEventClass.getDeclaredField("kAutoGenerateReturnID"); kAutoGenerateReturnID = (Integer) autoGenerateReturnIDField.get(null); Field anyTransactionIDField = appleEventClass.getDeclaredField("kAnyTransactionID"); kAnyTransactionID = (Integer) anyTransactionIDField.get(null); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; } catch (NoSuchMethodException nsme) { errorMessage = nsme.getMessage(); return false; } catch (NoSuchFieldException nsfe) { errorMessage = nsfe.getMessage(); return false; } catch (IllegalAccessException iae) { errorMessage = iae.getMessage(); return false; } break; case MRJ_2_1: try { mrjFileUtilsClass = Class.forName("com.apple.mrj.MRJFileUtils"); mrjOSTypeClass = Class.forName("com.apple.mrj.MRJOSType"); Field systemFolderField = mrjFileUtilsClass.getDeclaredField("kSystemFolderType"); kSystemFolderType = systemFolderField.get(null); findFolder = mrjFileUtilsClass.getDeclaredMethod("findFolder", new Class[] { mrjOSTypeClass }); getFileCreator = mrjFileUtilsClass.getDeclaredMethod("getFileCreator", new Class[] { File.class }); getFileType = mrjFileUtilsClass.getDeclaredMethod("getFileType", new Class[] { File.class }); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; } catch (NoSuchFieldException nsfe) { errorMessage = nsfe.getMessage(); return false; } catch (NoSuchMethodException nsme) { errorMessage = nsme.getMessage(); return false; } catch (SecurityException se) { errorMessage = se.getMessage(); return false; } catch (IllegalAccessException iae) { errorMessage = iae.getMessage(); return false; } break; case MRJ_3_0: try { Class linker = Class.forName("com.apple.mrj.jdirect.Linker"); Constructor constructor = linker.getConstructor(new Class[]{ Class.class }); linkage = constructor.newInstance(new Object[] { BrowserLauncher.class }); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; } catch (NoSuchMethodException nsme) { errorMessage = nsme.getMessage(); return false; } catch (InvocationTargetException ite) { errorMessage = ite.getMessage(); return false; } catch (InstantiationException ie) { errorMessage = ie.getMessage(); return false; } catch (IllegalAccessException iae) { errorMessage = iae.getMessage(); return false; } break; case MRJ_3_1: try { mrjFileUtilsClass = Class.forName("com.apple.mrj.MRJFileUtils"); openURL = mrjFileUtilsClass.getDeclaredMethod("openURL", new Class[] { String.class }); } catch (ClassNotFoundException cnfe) { errorMessage = cnfe.getMessage(); return false; } catch (NoSuchMethodException nsme) { errorMessage = nsme.getMessage(); return false; } break; default: break; } return true; } /** * Attempts to locate the default web browser on the local system. Caches results so it * only locates the browser once for each use of this class per JVM instance. * @return The browser for the system. Note that this may not be what you would consider * to be a standard web browser; instead, it's the application that gets called to * open the default web browser. In some cases, this will be a non-String object * that provides the means of calling the default browser. */ private static Object locateBrowser() { if (browser != null) { return browser; } switch (jvm) { case MRJ_2_0: try { Integer finderCreatorCode = (Integer) makeOSType.invoke(null, new Object[] { FINDER_CREATOR }); Object aeTarget = aeTargetConstructor.newInstance(new Object[] { finderCreatorCode }); Integer gurlType = (Integer) makeOSType.invoke(null, new Object[] { GURL_EVENT }); Object appleEvent = appleEventConstructor.newInstance(new Object[] { gurlType, gurlType, aeTarget, kAutoGenerateReturnID, kAnyTransactionID }); // Don't set browser = appleEvent because then the next time we call // locateBrowser(), we'll get the same AppleEvent, to which we'll already have // added the relevant parameter. Instead, regenerate the AppleEvent every time. // There's probably a way to do this better; if any has any ideas, please let // me know. return appleEvent; } catch (IllegalAccessException iae) { browser = null; errorMessage = iae.getMessage(); //return browser; } catch (InstantiationException ie) { browser = null; errorMessage = ie.getMessage(); //return browser; } catch (InvocationTargetException ite) { browser = null; errorMessage = ite.getMessage(); //return browser; } return browser; //break; case MRJ_2_1: File systemFolder=null; try { systemFolder = (File) findFolder.invoke(null, new Object[] { kSystemFolderType }); } catch (IllegalArgumentException iare) { browser = null; errorMessage = iare.getMessage(); return browser; } catch (IllegalAccessException iae) { browser = null; errorMessage = iae.getMessage(); return browser; } catch (InvocationTargetException ite) { browser = null; errorMessage = ite.getTargetException().getClass() + ": " + ite.getTargetException().getMessage(); return browser; } String[] systemFolderFiles = systemFolder.list(); // Avoid a FilenameFilter because that can't be stopped mid-list for(int i = 0; i < systemFolderFiles.length; i++) { try { File file = new File(systemFolder, systemFolderFiles[i]); if (!file.isFile()) { continue; } // We're looking for a file with a creator code of 'MACS' and // a type of 'FNDR'. Only requiring the type results in non-Finder // applications being picked up on certain Mac OS 9 systems, // especially German ones, and sending a GURL event to those // applications results in a logout under Multiple Users. Object fileType = getFileType.invoke(null, new Object[] { file }); if (FINDER_TYPE.equals(fileType.toString())) { Object fileCreator = getFileCreator.invoke(null, new Object[] { file }); if (FINDER_CREATOR.equals(fileCreator.toString())) { browser = file.toString(); // Actually the Finder, but that's OK return browser; } } } catch (IllegalArgumentException iare) { //browser = browser; errorMessage = iare.getMessage(); return null; } catch (IllegalAccessException iae) { browser = null; errorMessage = iae.getMessage(); return browser; } catch (InvocationTargetException ite) { browser = null; errorMessage = ite.getTargetException().getClass() + ": " + ite.getTargetException().getMessage(); return browser; } } browser = null; break; case MRJ_3_0: case MRJ_3_1: browser = ""; // Return something non-null break; case WINDOWS_NT: browser = "cmd.exe"; break; case WINDOWS_9x: browser = "command.com"; break; //case OTHER: default: // Changed by fbusquets: use "mozilla" as generic browser instead of "netscape" //browser = "netscape"; browser = getPreferredBrowser("mozilla"); break; } return browser; } /** * Added by fbusquets * Sets the path to the user's perferred browser. * @param browserCmd The path to the browser to be used by BrowserLaunched */ public static void setPreferredBrowser(String browserCmd){ preferredBrowser=StrUtils.nullableString(browserCmd); } /** * Added by fbusquets * Gets the path to the user's preferred browser. * @param defaultValue The default choice, used only if preferred browser not set. * @returns The command line corresponding to the user's preferred browser */ public static String getPreferredBrowser(String defaultValue){ return StrUtils.secureString(preferredBrowser, defaultValue); } /** * Attempts to open the default web browser to the given URL. * @param url The URL to open * @throws IOException If the web browser could not be located or does not run */ public static void openURL(String url) throws IOException { if (!loadedWithoutErrors) { throw new IOException("Exception in finding browser: " + errorMessage); } Object brw = locateBrowser(); if (brw == null) { throw new IOException("Unable to locate browser: " + errorMessage); } switch (jvm) { case MRJ_2_0: Object aeDesc = null; try { aeDesc = aeDescConstructor.newInstance(new Object[] { url }); putParameter.invoke(brw, new Object[] { keyDirectObject, aeDesc }); sendNoReply.invoke(brw, new Object[] { }); } catch (InvocationTargetException ite) { throw new IOException("InvocationTargetException while creating AEDesc: " + ite.getMessage()); } catch (IllegalAccessException iae) { throw new IOException("IllegalAccessException while building AppleEvent: " + iae.getMessage()); } catch (InstantiationException ie) { throw new IOException("InstantiationException while creating AEDesc: " + ie.getMessage()); } //finally { //aeDesc = null; // Encourage it to get disposed if it was created //brw = null; // Ditto //} break; case MRJ_2_1: Runtime.getRuntime().exec(new String[] { (String) brw, url } ); break; case MRJ_3_0: int[] instance = new int[1]; int result = ICStart(instance, 0); if (result == 0) { int[] selectionStart = new int[] { 0 }; byte[] urlBytes = url.getBytes(); int[] selectionEnd = new int[] { urlBytes.length }; result = ICLaunchURL(instance[0], new byte[] { 0 }, urlBytes, urlBytes.length, selectionStart, selectionEnd); if (result == 0) { // Ignore the return value; the URL was launched successfully // regardless of what happens here. ICStop(instance); } else { throw new IOException("Unable to launch URL: " + result); } } else { throw new IOException("Unable to create an Internet Config instance: " + result); } break; case MRJ_3_1: try { openURL.invoke(null, new Object[] { url }); } catch (InvocationTargetException ite) { throw new IOException("InvocationTargetException while calling openURL: " + ite.getMessage()); } catch (IllegalAccessException iae) { throw new IOException("IllegalAccessException while calling openURL: " + iae.getMessage()); } break; case WINDOWS_NT: case WINDOWS_9x: // Add quotes around the URL to allow ampersands and other special // characters to work. Process process=null; //process = Runtime.getRuntime().exec(new String[] { (String) brw, //FIRST_WINDOWS_PARAMETER, //SECOND_WINDOWS_PARAMETER, //THIRD_WINDOWS_PARAMETER, //'"' + url + '"' }); // This avoids a memory leak on some versions of Java on Windows. // That's hinted at in . try { //process.waitFor(); //process.exitValue(); //if(process.exitValue()!=0){ process = Runtime.getRuntime().exec(new String[] { (String) brw, FIRST_WINDOWS_PARAMETER, SECOND_WINDOWS_PARAMETER, getPreferredBrowser("iexplore"), '"' + url + '"' }); process.waitFor(); process.exitValue(); //} } catch (InterruptedException ie) { throw new IOException("InterruptedException while launching browser: " + ie.getMessage()); } break; case OTHER: // Assume that we're on Unix and that Netscape is installed // First, attempt to open the URL in a currently running session of Netscape process = Runtime.getRuntime().exec(new String[] { (String) brw, NETSCAPE_REMOTE_PARAMETER, NETSCAPE_OPEN_PARAMETER_START + url + NETSCAPE_OPEN_PARAMETER_END }); try { int exitCode = process.waitFor(); if (exitCode != 0) { // if Netscape was not open Runtime.getRuntime().exec(new String[] { (String) brw, url }); } } catch (InterruptedException ie) { throw new IOException("InterruptedException while launching browser: " + ie.getMessage()); } break; default: // This should never occur, but if it does, we'll try the simplest thing possible Runtime.getRuntime().exec(new String[] { (String) brw, url }); break; } } /** * Methods required for Mac OS X. The presence of native methods does not cause * any problems on other platforms. */ private native static int ICStart(int[] instance, int signature); private native static int ICStop(int[] instance); private native static int ICLaunchURL(int instance, byte[] hint, byte[] data, int len, int[] selectionStart, int[] selectionEnd); } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/Actions.java0000644000175000017500000002024711377161311020363 0ustar /* * File : Actions.java * Created : 18-dec-2001 10:48 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Component; import java.awt.Container; import java.awt.event.ActionEvent; import java.util.HashMap; import java.util.Iterator; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ActionMap; import javax.swing.JComponent; /** * Miscellaneous utilities for managing {@link javax.swing.Action} objects. * * EXAMPLES: * * Creation of a new action, with reference to a original key: * * * AbstractAction beginAction=new AbstractAction(DefaultEditorKit.beginAction){ * public void actionPerformed(ActionEvent e){ * // ... * } * }; * * * Creation of a new action, with a new key: * * * AbstractAction prevTargetAction=new AbstractAction("prev-target"){ * public void actionPerformed(ActionEvent e){ * // ... * } * }; * * * Action that references an existing one: * * * Action kitUpAction=null; * AbstractAction upAction=new AbstractAction(DefaultEditorKit.upAction){ * public void actionPerformed(ActionEvent e){ * if(kitUpAction!=null){ * // .... pre-action * kitUpAction.actionPerformed(e); * // .... post-action * } * } * }; * * * Actions mapping: * * * protected void setActions(){ * // get existing actions: * kitUpAction=getActionMap().get(DefaultEditorKit.upAction); * * // actionKeys init: * java.util.HashMap actionKeys=Actions.getActionKeys(this); * * // build new ActionMap: * ActionMap am=new ActionMap(); * am.setParent(getActionMap()); * setActionMap(am); * * //Actions derived to trace (only for debug purposes): * Actions.mapTraceAction(this, actionKeys, DefaultEditorKit.readOnlyAction); * Actions.mapTraceAction(this, actionKeys, DefaultEditorKit.writableAction); * Actions.mapTraceAction(this, actionKeys, "requestFocus"); * Actions.mapTraceAction(this, actionKeys, "toggle-componentOrientation"); * * //Actions to disable: * Actions.mapNullAction(this, actionKeys, DefaultEditorKit.beepAction); * * //New actions: * Actions.mapAction(this, actionKeys, beginAction); * Actions.mapAction(this, actionKeys, upAction); * * //Original actions mapped to other methods: * Actions.mapAction(this, actionKeys, beginAction, DefaultEditorKit.previousWordAction); * Actions.mapAction(this, actionKeys, prevTargetAction, DefaultEditorKit.beginParagraphAction); * * //Uncomment this line only if you want to hide all other actions: * //am.setParent(null); * // * * // Assign keystrokes to a new action: * getInputMap().put(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB, java.awt.Event.SHIFT_MASK), prevTargetAction.getValue(Action.NAME)); * } * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0.0.0 */ public abstract class Actions { /** * Collects the keys of all the actions linked to a specific * {@link javax.swing.JComponent} and groups them in arrays by action names. * @param jc The JComponent with the actions linked to. * @return A HashMap formed by pairs of action names (key) and arrays of action keys * (value). Usually each action name has only one action key associated to it, and * the value of the pair is an object array with only one string, but this is not * an imperative: several actions can be associated to a single name. */ public static HashMap getActionKeys(JComponent jc){ HashMap result=new HashMap(); ActionMap am=jc.getActionMap(); Object[] amKeys=am.allKeys(); for(int i=0; i> "+am.get(value[i])); } } public static void mapAction(JComponent jc, HashMap actionKeys, Action act){ if(actionKeys==null) actionKeys=getActionKeys(jc); ActionMap am=jc.getActionMap(); Object name=act.getValue(Action.NAME); Object[] keys=(Object[])actionKeys.get(name); boolean replaced=false; if(keys!=null) for(int i=0; i6) s=s.substring(s.length()-6); return "0x"+s; } public static final String[] HTML_COLOR_NAMES={ "Black", "Silver", "Gray", "White", "Maroon", "Red", "Purple", "Fuchsia", "Green", "Lime", "Olive", "Yellow", "Navy", "Blue", "Teal", "Aqua", "Pink", "Orange", "DarkGray" }; public static final Color[] HTML_COLORS={ Color.black, Color.lightGray, Color.gray, Color.white, new Color(128, 0, 0), Color.red, new Color(128, 0, 128), Color.magenta, new Color(0, 128, 0), Color.green, new Color(128, 128, 0), Color.yellow, new Color(0, 0, 128), Color.blue, new Color(0, 128, 128), Color.cyan, Color.pink, Color.orange, Color.darkGray }; public static Color stringToColor(String s) throws Exception{ //Color c=Color.black; Color color=null; if(s.startsWith("0x")){ //c=Color.decode(s); long v=Long.decode(s).longValue(); color=new Color((int)v, s.length()>8 || v>=0x1000000); } else{ for(int i=0; i0){ StringTokenizer st=new StringTokenizer(s, ","); if(st.hasMoreTokens()) result[0]=getStrIndexAttr(st.nextToken(), hAlignName, defaultValue[0]); if(st.hasMoreTokens()) result[1]=getStrIndexAttr(st.nextToken(), vAlignName, defaultValue[1]); } } return result; } public static void setAlignProp(org.jdom.Element e, String id, int[] align, boolean omitIfDefault){ if(e!=null && id!=null && align!=null && align.length==2){ if(!omitIfDefault || !isDefaultAlign(align)){ e.setAttribute(id, hAlignName[align[0]]+","+vAlignName[align[1]]); } } } public static boolean isDefaultAlign(int[] align){ return(align!=null && align[0]==ALIGN_MIDDLE && align[1]==ALIGN_MIDDLE); } // ---------------------------------------------------------------------- // conversion functions for paragraphs of plain text // ---------------------------------------------------------------------- public static void addParagraphs(org.jdom.Element parent, String childName, String text){ if(text!=null){ org.jdom.Element child=new org.jdom.Element(childName); setParagraphs(child, text); parent.addContent(child); } } public static void setParagraphs(org.jdom.Element e, String text){ if(text!=null){ StringTokenizer st=new StringTokenizer(text, "\n"); while(st.hasMoreTokens()){ e.addContent(new org.jdom.Element(P).setText(st.nextToken())); } } } public static String getParagraphs(org.jdom.Element e){ StringBuffer sb=null; if(e!=null){ java.util.Iterator itr = e.getChildren(P).iterator(); while (itr.hasNext()) { String s=((org.jdom.Element)itr.next()).getText(); if(sb==null) sb=new StringBuffer(s); else sb.append("\n").append(s); } } return (sb==null ? null : sb.substring(0)); } // ---------------------------------------------------------------------- // conversion functions for arrays // ---------------------------------------------------------------------- public static String intArrayToString(int[] v){ return intArrayToString(v, v.length); } public static String intArrayToString(int[] v, int numElements){ StringBuffer sb=new StringBuffer(numElements*4); for(int i=0; i=DEFAULT) state=DEFAULT; return BOOL_STR[state]; } public static int getTriStateAttr(org.jdom.Element e, String attr, int defaultValue) throws Exception{ return getStrIndexAttr(e, attr, BOOL_STR, defaultValue); } public static boolean checkTriState(int v){ return v>=FALSE && v<=DEFAULT; } // boolean and Boolean public static String boolString(boolean value){ return BOOL_STR[value ? TRUE : FALSE]; } public static boolean getBoolAttr(org.jdom.Element e, String attr, boolean defaultValue) { String s=e.getAttributeValue(attr); boolean result=defaultValue; if(s!=null){ if(s.equalsIgnoreCase(BOOL_STR[TRUE])) result=true; else if(s.equalsIgnoreCase(BOOL_STR[FALSE])) result=false; else throw new NumberFormatException("invalid boolean: " + s); } return result; } public static Boolean getBooleanAttr(org.jdom.Element e, String attr, Boolean defaultValue) { String s=e.getAttributeValue(attr); Boolean result=defaultValue; if(s!=null){ if(s.equalsIgnoreCase(BOOL_STR[TRUE]) || s.equalsIgnoreCase(BOOL_STR[FALSE])){ result=new Boolean(s); } else{ throw new NumberFormatException("invalid boolean: " + s); } } return result; } // float public static float getFloatAttr(org.jdom.Element e, String attr, float defaultValue) { String s=e.getAttributeValue(attr); float result=defaultValue; if(s!=null){ result=Float.parseFloat(s); } return result; } // double public static double getDoubleAttr(org.jdom.Element e, String attr, double defaultValue) { String s=e.getAttributeValue(attr); double result=defaultValue; if(s!=null){ result=Double.parseDouble(s); } return result; } // ---------------------------------------------------------------------- // conversion functions for basic classes // ---------------------------------------------------------------------- // String public static String getStringAttr(org.jdom.Element e, String attr, String defaultValue, boolean allowEmpty){ String s=e.getAttributeValue(attr); String result=defaultValue; if(s!=null && (allowEmpty || s.length()>0)) result=s; return result; } public static void setStringAttr(org.jdom.Element e, String key, String value, boolean allowEmpty){ String v = allowEmpty && (value==null || value.length()==0) ? "" : value; if(key!=null && v!=null) e.setAttribute(key, v); } // String array index public static int getStrIndexAttr(org.jdom.Element e, String attr, String[] values, int defaultValue) throws Exception{ return getStrIndexAttr(e.getAttributeValue(attr), values, defaultValue); } public static int getStrIndexAttr(String s, String[] values, int defaultValue) throws Exception{ int result=defaultValue; if(s!=null && s.length()>0){ for(result=0; result0) result=String.copyValueOf(pwch); } else result=textField.getText(); } return result; } public boolean showInputDlg(Component parent, String[] msgKeys, String[] shortPromptKeys, JComponent[] promptObjects, String titleKey){ Vector v=new Vector(); if(msgKeys!=null){ for(int i=0; ii){ JLabel lb=new JLabel(get(shortPromptKeys[i])); lb.setLabelFor(promptObjects[i]); lb.setHorizontalAlignment(SwingConstants.LEFT); c.gridwidth=GridBagConstraints.RELATIVE; gridBag.setConstraints(lb, c); panel.add(lb); } c.gridwidth=GridBagConstraints.REMAINDER; gridBag.setConstraints(promptObjects[i], c); panel.add(promptObjects[i]); } v.add(panel); } } String title= (titleKey!=null ? get(titleKey) : ""); NarrowOptionPane pane=new NarrowOptionPane(60, v.toArray(), JOptionPane.QUESTION_MESSAGE, JOptionPane.DEFAULT_OPTION, null, parseButtons("oc")); return getFeedback(parent, pane, title)==OK; } public boolean showInputDlg(Component parent, JComponent mainComponent, String titleKey){ return showInputDlg(parent, mainComponent, titleKey, "oc"); } public boolean showInputDlg(Component parent, JComponent mainComponent, String titleKey, String buttons){ return showInputDlg(parent, mainComponent, titleKey, buttons, false); } public boolean showInputDlg(Component parent, JComponent mainComponent, String titleKey, String buttons, boolean centerOnParent){ InputDlg dlg=new InputDlg(parent, titleKey, buttons, mainComponent, centerOnParent); return dlg.getFeedback()==OK; //String title= (titleKey!=null ? get(titleKey) : ""); //NarrowOptionPane pane=new NarrowOptionPane(60, mainComponent, JOptionPane.PLAIN_MESSAGE, JOptionPane.DEFAULT_OPTION, null, parseButtons(buttons)); //return getFeedback(parent, pane, title)==OK; } class InputDlg extends JDialog implements java.awt.event.ActionListener{ int result=CANCEL; Component parent; boolean centerOnParent; InputDlg(Component parent, String titleKey, String buttons, JComponent mainComponent, boolean centerOnParent){ // 26-jan-06 - Modified to solve bug #73, reported by Jorda Polo // Compile error in gcj 4.0.3: // "Can't reference 'this' before the superclass constructor has been called." // OLD CODE: // super(JOptionPane.getFrameForComponent(parent), titleKey!=null ? get(titleKey) : "", true); // NEW CODE: // Split in two steps: // 1 - call super with 'owner' and 'modal' parameters // 2 - if 'titleKey' not null, set title super(JOptionPane.getFrameForComponent(parent), true); if(titleKey!=null) setTitle(get(titleKey)); // -------- this.parent=parent; this.centerOnParent=centerOnParent; setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE); getContentPane().setLayout(new BorderLayout(10, 10)); if(mainComponent!=null) getContentPane().add(mainComponent, BorderLayout.CENTER); JButton[] btn=parseJButtons(buttons); JPanel btnPanel=new JPanel(); JButton defaultBtn=null; for(int i=0; i=3600){ sb.append(v/3600).append("h"); } if(v>=60){ sb.append((v%3600)/60).append("'"); } sb.append(v%60).append("\""); return sb.substring(0); } /* Since the Java specification does not include the ISO 639-2 three-letter * language codes, we provide this HashMap to support it. The list will be * expanded as new translations of JClic where created. */ public static final HashMap ISO_639_2_CODES=new HashMap(); static{ ISO_639_2_CODES.put("ast","asturianu"); } public static String getDescriptiveLanguageCode(String languageCode){ String result=null; if(languageCode!=null){ result=(String)ISO_639_2_CODES.get(languageCode); if(result==null){ Locale lx=new Locale(languageCode, ""); result=lx.getDisplayName(Locale.getDefault()); } result=result+" ("+languageCode+")"; } return result; } public static String getLanguageFromDescriptive(String descriptive){ String result=null; int p=-1; if(descriptive!=null && (descriptive=descriptive.trim()).length()>4 && (p=descriptive.lastIndexOf('('))>0){ result=descriptive.substring(p+1, descriptive.length()-1); } return result; } public static final String[] getDescriptiveLanguageCodes(Locale inLocale){ Locale dl=Locale.getDefault(); String[] lc=Locale.getISOLanguages(); TreeMap tree = new TreeMap(); for(int i=0; i")){ maxCharactersPerLineCount=Integer.MAX_VALUE; } this.maxCharactersPerLineCount=maxCharactersPerLineCount; setMessage(message); setOptions(options); setInitialValue(initialValue); setIcon(icon); setMessageType(messageType); setOptionType(optionType); value = JOptionPane.UNINITIALIZED_VALUE; inputValue = JOptionPane.UNINITIALIZED_VALUE; updateUI(); } public int getMaxCharactersPerLineCount() { return maxCharactersPerLineCount; } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ExtendedJDialog.java0000644000175000017500000000542411377161311021755 0ustar /* * File : ExtendedJDialog.java * Created : 04-jun-2002 12:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Component; import java.awt.Dialog; import java.awt.Frame; import java.awt.event.WindowAdapter; import javax.swing.JDialog; import javax.swing.JOptionPane; /** * This class is just a {@link javax.swing.JDialog} with a {@link java.awt.event.WindowAdapter} * that checks for focus lost. It also provides an utility method to place the dialog window * centered over another swing object. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ExtendedJDialog extends JDialog { private WindowAdapter wa=null; private boolean waConnected=false; /** Creates new JDialog */ public ExtendedJDialog(Frame owner, String title, boolean modal) { super(owner, title, modal); createComponentEvents(); } public ExtendedJDialog(Component owner, String title, boolean modal) { this(JOptionPane.getFrameForComponent(owner), title, modal); } public ExtendedJDialog(Dialog owner, String title, boolean modal) { super(owner, title, modal); createComponentEvents(); } protected void createComponentEvents(){ /* * Removed due to problems with MAC OSX * wa=new java.awt.event.WindowAdapter(){ public void windowDeactivated(java.awt.event.WindowEvent e){ requestFocus(); } }; */ } public void setVisible(boolean b){ if(b){ if(!waConnected && wa!=null){ addWindowListener(wa); waConnected=true; } } else{ if(waConnected && wa!=null){ removeWindowListener(wa); waConnected=false; } } super.setVisible(b); } public void centerOver(Component parent){ if(parent!=null) setLocation((parent.getWidth()-getWidth())/2, (parent.getHeight()-getHeight())/2); setLocationRelativeTo(parent); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/SmallButtonBorder.java0000644000175000017500000000351511377161311022364 0ustar /* * File : SmallButtonBorder.java * Created : 14-apr-2004 17:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.util.HashMap; import javax.swing.JComponent; import javax.swing.border.Border; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class SmallButtonBorder implements Border{ boolean borderOn; Border m_border; public SmallButtonBorder(Border border, boolean borderOn){ m_border=border; this.borderOn=borderOn; } public SmallButtonBorder(JComponent jc, boolean borderOn){ this(jc.getBorder(), borderOn); } public void paintBorder(java.awt.Component c, java.awt.Graphics g, int x, int y, int width, int height) { if(borderOn) m_border.paintBorder(c, g, x, y, width, height); } public java.awt.Insets getBorderInsets(java.awt.Component component) { java.awt.Insets i=(java.awt.Insets)m_border.getBorderInsets(component).clone(); i.left=i.top; i.right=i.bottom; return i; } public boolean isBorderOpaque() { return m_border.isBorderOpaque(); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ExtendedByteArrayInputStream.java0000644000175000017500000000434011377161311024536 0ustar /* * File : ExtendedByteArrayInputStream.java * Created : 21-sep-2001 10:14 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.ByteArrayInputStream; /** * This class extends {@link java.io.ByteArrayInputStream} in two ways: it adds a "name" * member, and gives read-only acces to its protected members pos, * mark and count. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ExtendedByteArrayInputStream extends ByteArrayInputStream { protected String m_name; /** Creates new ExtendedByteArrayInputStream */ public ExtendedByteArrayInputStream(byte[] buffer, String name){ super(buffer); m_name=name; } public ExtendedByteArrayInputStream(byte[] buffer, int offset, int length, String name){ super(buffer, offset, length); m_name=name; } public ExtendedByteArrayInputStream duplicate(){ return new ExtendedByteArrayInputStream(buf, m_name); } public String getName(){ return m_name; } public int getPos(){ return pos; } public int getMark(){ return mark; } public int getCount(){ return count; } public boolean eosReached(){ return pos>=count; } public long seek(long param){ pos=0; return skip(param); } public byte[] getBuffer(){ return buf; } public boolean markSupported(){ return true; } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/FileChooserForFiles.java0000644000175000017500000001077411377161311022623 0ustar /* * File : FileChooserForFiles.java * Created : 18-apr-2002 16:43 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.File; import java.lang.reflect.Method; import javax.swing.JFileChooser; import javax.swing.filechooser.FileSystemView; import javax.swing.plaf.FileChooserUI; import javax.swing.plaf.metal.MetalFileChooserUI; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class FileChooserForFiles extends JFileChooser{ /** Creates new FileChooserForFiles */ public FileChooserForFiles(){ setFileSelectionMode(JFileChooser.FILES_ONLY); } public FileChooserForFiles(File file) { super(file); setFileSelectionMode(JFileChooser.FILES_ONLY); } public FileChooserForFiles(File currentDirectory, FileSystemView fsv) { super(currentDirectory, fsv); setFileSelectionMode(JFileChooser.FILES_ONLY); } public FileChooserForFiles(FileSystemView fsw) { super(fsw); setFileSelectionMode(JFileChooser.FILES_ONLY); } public FileChooserForFiles(String file) { super(file); setFileSelectionMode(JFileChooser.FILES_ONLY); } public FileChooserForFiles(String currentDirectory, FileSystemView fsv) { super(currentDirectory, fsv); setFileSelectionMode(JFileChooser.FILES_ONLY); } public void setCurrentDirectory(final File dir) { final String oldFileName = getCurrentFileName(); super.setCurrentDirectory(dir); // TODO: interpret oldFilename for multiselection if (oldFileName != null && oldFileName.indexOf('"')== -1) { if (getCurrentFileName() == null) { setSelectedFile(new File(dir, oldFileName)); } } } static Class WindowsFileChooserUIClass; static Method getFileNameMethod; static{ try{ // 03-Apr-2008: Perform a previous check of the class as resource in order to avoid // uncatchable exceptions in applets if(FileChooserForFiles.class.getResource("/com/sun/java/swing/plaf/windows/WindowsFileChooserUI.class")!=null){ WindowsFileChooserUIClass=Class.forName("com.sun.java.swing.plaf.windows.WindowsFileChooserUI"); if(WindowsFileChooserUIClass!=null){ getFileNameMethod=WindowsFileChooserUIClass.getMethod("getFileName", (Class[])null); } } } catch(Exception ex){ // Class not found: ignore } } /** JDKBUG: get current selected filename. */ private final String getCurrentFileName() { final FileChooserUI fchui = getUI(); String fileName=null; if (fchui instanceof MetalFileChooserUI) { fileName = ((MetalFileChooserUI)fchui).getFileName(); } else if(WindowsFileChooserUIClass!=null && WindowsFileChooserUIClass.isInstance(fchui) && getFileNameMethod!=null) { try{ fileName = (String)getFileNameMethod.invoke(fchui, (Object[])null); } catch(Exception ex){ fileName=null; } } else { fileName = null; } return fileName == null || fileName.trim().length()== 0 ? null : fileName; } public void directSetSelectedFile(final File selectedFile){ super.setSelectedFile(selectedFile); } /** JDKBUG: avoid unsetting filename when a directory is selected. */ public void setSelectedFile(final File selectedFile) { if (selectedFile != null) { if ((selectedFile.isDirectory() && isDirectorySelectionEnabled()) || (!selectedFile.isDirectory() && isFileSelectionEnabled())) { super.setSelectedFile(selectedFile); } } } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/SwingWorker.java0000644000175000017500000000776111377161311021252 0ustar /* * File : SwingWorker.java * Created : 09-jan-2002 12:00 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Taken from: * The Java Tutorial * http://java.sun.com/docs/books/tutorial/ */ package edu.xtec.util; import javax.swing.SwingUtilities; /** * This is the 3rd version of SwingWorker (also known as * SwingWorker 3), an abstract class that you subclass to * perform GUI-related work in a dedicated thread. For * instructions on using this class, see: * * http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html * * Note that the API changed slightly in the 3rd version: * You must now invoke start() on the SwingWorker after * creating it. */ public abstract class SwingWorker { private Object value; // see getValue(), setValue() private Thread thread; private boolean cancelled; /** * Class to maintain reference to current worker thread * under separate synchronization control. */ private static class ThreadVar { private Thread thread; ThreadVar(Thread t) { thread = t; } synchronized Thread get() { return thread; } synchronized void clear() { thread = null; } } private ThreadVar threadVar; /** * Get the value produced by the worker thread, or null if it * hasn't been constructed yet. */ protected synchronized Object getValue() { return value; } public void cancel(){ cancelled=true; } public boolean isCancelled(){ return cancelled; } /** * Set the value produced by worker thread */ private synchronized void setValue(Object x) { value = x; } /** * Compute the value to be returned by the get method. */ public abstract Object construct(); /** * Called on the event dispatching thread (not on the worker thread) * after the construct method has returned. */ public void finished() { } /** * A new method that interrupts the worker thread. Call this method * to force the worker to stop what it's doing. */ public void interrupt() { Thread t = threadVar.get(); if (t != null) { t.interrupt(); } threadVar.clear(); } /** * Return the value created by the construct method. * Returns null if either the constructing thread or the current * thread was interrupted before a value was produced. * * @return the value created by the construct method */ public Object get() { while (true) { Thread t = threadVar.get(); if (t == null) { return getValue(); } try { t.join(); } catch (InterruptedException e) { Thread.currentThread().interrupt(); // propagate return null; } } } /** * Start a thread that will call the construct method * and then exit. */ public SwingWorker() { final Runnable doFinished = new Runnable() { public void run() { finished(); } }; Runnable doConstruct = new Runnable() { public void run() { try { setValue(construct()); } finally { threadVar.clear(); } SwingUtilities.invokeLater(doFinished); } }; Thread t = new Thread(doConstruct); threadVar = new ThreadVar(t); } /** * Start the worker thread. */ public void start() { Thread t = threadVar.get(); if (t != null) { t.start(); } } public void startLater(){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ start(); } }); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ProgressDialog.java0000644000175000017500000001534111377161311021706 0ustar /* * File : ProgressDialog.java * Created : 10-dec-2002 14:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import javax.swing.*; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import java.io.InputStream; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ProgressDialog extends ExtendedJDialog implements ProgressInputStream.ProgressInputStreamListener{ protected Options options=null; protected SwingWorker worker=null; protected boolean progressActive=false; protected boolean cancellable=false; protected boolean saving=false; /** Creates new form ProgressDialog */ public ProgressDialog(JComponent parent, Options options) { //super(parent, "", true); super(parent, "", true); this.options=options; initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; mainPanel = new javax.swing.JPanel(); label = new javax.swing.JLabel(); fileLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); cancelButton = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE); mainPanel.setLayout(new java.awt.GridBagLayout()); label.setText(" "); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(12, 5, 0, 5); mainPanel.add(label, gridBagConstraints); fileLabel.setText(" "); fileLabel.setFont(new java.awt.Font("Dialog", 0, 12)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5); mainPanel.add(fileLabel, gridBagConstraints); progressBar.setPreferredSize(new java.awt.Dimension(250, 22)); progressBar.setStringPainted(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); mainPanel.add(progressBar, gridBagConstraints); cancelButton.setText(options.getMsg("CANCEL")); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5); mainPanel.add(cancelButton, gridBagConstraints); getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); pack(); }//GEN-END:initComponents private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed if(cancellable && worker!=null){ worker.cancel(); //worker.interrupt(); } }//GEN-LAST:event_cancelButtonActionPerformed public void start(String titleKey, String msgKey, SwingWorker worker, boolean showProgressBar, boolean cancellable, boolean saving){ this.worker=worker; this.cancellable=cancellable; this.saving=saving; setTitle(titleKey!=null ? options.getMsg(titleKey) : ""); label.setText(options.getMsg(msgKey!=null ? msgKey : "WORKING")); cancelButton.setVisible(cancellable && worker!=null); progressBar.setVisible(showProgressBar); setProgressValue(0); mainPanel.revalidate(); pack(); centerOver(getParent()); if(worker!=null){ worker.startLater(); } setVisible(true); } public void setText(String txt){ label.setText(txt); mainPanel.revalidate(); } public void setFileLabel(String txt){ fileLabel.setText(txt==null ? "" : txt); } public void startProgress(String name){ setProgressValue(0); name=(name==null ? "" : name.replace('\\', '/')); int i=name.lastIndexOf('/'); if(i>0) name=name.substring(i+1); fileLabel.setText(name==null ? "" : options.getMsg(saving ? "SAVING_FILE" : "LOADING_FILE")+" "+name); progressActive=true; } public void endProgress() { progressActive=false; } public void setProgressMax(int max) { progressBar.setMaximum(max); } public void setProgressValue(int value) { progressBar.setValue(value); } public InputStream getProgressInputStream(InputStream is, int expectedLength, String name){ InputStream result=null; if(!progressActive){ ProgressInputStream pi=new ProgressInputStream(is, expectedLength, name); pi.addProgressInputStreamListener(this); result=pi; } else{ result=is; } return result; } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancelButton; private javax.swing.JLabel fileLabel; private javax.swing.JLabel label; private javax.swing.JPanel mainPanel; private javax.swing.JProgressBar progressBar; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/DomableBean.java0000644000175000017500000001045511377161311021114 0ustar /* * File : DomableBean.java * Created : 25-mar-2003 11:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.Serializable; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Vector; /** * This class has a collection of XML {@link org.jdom.Element} objects, among with a * set of properties represented by key-value pairs, and a string identifer. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class DomableBean extends Object implements Domable, Serializable{ public static final String ELEMENT_NAME="bean", ID="id", PARAM="param", NAME="name", VALUE="value"; private String id; private HashMap params; private Vector elements; /** Creates a new instance of DomableBean */ public DomableBean() { } public DomableBean(String id) { setId(id); } private Vector chkElements(){ if(elements==null) elements=new Vector(); return elements; } public String getId(){ return id; } public void setId(String id){ this.id=id; } public org.jdom.Element getJDomElement() { org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); if(id!=null) e.setAttribute(ID, id); if(params!=null){ Iterator it=params.keySet().iterator(); while(it.hasNext()){ String key=(String)it.next(); String value=(String)params.get(key); if(value!=null){ org.jdom.Element child=new org.jdom.Element(PARAM); child.setAttribute(NAME, key); child.setAttribute(VALUE, value); e.addContent(child); } } } if(elements!=null){ Iterator it=elements.iterator(); while(it.hasNext()){ e.addContent(((org.jdom.Element)it.next()).detach()); } } return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception { JDomUtility.checkName(e, ELEMENT_NAME); setId(e.getAttributeValue(ID)); List children=e.getChildren(); Iterator it=children.iterator(); while(it.hasNext()){ org.jdom.Element child=(org.jdom.Element)it.next(); if(PARAM.equals(child.getName())){ getParams().put(JDomUtility.getStringAttr(child, NAME, "DEFAULT", false), JDomUtility.getStringAttr(child, VALUE, "", false)); } else{ chkElements().add(child); } } } public static DomableBean getDomableBean(org.jdom.Element e) throws Exception{ DomableBean db=new DomableBean(null); db.setProperties(e, null); return db; } public void setParam(String key, String value){ if(key!=null) getParams().put(key, value); } public String getParam(String key){ return key==null ? null : (String)getParams().get(key); } public HashMap getParams(){ if(params==null) params=new HashMap(); return params; } public void addElement(org.jdom.Element e){ chkElements().add(e); } public org.jdom.Element[] getElements(){ org.jdom.Element[] result=null; if(elements!=null) result=(org.jdom.Element[])elements.toArray(new org.jdom.Element[elements.size()]); else result=new org.jdom.Element[0]; return result; } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ResourceBridge.java0000644000175000017500000000235411377161311021666 0ustar /* * File : ResourceBridge.java * Created : 16-sep-2002 12:31 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public interface ResourceBridge { public java.io.InputStream getProgressInputStream(java.io.InputStream is, int expectedLength, String name); public void displayUrl(String url, boolean inFrame); public edu.xtec.util.Options getOptions(); public String getMsg(String key); public javax.swing.JComponent getComponent(); } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ResourceManager.java0000644000175000017500000001021711377161311022041 0ustar /* * File : ResourceManager.java * Created : 07-mar-2002 17:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.HashMap; import javax.swing.ImageIcon; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class ResourceManager{ public static final String RESOURCE_ROOT="/edu/xtec/resources/"; public static final String RESOURCE_CLASS_ROOT="edu.xtec.resources."; public static final StreamIO.InputStreamProvider STREAM_PROVIDER=new StreamIO.InputStreamProvider(){ public java.io.InputStream getInputStream(String resourceName) throws Exception{ return getResourceAsStream(resourceName); } }; public static final String DEFAULT_LOCALE="en"; private static HashMap icons=new HashMap(); public static ImageIcon getImageIcon(String name){ ImageIcon result=(ImageIcon)icons.get(name); if(result==null){ try{ result=new ImageIcon(getResource(name)); String s=name; if(s.startsWith("icons/")) s=new StringBuffer("@").append(s.substring(6)).substring(0); result.setDescription(s); icons.put(name, result); } catch(Exception ex){ System.err.println("unable to get image "+name); System.err.println(ex); } } return result; } public static java.net.URL getResource(String name) throws Exception{ java.net.URL result=ResourceManager.class.getResource(RESOURCE_ROOT+name); if(result==null) throw buildException(name); return result; } public static java.io.InputStream getResourceAsStream(String name) throws Exception{ java.io.InputStream result=ResourceManager.class.getResourceAsStream(RESOURCE_ROOT+name); if(result==null) throw buildException(name); return result; } public static byte[] getResourceBytes(String name) throws Exception{ return StreamIO.readInputStream(getResourceAsStream(name)); } public static ExtendedByteArrayInputStream getResourceAsByteArray(String name) throws Exception{ return new ExtendedByteArrayInputStream(getResourceBytes(name), name); } public static String getResourceText(String name, boolean useCRLF) throws Exception{ String lineEnding = useCRLF ? "\r\n" : System.getProperty("line.separator"); BufferedReader in=new BufferedReader(new InputStreamReader(getResourceAsStream(name))); StringBuffer sb=new StringBuffer(); String line=null; while((line=in.readLine())!=null){ sb.append(line).append(lineEnding); } in.close(); return sb.substring(0); } public static java.util.ResourceBundle getBundle(String name, java.util.Locale locale) throws Exception{ if(locale!=null && DEFAULT_LOCALE.equals(locale.getLanguage())) locale.setDefault(locale); java.util.ResourceBundle result=java.util.ResourceBundle.getBundle(RESOURCE_CLASS_ROOT+name, locale); if(result==null) throw buildException(name); return result; } private static Exception buildException(String name){ return new Exception("Unable to load resource: "+name); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ProgressDialog.form0000644000175000017500000001134011377161311021723 0ustar
jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/Domable.java0000644000175000017500000000271611377161311020327 0ustar /* * File : Domable.java * Created : 24-mar-2003 15:26 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; /** * This interface applies to all classes that can serialize and de-serialize its data * into a XML {@link org.jdom.Element} of type JDOM. * The getJDomElement method stores the current non-transient data into a * JDOM element, and setProperties reads the data. Domable classes * should implement also a static method that builds new objects from a provided Element. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public interface Domable { org.jdom.Element getJDomElement(); void setProperties(org.jdom.Element e, Object aux) throws Exception; } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/VFlowScrollPane.java0000644000175000017500000000400511377161311021775 0ustar /* * File : VFlowScrollPane.java * Created : 28-sep-2004 09:24 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Component; import java.awt.Dimension; import java.awt.FlowLayout; import javax.swing.JPanel; import javax.swing.JScrollPane; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class VFlowScrollPane extends JScrollPane{ JPanel panel; int panelHGap, panelVGap; public VFlowScrollPane(JPanel view){ super(view, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); panel=view; if(panel.getLayout() instanceof FlowLayout){ panelHGap=((FlowLayout)panel.getLayout()).getHgap(); panelVGap=((FlowLayout)panel.getLayout()).getVgap(); } } public void doLayout(){ int n=panel.getComponentCount(); if(n>0){ Dimension minSize=getMinimumSize(); Component lastCmp=panel.getComponent(n-1); int w=Math.max(minSize.width, getWidth()-getVerticalScrollBar().getWidth()-panelHGap); panel.setPreferredSize(new Dimension(w, 9999)); super.doLayout(); panel.setPreferredSize(new Dimension(w, lastCmp.getY()+lastCmp.getHeight()+panelVGap)); invalidate(); } super.doLayout(); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/LFUtil.java0000644000175000017500000000763311377161311020126 0ustar /* * File : LFUtil.java * Created : 24-oct-2001 21:22 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Color; import java.awt.Component; import java.awt.Font; import javax.swing.SwingUtilities; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class LFUtil { /** Key for Options */ public static final String LOOK_AND_FEEL="lookAndFeel"; /** Default look & feel name */ public static final String DEFAULT="default"; /** System look & feel name */ public static final String SYSTEM="system"; /** Metal look & feel name */ public static final String METAL="metal"; /** Motif look & feel name */ public static final String MOTIF="motif"; /** Windows look & feel name */ public static final String WINDOWS="windows"; public static final String[] VALUES={DEFAULT, SYSTEM, METAL, MOTIF}; /** Sets the app look & feel * @param friendlyName Look & feel name. If null, empty or not recognized this function does nohing. */ public static void setLookAndFeel(String friendlyName, Component rootComponent){ if(friendlyName!=null){ try{ if(friendlyName.equals(DEFAULT)) setLookAndFeel(null, javax.swing.UIManager.getCrossPlatformLookAndFeelClassName(), rootComponent); else if(friendlyName.equals(SYSTEM)) setLookAndFeel(null, javax.swing.UIManager.getSystemLookAndFeelClassName(), rootComponent); else if(friendlyName.equals(METAL)) setLookAndFeel("javax.swing.plaf", "metal.MetalLookAndFeel", rootComponent); else if(friendlyName.equals(MOTIF)) setLookAndFeel("com.sun.java.swing.plaf", "motif.MotifLookAndFeel", rootComponent); else if(friendlyName.equals(WINDOWS)) setLookAndFeel("com.sun.java.swing.plaf", "windows.WindowsLookAndFeel", rootComponent); } catch(Exception ex){ System.err.println("unable to set lookAndFeel to: \""+friendlyName+"\"\n"+ex); } } } private static void setLookAndFeel(String prefix, String className, Component rootComponent) throws Exception{ String cl=(prefix!=null && prefix.length()>0) ? prefix+"."+className : className; javax.swing.UIManager.setLookAndFeel(cl); if(rootComponent!=null) SwingUtilities.updateComponentTreeUI(rootComponent); } public static Color getSysColor(String key, Color defaultValue){ Color result=javax.swing.UIManager.getColor(key); return result==null ? defaultValue : result; } public static Color getColor(String key, Color defaultValue){ Color result=defaultValue; Object o=javax.swing.UIManager.get(key); if(o!=null && o instanceof Color) result=(Color)o; return result; } public static Font getFont(String key, Font defaultValue){ Font result=defaultValue; Object o=javax.swing.UIManager.get(key); if(o!=null && o instanceof Font) result=(Font)o; return result; } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/FontCheck.java0000644000175000017500000001363511377161311020632 0ustar /* * File : FontCheck.java * Created : 15-mar-2002 11:33 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Font; import java.awt.font.FontRenderContext; import java.io.File; import java.awt.GraphicsEnvironment; import java.util.HashMap; import java.io.FileOutputStream; import java.awt.geom.AffineTransform; import java.awt.font.TextLayout; import java.lang.reflect.Method; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class FontCheck { public static final String DEFAULT_FONT_NAME="default"; public static final Font DEFAULT_FONT=new Font(DEFAULT_FONT_NAME, Font.PLAIN, 17); public static final String TMP_FONT_PREFIX="tmp_font_"; //private static final FontRenderContext FRC=new FontRenderContext(null, true, true); private static final HashMap systemFonts=new HashMap(); private static String[] fontList; public static final String[] fontSizes=new String[] { "8", "9", "10", "11", "12", "14", "16", "18", "20", "22", "24", "26", "28", "36", "48", "72"}; private FontCheck(){ } public static String[] getFontList(boolean reload){ if(fontList==null || reload) fontList=GraphicsEnvironment.getLocalGraphicsEnvironment().getAvailableFontFamilyNames(); return fontList; } public static boolean checkFont(Font font){ boolean result=false; if(font!=null){ FontRenderContext frc=new FontRenderContext(new AffineTransform(), false, false); TextLayout layout=new TextLayout("AB", font, frc); result=layout.getBounds().getWidth()>1; } return result; //return font==null ? false : font.getStringBounds("A", FRC).getWidth()>0.0; } public static boolean checkFontFamilyName(Object family){ return family!=null && family instanceof String && checkFont(new Font((String)family, Font.PLAIN, 17)); } public static Font getValidFont(String family, int style, int size){ Font f=new Font(family, style, size); if(!checkFont(f)){ Font fontBase=(Font)systemFonts.get(family.toLowerCase()); if(fontBase==null){ fontBase=DEFAULT_FONT; } f=fontBase.deriveFont(style, size); } return f; } public static String getValidFontFamilyName(Object family){ Font f=(Font)systemFonts.get(family instanceof String ? ((String)family).toLowerCase() : family); if(f!=null) return f.getFamily(); return checkFontFamilyName(family) ? (String)family : DEFAULT_FONT_NAME; } public static Font checkSystemFont(String fontName, String fontFileName){ String fnLower=fontName.toLowerCase(); Font f=(Font)systemFonts.get(fnLower); if(f==null){ f=new Font(fontName, Font.PLAIN, 17); if(!checkFont(f) || !fontName.toLowerCase().equals(f.getFamily().toLowerCase())){ try{ f=buildNewFont(fontFileName, ResourceManager.STREAM_PROVIDER, "fonts/"+fontFileName); if(checkFont(f)) systemFonts.put(fnLower, f); else f=DEFAULT_FONT; } catch(Exception ex){ System.err.println("Unable to build font "+fontName+"\n:"+ex); } } } return f; } public static Font buildNewFont(String fileName, StreamIO.InputStreamProvider isp, String resourceName) throws Exception{ // code adapted from java.awt.Font String tmpDir=System.getProperty("java.io.tmpdir"); if(tmpDir==null) throw new Exception("Unable to create fonts: No temp dir!"); File fontFile=new File(tmpDir+File.separator+TMP_FONT_PREFIX+fileName); if(!fontFile.exists()) StreamIO.writeStreamTo(isp.getInputStream(resourceName), new FileOutputStream(fontFile)); //sun.java2d.SunGraphicsEnvironment env = //(sun.java2d.SunGraphicsEnvironment)GraphicsEnvironment //.getLocalGraphicsEnvironment(); //String createName = env.createFont(fontFile); //String createName = sun.java2d.SunGraphicsEnvironment.createFont(fontFile); String createName=null; try{ // 03-Apr-2008: Perform a previous check of the class as resource in order to avoid // uncatchable exceptions in applets if(FontCheck.class.getResource("/sun/java2d/SunGraphicsEnvironment.class")!=null){ Class cl=Class.forName("sun.java2d.SunGraphicsEnvironment"); if(cl!=null){ Method m=cl.getMethod("createFont", new Class[]{File.class}); if(m!=null){ createName=(String)m.invoke(null, new Object[]{fontFile}); } } } } catch(Exception ex){ // Todo: // Implement dynamic font loading for Java 1.5 } if(createName == null) throw new Exception("Unable to create font - bad font data"); return getValidFont(createName, Font.PLAIN, 1); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/Html.java0000644000175000017500000002266111377161311017671 0ustar /* * File : Html.java * Created : 05-dec-2001 12:28 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ import java.util.StringTokenizer; import java.io.PrintStream; public class Html extends Object { public static final String SP=" "; public static final String NBSP=" "; public static final String BR="\n
\n"; public static final String P="\n

\n"; public static final String Q="\""; public static final int LEFT=0, CENTER=1, RIGHT=2; public static final String[] ALIGN={"", "ALIGN=\"center\"", "ALIGN=\"right\""}; protected StringBuffer sb; public Html(int bufSize){ sb=new StringBuffer(bufSize); } public Html(StringBuffer sb){ this.sb=sb; } public String toString(){ return sb.substring(0); } public Html append(String str){ sb.append(str==null ? "" : str); return this; } public Html appendParagraphs(String source){ StringTokenizer st=new StringTokenizer(source, "\n"); boolean first=true; while(st.hasMoreTokens()){ if(!first) sb.append(BR); else first=false; sb.append(st.nextToken()); } return this; } public Html mailTo(String mail, boolean parenthesis){ if(parenthesis) sb.append("("); sb.append("").append(mail).append(""); if(parenthesis) sb.append(")"); return this; } public Html linkTo(String url, String text){ sb.append(""); sb.append(text==null ? url : text); sb.append(""); return this; } public Html bold(String text){ sb.append("").append(text).append(""); return this; } public Html td(boolean init){ sb.append(init ? "

\n"); return this; } public Html td(String text){ return td(text, false); } public Html td(String text, int align, boolean bold, String tdParams){ sb.append("\n"); return this; } public Html td(String text, boolean bld){ sb.append("\n"); return this; } public Html tr(boolean init){ return append(init ? "" : "\n"); } public Html br(){ return append(BR); } public Html p(){ return append(P); } public Html sp(){ return append(SP); } public Html nbsp(){ return append(NBSP); } public Html doubleCell(String tx1, boolean b1, String tx2, boolean b2){ tr(true); td(true); if(b1) sb.append(""); appendParagraphs(tx1); if(b1) sb.append(""); td(false); td(true); if(b2) sb.append(""); appendParagraphs(tx2); if(b2) sb.append(""); td(false); tr(false); return this; } public static String table(String content, String width, int border, int cellPadding, int cellSpacing, String style, boolean simpleCell){ int v=content!=null ? content.length() : 100; StringBuffer sbs=new StringBuffer(v+200); sbs.append("
" : "LEFT) sb.append(SP).append(ALIGN[align]); if(tdParams!=null) sb.append(SP).append(tdParams); sb.append(">"); if(bold) bold(text); else sb.append(text); sb.append(""); if(bld) bold(text); else sb.append(text); sb.append("
=0) sbs.append(" BORDER=\"").append(border).append(Q); if(cellPadding>=0) sbs.append(" CELLPADDING=\"").append(cellPadding).append(Q); if(cellSpacing>=0) sbs.append(" CELLSPACING=\"").append(cellSpacing).append(Q); if(style!=null) sbs.append(" STYLE=\"").append(style).append(Q); sbs.append(">\n"); if(simpleCell) sbs.append(""); sbs.append("\n
"); sbs.append(content); if(simpleCell) sbs.append("
"); return sbs.substring(0); } public static String getHtmlDoc(String content, String bgColor){ int v=content!=null ? content.length() : 100; StringBuffer sbs=new StringBuffer(v+100); sbs.append("\n"); sbs.append("\n"); sbs.append(content); sbs.append(""); return sbs.substring(0); } public static String quote(String txt){ StringBuffer sbs=new StringBuffer(txt.length()*3); sbs.append("'"); sbs.append(edu.xtec.util.StrUtils.replace(edu.xtec.util.StrUtils.replace(edu.xtec.util.StrUtils.replace(txt, "'", "'"),"\"", """), "`","’")); //edu.xtec.jclic.misc.Utils.replace(txt, "'", "\\'"), //"\"", "\\\"")); //edu.xtec.jclic.misc.Utils.replace(txt, "'", "’"), //"\"", """)); sbs.append("'"); return sbs.substring(0); } public static final String validChars=" -_.*0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static String encode(String src){ if(src==null || src.length()<1) return src; int len=src.length(); StringBuffer sbs=new StringBuffer(len*2); for(int i=0; i=0) sbs.append(ch); else if(ch<256) sbs.append("%").append(Integer.toHexString(ch)); else sbs.append("%26%23").append(Integer.toHexString(ch)).append("%3B"); } return sbs.substring(0); } public static String decode(String src){ if(src==null || src.length()<1) return src; int len=src.length(); StringBuffer sbs=new StringBuffer(len); for(int i=0; ii+2){ String v=s.substring(i+1, j).toLowerCase(); if(v.length()>2 && v.charAt(0)=='#'){ int k=0; if(v.charAt(1)=='x') k=Integer.parseInt(v.substring(2), 16); else k=Integer.parseInt(v.substring(1)); sbs.append((char)k); } else sbs.append('?'); i=j; } else sbs.append(ch); } return sbs.substring(0); } // to deprecate!! public static void processParamsLine(String txt, java.util.HashMap map, char sep, char equalSign){ if(txt!=null && txt.length()>0 && map!=null){ StringTokenizer st=new StringTokenizer(txt, String.valueOf(sep)); while(st.hasMoreTokens()){ String s=st.nextToken().trim(); String key=null, value=null; int k=s.indexOf(equalSign); if(k>0){ key=decode(s.substring(0, k).replace('+', ' ')); if(k"); pOut.println("function confirmAction(msg){"); pOut.println(" var agree=confirm(msg);"); pOut.println(" if (agree)"); pOut.println(" return true;"); pOut.println(" else"); pOut.println(" return false;"); pOut.println("}"); pOut.println(""); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/StreamIO.java0000644000175000017500000001737211377161311020453 0ustar /* * File : StreamIO.java * Created : 06-feb-2001 18:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.*; import java.awt.Component; import javax.swing.*; import java.awt.event.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class StreamIO{ private static boolean cancel=false; //public static final int DEFAULT_READ_STEP_SIZE=1024; public static final int DEFAULT_READ_STEP_SIZE=4096; private StreamIO(){ } public static void setCancel(boolean value){ cancel=value; } public interface InputStreamListener{ void notify(InputStream in, int bytesRead); } public static byte[] readInputStream(InputStream is) throws IOException{ return readInputStream(is, null, DEFAULT_READ_STEP_SIZE); } public static byte[] readInputStream(InputStream is, InputStreamListener lst, int stepSize) throws IOException{ cancel=false; BufferedInputStream bufferedStream = null; if(is instanceof BufferedInputStream) bufferedStream=(BufferedInputStream)is; else bufferedStream = new BufferedInputStream(is); ByteArrayOutputStream os=new ByteArrayOutputStream(); byte[] buffer=new byte[stepSize]; int bytesRead=0; while(!cancel){ //bytesRead=is.read(buffer); bytesRead=bufferedStream.read(buffer); if(lst!=null) lst.notify(is, bytesRead); if(bytesRead<=0) break; os.write(buffer, 0, bytesRead); Thread.yield(); } buffer=os.toByteArray(); os.close(); //is.close(); bufferedStream.close(); if(cancel) throw new InterruptedIOException("Cancelled by user"); return buffer; } public static byte[] readFile(File file) throws IOException{ return readFile(file, null, 0); } public static byte[] readFile(File file, InputStreamListener lst, int stepSize) throws IOException{ cancel=false; long fileLength = file.length(); if(/*fileLength<1 ||*/ fileLength>Integer.MAX_VALUE) throw new IOException(); int intFileLength=(int)fileLength; byte[] result=new byte[intFileLength]; BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file)); int bytesRead=0; for(int k=0; k0 && stepSize0){ progress.setMinimum(0); progress.setMaximum(knownSize); progress.setIndeterminate(false); } else progress.setIndeterminate(true); isl=new InputStreamListener(){ public void notify(InputStream in, int bytesRead){ progress.setValue(bytesRead); } }; dialog.getContentPane().add(progress); final InputStreamListener iis=isl; JButton cancelButton=new JButton(msg.get("CANCEL")); cancelButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent ev){ cancel=true; } }); dialog.getContentPane().add(cancelButton); dialog.pack(); final JDialog dlg=dialog; SwingWorker sw=new SwingWorker(){ private boolean result=false; public Object construct(){ try{ writeStreamTo(is, os, iis, DEFAULT_READ_STEP_SIZE); result=!cancel; } catch(Exception ex){ result=false; msg.showErrorWarning(dlg, "ERROR", ex); } dlg.setVisible(false); return new Boolean(result); } }; sw.startLater(); dialog.setVisible(true); return ((Boolean)sw.get()).booleanValue(); } public static Object cloneObject(Serializable obj) throws Exception{ ByteArrayOutputStream baos = new ByteArrayOutputStream(512); ObjectOutputStream out = new ObjectOutputStream(baos); out.writeObject(obj); out.close(); ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray()); ObjectInputStream in=new ObjectInputStream(bais); return in.readObject(); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/CustomListCellRenderer.java0000644000175000017500000000621211377161311023354 0ustar /* * File : CustomListCellRenderer.java * Created : 09-apr-2003 18:27 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.awt.Component; import javax.swing.Icon; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; /** * This class is a {@link javax.swing.ListCellRenderer} that can use an array of * strings and another array of icons to display its content based on the value of the * index param passed to getListCellRendererComponent. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CustomListCellRenderer extends JLabel implements ListCellRenderer{ protected String[] labels=null; protected Icon[] icons=null; public CustomListCellRenderer() { this(null, null); } /** Creates a new instance of CustomListCellRenderer */ public CustomListCellRenderer(String[] labels, Icon[] icons) { setObjects(labels, icons); setOpaque(true); if(labels==null){ setHorizontalAlignment(CENTER); setVerticalAlignment(CENTER); } setHorizontalAlignment(JLabel.LEFT); } public void setObjects(String[] labels, Icon[] icons){ this.labels=labels; this.icons=icons; } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } String s = ""; if(value instanceof String) s=(String)value; else if(labels!=null && index>=0 && index=0 && indexp0){ int j=p1-p0; result=new byte[j]; for(int i=0; i= 0) { result.append(str.substring(s, e)); if(replace!=null) result.append(replace); s = e+pattern.length(); } result.append(str.substring(s)); return result.substring(0); } public static String replace(String str, String pattern, String [] replace) { int s = 0; int e = 0; if(str==null) str=""; StringBuffer result = new StringBuffer(); int i=0; while ((e = str.indexOf(pattern, s)) >= 0) { result.append(str.substring(s, e)); if(replace!=null) result.append(replace[i++ % replace.length]); s = e+pattern.length(); } result.append(str.substring(s)); return result.substring(0); } public static boolean compareMultipleOptions(String answer, String check, boolean checkCase){ if(answer==null || answer.length()==0 || check==null || check.length()==0) return false; StringTokenizer st=new StringTokenizer(check, "|"); while(st.hasMoreTokens()){ if(checkCase ? st.nextToken().equals(answer) : st.nextToken().equalsIgnoreCase(answer)) return true; } return false; } public static String secureString(Object data){ if(data==null) return new String(); return data.toString(); } public static String secureString(Object data, String defaultValue){ String result=nullableString(data); return result==null ? defaultValue : result; } public static String nullableString(Object o){ String result=null; if(o!=null){ result=o.toString().trim(); if(result.length()==0) result=null; } return result; } public static String trimEnding(String str){ String result=str; if(result!=null){ int p=result.length()-1; int p0=p; while(p>=0){ char ch=result.charAt(p); if(ch==' ' || ch=='\n' || ch=='\r') p--; else break; } if(p!=p0){ result=result.substring(0, p+1); } } return result; } public static String secureSQLString(String data){ return replace(secureString(data), "'", "''"); } public static int getAbsIntValueOf(String s){ int result=-1; if(s!=null && s.length()>0){ for(int i=0; i'9') return result; } try{ result=Integer.parseInt(s); } catch(NumberFormatException ex){ result=-1; } } return result; } public static String getShortExpression(String text, int maxLen){ String result=secureString(text).trim(); if(maxLen>0 && result.length()>maxLen){ result=result.substring(0, maxLen); for(int p=maxLen-1; p>(2*maxLen/3); p--){ if(Character.isSpaceChar(result.charAt(p))){ result=result.substring(0, p)+"..."; break; } } } return result; } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/ProgressInputStream.java0000644000175000017500000001030111377161311022751 0ustar /* * File : ProgressInputStream.java * Created : 04-jul-2002 13:48 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.FilterInputStream; import java.util.Vector; import java.io.InputStream; import java.io.IOException; import java.util.Iterator; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProgressInputStream extends FilterInputStream{ private int nread; private int size; private boolean started; private Vector listeners=new Vector(); private String name; public ProgressInputStream(InputStream in, int expectedLength, String name){ super(in); this.name=name; started=false; nread=0; size=expectedLength; if(size<=0){ try { size = in.available(); } catch(IOException ioe){ size = 0; } } } public void addProgressInputStreamListener(ProgressInputStreamListener isl){ if(!listeners.contains(isl)){ listeners.add(isl); } } private void start(){ if(!started){ notifyListeners(MAX, size); notifyListeners(VALUE, 0); notifyListeners(START, 0); started=true; } } public int read() throws IOException { if(!started) start(); int c = in.read(); if (c >= 0) notifyListeners(VALUE, size); return c; } public int read(byte b[]) throws IOException { if(!started) start(); int nr = in.read(b); if (nr > 0) notifyListeners(VALUE, nread += nr); return nr; } public int read(byte b[], int off, int len) throws IOException{ if(!started) start(); int nr = in.read(b, off, len); if (nr > 0) notifyListeners(VALUE, nread += nr); return nr; } public long skip(long n) throws IOException { if(!started) start(); long nr = in.skip(n); if (nr > 0) notifyListeners(VALUE, nread += nr); return nr; } public void close() throws IOException { if(!started) start(); in.close(); notifyListeners(END, 0); } public synchronized void reset() throws IOException { if(!started) start(); in.reset(); nread = size - in.available(); notifyListeners(VALUE, nread); } protected static final int MAX=0, VALUE=1, START=2, END=3; private void notifyListeners(int action, int value){ Iterator it=listeners.iterator(); while(it.hasNext()){ ProgressInputStreamListener isl=(ProgressInputStreamListener)it.next(); switch(action){ case MAX: isl.setProgressMax(value); break; case VALUE: isl.setProgressValue(value); break; case START: isl.startProgress(name); break; case END: isl.endProgress(); break; default: break; } } } public interface ProgressInputStreamListener { void setProgressMax(int max); void setProgressValue(int value); void startProgress(String strName); void endProgress(); } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/CompoundObject.java0000644000175000017500000000633111377161311021674 0ustar /* * File : CompoundObject.java * Created : 17-feb-2003 10:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.io.Serializable; import java.net.URL; import javax.swing.ImageIcon; /** * This class encapsulates three fields: a text identifier, a * label and an icon. The icon is always an external resource, * accessible through an URL. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CompoundObject implements Serializable { protected String id=null; protected String text=null; protected String iconUrl=null; private transient ImageIcon icon=null; /** Creates a new instance of CompoundObject */ protected CompoundObject(){ } /** Creates a new instance of CompoundObject */ public CompoundObject(String id, String text, String iconUrl){ this.id=id; this.text=text; this.iconUrl=iconUrl; } public boolean hasIcon(){ return iconUrl!=null && iconUrl.length()>0; } public ImageIcon getIcon(){ if(icon==null && iconUrl!=null && iconUrl.length()>0){ String s=iconUrl; try{ if(!s.startsWith("http:")) s="file:/"+s; URL url=new URL(s); icon=new ImageIcon(url); } catch(Exception ex){ System.err.println("Unable to read image "+iconUrl+"\n"+ex); } } return icon; } public void clearIcon(){ icon=null; } /** Getter for property id. * @return Value of property id. */ public java.lang.String getId() { return id; } /** Setter for property id. * @param id New value of property id. */ public void setId(java.lang.String id) { this.id = id; } /** Getter for property text. * @return Value of property text. */ public java.lang.String getText() { return text; } /** Setter for property text. * @param text New value of property text. */ public void setText(java.lang.String text) { this.text = text; } /** Getter for property iconUrl. * @return Value of property iconUrl. */ public java.lang.String getIconUrl() { return iconUrl; } /** Setter for property iconUrl. * @param iconUrl New value of property iconUrl. */ public void setIconUrl(java.lang.String iconUrl) { this.iconUrl = iconUrl; } } jclic-0.2.1.0.orig/src/utilities/edu/xtec/util/MultiBundle.java0000644000175000017500000000547111377161311021211 0ustar /* * File : MultiBundle.java * Created : 28-jan-2002 11:42 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.util; import java.util.ResourceBundle; import java.util.Locale; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MultiBundle { java.util.ArrayList bundles; public MultiBundle(ResourceBundle mainBundle, String resource, Locale l){ bundles=new java.util.ArrayList(1); bundles.add(new ResourceBundleEx(mainBundle, resource, l)); } public void addBundle(ResourceBundle bundle, String resource, Locale l){ for(int i=0; i Firma digital

O motor Java não reconhece a assinatura digital desta aplicação!


Para que este programa se execute correctamente é necessário adicionar o certificado da entidade "clic" à lista de assinaturas reconhecidas por sua máquina virtual Java.
 
Os usuários do Windows podem fazê-lo facilmente ao copiar (download) e executar o arquivo do  certificado que está no endereço abaixo:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
Para outros sistemas operacionais (Solaris, Linux e Mac OS-X) leia explicações detalhadas dos passos a seguir em:
 
http://clic.xtec.cat/es/support/instjava.htm
 
Em ambos casos convém reinicializar todas as janelas dos navegadores e as aplicações Java depois de instalar o certificado.
jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_pt_BR.java0000644000175000017500000000011311377161311025414 0ustar package edu.xtec.resources.messages; public class BasicMessages_pt_BR { } jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/checksignature_de.html0000644000175000017500000000231511377161311025315 0ustar Check signature

Die digitale Signatur dieser Anwendung wird von Java Virtual Machine nicht erkannt!


Um dieses Programm n�tzen zu k�nnen, m�ssen Sie die "clic" in die Liste der von der Java Virtual Machine akzeptierten digitalen Signaturen auf Ihrem Rechner eintragen.

Window User k�nnen das verlangte Zertifikat hinzuf�gen, indem sie folgende Datei downladen und installieren:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
Eine detaillierte Beschreibung f�r andere Betriebssysteme (Solaris, Linux and Mac OS-X), finden Sie hier:
 
http://clic.xtec.cat/en/support/instjava.htm

Bitte schlie�en Sie in beiden F�llen alle Browserfenster und starten Sie nach der Installation des Sicherheitszertifikats Ihren Browser neu.
 

jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_nl.properties0000644000175000017500000000412211377161311026276 0ustar ERROR=FOUT OK=Akkoord YES=Ja NO=Nee DELETE=Verwijderen PASTE=Plakken CUT=Knippen COPY=Kopi\u00EBren FILE_SAVE=Bestand opslaan CONFIRM=Gelieve te bevestigen FILE_OPEN=Bestand openen FILE_ERR_BEG_DIR=Map URL=URL: PASSWORD=Wachtwoord: WARNING=Waarschuwing! FILE_NOT_READABLE=Kan niet lezen! FILE_NOT_EXIST=Bestaat niet! FILE_READONLY=Is read-only. Kan niet overschreven worden! FILE_OVERWRITE_DIR_PROMPT=Wilt u dit bestand overschrijven? FILE_OVERWRITE_PROMPT=Wilt u dit bestand overschrijven? FILE_EXISTS=Bestaat reeds. FILE_DIR_BEG=De map FILE_BEG=Het bestand UNNAMED=Naamloos FILE_ERR_READING=Fout bij het lezen van bestand FILE_ERR_SAVING=Fout bij het bewaren van bestand FILE_FIND=Zoek bestand FILE_ERR_READONLY=is read-only. FILE_ERR_EXISTS=exists. Wil je het overschrijven? FILE_ERR_UNREADABLE=is onleesbaar FILE_ERR_BEG=Bestand LOADING=laden... FALSE=Onwaar CHECK_SIGNATURE_URL=berichten/verifieerhandtekening.html URL_LAUNCH_ERROR=Fout bij starten URL URL_ERROR=Fout bij maken URL QUESTION=Vraag PASSWORD_INCORRECT=Verkeer paswoord! TRUE=waar CANCEL=Annuleren FILE_ERR_DELETING=Fout bij verwijderen bestand URL_OPEN=Url openen FILE_ERR_RESTORING=Fout bij herstellen bestand WRITING_FILE=Bestand schrijven... XML_ATTRIBUTE=Attribuut XML_VALUE=Waarde XML_NOT_EDITABLE=Dit veld kan je niet wijzigen! XML_TEXT=tekst XML_NEW_ATTRIBUTE=Attribuut toevoegen WORKING=Bezig... LOADING_FILE=Bestand inladen XML_DEL_ATTRIBUTE=Attribuut verwijderen XML_ELEMENT=Element XML_NEW_ELEMENT=Nieuw element XML_DEL_ELEMENT=Verwijder element XML_NAME=Naam RETRY=Opnieuw IGNORE=Negeren DATE_INCORRECT=Verkeerde gegevens! BAD_NUMBER=Verkeer nummer! NONE=Geen COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=Alles selecteren SELECT_NONE=Selectie ongedaan maken WIDTH=Breedte: HEIGHT=Hoogte: BROWSE_FILES=Doorzoek bestanden... VERSION=versie ABOUT=Info... YES_TO_ALL=Ja voor alles NO_TO_ALL=Nee voor alles SAVE=Document opslaan OPEN=Openen FILE_OPEN_TOOLTIP=Het geselecteerde bestand openen FILE_SAVE_TOOLTIP=Het geselecteerde bestand bewaren SAVING=bewaren... SAVING_FILE=Bestand bewaren jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_es.properties0000644000175000017500000000431411377161311026277 0ustar ERROR=ERROR OK=Aceptar YES=S\u00ED NO=No DELETE=Eliminar PASTE=Pegar CUT=Recortar COPY=Copiar FILE_SAVE=Guardar archivo CONFIRM=Confirmar operaci\u00F3n FILE_OPEN=Abrir archivo FILE_ERR_BEG_DIR=La carpeta URL=URL: PASSWORD=Contrase\u00F1a: WARNING=\u00A1Atenci\u00F3n! FILE_NOT_READABLE=No puede ser le\u00EDdo! FILE_NOT_EXIST=No existe! FILE_READONLY=Es de solo lectura y no puede ser reemplazado. FILE_OVERWRITE_DIR_PROMPT=\u00BFDesea reemplazarla? FILE_OVERWRITE_PROMPT=\u00BFDesea reemplazarlo? FILE_EXISTS=ya se encuentra en su ordenador. FILE_DIR_BEG=La carpeta FILE_BEG=El archivo UNNAMED=Sin nombre FILE_ERR_READING=Error al leer el archivo FILE_ERR_SAVING=Error al grabar el archivo FILE_FIND=Buscar archivo FILE_ERR_READONLY=es de solo lectura. FILE_ERR_EXISTS=ya existe. \u00BFDesea sobreescribirlo? FILE_ERR_UNREADABLE=no se puede leer. FILE_ERR_BEG=El archivo LOADING=cargando el programa... FALSE=falso CHECK_SIGNATURE_URL=messages/checksignature_es.html URL_LAUNCH_ERROR=Error al invocar la URL! URL_ERROR=\u00A1Error al construir la URL! QUESTION=Pregunta PASSWORD_INCORRECT=\u00A1Contrase\u00F1a incorrecta! TRUE=verdadero CANCEL=Cancelar FILE_ERR_DELETING=Error al borrar el archivo URL_OPEN=Abrir URL FILE_ERR_RESTORING=Error al restaurar el archivo WRITING_FILE=Escribiendo archivo... XML_ATTRIBUTE=Atributo XML_VALUE=Valor XML_NOT_EDITABLE=Este campo no es editable! XML_TEXT=texto XML_NEW_ATTRIBUTE=A\u00F1adir un nuevo atributo WORKING=Trabajando... LOADING_FILE=Leyendo el archivo XML_DEL_ATTRIBUTE=Eliminar el atributo XML_ELEMENT=Elemento XML_NEW_ELEMENT=Nuevo elemento XML_DEL_ELEMENT=Eliminar elemento XML_NAME=Nombre RETRY=Reintentar IGNORE=Ignorar DATE_INCORRECT=\u00A1Fecha incorrecta! BAD_NUMBER=\u00A1N\u00FAmero incorrecto! NONE=Ninguno COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=E#127 SELECT_ALL=Seleccionar todo SELECT_NONE=Deshacer seleccion WIDTH=Anchura: HEIGHT=Altura: BROWSE_FILES=Buscar archivo... VERSION=versi\u00F3n ABOUT=Acerca de... YES_TO_ALL=S\u00ED a todos NO_TO_ALL=No a todos SAVE=Guardar OPEN=Abrir FILE_OPEN_TOOLTIP=Abrir el archivo seleccionado FILE_SAVE_TOOLTIP=Guardar el archivo especificado SAVING=guardando... SAVING_FILE=Guardando el archivo jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_eu.properties0000644000175000017500000000421411377161311026300 0ustar ERROR=ERROREA OK=Ados YES=Bai NO=Ez DELETE=Ezabatu PASTE=Itsatsi CUT=Ebaki COPY=Kopiatu FILE_SAVE=Gorde fitxategia CONFIRM=Baieztatu eragiketa FILE_OPEN=Ireki fitxategia FILE_ERR_BEG_DIR=Direktorioa URL=URL-a: PASSWORD=Pasahitza: WARNING=Kontuz! FILE_NOT_READABLE=Ezin da irakurri! FILE_NOT_EXIST=Ez dago! FILE_READONLY=Irakurtzeko bakarrik. Ezin da bertan idatzi! FILE_OVERWRITE_DIR_PROMPT=Gainidatzi nahi al duzu? FILE_OVERWRITE_PROMPT=Gainidatzi nahi al duzu? FILE_EXISTS=dagoeneko bada zure sisteman FILE_DIR_BEG=Direktorioa FILE_BEG=Fitxategia UNNAMED=Izenbagea FILE_ERR_READING=Errorea fitxategia irakurtzean FILE_ERR_SAVING=Errorea fitxategia gordetzean FILE_FIND=Bilatu fitxategia FILE_ERR_READONLY=irakurri baino ezin da. FILE_ERR_EXISTS=badago. Berridatzi egin nahi al duzu? FILE_ERR_UNREADABLE=ez da irakurtzeko modukoa. FILE_ERR_BEG=Fitxategia LOADING=kargatzen... FALSE=faltsua CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=Errorea URL-a abiaraztean URL_ERROR=Errorea URL-a eraikitzean! QUESTION=Galdera PASSWORD_INCORRECT=Pasahitza ez da zuzena! TRUE=egia CANCEL=Utzi FILE_ERR_DELETING=Errorea fitxategia ezabatzean URL_OPEN=Ireki URL-a FILE_ERR_RESTORING=Errorea fitxategia berreskuratzean WRITING_FILE=Fitxategia idazten... XML_ATTRIBUTE=Atributua XML_VALUE=Balorea XML_NOT_EDITABLE=Eremu hau ezin da editatu! XML_TEXT=testua XML_NEW_ATTRIBUTE=Gehitu atributua WORKING=Lanean... LOADING_FILE=Fitxategia kargatzen XML_DEL_ATTRIBUTE=Ezabatu atributua XML_ELEMENT=Elementua XML_NEW_ELEMENT=Elementu berria XML_DEL_ELEMENT=Ezabatu elementua XML_NAME=Izena RETRY=Berriz saiatu IGNORE=Alde batera uzi DATE_INCORRECT=Data ez da zuzena! BAD_NUMBER=Zenbakia ez da zuzena! NONE=Bat ere ez COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=Aukeratu guztiak SELECT_NONE=Garbitu aukera WIDTH=Zabalera HEIGHT=Altuera: BROWSE_FILES=Arakatu fitxategiak... VERSION=bertsioa ABOUT=Honi buruz... YES_TO_ALL=Bai guztiari NO_TO_ALL=Ez guztiari SAVE=Gorde OPEN=Ireki FILE_OPEN_TOOLTIP=Ireki aukeratutako fitxategia FILE_SAVE_TOOLTIP=Gorde zehaztutako fitxategia SAVING=gordetzen... SAVING_FILE=Fitxategia gordetzen jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_pt.properties0000644000175000017500000000425711377161311026321 0ustar ERROR=ERRO OK=OK YES=Sim NO=N\u00E3o DELETE=Eliminar PASTE=Colar CUT=Cortar COPY=Copiar FILE_SAVE=Guardar ficheiro CONFIRM=Por favor, confirme FILE_OPEN=Abrir ficheiro FILE_ERR_BEG_DIR=Pasta URL=URL: PASSWORD=Palavra-chave: WARNING=Aten\u00E7\u00E3o! FILE_NOT_READABLE=Erro de leitura! FILE_NOT_EXIST=N\u00E3o existe! FILE_READONLY=\u00C9 s\u00F3 de leitura e n\u00E3o pode ser substitu\u00EDdo. FILE_OVERWRITE_DIR_PROMPT=Deseja substitu\u00ED-lo? FILE_OVERWRITE_PROMPT=Deseja substitu\u00ED-lo? FILE_EXISTS=j\u00E1 existe no computador. FILE_DIR_BEG=A pasta FILE_BEG=O ficheiro UNNAMED=Sem nome FILE_ERR_READING=Erro ao ler o ficheiro FILE_ERR_SAVING=Erro ao guardar o ficheiro FILE_FIND=Procurar ficheiro FILE_ERR_READONLY=\u00E9 s\u00F3 de leitura. FILE_ERR_EXISTS=j\u00E1 existe. Deseja substitu\u00ED-lo? FILE_ERR_UNREADABLE=n\u00E3o pode ser lido. FILE_ERR_BEG=Ficheiro LOADING=a carregar... FALSE=falso CHECK_SIGNATURE_URL=messages/checksignature_pt.html URL_LAUNCH_ERROR=Erro ao chamar URL! URL_ERROR=Erro ao construir URL! QUESTION=Pergunta PASSWORD_INCORRECT=Palavra-chave incorrecta TRUE=verdadeiro CANCEL=Cancelar FILE_ERR_DELETING=Erro ao apagar o ficheiro URL_OPEN=Abrir URL FILE_ERR_RESTORING=Erro ao restaurar o ficheiro WRITING_FILE=A escrever o ficheiro... XML_ATTRIBUTE=Atributo XML_VALUE=Valor XML_NOT_EDITABLE=Este campo n\u00E3o \u00E9 edit\u00E1vel! XML_TEXT=texto XML_NEW_ATTRIBUTE=Adicionar atributo WORKING=A processar... LOADING_FILE=A ler ficheiro XML_DEL_ATTRIBUTE=Eliminar atributo XML_ELEMENT=Elemento XML_NEW_ELEMENT=Novo elemento XML_DEL_ELEMENT=Eliminar elemento XML_NAME=Nome RETRY=Tentar novamente IGNORE=Ignorar DATE_INCORRECT=Data incorrecta! BAD_NUMBER=N\u00FAmero incorrecto! NONE=Nenhum COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=Seleccionar tudo SELECT_NONE=Limpar selec\u00E7\u00E3o WIDTH=Largura: HEIGHT=Altura: BROWSE_FILES=Procurar ficheiros... VERSION=vers\u00E3o ABOUT=Sobre... YES_TO_ALL=Sim para todos NO_TO_ALL=N\u00E3o para todos SAVE=Guardar OPEN=Abrir FILE_OPEN_TOOLTIP=Abrir o ficheiro seleccionado FILE_SAVE_TOOLTIP=Guardar o ficheiro especificado SAVING=a guardar... SAVING_FILE=A guardar o ficheiro jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_ast.properties0000644000175000017500000000430011377161311026452 0ustar ERROR=ERROR OK=Aceutar YES=S\u00ED NO=Non DELETE=Esborrar PASTE=Apegar CUT=Recortar COPY=Copiar FILE_SAVE=Guardar ficheru CONFIRM=Confirmar FILE_OPEN=Abrir ficheru FILE_ERR_BEG_DIR=Carpeta URL=URL: PASSWORD=Contrase\u00F1a: WARNING=\u00A1Atenci\u00F3n! FILE_NOT_READABLE=\u00A1Nun ser pudo lleer! FILE_NOT_EXIST=\u00A1Nun esiste! FILE_READONLY=\u00A1Ye de llectura nam\u00E1s y nun se pue camudar. FILE_OVERWRITE_DIR_PROMPT=\u00BFQuies camudala? FILE_OVERWRITE_PROMPT=\u00BFQuies reemplazalu? FILE_EXISTS=y\u00E1 esiste nel ordenador. FILE_DIR_BEG=La carpeta FILE_BEG=El ficheru UNNAMED=Ensin nome FILE_ERR_READING=Error al lleer el ficheru FILE_ERR_SAVING=Error al grabar el ficheru FILE_FIND=Guetar ficheru FILE_ERR_READONLY=ye de llectura nam\u00E1s. FILE_ERR_EXISTS=y\u00E1 esiste. \u00BFQuies sobroescribilu? FILE_ERR_UNREADABLE=nun se pue lleer. FILE_ERR_BEG=El ficheru LOADING=cargando... FALSE=falso CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=Error al entamar la URL! URL_ERROR=\u00A1Error al construyir la URL! QUESTION=Entruga PASSWORD_INCORRECT=\u00A1Contrase\u00F1a incorreuta! TRUE=braero CANCEL=Encaboxar FILE_ERR_DELETING=Error al esborrar el ficheru URL_OPEN=Abrir URL FILE_ERR_RESTORING=Error al restaurar el ficheru WRITING_FILE=Escribiendo ficheru... XML_ATTRIBUTE=Atributu XML_VALUE=Valor XML_NOT_EDITABLE=\u00A1Esti campu nun ye editable! XML_TEXT=testu XML_NEW_ATTRIBUTE=Amestar un atributu nuevu WORKING=Trabayando... LOADING_FILE=Lleendo'l ficheru XML_DEL_ATTRIBUTE=Esborrar l'atributu XML_ELEMENT=Elementu XML_NEW_ELEMENT=Elementu nuevu XML_DEL_ELEMENT=Esborrar elementu XML_NAME=Nome RETRY=Reintentar IGNORE=Ignorar DATE_INCORRECT=\u00A1Data incorreuta! BAD_NUMBER=\u00A1N\u00FAmberu incorreutu! NONE=Deng\u00FAn COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=E#127 SELECT_ALL=Esbillar too SELECT_NONE=Desfacer esbiya WIDTH=Anchor: HEIGHT=Altor: BROWSE_FILES=Guetar ficheru... VERSION=versi\u00F3n ABOUT=Tocante a... YES_TO_ALL=S\u00ED a toos NO_TO_ALL=Non a toos SAVE=Guardar OPEN=Abrir FILE_OPEN_TOOLTIP=Abrir el ficheru seleicion\u00E1u FILE_SAVE_TOOLTIP=Guardar el ficheru especific\u00E1u SAVING=guardando... SAVING_FILE=Guardando'l ficheru jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_ru.properties0000644000175000017500000001435511377161311026324 0ustar ERROR=\u041E\u0428\u0418\u0411\u041A\u0410 OK=OK YES=\u0414\u0430 NO=\u041D\u0435\u0442 DELETE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C PASTE=\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044C CUT=\u0412\u044B\u0440\u0435\u0437\u0430\u0442\u044C COPY=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C FILE_SAVE=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C \u0444\u0430\u0439\u043B CONFIRM=\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u0435 FILE_OPEN=\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0444\u0430\u0439\u043B FILE_ERR_BEG_DIR=\u041F\u0430\u043F\u043A\u0430 URL=\u0410\u0434\u0440\u0435\u0441(URL): PASSWORD=\u041F\u0430\u0440\u043E\u043B\u044C: WARNING=\u0412\u043D\u0438\u043C\u0430\u043D\u0438\u0435! FILE_NOT_READABLE=\u041D\u0435 \u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u043F\u0440\u043E\u0447\u0435\u0441\u0442\u044C! FILE_NOT_EXIST=\u041D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442! FILE_READONLY=\u0422\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F. \u041E\u043D \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u043D! FILE_OVERWRITE_DIR_PROMPT=\u0425\u043E\u0442\u0438\u0442\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C? FILE_OVERWRITE_PROMPT=\u0425\u043E\u0442\u0438\u0442\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C? FILE_EXISTS=\u0443\u0436\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043D\u0430 \u0432\u0430\u0448\u0435\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435. FILE_DIR_BEG=\u041F\u0430\u043F\u043A\u0430 FILE_BEG=\u0424\u0430\u0439\u043B UNNAMED=\u0411\u0435\u0437 \u0438\u043C\u0435\u043D\u0438 FILE_ERR_READING=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0447\u0442\u0435\u043D\u0438\u0438 \u0444\u0430\u0439\u043B\u0430 FILE_ERR_SAVING=\u041E\u0448\u0438\u0431\u043A\u0430 \u0432\u043E \u0432\u0440\u0435\u043C\u044F \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 FILE_FIND=\u041F\u043E\u0438\u0441\u043A \u0444\u0430\u0439\u043B\u0430 FILE_ERR_READONLY=\u0442\u043E\u043B\u044C\u043A\u043E \u0434\u043B\u044F \u0447\u0442\u0435\u043D\u0438\u044F. FILE_ERR_EXISTS=\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442. \u0425\u043E\u0442\u0438\u0442\u0435 \u043F\u0435\u0440\u0435\u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C? FILE_ERR_UNREADABLE=- \u043D\u0435\u0447\u0438\u0442\u0430\u0435\u043C\u044B\u0439. FILE_ERR_BEG=\u0424\u0430\u0439\u043B LOADING=\u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u0442\u0441\u044F... FALSE=\u043B\u043E\u0436\u044C CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0430 URL URL_ERROR=\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F URL! QUESTION=\u0412\u043E\u043F\u0440\u043E\u0441 PASSWORD_INCORRECT=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C! TRUE=\u0438\u0441\u0442\u0438\u043D\u0430 CANCEL=\u041E\u0442\u043C\u0435\u043D\u0430 FILE_ERR_DELETING=\u041E\u0448\u0438\u0431\u043A\u0430 \u0443\u0434\u0430\u043B\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 URL_OPEN=\u041E\u0442\u043A\u0440\u044B\u0442\u044C URL FILE_ERR_RESTORING=\u041E\u0448\u0438\u0431\u043A\u0430 \u0432\u043E\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u044F \u0444\u0430\u0439\u043B\u0430 WRITING_FILE=\u0417\u0430\u043F\u0438\u0441\u044C \u0444\u0430\u0439\u043B\u0430... XML_ATTRIBUTE=\u0410\u0442\u0440\u0438\u0431\u0443\u0442 XML_VALUE=\u0417\u043D\u0430\u0447\u0435\u043D\u0438\u0435 XML_NOT_EDITABLE=\u042D\u0442\u043E \u043F\u043E\u043B\u0435 \u043D\u0435 \u0440\u0435\u0434\u0430\u043A\u0442\u0438\u0440\u0443\u0435\u043C\u043E\u0435! XML_TEXT=\u0442\u0435\u043A\u0441\u0442 XML_NEW_ATTRIBUTE=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0430\u0442\u0440\u0438\u0431\u0443\u0442 WORKING=\u0418\u0434\u0451\u0442 \u0440\u0430\u0431\u043E\u0442\u0430... LOADING_FILE=\u0417\u0430\u0433\u0440\u0443\u0437\u043A\u0430 \u0444\u0430\u0439\u043B\u0430 XML_DEL_ATTRIBUTE=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0430\u0442\u0440\u0438\u0431\u0443\u0442 XML_ELEMENT=\u042D\u043B\u0435\u043C\u0435\u043D\u0442 XML_NEW_ELEMENT=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442 XML_DEL_ELEMENT=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u044D\u043B\u0435\u043C\u0435\u043D\u0442 XML_NAME=\u0418\u043C\u044F RETRY=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u044C IGNORE=\u0418\u0433\u043D\u043E\u0440\u0438\u0440\u043E\u0432\u0430\u0442\u044C DATE_INCORRECT=\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0434\u0430\u0442\u0430! BAD_NUMBER=\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E! NONE=\u041D\u0435\u0442 COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=\u0412\u044B\u0434\u0435\u043B\u0438\u0442\u044C \u0432\u0441\u0451 SELECT_NONE=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0432\u044B\u0431\u043E\u0440 WIDTH=\u0428\u0438\u0440\u0438\u043D\u0430: HEIGHT=\u0412\u044B\u0441\u043E\u0442\u0430: BROWSE_FILES=\u041E\u0431\u0437\u043E\u0440 \u0444\u0430\u0439\u043B\u043E\u0432... VERSION=\u0432\u0435\u0440\u0441\u0438\u044F ABOUT=\u041E \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0435... YES_TO_ALL=\u0414\u0430 \u0434\u043B\u044F \u0432\u0441\u0435\u0445 NO_TO_ALL=\u041D\u0435\u0442 \u0434\u043B\u044F \u0432\u0441\u0435\u0445 SAVE=\u0421\u043E\u0445\u0440\u0430\u043D\u0438\u0442\u044C OPEN=\u041E\u0442\u043A\u0440\u044B\u0442\u044C FILE_OPEN_TOOLTIP=\u041E\u0442\u043A\u0440\u044B\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u044B\u0439 \u0444\u0430\u0439\u043B FILE_SAVE_TOOLTIP=\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u043E\u0433\u043E \u0444\u0430\u0439\u043B\u0430 SAVING=\u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435... SAVING_FILE=\u0421\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u0435 \u0444\u0430\u0439\u043B\u0430 jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_tr.properties0000644000175000017500000000453211377161311026317 0ustar ERROR=HATA OK=Tamam YES=Evet NO=Hay\u0131r DELETE=Sil PASTE=Yap\u0131\u015Ft\u0131r CUT=Kes COPY=Kopyala FILE_SAVE=Dosyay\u0131 kaydet CONFIRM=L\u00FCtfen do\u011Frulay\u0131n\u0131z FILE_OPEN=Dosya a\u00E7 FILE_ERR_BEG_DIR=Klas\u00F6r URL=Adres: PASSWORD=\u015Eifre WARNING=Uyar\u0131 FILE_NOT_READABLE=Dosya okunam\u0131yor! FILE_NOT_EXIST=Dosya mevcut de\u011Fil! FILE_READONLY=Dosya salt okunabilir. Dosya \u00FCzerine yaz\u0131lamaz FILE_OVERWRITE_DIR_PROMPT=\u00DCzerine yazmak istiyor musunuz? FILE_OVERWRITE_PROMPT=\u00DCzerine yazmak istiyor musunuz? FILE_EXISTS=Dosya sisteminizde mevcut FILE_DIR_BEG=Klas\u00F6r FILE_BEG=Dosya UNNAMED=\u0130simsiz FILE_ERR_READING=Dosya okunamad\u0131 FILE_ERR_SAVING=Dosya kaydetme hatas\u0131 FILE_FIND=Dosya bul FILE_ERR_READONLY=Salt okunabilir dosya FILE_ERR_EXISTS=Dosyan\u0131n \u00FCzerine yazmak istiyormusunuz? FILE_ERR_UNREADABLE=Dosya okunam\u0131yor FILE_ERR_BEG=Dosya LOADING=y\u00FCkleniyor... FALSE=yanl\u0131\u015F CHECK_SIGNATURE_URL=mesajlar/imzakontrol.html URL_LAUNCH_ERROR=URL a\u00E7\u0131lam\u0131yor URL_ERROR=Adres in\u015Fas\u0131nda hata! QUESTION=Soru PASSWORD_INCORRECT=Yanl\u0131\u015F parola! TRUE=do\u011Fru CANCEL=\u0130ptal FILE_ERR_DELETING=Dosya silme hatas\u0131 URL_OPEN=URL A\u00E7 FILE_ERR_RESTORING=Dosya kurtarma hatas\u0131 WRITING_FILE=Dosya yaz\u0131l\u0131yor XML_ATTRIBUTE=\u00D6znitelik XML_VALUE=De\u011Fer XML_NOT_EDITABLE=Dosya d\u00FCzenlenemiyor! XML_TEXT=Metin XML_NEW_ATTRIBUTE=\u00D6znitelik ekle WORKING=\u00C7al\u0131\u015F\u0131yor... LOADING_FILE=Dosya y\u00FCkleniyor XML_DEL_ATTRIBUTE=\u00D6znitelik sil XML_ELEMENT=\u00D6\u011Fe XML_NEW_ELEMENT=Yeni \u00F6\u011Fe XML_DEL_ELEMENT=\u00D6\u011Feyi sil XML_NAME=\u0130sim RETRY=Tekrar dene IGNORE=Yoksay DATE_INCORRECT=Tarih hatal\u0131! BAD_NUMBER=Say\u0131 yanl\u0131\u015F! NONE=Hi\u00E7biri COPY_keys=CC CUT_keys=TX PASTE_keys=Bug\u00FCnk\u00FC de\u011Fer DELETE_keys=D#127 SELECT_ALL=T\u00FCm\u00FCn\u00FC Se\u00E7 SELECT_NONE=Se\u00E7imi sil WIDTH=Geni\u015Flik: HEIGHT=Y\u00FCkseklik: BROWSE_FILES=Dosya tara VERSION=s\u00FCr\u00FCm ABOUT=Hakk\u0131nda... YES_TO_ALL=Hepsine evet NO_TO_ALL=Hepsine hay\u0131r SAVE=Kaydet OPEN=A\u00E7 FILE_OPEN_TOOLTIP=Se\u00E7ili dosyalar\u0131 a\u00E7 FILE_SAVE_TOOLTIP=Se\u00E7ilen dosyay\u0131 kaydet SAVING=Kaydediyor SAVING_FILE=Dosya saklan\u0131yor jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/checksignature_es.html0000644000175000017500000000234011377161311025332 0ustar Firma digital

�El motor Java no reconoce la firma digital de esta aplicaci�n!


Para que este programa se ejecute correctamente hay que a�adir el certificado de la entidad "clic" a la lista de firmas reconocidas por su m�quina virtual Java.
 
Los usuarios de windows pueden a�adir f�cilmente este certificado descargando y ejecutando el siguiente archivo:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
Para otros sistemas operativos (Solaris, Linux y Mac OS-X) hay una explicaci�n detallada de los pasos a seguir en:
 
http://clic.xtec.cat/es/support/instjava.htm
 
En ambos casos conviene reinicializar todas las ventanas de los navegadores y las aplicaciones Java despu�s de haber instalado el certificado.
jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages.properties0000644000175000017500000000362311377161311025612 0ustar ERROR=ERROR OK=OK YES=Yes NO=No DELETE=Delete PASTE=Paste CUT=Cut COPY=Copy FILE_SAVE=Save file CONFIRM=Please confirm FILE_OPEN=Open file FILE_ERR_BEG_DIR=Folder URL=URL: PASSWORD=Password: WARNING=Warning! FILE_NOT_READABLE=Cannot be read! FILE_NOT_EXIST=Does not exist! FILE_READONLY=Is read-only. It cannot be overwritted! FILE_OVERWRITE_DIR_PROMPT=Do you want to overwrite it? FILE_OVERWRITE_PROMPT=Do you want to overwrite it? FILE_EXISTS=already exists on your system. FILE_DIR_BEG=The folder FILE_BEG=The file UNNAMED=Unnamed FILE_ERR_READING=Error reading file FILE_ERR_SAVING=Error saving file FILE_FIND=Find file FILE_ERR_READONLY=is read-only. FILE_ERR_EXISTS=exists. Do you want to overwrite it? FILE_ERR_UNREADABLE=is unreadable. FILE_ERR_BEG=File LOADING=loading... FALSE=false CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=Error launching URL URL_ERROR=Error building URL! QUESTION=Question PASSWORD_INCORRECT=Incorrect password! TRUE=true CANCEL=Cancel FILE_ERR_DELETING=Error deleting file URL_OPEN=Open URL FILE_ERR_RESTORING=Error restoring file WRITING_FILE=Writing file... XML_ATTRIBUTE=Attribute XML_VALUE=Value XML_NOT_EDITABLE=This field is not editable! XML_TEXT=text XML_NEW_ATTRIBUTE=Add attribute WORKING=Working... LOADING_FILE=Loading file XML_DEL_ATTRIBUTE=Delete attribute XML_ELEMENT=Element XML_NEW_ELEMENT=New element XML_DEL_ELEMENT=Delete element XML_NAME=Name RETRY=Retry IGNORE=Ignore DATE_INCORRECT=Date incorrect! BAD_NUMBER=Incorrect number! NONE=None COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=Select all SELECT_NONE=Clear selection WIDTH=Width: HEIGHT=Height: BROWSE_FILES=Browse files... VERSION=version ABOUT=About... YES_TO_ALL=Yes to all NO_TO_ALL=No to all SAVE=Save OPEN=Open FILE_OPEN_TOOLTIP=Open the selected file FILE_SAVE_TOOLTIP=Save the specified file SAVING=saving... SAVING_FILE=Saving file jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_fr.java0000644000175000017500000000011011377161311025012 0ustar package edu.xtec.resources.messages; public class BasicMessages_fr { } ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt_BR.propertiesjclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt_BR.propertie0000644000175000017500000000054411377161311030633 0ustar cl_alert=Est\u00E1 utilizando o programa "$" pela primeira vez neste computador.\nPor favor, indique a pasta que deve guardar os arquivos\nde configura\u00E7\u00E9o e dados do programa. cl_err_unableToCreateDir=Houve um erro ao tentar criar a pasta.\nPor favor, indique um local com direitos de administrador. cl_prompt_title=Pasta de instala\u00E7\u00E9o jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_ru.properties0000644000175000017500000000243411377161311030436 0ustar cl_alert=\u0412\u044B \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u043B\u0438 "$" \u0432\u043F\u0435\u0440\u0432\u044B\u0435 \u043D\u0430 \u044D\u0442\u043E\u043C \u043A\u043E\u043C\u043F\u044C\u044E\u0442\u0435\u0440\u0435.\n\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043F\u0430\u043F\u043A\u0443 \u0434\u043B\u044F \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F\n\u0444\u0430\u0439\u043B\u043E\u0432 \u0434\u0430\u043D\u043D\u044B\u0445 \u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u044B. cl_err_unableToCreateDir=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0441\u043E\u0437\u0434\u0430\u0442\u044C \u044D\u0442\u0443 \u043F\u0430\u043F\u043A\u0443!\n\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043C\u0435\u0441\u0442\u043E\u043F\u043E\u043B\u043E\u0436\u0435\u043D\u0438\u0435, \u0433\u0434\u0435 \u0443 \u0432\u0430\u0441 \u0435\u0441\u0442\u044C \u043D\u0435\u043E\u0431\u0445\u043E\u0434\u0438\u043C\u044B\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043D\u0438\u044F. cl_prompt_title=\u041F\u0430\u043F\u043A\u0430 \u0434\u043B\u044F \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0438 jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_en.java0000644000175000017500000000011011377161311025005 0ustar package edu.xtec.resources.messages; public class BasicMessages_en { } jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/checksignature.html0000644000175000017500000000216711377161311024652 0ustar Check signature

The Java engine does not recognize the digital signature of this application!


In order to run this program you must add the entity "clic" to the list of signatures trusted by your Java virtual machine.
 
Windows users can easily add the certificate by downloading and executing this file:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
For other platforms (Solaris, Linux and Mac OS-X), a detailed explanation is available here:
 
http://clic.xtec.cat/en/support/instjava.htm
 
In both cases, please close and restart all browser windows and java applications after the installation of the certificate.
jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/checksignature_ca.html0000644000175000017500000000230711377161311025311 0ustar Signatura digital

El motor Java no reconeix la signatura digital d'aquesta aplicaci�!


Per a executar aquest programa cal afegir el certificat de l'entitat "clic" a la llista de signatures reconegudes per la vostra m�quina virtual Java.
 
Els usuaris de windows poden afegir f�cilment aquest certificat descarregant i executant aquest fitxer:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
Per a altres sistemes operatius (Solaris, Linux i Mac OS-X) hi ha una explicaci� detallada dels passos a seguir a:
 
http://clic.xtec.cat/ca/support/instjava.htm
 
En ambd�s casos, reinicialitzeu totes les finestres dels navegadors i les aplicacions java despr�s d'haver instal�lat el certificat.
jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_el.properties0000644000175000017500000001644311377161311026276 0ustar ERROR=\u03A3\u03A6\u0391\u039B\u039C\u0391 OK=\u0395\u03BD\u03C4\u03AC\u03BE\u03B5\u03B9 YES=\u039D\u03B1\u03B9 NO=\u038C\u03C7\u03B9 DELETE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE PASTE=\u0395\u03C0\u03B9\u03BA\u03CC\u03BB\u03BB\u03B7\u03C3\u03B7 CUT=\u0391\u03C0\u03BF\u03BA\u03BF\u03C0\u03AE COPY=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE FILE_SAVE=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 CONFIRM=\u03A0\u03B1\u03C1\u03B1\u03BA\u03B1\u03BB\u03CE \u03B5\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03B9\u03CE\u03C3\u03C4\u03B5 FILE_OPEN=\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 FILE_ERR_BEG_DIR=\u03A6\u03AC\u03BA\u03B5\u03BB\u03BF\u03C2 URL=URL: PASSWORD=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2: WARNING=\u03A0\u03C1\u03BF\u03B5\u03B9\u03B4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7! FILE_NOT_READABLE=\u0391\u03B4\u03CD\u03BD\u03B1\u03C4\u03B7 \u03B7 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03AE \u03C4\u03BF\u03C5! FILE_NOT_EXIST=\u0394\u03B5\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9! FILE_READONLY=\u0395\u03AF\u03BD\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03B3\u03B9\u03B1 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03B7. \u0391\u03B4\u03CD\u03BD\u03B1\u03C4\u03B7 \u03B7 \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03AE \u03C4\u03BF\u03C5! FILE_OVERWRITE_DIR_PROMPT=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03C4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5; FILE_OVERWRITE_PROMPT=\u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03C4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5; FILE_EXISTS=\u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03AE\u03B4\u03B7 \u03C3\u03C4\u03BF \u03C3\u03CD\u03C3\u03C4\u03B7\u03BC\u03AC \u03C3\u03B1\u03C2. FILE_DIR_BEG=\u039F \u03C6\u03AC\u03BA\u03B5\u03BB\u03BF\u03C2 FILE_BEG=\u03A4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF UNNAMED=\u0391\u03BD\u03CE\u03BD\u03C5\u03BC\u03BF FILE_ERR_READING=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03B7\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 FILE_ERR_SAVING=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03B1\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 FILE_FIND=\u0395\u03CD\u03C1\u03B5\u03C3\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 FILE_ERR_READONLY=\u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF \u03B3\u03B9\u03B1 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03B7. FILE_ERR_EXISTS=\u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9. \u0398\u03AD\u03BB\u03B5\u03C4\u03B5 \u03BD\u03B1 \u03C4\u03BF \u03B1\u03BD\u03C4\u03B9\u03BA\u03B1\u03C4\u03B1\u03C3\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5; FILE_ERR_UNREADABLE=\u03B5\u03AF\u03BD\u03B1\u03B9 \u03BC\u03B7 \u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C3\u03B9\u03BC\u03BF. FILE_ERR_BEG=\u0391\u03C1\u03C7\u03B5\u03AF\u03BF LOADING=\u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7... FALSE=\u03C8\u03B5\u03C5\u03B4\u03AD\u03C2 CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\u03C2 URL URL_ERROR=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1\u03C2 URL! QUESTION=\u0395\u03C1\u03CE\u03C4\u03B7\u03C3\u03B7 PASSWORD_INCORRECT=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2! TRUE=\u03B1\u03BB\u03B7\u03B8\u03AD\u03C2 CANCEL=\u0386\u03BA\u03C5\u03C1\u03BF FILE_ERR_DELETING=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7 \u03B4\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 URL_OPEN=\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 URL FILE_ERR_RESTORING=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03B1\u03C0\u03BF\u03BA\u03B1\u03C4\u03AC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 WRITING_FILE=\u0395\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5... XML_ATTRIBUTE=\u03A7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC XML_VALUE=\u03A4\u03B9\u03BC\u03AE XML_NOT_EDITABLE=\u0391\u03C5\u03C4\u03CC \u03C4\u03BF \u03C0\u03B5\u03B4\u03AF\u03BF \u03B4\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B5\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03AC\u03C3\u03B9\u03BC\u03BF! XML_TEXT=\u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF XML_NEW_ATTRIBUTE=\u03A0\u03C1\u03BF\u03C3\u03B8\u03AE\u03BA\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03BF\u03CD WORKING=\u0395\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1... LOADING_FILE=\u03A6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 XML_DEL_ATTRIBUTE=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03B7\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03BF\u03CD XML_ELEMENT=\u03A3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF XML_NEW_ELEMENT=\u039D\u03AD\u03BF \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF XML_DEL_ELEMENT=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF\u03C5 XML_NAME=\u038C\u03BD\u03BF\u03BC\u03B1 RETRY=\u0395\u03C0\u03B1\u03BD\u03AC\u03BB\u03B7\u03C8\u03B7 IGNORE=\u03A0\u03B1\u03C1\u03AC\u03B2\u03BB\u03B5\u03C8\u03B7 DATE_INCORRECT=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03B1 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1! BAD_NUMBER=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2 \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC\u03C2! NONE=\u039A\u03B1\u03BD\u03AD\u03BD\u03B1 COPY_keys=\u039A\u03BF\u03B9\u03BD\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03CC\u03BB\u03C9\u03BD SELECT_NONE=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE\u03C2 WIDTH=\u03A0\u03BB\u03AC\u03C4\u03BF\u03C2: HEIGHT=\u038E\u03C8\u03BF\u03C2: BROWSE_FILES=\u03A0\u03B5\u03C1\u03B9\u03AE\u03B3\u03B7\u03C3\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD... VERSION=\u03AD\u03BA\u03B4\u03BF\u03C3\u03B7 ABOUT=\u03A3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AC... YES_TO_ALL=\u039D\u03B1\u03B9 \u03C3\u03B5 \u03CC\u03BB\u03B1 NO_TO_ALL=\u038C\u03C7\u03B9 \u03C3\u03B5 \u03CC\u03BB\u03B1 SAVE=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 OPEN=\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 FILE_OPEN_TOOLTIP=\u0386\u03BD\u03BF\u03B9\u03B3\u03BC\u03B1 \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 FILE_SAVE_TOOLTIP=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 SAVING=\u03B1\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3... SAVING_FILE=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_ast.properties0000644000175000017500000000054511377161311030600 0ustar cl_alert=Tas executando "$" per primer vegada nesta computadora.\nInxerta'l nome d'una carpeta pa guardar\nlos datos de los ficheros y les preferencies del programa. cl_err_unableToCreateDir=\u00A1Nun se peu crear esta carpeta!\nPor favor, inxerta un allugamientu v\u00E1lidu onde tengas permisos alministrativos. cl_prompt_title=Carpeta d'instalaci\u00F3n jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/checksignature_gl.html0000644000175000017500000000245111377161311025330 0ustar Sinatura dixital

�O motor Java non recoñece a sinatura dixital desta aplicación!


Para que este programa se execute correctamente hai que engadir o certificado da entidade "clic" á lista de sinaturas recoñecidas pola súa máquina virtual Java.
 
Os usuarios de windows poden engadir facilmente este certificado descargando e executando o seguinte arquivo:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
Para outros sistemas operativos (Solaris, Linux e Mac OS-X) hai unha explicación polo miúdo dos pasos a seguir en:
 
http://clic.xtec.cat/es/support/instjava.htm
 
En ambos os casos convén reinicializar todas as xanelas dos navegadores e as aplicacións Java despois de ter instalado o certificado.

 

jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/checksignature_pt.html0000644000175000017500000000272611377161311025356 0ustar Firma digital

O motor Java não reconhece a assinatura digital desta aplicação!


Para que este programa se execute correctamente é necessário adicionar o certificado da entidade "clic" à lista de assinaturas reconhecidas por sua máquina virtual Java.
 
Os usuários do Windows podem fazê-lo facilmente ao copiar (download) e executar o arquivo do  certificado que está no endereço abaixo:
 
http://clic.xtec.cat/dist/java/instJClicCert.exe (65 kb)
 
Para outros sistemas operacionais (Solaris, Linux e Mac OS-X) leia explicações detalhadas dos passos a seguir em:
 
http://clic.xtec.cat/es/support/instjava.htm
 
Em ambos casos convém reinicializar todas as janelas dos navegadores e as aplicações Java depois de instalar o certificado.
jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_zh_TW.properties0000644000175000017500000000527211377161311026727 0ustar ERROR=\u932F\u8AA4 OK=\u78BA\u5B9A YES=\u662F NO=\u5426 DELETE=\u522A\u9664 PASTE=\u8CBC\u4E0A CUT=\u526A\u4E0B COPY=\u8907\u88FD FILE_SAVE=\u5132\u5B58\u6A94\u6848 CONFIRM=\u8ACB\u78BA\u8A8D FILE_OPEN=\u958B\u555F\u6A94\u6848 FILE_ERR_BEG_DIR=\u8CC7\u6599\u593E URL=\u7DB2\u5740\uFF1A PASSWORD=\u5BC6\u78BC\uFF1A WARNING=\u8B66\u544A\uFF01 FILE_NOT_READABLE=\u7121\u6CD5\u8B80\u53D6\uFF01 FILE_NOT_EXIST=\u4E0D\u5B58\u5728\uFF01 FILE_READONLY=\u552F\u8B80\u3002\u7121\u6CD5\u8986\u5BEB\uFF01 FILE_OVERWRITE_DIR_PROMPT=\u8981\u8986\u5BEB\u55CE\uFF1F FILE_OVERWRITE_PROMPT=\u8981\u8986\u5BEB\u55CE\uFF1F FILE_EXISTS=\u5DF2\u7D93\u5B58\u5728\u60A8\u7684\u7CFB\u7D71\u4E2D\u3002 FILE_DIR_BEG=\u8CC7\u6599\u593E FILE_BEG=\u6A94\u6848 UNNAMED=\u672A\u547D\u540D FILE_ERR_READING=\u8B80\u53D6\u6A94\u6848\u932F\u8AA4 FILE_ERR_SAVING=\u5132\u5B58\u6A94\u6848\u932F\u8AA4 FILE_FIND=\u5C0B\u627E\u6A94\u6848 FILE_ERR_READONLY=\u552F\u8B80 FILE_ERR_EXISTS=\u6A94\u6848\u5DF2\u7D93\u5B58\u5728\uFF0C\u8981\u8986\u5BEB\u55CE\uFF1F FILE_ERR_UNREADABLE=\u7121\u6CD5\u8B80\u53D6\u3002 FILE_ERR_BEG=\u6A94\u6848 LOADING=\u8F09\u5165\u4E2D... FALSE=\u5047 CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=Error launching URL URL_ERROR=Error building URL! QUESTION=\u554F\u984C PASSWORD_INCORRECT=\u5BC6\u78BC\u4E0D\u6B63\u78BA TRUE=\u771F CANCEL=\u53D6\u6D88 FILE_ERR_DELETING=\u522A\u9664\u6A94\u6848\u932F\u8AA4 URL_OPEN=\u958B\u555F\u7DB2\u5740 FILE_ERR_RESTORING=\u9084\u539F\u6A94\u6848\u932F\u8AA4 WRITING_FILE=\u5BEB\u5165\u6A94\u6848\u4E2D... XML_ATTRIBUTE=\u5C6C\u6027 XML_VALUE=\u503C XML_NOT_EDITABLE=\u9019\u500B\u6B04\u4F4D\u7121\u6CD5\u7DE8\u8F2F\uFF01 XML_TEXT=\u6587\u5B57 XML_NEW_ATTRIBUTE=\u65B0\u589E\u5C6C\u6027 WORKING=\u5DE5\u4F5C\u4E2D... LOADING_FILE=\u6A94\u6848\u8F09\u5165\u4E2D XML_DEL_ATTRIBUTE=\u522A\u9664\u5C6C\u6027 XML_ELEMENT=\u5143\u4EF6 XML_NEW_ELEMENT=\u65B0\u5143\u4EF6 XML_DEL_ELEMENT=\u522A\u9664\u5143\u4EF6 XML_NAME=\u540D\u7A31 RETRY=\u91CD\u8A66 IGNORE=\u7565\u904E DATE_INCORRECT=\u65E5\u671F\u4E0D\u6B63\u78BA\uFF01 BAD_NUMBER=\u4E0D\u6B63\u78BA\u7684\u6578\u5B57\uFF01 NONE=\u6C92\u6709 COPY_keys=\u526F\u672C CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=\u5168\u90E8\u9078\u53D6 SELECT_NONE=\u6E05\u9664\u9078\u53D6 WIDTH=\u5BEC\uFF1A HEIGHT=\u9AD8\uFF1A BROWSE_FILES=\u700F\u89BD\u6A94\u6848... VERSION=\u7248\u672C ABOUT=\u95DC\u65BC... YES_TO_ALL=\u5168\u90E8\u7686\u662F NO_TO_ALL=\u5168\u90E8\u7686\u5426 SAVE=\u5132\u5B58 OPEN=\u958B\u555F FILE_OPEN_TOOLTIP=\u958B\u555F\u9078\u53D6\u7684\u6A94\u6848 FILE_SAVE_TOOLTIP=\u5132\u5B58\u6307\u5B9A\u7684\u6A94\u6848 SAVING=\u5132\u5B58\u4E2D... SAVING_FILE=\u6B63\u5728\u5132\u5B58\u6A94\u6848 jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_cs.properties0000644000175000017500000000462111377161311026276 0ustar ERROR=CHYBA OK=OK YES=Ano NO=Ne DELETE=Smazat PASTE=Vlo\u017Eit CUT=Vyjmout COPY=Kop\u00EDrovat FILE_SAVE=Ulo\u017Eit soubor CONFIRM=Pros\u00EDm potvr\u010Fte FILE_OPEN=Otev\u0159\u00EDt soubor FILE_ERR_BEG_DIR=Slo\u017Eka URL=URL: PASSWORD=Heslo: WARNING=Varov\u00E1n\u00ED! FILE_NOT_READABLE=Nelze p\u0159e\u010D\u00EDst! FILE_NOT_EXIST=Neexistuje! FILE_READONLY=Je pouze pro \u010Dten\u00ED. Nemohu jej p\u0159epsat! FILE_OVERWRITE_DIR_PROMPT=Chcete ho p\u0159epsat? FILE_OVERWRITE_PROMPT=Chcete ho p\u0159epsat? FILE_EXISTS=existuje na va\u0161em syst\u00E9mu FILE_DIR_BEG=Slo\u017Eka FILE_BEG=Soubor UNNAMED=Nepojmenovan\u00FD FILE_ERR_READING=Chyba p\u0159i \u010Dten\u00ED souboru FILE_ERR_SAVING=Chyba p\u0159i ukl\u00E1d\u00E1n\u00ED souboru FILE_FIND=Naj\u00EDt soubor FILE_ERR_READONLY=je pouze pro \u010Dten\u00ED. FILE_ERR_EXISTS=existuje. Chcete ho p\u0159epsat. FILE_ERR_UNREADABLE=nen\u00ED \u010Diteln\u00FD. FILE_ERR_BEG=Soubor LOADING=na\u010D\u00EDt\u00E1 se... FALSE=nepravda CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=Chyba p\u0159i na\u010D\u00EDt\u00E1n\u00ED URL URL_ERROR=Chyba p\u0159i vytv\u00E1\u0159en\u00ED URL QUESTION=Ot\u00E1zka PASSWORD_INCORRECT=Chybn\u00E9 heslo TRUE=pravda CANCEL=Zru\u0161it FILE_ERR_DELETING=Chyba p\u0159i maz\u00E1n\u00ED souboru URL_OPEN=Otev\u0159\u00EDt URL FILE_ERR_RESTORING=Chyba p\u0159i obnoven\u00ED souboru WRITING_FILE=Zapisuji soubor... XML_ATTRIBUTE=Vlastnost XML_VALUE=Hodnota XML_NOT_EDITABLE=Toto pole nen\u00ED editovateln\u00E9! XML_TEXT=text XML_NEW_ATTRIBUTE=P\u0159idat atribut WORKING=Pracuji... LOADING_FILE=Nahr\u00E1v\u00E1m soubor XML_DEL_ATTRIBUTE=Odstranit atribut XML_ELEMENT=Prvek XML_NEW_ELEMENT=Nov\u00FD prvek XML_DEL_ELEMENT=Smazat prvek XML_NAME=N\u00E1zev RETRY=Zkusit znovu IGNORE=Ignorovat DATE_INCORRECT=Nespr\u00E1vn\u00E1 data! BAD_NUMBER=Nespr\u00E1vn\u00E9 \u010D\u00EDslo! NONE=Nic COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=Vybrat v\u0161e SELECT_NONE=Zru\u0161it v\u00FDb\u011Br WIDTH=\u0160\u00ED\u0159ka: HEIGHT=V\u00FD\u0161ka: BROWSE_FILES=Vybrat soubory... VERSION=verze ABOUT=O aplikaci... YES_TO_ALL=Ano v\u0161em NO_TO_ALL=Ne v\u0161em SAVE=Ulo\u017Eit OPEN=Otev\u0159\u00EDt FILE_OPEN_TOOLTIP=Otev\u0159\u00EDt vybran\u00FD soubor FILE_SAVE_TOOLTIP=Ulo\u017Eit vybran\u00FD soubor SAVING=ukl\u00E1d\u00E1m... SAVING_FILE=Ukl\u00E1d\u00E1m soubor jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_ca.properties0000644000175000017500000000421611377161311026254 0ustar ERROR=ERROR OK=D'acord YES=S\u00ED NO=No DELETE=Elimina PASTE=Enganxa CUT=Retalla COPY=Copia FILE_SAVE=Desa el fitxer CONFIRM=Confirma l'operaci\u00F3 FILE_OPEN=Obre el fitxer FILE_ERR_BEG_DIR=La carpeta URL=URL: PASSWORD=Contrasenya: WARNING=Atenci\u00F3! FILE_NOT_READABLE=No es pot llegir! FILE_NOT_EXIST=No existeix! FILE_READONLY=\u00C9s de nom\u00E9s lectura i no pot ser reempla\u00E7at. FILE_OVERWRITE_DIR_PROMPT=Voleu reempla\u00E7ar-la? FILE_OVERWRITE_PROMPT=Voleu reempla\u00E7ar-lo? FILE_EXISTS=ja es troba al vostre ordinador. FILE_DIR_BEG=La carpeta FILE_BEG=El fitxer UNNAMED=Sense nom FILE_ERR_READING=Error en llegir el fitxer FILE_ERR_SAVING=Error en desar el fitxer FILE_FIND=Cerca d'un fitxer FILE_ERR_READONLY=\u00E9s de nom\u00E9s lectura. FILE_ERR_EXISTS=ja existeix. Voleu sobreescriure'l? FILE_ERR_UNREADABLE=no es pot llegir. FILE_ERR_BEG=El fitxer LOADING=carregant el programa... FALSE=fals CHECK_SIGNATURE_URL=messages/checksignature_ca.html URL_LAUNCH_ERROR=Error en invocar l'URL! URL_ERROR=Error en construir l'URL! QUESTION=Pregunta PASSWORD_INCORRECT=Contrasenya incorrecta! TRUE=cert CANCEL=Cancel\u00B7la FILE_ERR_DELETING=Error en esborrar el fitxer URL_OPEN=Obre URL FILE_ERR_RESTORING=Error en restaurar el fitxer WRITING_FILE=Escrivint fitxer... XML_ATTRIBUTE=Atribut XML_VALUE=Valor XML_NOT_EDITABLE=Aquest camp no \u00E9s editable! XML_TEXT=text XML_NEW_ATTRIBUTE=Afegeix un nou atribut WORKING=Treballant... LOADING_FILE=Llegint el fitxer XML_DEL_ATTRIBUTE=Suprimeix l'atribut XML_ELEMENT=Element XML_NEW_ELEMENT=Nou element XML_DEL_ELEMENT=Elimina l'element XML_NAME=Nom RETRY=Reintenta IGNORE=Ignora DATE_INCORRECT=Data incorrecta! BAD_NUMBER=Nombre incorrecte! NONE=Cap COPY_keys=CC CUT_keys=TX PASTE_keys=NV DELETE_keys=E#127 SELECT_ALL=Selecciona-ho tot SELECT_NONE=Desf\u00E9s la selecci\u00F3 WIDTH=Amplada: HEIGHT=Al\u00E7ada: BROWSE_FILES=Cerca el fitxer... VERSION=versi\u00F3 ABOUT=Quant a... YES_TO_ALL=S\u00ED a tots NO_TO_ALL=No a tots SAVE=Desa OPEN=Obre FILE_OPEN_TOOLTIP=Obre el fitxer seleccionat FILE_SAVE_TOOLTIP=Desa el fitxer especificat SAVING=desant... SAVING_FILE=Desant el fitxer jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_pt_BR.properties0000644000175000017500000000421611377161311026677 0ustar ERROR=ERRO OK=Aceitar YES=Sim NO=N\u00E3o DELETE=Excluir PASTE=Colar CUT=Recortar COPY=Copiar FILE_SAVE=Salvar arquivo CONFIRM=Confirmar opera\u00E7\u00E3o FILE_OPEN=Abrir arquivo FILE_ERR_BEG_DIR=A pasta URL=URL: PASSWORD=Senha: WARNING=Aten\u00E7\u00E3o! FILE_NOT_READABLE=N\u00E3o p\u00F4de ser lido! FILE_NOT_EXIST=N\u00E3o existe! FILE_READONLY=\u00C9 de somente leitura e n\u00E3o pode ser substitu\u00EDdo. FILE_OVERWRITE_DIR_PROMPT=Deseja substituir? FILE_OVERWRITE_PROMPT=Deseja substitu\u00ED-lo? FILE_EXISTS=j\u00E1 existe no computador. FILE_DIR_BEG=A pasta FILE_BEG=O arquivo UNNAMED=Sem nome FILE_ERR_READING=Erro ao ler o arquivo FILE_ERR_SAVING=Erro ao salvar o arquivo FILE_FIND=Buscar arquivo FILE_ERR_READONLY=\u00E9 somente leitura. FILE_ERR_EXISTS=j\u00E1 existe. Deseja substituir? FILE_ERR_UNREADABLE=n\u00E3o pode ser lido. FILE_ERR_BEG=Arquivo LOADING=aguarde... FALSE=falso CHECK_SIGNATURE_URL=messages/checksignature_pt_BR.html URL_LAUNCH_ERROR=Erro ao chamar a URL! URL_ERROR=Erro ao construir a URL! QUESTION=Pergunta PASSWORD_INCORRECT=Senha incorreta! TRUE=verdadeiro CANCEL=Cancelar FILE_ERR_DELETING=Erro ao apagar o arquivo URL_OPEN=Abrir URL FILE_ERR_RESTORING=Erro ao restaurar o arquivo WRITING_FILE=A escrever arquivo... XML_ATTRIBUTE=Atributo XML_VALUE=Valor XML_NOT_EDITABLE=Este campo n\u00E3o \u00E9 edit\u00E1vel! XML_TEXT=texto XML_NEW_ATTRIBUTE=Adicionar um novo atributo WORKING=Trabalhando... LOADING_FILE=Lendo o arquivo XML_DEL_ATTRIBUTE=Eliminar o atributo XML_ELEMENT=Elemento XML_NEW_ELEMENT=Novo elemento XML_DEL_ELEMENT=Excluir elemento XML_NAME=Nome RETRY=Refazer IGNORE=Ignorar DATE_INCORRECT=Data incorreta! BAD_NUMBER=N\u00FAmero incorreto! NONE=Nenhum COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=E#127 SELECT_ALL=Selecionar tudo SELECT_NONE=Desfazer sele\u00E7\u00E3o WIDTH=Largura: HEIGHT=Altura: BROWSE_FILES=Buscar arquivo... VERSION=vers\u00E3o ABOUT=Sobre ... YES_TO_ALL=Sim a todos NO_TO_ALL=N\u00E3o a todos SAVE=Salvar OPEN=Abrir FILE_OPEN_TOOLTIP=Abrir o arquivo seleccionado FILE_SAVE_TOOLTIP=Salvar o arquivo especificado SAVING=salvando... SAVING_FILE=Salvando o arquivo jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_da.properties0000644000175000017500000000051711377161311030374 0ustar cl_alert=Du k\u00F8rer "$" for f\u00F8rste gang p\u00E5 denne computer.\nAngiv venligst et mappenavn, hvor der kan gemmes\ndatafiler og programops\u00E6tninger. cl_err_unableToCreateDir=Kunne ikke oprette denne mappe!\nAngiv venligst et gyldigt omr\u00E5de, hvor du har administrative rettigheder. cl_prompt_title=Installationskatalog jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_ar.properties0000644000175000017500000000647211377161311026301 0ustar ERROR=\u062E\u0637\u0623 OK=\u0645\u0648\u0627\u0641\u0642 YES=\u0646\u0639\u0645 NO=\u0644\u0627 DELETE=\u0627\u062D\u0630\u0641 PASTE=\u0623\u0644\u0635\u0642 CUT=\u0642\u0635 COPY=\u0646\u0633\u062E FILE_SAVE=\u062D\u0641\u0638 \u0627\u0644\u0645\u0644\u0641 CONFIRM=Please confirm FILE_OPEN=\u0627\u0641\u062A\u062D \u0645\u0644\u0641\u0651 FILE_ERR_BEG_DIR=\u0645\u062C\u0644\u062F URL=\u0627\u0644\u0639\u0646\u0648\u0627\u0646: PASSWORD=\u0643\u0644\u0645\u0629 \u0627\u0644\u0645\u0631\u0648\u0631: WARNING=\u062A\u062D\u0630\u064A\u0631! FILE_NOT_READABLE=Cannot be read! FILE_NOT_EXIST=Does not exist! FILE_READONLY=Is read-only. It cannot be overwritted! FILE_OVERWRITE_DIR_PROMPT=\u0647\u0644 \u062A\u0648\u062F \u0623\u0646 \u062A\u0633\u062A\u0628\u062F\u0644\u0647\u061F FILE_OVERWRITE_PROMPT=\u0647\u0644 \u062A\u0648\u062F \u0623\u0646 \u062A\u0633\u062A\u0628\u062F\u0644\u0647\u061F FILE_EXISTS=already exists on your system. FILE_DIR_BEG=The folder FILE_BEG=\u0627\u0644\u0645\u0644\u0641 UNNAMED=\u063A\u064A\u0631 \u0645\u0633\u0645\u0651\u0649 FILE_ERR_READING=\u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u0644\u0641 FILE_ERR_SAVING=\u062D\u062F\u062B \u062E\u0637\u0623 \u0623\u062B\u0646\u0627\u0621 \u062D\u0641\u0638 \u0627\u0644\u0645\u0644\u0641 FILE_FIND=Find file FILE_ERR_READONLY=is read-only. FILE_ERR_EXISTS=exists. Do you want to overwrite it? FILE_ERR_UNREADABLE=is unreadable. FILE_ERR_BEG=\u0645\u0644\u0641 LOADING=\u062C\u0627\u0631\u064A \u0627\u0644\u062A\u062D\u0645\u064A\u0644... FALSE=\u062E\u0637\u0623 CHECK_SIGNATURE_URL=messages/checksignature.html URL_LAUNCH_ERROR=Error launching URL URL_ERROR=Error building URL! QUESTION=\u0633\u0624\u0627\u0644 PASSWORD_INCORRECT=Incorrect password! TRUE=\u0635\u062D\u064A\u062D CANCEL=\u0625\u0644\u063A\u0627\u0621 FILE_ERR_DELETING=Error deleting file URL_OPEN=\u0627\u0641\u062A\u062D \u0639\u0646\u0648\u0627\u0646 \u0625\u0646\u062A\u0631\u0646\u062A FILE_ERR_RESTORING=Error restoring file WRITING_FILE=Writing file... XML_ATTRIBUTE=\u0627\u0644\u0635\u0651\u0641\u0629 XML_VALUE=\u0642\u064A\u0645\u0629 XML_NOT_EDITABLE=This field is not editable! XML_TEXT=\u0646\u0635 XML_NEW_ATTRIBUTE=Add attribute WORKING=...\u062C\u0627\u0631\u064D \u0627\u0644\u0639\u0645\u0644 LOADING_FILE=Loading file XML_DEL_ATTRIBUTE=Delete attribute XML_ELEMENT=\u0639\u0646\u0635\u0631 XML_NEW_ELEMENT=New element XML_DEL_ELEMENT=Delete element XML_NAME=\u0627\u0644\u0625\u0633\u0645 RETRY=\u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u0645\u062D\u0627\u0648\u0644\u0629 IGNORE=\u062A\u062C\u0627\u0647\u0644 DATE_INCORRECT=Date incorrect! BAD_NUMBER=Incorrect number! NONE=\u0644\u0627 \u0634\u064A\u0626 COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=D#127 SELECT_ALL=\u0627\u062E\u062A\u0631 \u0627\u0644\u0643\u0644 SELECT_NONE=Clear selection WIDTH=\u0627\u0644\u0639\u0631\u0636: HEIGHT=\u0627\u0644\u0637\u0648\u0644: BROWSE_FILES=Browse files... VERSION=\u0627\u0644\u0625\u0635\u062F\u0627\u0631\u0629 ABOUT=\u062D\u0648\u0644... YES_TO_ALL=\u0646\u0639\u0645 \u0644\u0644\u062C\u0645\u064A\u0639 NO_TO_ALL=No to all SAVE=\u062D\u0641\u0638 OPEN=\u0627\u0641\u062A\u062D FILE_OPEN_TOOLTIP=Open the selected file FILE_SAVE_TOOLTIP=Save the specified file SAVING=saving... SAVING_FILE=Saving file jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_gl.properties0000644000175000017500000000410111377161311026264 0ustar ERROR=ERRO OK=Aceptar YES=Si NO=Non DELETE=Eliminar PASTE=Pegar CUT=Cortar COPY=Copiar FILE_SAVE=Gardar arquivo CONFIRM=Confirmar FILE_OPEN=Abrir arquivo FILE_ERR_BEG_DIR=O cartafol URL=URL: PASSWORD=Contrasinal: WARNING=Coidado! FILE_NOT_READABLE=Non se pode ler! FILE_NOT_EXIST=Non existe! FILE_READONLY=\u00C9 de s\u00F3 lectura e non se pode sobreescribir! FILE_OVERWRITE_DIR_PROMPT=Quer sobreescribila? FILE_OVERWRITE_PROMPT=Quer sobreescribilo? FILE_EXISTS=xa existe no sistema FILE_DIR_BEG=O cartafol FILE_BEG=O arquivo UNNAMED=Sen nome FILE_ERR_READING=Erro ao ler o arquivo FILE_ERR_SAVING=Erro ao gardar o arquivo FILE_FIND=Busca arquivo FILE_ERR_READONLY=\u00E9 de s\u00F3 lectura FILE_ERR_EXISTS=xa existe. Quere sobreescribilo? FILE_ERR_UNREADABLE=non se pode ler FILE_ERR_BEG=O arquivo LOADING=Abrindo o programa... FALSE=falso CHECK_SIGNATURE_URL=messages/checksignature_gl.html URL_LAUNCH_ERROR=Erro ao chamar a URL URL_ERROR=Erro ao constru\u00EDr a URL! QUESTION=Pregunta PASSWORD_INCORRECT=Sinal incorrecto! TRUE=Certo CANCEL=Cancelar FILE_ERR_DELETING=Erro ao eliminar o arquivo URL_OPEN=Abrir URL FILE_ERR_RESTORING=Erro ao restaurar o arquivo WRITING_FILE=A escribir arquivo... XML_ATTRIBUTE=Atributo XML_VALUE=Valor XML_NOT_EDITABLE=Este campo non \u00E9 edit\u00E1bel! XML_TEXT=texto XML_NEW_ATTRIBUTE=Engadir atributo WORKING=A traballar... LOADING_FILE=Abrindo o arquivo XML_DEL_ATTRIBUTE=Eliminar atributo XML_ELEMENT=Elemento XML_NEW_ELEMENT=Engadir elemento XML_DEL_ELEMENT=Eliminar elemento XML_NAME=Nome RETRY=Reintentar IGNORE=Ignorar DATE_INCORRECT=Data incorrecta! BAD_NUMBER=N\u00FAmero incorrecto! NONE=Ning\u00FAn COPY_keys=CC CUT_keys=TX PASTE_keys=PV DELETE_keys=E#127 SELECT_ALL=Seleccionar todo SELECT_NONE=Limpar selecci\u00F3n WIDTH=Ancho: HEIGHT=Altura BROWSE_FILES=Buscar arquivo VERSION=versi\u00F3n ABOUT=Sobre o... YES_TO_ALL=Si a todo NO_TO_ALL=Non a todo SAVE=Gardar OPEN=Abrir FILE_OPEN_TOOLTIP=Abrir o arquivo seleccionado FILE_SAVE_TOOLTIP=Gardar o arquivo especificado SAVING=gardando... SAVING_FILE=Gardando ficheiro jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_es.properties0000644000175000017500000000063711377161311030422 0ustar cl_alert=Est\u00E1 utilizando el programa "$" por primera vez en este ordenador.\nPor favor, indique la carpeta en la que desea almacenar los archivos\nde configuraci\u00F3n y los datos del programa. cl_err_unableToCreateDir=Se ha producido un error al intentar crear la carpeta.\nPor favor, indique una ubicaci\u00F3n en la que tenga derechos de administraci\u00F3n. cl_prompt_title=Directorio de instalaci\u00F3n jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_ca.java0000644000175000017500000000011011377161311024766 0ustar package edu.xtec.resources.messages; public class BasicMessages_ca { } jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/BasicMessages_gl.java0000644000175000017500000000011011377161311025005 0ustar package edu.xtec.resources.messages; public class BasicMessages_gl { } jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_cs.properties0000644000175000017500000000066111377161311030415 0ustar cl_alert=Spou\u0161t\u00EDte "$" na tomto po\u010D\u00EDta\u010Di poprv\u00E9.\nZadejte pros\u00EDm jm\u00E9no slo\u017Eky ve kter\u00E9 budou ulo\u017Eeny\ndatov\u00E9 soubory a nastaven\u00ED programu. cl_err_unableToCreateDir=Nemohu vytvo\u0159it tuto slo\u017Eku!\nZadejte pros\u00EDm platn\u00E9 um\u00EDst\u011Bn\u00ED ke kter\u00E9mu m\u00E1te pr\u00E1va administr\u00E1tora. cl_prompt_title=Instala\u010Dn\u00ED slo\u017Eka jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_pt.properties0000644000175000017500000000061411377161311030431 0ustar cl_alert=Est\u00E1 a utilizar o programa "$" pela primeira vez neste computador.\nPor favor, indique a pasta onde deve guardar os ficheiros\nde dados e as configura\u00E7\u00F5es do programa. cl_err_unableToCreateDir=Imposs\u00EDvel criar esta pasta!\nPor favor, introduza uma localiza\u00E7\u00E3o v\u00E1lida onde possua direitos de administrador. cl_prompt_title=Pasta de instala\u00E7\u00E3o jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_it.properties0000644000175000017500000000053011377161311030417 0ustar cl_alert=Avviate "$" la prima volta in questo computer.\nPer favore inserite un nome di cartella dove depositare\ni file dei dati e i parametri del programma. cl_err_unableToCreateDir=Impossibile creare questa cartella!\nPer favore inserisci una posizione valida dove hai i diritti di amministrazione. cl_prompt_title=Cartella di installazione jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/messages/PersistentPathsMessages_fr.properties0000644000175000017500000000056211377161311030417 0ustar cl_alert=Vous lancez "$" pour la premi\u00E8re fois sur cet ordinateur. Entrez un nom de dossier o\u00F9 stocker les fichiers de donn\u00E9es et les param\u00E8tres de programme. cl_err_unableToCreateDir=Impossible de cr\u00E9er ce dossier \\! Entrez une localisation valide o\u00F9 vous avez des droits d'administrateurs. cl_prompt_title=R\u00E9pertoire d'installation jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/icons/0000755000175000017500000000000011377161311020263 5ustar jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/icons/cut.gif0000644000175000017500000000121411377161311021543 0ustar GIF89a00xx򗗗 !,LPI+P͙jUwRY(Ȋ|iz<dp *'t)@ 5ĔFK))2M";٤ !,upH,kȤVў' :1'LBMGLdT\%Gfm2UC:/)&$!}5 TGKL~ T3 K`FDA;𣝛POOwvvݯDDD !,wwn|Somvovzo|v~kw"~{o"#~k{w~D"~wu{uvkDyŰyB!HÇ#!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/icons/paste.gif0000644000175000017500000000045211377161311022067 0ustar GIF89aϺɶɶ±°̼̻˼õ{{vrfffc11^33!,@T`&dIb2XVaЖ .C*]b K(V4$bhf͇\"W@=ca1ZC!!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/icons/copy.gif0000644000175000017500000000044011377161311021722 0ustar GIF89a泳̳̲̲̱˰ɬƪĨ¥!,@J 'd9n*Tn%mtmH֠&B]PPvxYJ!Q6 cM S#$|k!!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/utilities/edu/xtec/resources/icons/delete.gif0000644000175000017500000000032011377161311022207 0ustar GIF89a̙fff333!,Bhn$>d5fB02m7\7@̷C u@0sROU8vU$!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/core/0000755000175000017500000000000011377161311012333 5ustar jclic-0.2.1.0.orig/src/core/edu/0000755000175000017500000000000011377161311013110 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/0000755000175000017500000000000011377161311014053 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/0000755000175000017500000000000011377161311015137 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/0000755000175000017500000000000011377161311016053 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/ActivityBag.java0000644000175000017500000002055211377161311021130 0ustar /* * File : ActivityBag.java * Created : 19-dec-2000 16:09 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Activity; import edu.xtec.jclic.Constants; import edu.xtec.jclic.bags.MediaBag.Listener; import edu.xtec.jclic.clic3.Clic3; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.media.EventSounds; import edu.xtec.jclic.project.JClicProject; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Vector; /** * This class stores the complete collection of activities of a {@link edu.xtec.jclic.project.JClicProject}. * The collection is managed through a private {@link java.util.Vector} of objects * of type {@link edu.xtec.jclic.bags.ActivityBagElement}. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityBag extends Object implements Editable, Domable, Listener { /** * The project that this ActivityBag belongs to */ protected JClicProject project; private Vector elements; /** * Creates new ActivityBag * @param project The project this ActivityBag belongs to */ public ActivityBag(JClicProject project){ elements=new Vector(20); this.project=project; } /** * Returns the project this ActiivityBag belongs to * @return The project related to this ActivityBag. */ public JClicProject getProject(){ return project; } public int size(){ return elements.size(); } public ActivityBagElement elementAt(int index) throws ArrayIndexOutOfBoundsException{ return (ActivityBagElement)elements.elementAt(index); } public void insertElementAt(ActivityBagElement el, int index) throws ArrayIndexOutOfBoundsException { elements.insertElementAt(el, index); } public void removeElementAt(int index) throws ArrayIndexOutOfBoundsException { elements.removeElementAt(index); } public void addElement(ActivityBagElement el){ elements.addElement(el); } public boolean removeElement(ActivityBagElement el){ return elements.removeElement(el); } public int getElementIndex(String name){ String s=FileSystem.stdFn(name); int result=-1; for(int i=0; i=0 ? elementAt(i) : null); } public ActivityBagElement getElement(String name) throws Exception{ ActivityBagElement abe=getElementByName(name); if(abe==null){ if(Clic3.isClic3Extension(Clic3.getExt(name))){ Clic3.addActivityToBag(project, name); abe=getElementByName(name); } } return abe; } public boolean activityExists(String name){ return getElementByName(name)!=null; } /** * The name of the XML elements of type ActivityBag */ public static final String ELEMENT_NAME="activities"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); for(int i=0; i=elements.size() || i<0) i=0; result=new JumpInfo(JumpInfo.JUMP, i); } else{ int rating=-1; int time=-1; if(rep!=null){ SequenceReg.Info info=rep.getCurrentSequenceInfo(); if(info!=null){ rating=(int)(info.tScore); time=(int)(info.tTime/1000); } } result=asj.resolveJump(rating, time); } } return result; } public ActivitySequenceElement getCurrentAct(){ return getElement(currentAct, false); } public int getCurrentActNum(){ return currentAct; } public String getSequenceForElement(int e){ String s=null; if(e>=0 && e=0; i--) if((s=getElement(i, false).getTag())!=null) break; return s; } public ActivitySequenceElement getElementByActivityName(String activityName){ ActivitySequenceElement result=null; if(activityName!=null){ for(int i=0; iMediaBag belongs to */ protected JClicProject project; /** * Vector containing all the {@link edu.xtec.jclic.bags.MediaBagElement} objects of * this MediaBag. */ protected Vector elements; protected HashSet listeners; /** Creates new MediaBag */ public MediaBag(JClicProject project) { this.project=project; elements=new Vector(30); listeners=new HashSet(1); } public JClicProject getProject(){ return project; } public static String ELEMENT_NAME="mediaBag"; public Vector getElements(){ return new Vector(elements); } public void clear(){ elements.clear(); } public Vector getElementsByName(){ Vector v=getElements(); Collections.sort(v, new Comparator(){ public int compare(Object o1, Object o2){ return ((MediaBagElement)o1).getName().compareToIgnoreCase(((MediaBagElement)o2).getName()); } }); return v; } public Vector getElementsByType(){ final StringBuffer sb1=new StringBuffer(200); final StringBuffer sb2=new StringBuffer(200); Vector v=getElements(); Collections.sort(v, new Comparator(){ public int compare(Object o1, Object o2){ sb1.setLength(0); MediaBagElement mbe=(MediaBagElement)o1; String fName=mbe.getFileName(); String name=mbe.getName(); int dot=fName.lastIndexOf('.'); sb1.append(dot>0 ? fName.substring(dot) : ".zzz"); sb1.append(name); sb2.setLength(0); mbe=(MediaBagElement)o2; fName=mbe.getFileName(); name=mbe.getName(); dot=fName.lastIndexOf('.'); sb2.append(dot>0 ? fName.substring(dot) : ".zzz"); sb2.append(name); return sb1.substring(0).compareToIgnoreCase(sb2.substring(0)); } }); return v; } public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); org.jdom.Element child; Iterator it=getElementsByType().iterator(); while(it.hasNext()){ e.addContent(((MediaBagElement)it.next()).getJDomElement()); } return e; } public void clearData(){ Iterator it=elements.iterator(); while(it.hasNext()){ ((MediaBagElement)it.next()).clearData(); } } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); Iterator it=e.getChildren(MediaBagElement.ELEMENT_NAME).iterator(); while(it.hasNext()){ elements.add(MediaBagElement.getMediaBagElement((org.jdom.Element)it.next())); } } public boolean addElement(MediaBagElement mbe){ boolean result=mbe!=null && (getElement(mbe.getName())==null); if(result) elements.add(mbe); return result; } public MediaBagElement getElement(String name){ MediaBagElement result=null; if(name!=null){ for(int i=0; iConditionalJumpInfo * ({@link edu.xtec.jclic.bags.ActivitySequenceJump.upperJump} or {@link edu.xtec.jclic.bags.ActivitySequenceJump.lowerJump}). * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ConditionalJumpInfo extends JumpInfo implements Cloneable{ public int threshold; public int time; /** Creates new ConditionalJumpInfo */ public ConditionalJumpInfo(int action, String sequence, int threshold){ this(action, sequence, threshold, -1); } public ConditionalJumpInfo(int action, String sequence, int threshold, int time){ super(action, sequence); this.threshold=threshold; this.time=time; } private ConditionalJumpInfo(){ super(STOP); threshold=-1; time=-1; } public static final String TIME="time", THRESHOLD="threshold"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); e.setAttribute(THRESHOLD, Integer.toString(threshold)); if(time>=0) e.setAttribute(TIME, Integer.toString(time)); return e; } public static ConditionalJumpInfo getConditionalJumpInfo(org.jdom.Element e) throws Exception{ ConditionalJumpInfo cji=new ConditionalJumpInfo(); cji.setProperties(e, null); return cji; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ super.setProperties(e, aux); threshold=JDomUtility.getIntAttr(e, THRESHOLD, threshold); time=JDomUtility.getIntAttr(e, TIME, time); } public Object clone() throws CloneNotSupportedException { return super.clone(); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/ActivitySequenceElement.java0000644000175000017500000001456611377161311023531 0ustar /* * File : ActivitySequenceElement.java * Created : 19-dec-2000 16:18 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Constants; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; import java.util.HashMap; import java.util.Iterator; /** * This class defines a specific point into a JClic sequence of activities: * what activity must run at this point, what to do or where to jump when the activity * finishes, the behavior of the "next" and "prev" buttons, etc. It can also have a "tag", * used to refer to this point of the sequence with a unique name. ActivitySequenceElements * are always stored into {@link edu.xtec.jclic.bags.ActivitySequence} objects. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceElement extends Object implements Editable, Domable, Cloneable { private String tag; private String description; private String activityName; public ActivitySequenceJump fwdJump; public ActivitySequenceJump backJump; public int navButtons; public int delay; /** Creates new ActivitySequenceElement */ public ActivitySequenceElement(String activityName){ this(activityName, false); } public ActivitySequenceElement(String activityName, boolean singleActivity){ this(activityName, 0, NAV_BOTH); if(singleActivity){ setTag(getActivityName()); fwdJump=new ActivitySequenceJump(JumpInfo.STOP); backJump=new ActivitySequenceJump(JumpInfo.RETURN); } } public ActivitySequenceElement(String activityName, int delay, int navButtons){ setActivityName(activityName); this.delay=delay; tag=null; description=null; fwdJump=null; backJump=null; this.navButtons=navButtons; } public static final String ELEMENT_NAME="item", NAME="name", ID="id", DESCRIPTION="description", DELAY="delay", FORWARD="forward", BACK="back", NAV_BUTTONS="navButtons"; public static final int NAV_NONE=0, NAV_FWD=1, NAV_BACK=2, NAV_BOTH=3; public static final String [] NAV_BUTTONS_TAG={"none", "fwd", "back", "both"}; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); if(tag!=null){ e.setAttribute(ID, tag); if(description!=null) JDomUtility.addParagraphs(e, DESCRIPTION, description); } e.setAttribute(NAME, activityName); if(delay!=0) e.setAttribute(DELAY, Integer.toString(delay)); if(fwdJump!=null) e.addContent(fwdJump.getJDomElement(FORWARD)); if(backJump!=null) e.addContent(backJump.getJDomElement(BACK)); if(navButtons!=NAV_BOTH) e.setAttribute(NAV_BUTTONS, NAV_BUTTONS_TAG[navButtons]); return e; } public static ActivitySequenceElement getActivitySequenceElement(org.jdom.Element e) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); ActivitySequenceElement ase=new ActivitySequenceElement("", 0, NAV_BOTH); ase.setProperties(e, null); return ase; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); org.jdom.Element child; setActivityName(e.getAttributeValue(NAME)); delay=JDomUtility.getIntAttr(e, DELAY, 0); setTag(JDomUtility.getStringAttr(e, ID, tag, false)); description=JDomUtility.getParagraphs(e.getChild(DESCRIPTION)); Iterator it=e.getChildren(ActivitySequenceJump.ELEMENT_NAME).iterator(); while(it.hasNext()){ child=(org.jdom.Element)it.next(); String id=child.getAttributeValue(ActivitySequenceJump.ID); ActivitySequenceJump asj=ActivitySequenceJump.getActivitySequenceJump(child); if(FORWARD.equals(id)) fwdJump=asj; else if(BACK.equals(id)) backJump=asj; } navButtons=JDomUtility.getStrIndexAttr(e, NAV_BUTTONS, NAV_BUTTONS_TAG, NAV_BOTH); } public void setTag(String newTag){ tag=FileSystem.stdFn(newTag); } public void setDescription(String description){ this.description=description; } public String getTag() { return tag; } public String getDescription(){ return description; } public void setActivityName(String sActivityName){ activityName=FileSystem.stdFn(sActivityName); } public String getActivityName(){ return activityName; } public void listReferences(String type, HashMap map) { if(activityName!=null && (type==null || type.equals(Constants.ACTIVITY_OBJECT))) map.put(activityName, Constants.ACTIVITY_OBJECT); if(tag!=null && (type==null || type.equals(Constants.SEQUENCE_OBJECT))) map.put(tag, Constants.SEQUENCE_OBJECT); if(backJump!=null) backJump.listReferences(type, map); if(fwdJump!=null) fwdJump.listReferences(type, map); } public Editor getEditor(Editor parent) { return Editor.createEditor(getClass().getName()+"Editor", this, parent); } public Object clone() throws CloneNotSupportedException { ActivitySequenceElement result=(ActivitySequenceElement)super.clone(); if(fwdJump!=null) result.fwdJump=(ActivitySequenceJump)fwdJump.clone(); if(backJump!=null) result.backJump=(ActivitySequenceJump)backJump.clone(); return result; } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/ActivitySequenceJump.java0000644000175000017500000001330611377161311023042 0ustar /* * File : ActivitySequenceJump.java * Created : 19-dec-2000 16:27 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.util.JDomUtility; import java.util.HashMap; /** * This is a special case of {@link edu.xtec.jclic.bags.JumpInfo}, used only in * {@link edu.xtec.jclic.bags.ActivitySequenceElement} objects. Sequence elements contain * two ActivitySequenceJump objects: one to be processed when the user clicks on the * "next" button (or when the activity finishes, if in automatic mode), and the * other one related to the "prev" button. ActivitySequenceJump objects define a default * jump or action, but can have up to two {@link edu.xtec.jclic.bags.ConditionalJumpInfo} objects, * used to define alternative jumps when the obtained score or the time used to solve the * activities are below or over specific values. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivitySequenceJump extends JumpInfo implements Cloneable { protected ConditionalJumpInfo upperJump; protected ConditionalJumpInfo lowerJump; /** Creates new ActivitySequenceJump */ public ActivitySequenceJump(int action) { this(action, null); } public ActivitySequenceJump(int action, String sequence) { super(action, sequence); upperJump=null; lowerJump=null; } public static final String ID="id", NAME="name", UPPER="upper", LOWER="lower"; public org.jdom.Element getJDomElement(String id){ org.jdom.Element e, child; e=super.getJDomElement(); e.setAttribute(ID, id); if(upperJump!=null){ child=upperJump.getJDomElement(); child.setAttribute(ID, UPPER); e.addContent(child); } if(lowerJump!=null){ child=lowerJump.getJDomElement(); child.setAttribute(ID, LOWER); e.addContent(child); } return e; } public static ActivitySequenceJump getActivitySequenceJump(org.jdom.Element e) throws Exception{ ActivitySequenceJump asj=new ActivitySequenceJump(STOP); asj.setProperties(e, null); return asj; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); org.jdom.Element child; // check for old version data (Jclic beta 0.4 or lower) String s=e.getAttributeValue(NAME); if(s==null){ super.setProperties(e, aux); if((child=JDomUtility.getChildWithId(e, ELEMENT_NAME, UPPER))!=null) upperJump=ConditionalJumpInfo.getConditionalJumpInfo(child); if((child=JDomUtility.getChildWithId(e, ELEMENT_NAME, LOWER))!=null) lowerJump=ConditionalJumpInfo.getConditionalJumpInfo(child); } else{ // OLD VERSION DATA if(s!=null && !s.equals(actions[STOP])){ if(s.equals(actions[EXIT])) action=EXIT; else{ action=JUMP; sequence=s; } } if((child=e.getChild(UPPER))!=null){ int v=JDomUtility.getIntAttr(child, ConditionalJumpInfo.THRESHOLD, 0); int t=JDomUtility.getIntAttr(child, ConditionalJumpInfo.TIME, -1); String sq=child.getText(); upperJump=new ConditionalJumpInfo(JUMP, sq, v, t); } if((child=e.getChild(LOWER))!=null){ int v=JDomUtility.getIntAttr(child, ConditionalJumpInfo.THRESHOLD, 0); int t=JDomUtility.getIntAttr(child, ConditionalJumpInfo.TIME, -1); String sq=child.getText(); lowerJump=new ConditionalJumpInfo(JUMP, sq, v, t); } } } public void setConditionalJump(ConditionalJumpInfo jump, boolean upper){ if(upper) upperJump=jump; else lowerJump=jump; } public JumpInfo resolveJump(int rating, int time){ if(rating<0 || time<0) return this; if(upperJump!=null && rating>upperJump.threshold && (upperJump.time<=0 || time0 && time>lowerJump.time))) return lowerJump; return this; } public void listReferences(String type, HashMap map) { super.listReferences(type, map); if(upperJump!=null) upperJump.listReferences(type, map); if(lowerJump!=null) lowerJump.listReferences(type, map); } public Object clone() throws CloneNotSupportedException { ActivitySequenceJump result=(ActivitySequenceJump)super.clone(); if(upperJump!=null) result.upperJump=(ConditionalJumpInfo)upperJump.clone(); if(lowerJump!=null) result.lowerJump=(ConditionalJumpInfo)lowerJump.clone(); return result; } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/ActivityBagElement.java0000644000175000017500000000545011377161311022442 0ustar /* * File : ActivityBagElement.java * Created : 19-dec-2000 15:52 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Activity; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.fileSystem.FileSystem; import java.util.HashMap; /** * This class stores a XML {@link orj.jdom.Element} that defines an * {@link edu.xtec.jclic.Activity}. It stores also a {@link java.util.HashMap} * with references of other objects to this activity, and implements some * useful methods to directly retrieve some properites of the related Activity, * like its name. ActivityBagElements are usually stored into * {@link edu.xtec.jclic.bags.ActivityBag} objects. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityBagElement extends Object implements Editable, Cloneable { private org.jdom.Element element; private HashMap references; /** Creates new ActivityBagElement */ public ActivityBagElement(org.jdom.Element e){ setData(e); } public String getName(){ return FileSystem.stdFn(element.getAttributeValue(Activity.NAME)); } public void setData(org.jdom.Element e){ element=e; references=null; } public org.jdom.Element getData(){ return element; } public String toString(){ return getName(); } /** Getter for property dependences. * @return Value of property dependences. */ public HashMap getReferences() { if(references==null && element!=null){ references=new HashMap(); Activity.listReferences(element, references); } return references; } public Editor getEditor(Editor parent){ return Editor.createEditor(getClass().getName()+"Editor", this, parent); } public Object clone() throws CloneNotSupportedException { ActivityBagElement result=(ActivityBagElement)super.clone(); result.references=null; result.element=(org.jdom.Element)element.clone(); return result; } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/JumpInfo.java0000644000175000017500000000730111377161311020446 0ustar /* * File : JumpInfo.java * Created : 04-jan-2002 16:52 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.Constants; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ import java.util.HashMap; /** * This class contains information about what the sequence manager of JClic must do * in specific circumstances: when an activity finishes, when the user clicks on the * "next" and "prev" buttons, or when a special active content is activated. Different * kinds of actions are possible: to go back to a previous point in the sequence, to exit * the program, to stop (do nothing), to jump to a specific point in the sequence of activities * or to jump to another JClic project. */ public class JumpInfo implements Domable, Cloneable{ public static final int JUMP=0, STOP=1, RETURN=2, EXIT=3; public int action; public String projectPath; public String sequence; public int actNum; /** Creates new JumpInfo */ public JumpInfo(int action){ this(action, null); } public JumpInfo(int action, String sequence){ this.action=action; this.sequence=sequence; projectPath=null; actNum=-1; } public JumpInfo(int action, int actNum){ this.action=action; this.actNum=actNum; projectPath=null; sequence=null; } public static final String[] actions={"JUMP", "STOP", "RETURN", "EXIT"}; public static final String ELEMENT_NAME="jump", ACTION="action", TAG="tag", PROJECT="project"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); if(action!=JUMP) e.setAttribute(ACTION, actions[action]); else{ if(sequence!=null) e.setAttribute(TAG, sequence); if(projectPath!=null) e.setAttribute(PROJECT, projectPath); } return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); action=JDomUtility.getStrIndexAttr(e, ACTION, actions, JUMP); if(action==JUMP){ sequence=JDomUtility.getStringAttr(e, TAG, sequence, false); projectPath=JDomUtility.getStringAttr(e, PROJECT, projectPath, false); } } public void listReferences(String type, HashMap map) { if(action==JUMP){ if(projectPath!=null){ if(type==null || type.equals(Constants.EXTERNAL_OBJECT)) map.put(projectPath, Constants.EXTERNAL_OBJECT); } else if(sequence!=null){ if(type==null || type.equals(Constants.SEQUENCE_OBJECT)) map.put(sequence, Constants.SEQUENCE_OBJECT); } } } public Object clone() throws CloneNotSupportedException { return super.clone(); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/bags/MediaBagElement.java0000644000175000017500000002372511377161311021672 0ustar /* * File : MediaBagElement.java * Created : 19-dec-2000 15:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.bags; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.fileSystem.FileSystem; //import edu.xtec.jclic.misc.Bmp; import net.sf.image4j.codec.bmp.BMPDecoder; import net.sf.image4j.codec.ico.ICODecoder; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; import java.awt.Image; import java.awt.Toolkit; import java.awt.image.ImageObserver; import java.awt.image.BufferedImage; import javax.swing.ImageIcon; /** * MediaBagElements are the members of {@link edu.xtec.jclic.bags.MediaBag} * objects. Media elements have a name, a reference to a file (the fileName) * and, when initialized, a data field containing the raw content of * the media. They have also a flag indicating if the data must be saved into the * {@link edu.xtec.jclic.project.JClicProject} file or must be mantained as a single * reference to a external file. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MediaBagElement extends Object implements Editable, Domable, Comparable{ private String name; private String fileName; private int usageCount; private Object data; public boolean projectFlag; public boolean saveFlag; public boolean animated; private boolean hasThumb; /** Creates new MediaBagElement */ public MediaBagElement(String fileName) { this(fileName, null); } public MediaBagElement(String fileName, Object data) { this(fileName, data, fileName); } public MediaBagElement(String fileName, Object data, String name){ setName(name); setFileName(fileName); setData(data); usageCount=0; animated=false; saveFlag=true; } public static final String ELEMENT_NAME="media"; public static final String FILE="file", NAME="name", SAVE="save", USAGE="usage"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); e.setAttribute(NAME, name); e.setAttribute(FILE, fileName); if(!saveFlag) e.setAttribute(SAVE, JDomUtility.BOOL_STR[JDomUtility.FALSE]); if(usageCount>0) e.setAttribute(USAGE, Integer.toString(usageCount)); return e; } protected static MediaBagElement getMediaBagElement(org.jdom.Element e) throws Exception{ MediaBagElement mb=new MediaBagElement("NONAME", null); mb.setProperties(e, null); return mb; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); setName(JDomUtility.getStringAttr(e, NAME, name, false)); setFileName(JDomUtility.getStringAttr(e, FILE, fileName, false)); saveFlag=JDomUtility.getBoolAttr(e, SAVE, true); usageCount=JDomUtility.getIntAttr(e, USAGE, usageCount); } public Editor getEditor(Editor parent) { return Editor.createEditor(getClass().getName()+"Editor", this, parent); } public boolean isEmpty(){ return data==null; } public void setFileName(String sName){ fileName=FileSystem.stdFn(sName); data=null; animated=false; } public String getFileName(){ return fileName; } public boolean isImage(){ return Utils.getFileType(fileName)==Utils.TYPE_IMAGE; } public void setData(Object sData){ data=sData; animated=false; if(data!=null && data instanceof Image) Toolkit.getDefaultToolkit().prepareImage((Image)data, -1, -1, null); } public void clearData(){ if(data!=null && !(data instanceof java.awt.Font)){ if(data instanceof Image) ((Image)data).flush(); setData(null); } } public Object getData(){ return data; } public boolean isInternal(){ return (data!=null); } public void incUsageCount(){ usageCount++; } public void decUsageCount(){ usageCount--; } public boolean isUsed(){ return usageCount<=0; } protected void finalize() throws Throwable{ Image img=getImage(); if(img!=null) img.flush(); data=null; super.finalize(); } public boolean prepareImage(FileSystem fs) throws Exception{ boolean result=false; if(isImage()){ if(data==null || !(data instanceof Image)){ String fn=fileName.toLowerCase(); if(fn.endsWith(".bmp")){ // Old edu.xtec.jclic.misc.Bmp replaced by image4j //Bmp bmp=new Bmp(fs.getInputStream(fileName)); //setData(bmp.getImage()); BufferedImage img=BMPDecoder.read(fs.getInputStream(fileName)); setData(Toolkit.getDefaultToolkit().createImage(img.getSource())); } else if(fn.endsWith(".ico")){ java.util.List list=ICODecoder.read(fs.getInputStream(fileName)); int maxs=0; BufferedImage img=null; int listSize=list.size(); for(int i=0; i=maxs){ img=imgtmp; maxs=s; } } setData(Toolkit.getDefaultToolkit().createImage(img.getSource())); } else setData(fs.getImageFile(fileName)); } result=true; } return result; } private static int imgReadyFlag=(ImageObserver.WIDTH | ImageObserver.HEIGHT); public Image getImage() throws Exception{ int imgStatus=0; if(data==null || !(data instanceof Image)) return null; if(!animated) while(true){ imgStatus=Toolkit.getDefaultToolkit().checkImage((Image)data, -1, -1, null); if((imgStatus & (ImageObserver.ERROR | ImageObserver.ABORT))!=0){ System.err.println("Error loading "+getName() + " - Toolkit.checkImage returned status: "+imgStatus); data=null; break; } else if((imgStatus & imgReadyFlag)==imgReadyFlag) break; Thread.currentThread().sleep(50); } if(data!=null && (imgStatus & ImageObserver.FRAMEBITS)!=0) animated=true; return (Image)data; } public Image prepareAndGetImage(FileSystem fs) throws Exception{ Image img=getImage(); if(img==null && data==null){ if(prepareImage(fs)) img=getImage(); } return img; } public ImageIcon getThumbNail(int maxWidth, int maxHeight, FileSystem fs){ ImageIcon result=null; try{ Image img=prepareAndGetImage(fs); if(img==null){ img=Utils.getFileIcon(fileName).getImage(); } if(img!=null && maxWidth>0 && maxHeight>0){ int w=img.getWidth(null); int h=img.getHeight(null); if(w>0 && h>0 && (w>maxWidth || h>maxHeight)){ double f=Math.min((double)maxWidth/w, (double)maxHeight/h); img=img.getScaledInstance((int)(f*w), (int)(f*h), Image.SCALE_SMOOTH); } result=new ImageIcon(img); hasThumb=true; } } catch(Exception ex){ System.err.println("Error reading image:\n"+ex); } return result; } public boolean isWaitingForImage(){ if(hasThumb==true || animated==true || data==null || !(data instanceof Image)) return false; int state=Toolkit.getDefaultToolkit().checkImage((Image)data, -1, -1, null); if((state & ImageObserver.FRAMEBITS)!=0){ animated=true; } boolean result=(state & (ImageObserver.ALLBITS | ImageObserver.FRAMEBITS))==0; return result; } /** Getter for property name. * @return Value of property name. * */ public java.lang.String getName() { return name; } /** Setter for property name. * @param name New value of property name. * */ public void setName(java.lang.String name) { this.name = FileSystem.stdFn(name); } public String toString(){ return name; } public int compareTo(Object obj) { int result=-1; if(getName()!=null && obj instanceof MediaBagElement){ result=getName().compareTo(((MediaBagElement)obj).getName()); } return result; } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/misc/0000755000175000017500000000000011377161311016072 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/misc/Bmp.java0000644000175000017500000000070011377161311017450 0ustar /* * File : Bmp.java * Created : 16-oct-2001 9:58 * By : fbusquets * * JClic - Authoring and playing system for educational activities * */ package edu.xtec.jclic.misc; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 2.0 * This class is no longer used by JClic. The decoding of BMP images * is currently done by means of the package net.sf.image4j */ public abstract class Bmp { } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/misc/Gradient.java0000644000175000017500000001303211377161311020471 0ustar /* * File : Gradient.java * Created : 06-mar-2002 15:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.misc; import java.awt.*; import java.awt.geom.Rectangle2D; import edu.xtec.util.JDomUtility; import edu.xtec.util.Domable; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Gradient extends Object implements Cloneable, Domable{ protected Color c1, c2; protected int angle=0; protected GradientPaint gp=null; protected Rectangle2D lastRect=null; protected boolean transparency=false; protected int cycles=1; /** Creates new Gradient */ public Gradient(Color c1, Color c2, int angle, int cycles) { setColors(c1, c2); setAngle(angle); setCycles(cycles); } public Gradient(){ this(Color.black, Color.white, 0, 1); } public Object clone(){ return new Gradient(c1, c2, angle, cycles); } public boolean hasTransparency(){ return transparency; } public void setCycles(int cycles){ this.cycles=Math.max(1, cycles); clear(); } public int getCycles(){ return cycles; } public void setAngle(int angle){ this.angle=angle % 360; clear(); } public int getAngle(){ return angle; } public Color[] getColors(){ return new Color[] {c1, c2}; } public void setColors(Color c1, Color c2){ this.c1=c1; this.c2=c2; transparency=(c1.getAlpha()!=255 || c2.getAlpha()!=255); clear(); } public void clear(){ gp=null; lastRect=null; } public static final String ELEMENT_NAME="gradient"; public static final String C1="source", C2="dest", ANGLE="angle", CYCLES="cycles"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); e.setAttribute(C1, JDomUtility.colorToString(c1)); e.setAttribute(C2, JDomUtility.colorToString(c2)); e.setAttribute(ANGLE, Integer.toString(angle)); if(cycles>1) e.setAttribute(CYCLES, Integer.toString(cycles)); return e; } public static Gradient getGradient(org.jdom.Element e) throws Exception { Gradient g=new Gradient(); g.setProperties(e, null); return g; } public void setProperties(org.jdom.Element e, Object aux) throws Exception { JDomUtility.checkName(e, ELEMENT_NAME); c1=JDomUtility.getColorAttr(e, C1, c1); c2=JDomUtility.getColorAttr(e, C2, c2); setAngle(JDomUtility.getIntAttr(e, ANGLE, angle)); setCycles(JDomUtility.getIntAttr(e, CYCLES, cycles)); } public void paint(Graphics2D g2, Shape shape){ Paint p=g2.getPaint(); g2.setPaint(getGradient(shape)); g2.fill(shape); g2.setPaint(p); } public GradientPaint getGradient(Shape shape){ Rectangle2D r=shape.getBounds2D(); if(gp==null || lastRect==null || !lastRect.equals(r)){ lastRect=r; double rw=r.getWidth(); double rh=r.getHeight(); double radius=rw/2; // angle in radians double alpha=(Math.PI*angle)/180.0; switch(angle){ case 0: case 180: break; case 90: case 270: radius=rh/2; break; default: // diagonal of r radius=Math.sqrt(rw*rw+rh*rh)/2; // diagonal angle double gamma=toFirstQuadrant(Math.atan2(rh, rw)); // diagonal vs. alpha double beta=Math.abs(toFirstQuadrant(alpha)-gamma); // projected radius radius*=Math.cos(beta); } float cx=(float)(r.getX()+rw/2); float cy=(float)(r.getY()+rh/2); float px=(float)(radius*Math.cos(alpha)); float py=(float)(radius*Math.sin(alpha)); gp=new GradientPaint(cx+px, cy-py, c1, cx+px-2*px/cycles, cy-py+2*py/cycles, c2, cycles>1); } return gp; } protected double toFirstQuadrant(double a){ if(a>Math.PI) a=2*Math.PI-a; if(a>Math.PI / 2) a=Math.PI - a; return a; } public boolean equals(Object obj){ boolean result=false; if(obj!=null && obj instanceof Gradient){ Gradient g=(Gradient)obj; result= c1.equals(g.c1) && c2.equals(g.c2) && cycles==g.cycles && angle==g.angle; } return result; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/misc/Utils.java0000644000175000017500000004543711377161311020052 0ustar /* * File : Utils.java * Created : 06-feb-2001 18:30 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.misc; import edu.xtec.jclic.Constants; import edu.xtec.util.Options; import edu.xtec.util.SimpleFileFilter; import java.awt.*; import java.awt.geom.Area; import java.awt.image.BufferedImage; import java.awt.image.ImageObserver; import java.io.File; import java.io.FilenameFilter; import javax.swing.filechooser.FileFilter; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class Utils implements Constants{ public static final int JCLIC_FF=0, JCLIC_ZIP_FF=1, PAC_FF=2, PCC_FF=3, ALL_JCLIC_FF=4, ALL_CLIC_FF=5, ALL_JCLIC_CLIC_FF=6, INSTALL_FF=7, GIF_FF=8, JPG_FF=9, PNG_FF=10, ALL_IMAGES_FF=11, ALL_FF=12, ALL_SOUNDS_FF=13, MIDI_FF=14, ALL_VIDEO_FF=15, ALL_ANIM_FF=16, SKINS_FF=17, FONTS_FF=18, ALL_MEDIA_FF=19, ALL_MULTIMEDIA_FF=20, ALL_HTML_FF=21, TEXT_FF=22, NUM_FILE_FILTERS=23; private static SimpleFileFilter[] fileFilters=new SimpleFileFilter[NUM_FILE_FILTERS]; public static final String EXT_JCLIC=".jclic", EXT_JCLIC_ZIP=".jclic.zip", EXT_PAC=".pac", EXT_PCC=".pcc", EXT_INSTALL=".jclic.inst"; public static final String EXT_GIF=".gif", EXT_JPG=".jpg", EXT_PNG=".png", EXT_BMP=".bmp", EXT_ICO=".ico"; public static final String EXT_WAV=".wav", EXT_AU=".au", EXT_MP3=".mp3", EXT_AIFF=".aiff", EXT_MID=".mid", EXT_OGG=".ogg"; public static final String EXT_AVI=".avi", EXT_MOV=".mov", EXT_MPEG=".mpeg"; public static final String EXT_SWF=".swf", EXT_XML=".xml", EXT_TTF=".ttf", EXT_HTM=".htm", EXT_HTML=".html", EXT_TXT=".txt", EXT_ALL=".*"; public static final String[] EXT_ALL_JCLIC=new String[]{EXT_JCLIC, EXT_JCLIC_ZIP}; public static final String[] EXT_ALL_CLIC=new String[]{EXT_PAC, EXT_PCC}; public static final String[] EXT_ALL_JCLIC_CLIC=new String[]{EXT_JCLIC, EXT_JCLIC_ZIP, EXT_PAC, EXT_PCC}; public static final String[] EXT_ALL_IMAGES=new String[]{EXT_GIF, EXT_JPG, EXT_PNG, EXT_BMP, EXT_ICO}; public static final String[] EXT_ALL_SOUNDS=new String[]{EXT_WAV, EXT_AU, EXT_MP3, EXT_OGG, EXT_AIFF}; public static final String[] EXT_ALL_VIDEO=new String[]{EXT_AVI, EXT_MOV, EXT_MPEG, EXT_SWF}; public static final String[] EXT_ALL_ANIM=new String[]{EXT_SWF}; public static final String[] EXT_ALL_MEDIA=new String[]{EXT_GIF, EXT_JPG, EXT_PNG, EXT_BMP, EXT_ICO, EXT_WAV, EXT_AU, EXT_MP3, EXT_OGG, EXT_AIFF, EXT_MID, EXT_AVI, EXT_MOV, EXT_MPEG, EXT_SWF, EXT_TTF, EXT_XML}; public static final String[] EXT_ALL_MULTIMEDIA=new String[]{EXT_WAV, EXT_AU, EXT_MP3, EXT_OGG, EXT_AIFF, EXT_MID, EXT_AVI,EXT_MOV,EXT_MPEG, EXT_SWF}; public static final String[] EXT_ALL_HTML=new String[]{EXT_HTM, EXT_HTML}; public static final int TYPE_IMAGE=0, TYPE_AUDIO=1, TYPE_MIDI=2, TYPE_VIDEO=3, TYPE_ANIM=4, TYPE_XML=5, TYPE_FONT=6, TYPE_JCLIC=7, TYPE_CLIC=8, TYPE_INST=9, TYPE_TEXT=10, TYPE_UNKNOWN=11; public static final String[] TYPE_CODES={"ftype_image", "ftype_audio", "ftype_midi", "ftype_video", "ftype_anim", "ftype_xml", "ftype_font", "ftype_jclic", "ftype_clic", "ftype_inst", "ftype_text", "ftype_unknown"}; public static final int[] T_CODES={ Constants.T_IMAGE, Constants.T_AUDIO, Constants.T_MIDI, Constants.T_VIDEO, Constants.T_ANIM, Constants.T_XML, Constants.T_FONT, Constants.T_JCLIC, Constants.T_CLIC, Constants.T_INST, Constants.T_TEXT, Constants.T_UNKNOWN_MEDIA }; public static final int getFileType(String fileName){ int result=TYPE_UNKNOWN; if(fileName!=null){ int dot=fileName.lastIndexOf('.'); if(dot>0){ if(fileName.substring(0, dot).toLowerCase().endsWith(".jclic")) dot-=6; String fn=fileName.substring(dot).toLowerCase(); if(fn.equals(EXT_GIF) || fn.equals(EXT_JPG) || fn.equals(EXT_PNG) || fn.equals(EXT_BMP) || fn.equals(EXT_ICO)) result=TYPE_IMAGE; else if(fn.equals(EXT_WAV) || fn.equals(EXT_AU) || fn.equals(EXT_MP3) || fn.equals(EXT_OGG) || fn.equals(EXT_AIFF)) result=TYPE_AUDIO; else if(fn.equals(EXT_MID)) result=TYPE_MIDI; else if(fn.equals(EXT_AVI) || fn.equals(EXT_MOV) || fn.equals(EXT_MPEG)) result=TYPE_VIDEO; else if(fn.equals(EXT_SWF)) result=TYPE_ANIM; else if(fn.equals(EXT_XML)) result=TYPE_XML; else if(fn.equals(EXT_TTF)) result=TYPE_FONT; else if(fn.equals(EXT_JCLIC) || fn.equals(EXT_JCLIC_ZIP)) result=TYPE_JCLIC; else if(fn.equals(EXT_PAC) || fn.equals(EXT_PCC)) result=TYPE_CLIC; else if(fn.equals(EXT_INSTALL)) result=TYPE_INST; else if(fn.equals(EXT_TXT)) result=TYPE_TEXT; } } return result; } public static javax.swing.ImageIcon getFileIcon(String forFileName){ String imgKey="icons/icounknown.png"; switch(getFileType(forFileName)){ case Utils.TYPE_AUDIO: imgKey="icons/icowave.png"; break; case Utils.TYPE_MIDI: imgKey="icons/icomidi.png"; break; case Utils.TYPE_ANIM: case Utils.TYPE_VIDEO: imgKey="icons/icomci.png"; break; case Utils.TYPE_FONT: imgKey="icons/icottf.png"; break; case Utils.TYPE_XML: imgKey="icons/icoxml.png"; break; } return edu.xtec.util.ResourceManager.getImageIcon(imgKey); } public static int getFileFilterCode(String forFileName){ int result=ALL_FF; switch(getFileType(forFileName)){ case TYPE_IMAGE: result=ALL_IMAGES_FF; break; case TYPE_AUDIO: result=ALL_SOUNDS_FF; break; case TYPE_MIDI: result=MIDI_FF; break; case TYPE_VIDEO: result=ALL_VIDEO_FF; break; case TYPE_ANIM: result=ALL_ANIM_FF; break; case TYPE_XML: result=SKINS_FF; break; case TYPE_FONT: result=FONTS_FF; break; case TYPE_JCLIC: result=ALL_JCLIC_FF; break; case TYPE_CLIC: result=ALL_CLIC_FF; break; case TYPE_INST: result=INSTALL_FF; break; case TYPE_TEXT: result=TEXT_FF; break; } return result; } public static SimpleFileFilter getFileFilter(int fileFilterCode, edu.xtec.util.Messages msg){ if(fileFilterCode<0 || fileFilterCode>=NUM_FILE_FILTERS) return null; if(fileFilters[fileFilterCode]==null){ switch(fileFilterCode){ case JCLIC_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_JCLIC, msg.get("filefilter_jclic")); break; case JCLIC_ZIP_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_JCLIC_ZIP, msg.get("filefilter_jclic_zip")); break; case PAC_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_PAC, msg.get("filefilter_pac")); break; case PCC_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_PCC, msg.get("filefilter_pcc")); break; case ALL_JCLIC_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_JCLIC, msg.get("filefilter_all_jclic")); break; case ALL_CLIC_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_CLIC, msg.get("filefilter_all_clic")); break; case ALL_JCLIC_CLIC_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_JCLIC_CLIC, msg.get("filefilter_all_jclic_clic")); break; case INSTALL_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_INSTALL, msg.get("filefilter_install")); break; case GIF_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_GIF, msg.get("filefilter_gif")); break; case JPG_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_JPG, msg.get("filefilter_jpg")); break; case PNG_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_PNG, msg.get("filefilter_png")); break; case ALL_IMAGES_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_IMAGES, msg.get("filefilter_all_images")); break; case ALL_SOUNDS_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_SOUNDS, msg.get("filefilter_all_sounds")); break; case MIDI_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_MID, msg.get("filefilter_midi")); break; case ALL_VIDEO_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_VIDEO, msg.get("filefilter_all_video")); break; case ALL_ANIM_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_ANIM, msg.get("filefilter_all_anim")); break; case SKINS_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_XML, msg.get("filefilter_skins")); break; case FONTS_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_TTF, msg.get("filefilter_fonts")); break; case ALL_MEDIA_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_MEDIA, msg.get("filefilter_all_media")); break; case ALL_MULTIMEDIA_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_MULTIMEDIA, msg.get("filefilter_all_media")); break; case ALL_HTML_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL_HTML, msg.get("filefilter_all_html")); break; case TEXT_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_TXT, msg.get("filefilter_text")); break; case ALL_FF: fileFilters[fileFilterCode]=new SimpleFileFilter(EXT_ALL, msg.get("filefilter_all")); break; } } return fileFilters[fileFilterCode]; } public static String[] getFileFilterExtensions(int fileFilterCode){ String[] result=null; if(fileFilterCode>=0 && fileFilterCodegenerateContent method of AutoContentProvider. * @author Francesc Busquets (fbusquets@xtec.net) */ public class ActiveBagContentKit { public int nRows; public int nCols; public ActiveBagContent[] content; public boolean useIds; /** Creates a new instance of ActiveBagContentKit */ public ActiveBagContentKit(int nRows, int nCols, ActiveBagContent[] content, boolean useIds) { this.nRows=nRows; this.nCols=nCols; this.content=content; this.useIds=useIds; } /** * Activities should implement this interface when its contents are formed basically * by {@link edu.xtec.jclic.bags.ActiveBagContent} objects, in order to let * {@link edu.xtec.jclic.automation.AutoContentProvider} objects to check whether * they are compatible with them. */ public interface Compatible{}; } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/automation/arith/0000755000175000017500000000000011377161311020426 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/automation/arith/Operator.java0000644000175000017500000001210511377161311023063 0ustar /* * File : Operator.java * Created : 08-mar-2004 11:24 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.arith; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; /** * Utility class used by {@link edu.xtec.jclic.automation.arith.Arith} to encapsulate * the properties and methods related to the members of the operations. * @author Francesc Busquets (fbusquets@xtec.net) */ public class Operator implements Domable{ protected static final int MAX_VALUE=100000000; protected static final int WZERO=1, WONE=2, WMINUSONE=4; protected static final int NLIMITS=26; protected static final int[] LIMITS={0, -9999, -1000, -999, -100, -99, -50, -25, -20, -10, -9, -5, -1, 0, 1, 5, 9, 10, 20, 25, 50, 99, 100, 999, 1000, 9999}; protected static final int DEFAULT_LIMIT=13; protected static final int LIM0=13; protected static final int LIM10=17; protected static final int LIMI25=7; protected static final int LIMS25=19; protected static final int NOLIM=25; protected static final String[] LIM_CH={"x", "-9999", "-1000", "-999", "-100", "-99", "-50", "-25", "-20", "-10", "-9", "-5", "-1", "0", "1", "5", "9", "10", "20", "25", "50", "99", "100", "999", "1000", "9999"}; protected static final int NUMLST=20; int limInf; int limSup; int numDec; boolean wZero, wOne, wMinusOne; int fromList; int[] lst=new int[NUMLST]; protected boolean fromBlank; static final String ELEMENT_NAME="operand", DECIMALS="decimals", VALUES="values", FROM="from", TO="to", INCLUDE="include", ZERO="zero", ONE="one", MINUSONE="minusOne"; public Operator(){ limInf=LIM0; limSup=LIM10; numDec=0; wZero=false; wOne=false; wMinusOne=false; fromList=0; } public org.jdom.Element getJDomElement() { org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); //e.setAttribute(ID, id); if(numDec>0) e.setAttribute(DECIMALS, Integer.toString(numDec)); if(fromList>0){ e.setAttribute(VALUES, JDomUtility.intArrayToString(lst, fromList)); } else{ e.setAttribute(FROM, LIM_CH[limInf]); e.setAttribute(TO, LIM_CH[limSup]); if(wZero || wOne || wMinusOne){ org.jdom.Element ei=new org.jdom.Element(INCLUDE); ei.setAttribute(ZERO, JDomUtility.boolString(wZero)); ei.setAttribute(ONE, JDomUtility.boolString(wOne)); ei.setAttribute(MINUSONE, JDomUtility.boolString(wMinusOne)); e.addContent(ei); } } return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); numDec=JDomUtility.getIntAttr(e, DECIMALS, numDec); String s=e.getAttributeValue(VALUES); if(s!=null){ int[] v=JDomUtility.stringToIntArray(s); fromList=v.length; for(int i=0; i=LIMI25) l++; if(l>=LIMS25) l++; return l; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/automation/arith/Arith.java0000644000175000017500000006414711377161311022354 0ustar /* * File : Arith.java * Created : 06-may-2001 18:28 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation.arith; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.automation.AutoContentProvider; import edu.xtec.jclic.boxes.ActiveBagContent; import edu.xtec.util.JDomUtility; import edu.xtec.util.ResourceBridge; import java.text.DecimalFormat; import java.util.Iterator; import java.util.Random; /** * Arith is the first implementation of {@link edu.xtec.jclic.automation.AutoContentProvider}. * It is based on the code of ARITH2.DLL, made originally for Clic 3.0. It provides * activities with randomly generated menthal arithmetics operations. The operations * can be additions, substractions, multiplications or divides. The unknown can be the * result of the operation or any of the two operators (in the form A # B = ?, A # ? = C or ? # B = C), or * also the operation itself (like A ? B = C). * Activities must implement {@link edu.xtec.jclic.automation.ActiveBagContentKit.Compatible} * in order to use Arith. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Arith extends AutoContentProvider { private static final String DLL_TITLE="ARITH2.DLL"; private static final int ARITHVER=0x02; protected static final int NMAXLOOPS=60; protected static final int NOSORT=0, SORTASC=1, SORTDESC=2; protected static final int SUM=1, REST=2, MULT=4, DIV=8, NOPERACIONS=4; // Math signs: // \u00D7 - multiply (cross) // \u00B7 - multiply (middle dot) // \u00F7 - division (two points+bar) protected static final String[] OPSTR={"+", "-", "\u00D7", ":"}; protected static final int ABX=1, AXC=2, XBC=4, AXBC=8, CAXB=16, NTIPUSEX=5; protected static final int INDIF=0, AGB=1, BGA=2; private static final int RES=-12345; private static final int MAX_STR_LEN=100; private static String S=new String("\u00A0"); protected class Num { float vf; int c; } protected class Operacio { Num numA=new Num(); Num numB=new Num(); Num numR=new Num(); int op; } protected static final String ID="id", A="A", B="B", OPERATIONS="operations", PLUS="plus", MINUS="minus", MULTIPLY="multiply", DIVIDE="divide", UNKNOWN="unknown", RESULT="result", FIRST="first", LAST="last", OPERAND="operand", INVERSE="inverse", FROM="from", TO="to", NOT_CARRY="notCarry", DUPLICATES="duplicates", ORDER="order", ASCENDING="ascending", DESCENDING="descending", CONDITION="condition", FIRST_BIG="firstBig", LAST_BIG="lastBig"; protected static DecimalFormat[] DF; protected static final int WILDCARD_DF=5; Operator opA, opB; boolean use_add, use_subst, use_mult, use_div; boolean exp_abx, exp_axc, exp_xbc, exp_axbc, exp_caxb; int resultLimInf, resultLimSup; boolean resultCarry, resultNoDup; int resultOrder; int opCond; private Random random; /** Creates new Arith */ public Arith() { random=new Random(); opA=new Operator(); opB=new Operator(); exp_abx=true; use_add=true; resultLimInf=Operator.LIM0; resultLimSup=Operator.NOLIM; resultOrder=NOSORT; opCond=INDIF; if(DF==null){ DF=new DecimalFormat[WILDCARD_DF+1]; DF[0]=new DecimalFormat("0"); DF[1]=new DecimalFormat("0.0"); DF[2]=new DecimalFormat("0.00"); DF[3]=new DecimalFormat("0.000"); DF[4]=new DecimalFormat("0.0000"); DF[WILDCARD_DF]=new DecimalFormat("0000000000"); } } public DecimalFormat getDF(int index){ return DF[index<=WILDCARD_DF ? index : WILDCARD_DF-1]; } public org.jdom.Element getJDomElement() { org.jdom.Element e=super.getJDomElement(); org.jdom.Element op=opA.getJDomElement(); op.setAttribute(ID, A); e.addContent(op); op=opB.getJDomElement(); op.setAttribute(ID, B); e.addContent(op); org.jdom.Element eop=new org.jdom.Element(OPERATIONS); eop.setAttribute(PLUS, JDomUtility.boolString(use_add)); eop.setAttribute(MINUS, JDomUtility.boolString(use_subst)); eop.setAttribute(MULTIPLY, JDomUtility.boolString(use_mult)); eop.setAttribute(DIVIDE, JDomUtility.boolString(use_div)); e.addContent(eop); org.jdom.Element eu=new org.jdom.Element(UNKNOWN); eu.setAttribute(RESULT, JDomUtility.boolString(exp_abx)); eu.setAttribute(FIRST, JDomUtility.boolString(exp_xbc)); eu.setAttribute(LAST, JDomUtility.boolString(exp_axc)); eu.setAttribute(OPERAND, JDomUtility.boolString(exp_axbc)); eu.setAttribute(INVERSE, JDomUtility.boolString(exp_caxb)); e.addContent(eu); org.jdom.Element er=new org.jdom.Element(RESULT); er.setAttribute(FROM, Operator.LIM_CH[resultLimInf]); er.setAttribute(TO, Operator.LIM_CH[resultLimSup]); if(resultCarry) er.setAttribute(NOT_CARRY, JDomUtility.boolString(resultCarry)); er.setAttribute(DUPLICATES, JDomUtility.boolString(!resultNoDup)); if(resultOrder!=NOSORT) er.setAttribute(ORDER, resultOrder==SORTASC ? ASCENDING : DESCENDING); if(opCond!=INDIF) er.setAttribute(CONDITION, opCond==AGB ? FIRST_BIG : LAST_BIG); e.addContent(er); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; String s; Iterator itr = e.getChildren(Operator.ELEMENT_NAME).iterator(); while (itr.hasNext()){ child=(org.jdom.Element)(itr.next()); s=child.getAttributeValue(ID); if(A.equals(s)) opA.setProperties(child, aux); else if(B.equals(s)) opB.setProperties(child, aux); else throw new IllegalArgumentException("Unknown operator: "+s); } if((child=e.getChild(OPERATIONS))!=null){ use_add=JDomUtility.getBoolAttr(child, PLUS, use_add); use_subst=JDomUtility.getBoolAttr(child, MINUS, use_subst); use_mult=JDomUtility.getBoolAttr(child, MULTIPLY, use_mult); use_div=JDomUtility.getBoolAttr(child, DIVIDE, use_div); } if((child=e.getChild(UNKNOWN))!=null){ exp_abx=JDomUtility.getBoolAttr(child, RESULT, exp_abx); exp_xbc=JDomUtility.getBoolAttr(child, FIRST, exp_xbc); exp_axc=JDomUtility.getBoolAttr(child, LAST, exp_axc); exp_axbc=JDomUtility.getBoolAttr(child, OPERAND, exp_axbc); exp_caxb=JDomUtility.getBoolAttr(child, INVERSE, exp_caxb); } if((child=e.getChild(RESULT))!=null){ resultLimInf=JDomUtility.getStrIndexAttr(child, FROM, Operator.LIM_CH, resultLimInf); resultLimSup=JDomUtility.getStrIndexAttr(child, TO, Operator.LIM_CH, resultLimSup); resultCarry=JDomUtility.getBoolAttr(child, NOT_CARRY, resultCarry); resultNoDup=!JDomUtility.getBoolAttr(child, DUPLICATES, !resultNoDup); s=child.getAttributeValue(ORDER); resultOrder= (s==null ? NOSORT : s.equals(ASCENDING) ? SORTASC : SORTDESC); s=child.getAttributeValue(CONDITION); opCond = (s==null ? INDIF : s.equals(FIRST_BIG) ? AGB : BGA); } } public boolean setClic3Properties(byte[] ops) { int v; int i, lb, hb; boolean fromBlank=false; int p=0; int arithVer=0; p=opA.setClic3Properties(ops, p); p=opB.setClic3Properties(ops, p); v=ops[p++]&0x7F; if(v==0) v=SUM; use_add = (v & SUM)!=0; use_subst = (v & REST)!=0; use_mult = (v & MULT)!=0; use_div = (v & DIV)!=0; v=ops[p++]&0x7F; if(v==0) v=ABX; exp_abx = (v & ABX)!=0; exp_axc = (v & AXC)!=0; exp_xbc = (v & XBC)!=0; exp_axbc = (v & AXBC)!=0; exp_caxb = (v & CAXB)!=0; resultLimInf=((i=ops[p++]&0x7F)==0 ? Operator.LIM0:i); resultLimSup=((i=ops[p++]&0x7F)==0 ? Operator.NOLIM:i); resultCarry=(ops[p++]&0x1)==1; resultNoDup=(ops[p++]&0x1)==1; resultOrder=ops[p++]&0x3; opCond=ops[p++]&0x3; if(pARITHVER){ return false; } return true; } boolean genNum(Num n, Operator op, long limInf2, long limSup2){ int r, exp, rang; long ls, li, k, v; boolean resolt=false; n.c=op.numDec; exp= n.c==0 ? 1 : n.c==1 ? 10 : 100; ls=Operator.LIMITS[op.limSup]; if(limSup2!=RES && limSup2li) li=limInf2; resolt=false; if(op.fromList>0){ n.vf=(long)op.lst[random.nextInt(op.fromList)]; resolt=true; } if(!resolt){ r=random.nextInt(100); if(op.wZero && r<=10){ n.vf=0; resolt=true; } else if(op.wOne && r>10 && r<=20){ n.vf=1; resolt=true; } else if(op.wMinusOne && r>20 && r<=30){ n.vf=-1; resolt=true; } } if(!resolt){ if(li>ls){ k=li; li=ls; ls=k; } rang=(int)(ls-li+1); if(rang<0) rang=1; v=(long)(random.nextInt(rang)+li)*exp; if (exp>1) v+=random.nextInt(exp); n.vf=((float)v)/exp; resolt=true; } return true; } boolean genOp(Operacio o){ int i; int[] ops=new int[NOPERACIONS]; int nops, op; long rlinf, rlsup, ri2, rs2; float q; rlinf=Operator.LIMITS[resultLimInf]; rlsup=Operator.LIMITS[resultLimSup]; nops=0; if(use_add) ops[nops++]=SUM; if(use_subst) ops[nops++]=REST; if(use_mult) ops[nops++]=MULT; if(use_div) ops[nops++]=DIV; op=ops[random.nextInt(nops)]; switch(op){ case SUM: for(i=0; io.numA.vf) rs2=(long)o.numA.vf; break; case BGA: if(ri2==RES || ri2=rlinf && o.numR.vf<=rlsup) break; } o.numR.c = o.numA.c > o.numB.c ? o.numA.c : o.numB.c; o.op=0; if(resultCarry && o.numA.vf>0 && o.numB.vf>0){ int va, vb; q=o.numR.c==2 ? 100 : o.numR.c==1 ? 10 : 1; char[] bufa=getDF(WILDCARD_DF).format((long)(o.numA.vf*q+0.5)).toCharArray(); char[] bufb=getDF(WILDCARD_DF).format((long)(o.numB.vf*q+0.5)).toCharArray(); for(i=0; i<10; i++) if(bufa[i]!='0' || bufb[i]!='0') break; for(; i<10; i++){ va=bufa[i]-'0'; vb=bufb[i]-'0'; if(va+vb<10) continue; while(va+vb>9){ if(va>vb) va=(va>0 ? random.nextInt(va) : 0); else vb=(vb>0 ? random.nextInt(vb) : 0); } bufa[i]='0'; for(int x=0; x rlsup ? (long)(o.numA.vf - rlsup) : RES; rs2= (long)(o.numA.vf - rlinf); switch(opCond){ case AGB: if(rs2==RES || rs2>o.numA.vf) rs2=(long)o.numA.vf; break; case BGA: if(ri2==RES || ri2=rlinf && o.numR.vf<=rlsup) break; } o.numR.c = o.numA.c > o.numB.c ? o.numA.c : o.numB.c; o.op=1; if(resultCarry && o.numA.vf>0 && o.numB.vf>0 && o.numA.vf>=o.numB.vf){ int va, vb; q = (o.numR.c==2 ? 100 : (o.numR.c==1 ? 10 : 1)); char[] bufa=getDF(WILDCARD_DF).format((long)(o.numA.vf*q+0.5)).toCharArray(); char[] bufb=getDF(WILDCARD_DF).format((long)(o.numB.vf*q+0.5)).toCharArray(); for(i=0; i<10; i++) if(bufb[i]!='0') break; for(; i<10; i++){ va=bufa[i]-'0'; vb=bufb[i]-'0'; if(va>=vb) continue; vb = (va>0 ? random.nextInt(va) : 0); bufb[i]='0'; for(int x=0; xo.numA.vf) rs2=(long)o.numA.vf; break; case BGA: if(ri2=rlinf && o.numR.vf<=rlsup) break; } o.numR.c = o.numA.c + o.numB.c; o.op=2; break; case DIV: for(i=0; io.numA.vf) rs2=(long)o.numA.vf; break; case BGA: if(ri2=Math.abs(o.numB.vf) && (o.numR.vf=o.numA.vf/o.numB.vf)>=rlinf && o.numR.vf<=rlsup) break; } if(o.numB.vf==0) o.numB.vf=1; o.numR.vf=o.numA.vf / o.numB.vf; i=o.numA.c - o.numB.c; q=(float)(Math.pow(10, i)); o.numA.vf*=q; o.numR.vf*=q; o.numR.vf=((long)o.numR.vf); o.numA.vf=o.numR.vf*o.numB.vf; o.numA.vf/=q; o.numR.vf/=q; o.numR.c = i>0 ? i : 0; o.op=3; break; default: return false; } return true; } public boolean generateContent(Object kit, ResourceBridge rb) { boolean result=false; if(kit instanceof ActiveBagContentKit){ ActiveBagContentKit k=(ActiveBagContentKit)kit; result=generateContent(k.nRows, k.nCols, k.content, k.useIds, rb); } return result; } protected boolean generateContent(int nRows, int nCols, ActiveBagContent[] content, boolean useIds, ResourceBridge rb) { if(nRows<=0 || nCols<=0 || content==null || content.length<1 || content[0]==null || rb==null) return false; Operacio o; Operacio[] op; int i, j, k; int[] tipus=new int[NTIPUSEX]; int numTipus, tipX; boolean tipInv; String va, vb, vc, operator; String [] stra, strb, strc; int nColsB=nCols, nRowsB=nRows; int nCells=nRows*nCols; if(nCells<2) return false; int[] ass = null; numTipus=0; if(exp_abx) tipus[numTipus++]=ABX; if(exp_axc) tipus[numTipus++]=AXC; if(exp_xbc) tipus[numTipus++]=XBC; if(exp_axbc) tipus[numTipus++]=AXBC; if(numTipus==0) return false; tipInv=exp_caxb; op=new Operacio[nCells]; stra=new String[nCells]; strb=new String[nCells]; strc=new String[nCells]; for(i=0; i0; i--){ for(j=0; j op[j+1].numR.vf) || (resultOrder==SORTDESC && op[j].numR.vf < op[j+1].numR.vf)){ o=op[j]; op[j]=op[j+1]; op[j+1]=o; } } } } for(i=0; i=nRowsB; boolean distH=false; switch(k){ case 6: nRowsB=distH ? 2 : 3; nColsB=distH ? 3 : 2; break; case 8: nRowsB=distH ? 2 : 4; nColsB=distH ? 4 : 2; break; case 9: nRowsB=3; nColsB=3; break; case 10: nRowsB=distH ? 2 : 5; nColsB=distH ? 5 : 2; break; case 12: nRowsB=distH ? 3 : 4; nColsB=distH ? 4 : 3; break; case 14: nRowsB=distH ? 2 : 7; nColsB= distH ? 7 : 2; break; case 15: nRowsB=distH ? 3 : 5; nColsB=distH ? 3 : 5; break; case 16: nRowsB=4; nColsB=4; break; case 18: nRowsB=distH ? 6 : 3; nColsB=distH ? 3 : 6; break; case 20: nRowsB=distH ? 4 : 5; nColsB=distH ? 5 : 4; break; default: nRowsB=distH ? 1 : k; nColsB=distH ? k : 1; break; } } } content[0].setTextContent(stra, nCols, nRows); if(ass!=null) content[0].setIds(ass); if(content.length>1 && content[1]!=null){ content[1].setTextContent(strb, nColsB, nRowsB); content[1].getShaper().reset(nColsB, nRowsB); } if(content.length>2 && content[2]!=null) content[2].setTextContent(strc, nCols, nRows); return true; } public static boolean checkClient(Class cl){ return ActiveBagContentKit.Compatible.class.isAssignableFrom(cl); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/automation/AutoContentProvider.java0000644000175000017500000001176211377161311024147 0ustar /* * File : AutoContentProvider.java * Created : 06-may-2001 18:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.automation; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; import edu.xtec.util.ResourceBridge; import java.lang.reflect.Method; import java.util.HashMap; /** * This abstract class is the base for all the classes that provide contents to * JClic activities, usually based on random values. Activities linked to a * AutoContentProvider object rely on it to build its contents on every * start. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class AutoContentProvider extends Object implements Domable, Editable { public static final String ELEMENT_NAME = "automation"; public static final String BASE_CLASS="edu.xtec.jclic.automation.", BASE_CLASS_TAG="@"; public AutoContentProvider(){ } public abstract void setProperties(org.jdom.Element e, Object aux) throws Exception; public boolean setClic3Properties(byte[] data){ return false; } public static AutoContentProvider getAutoContentProvider(org.jdom.Element e) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); String className=JDomUtility.getClassName(e); AutoContentProvider acp=getAutoContentProvider(className); if(acp!=null) acp.setProperties(e, null); return acp; } public static AutoContentProvider getAutoContentProvider(String className) throws Exception{ AutoContentProvider acp=null; Class providerClass=getAutoContentProviderClass(className); return (AutoContentProvider)providerClass.newInstance(); } public static Class getAutoContentProviderClass(String className) throws Exception{ if(className.startsWith(BASE_CLASS_TAG)) className=BASE_CLASS+className.substring(1); Class providerClass=Class.forName(className); return providerClass; } public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); e.setAttribute(JDomUtility.CLASS, getShortClassName()); return e; } public String getShortClassName(){ String result=getClass().getName(); if(result.startsWith(BASE_CLASS)) result=BASE_CLASS_TAG+result.substring(BASE_CLASS.length()); return result; } // Added new method with parameter "FileSystem", in order to allow access to external files public void init(ResourceBridge rb, FileSystem fs){ init(rb); } public void init(ResourceBridge rb){ } public abstract boolean generateContent(Object kit, ResourceBridge rb); public Editor getEditor(Editor parent){ Editor result=null; String s=getClass().getName()+"Editor"; try{ Class.forName(s); } catch(ClassNotFoundException ex){ s="edu.xtec.jclic.automation.AutoContentProviderEditor"; } return Editor.createEditor(s, this, parent); } private static final Class[] ARRAY_OF_CLASS= new Class[]{Class.class}; public static boolean checkClient(String contentProviderClassName, Class clientClass){ boolean result=false; try{ Class contentProviderClass=getAutoContentProviderClass(contentProviderClassName); Method method=contentProviderClass.getMethod("checkClient", ARRAY_OF_CLASS); if(method!=null){ Object o=method.invoke((Object)null, (Object[])new Class[]{clientClass}); if(o instanceof Boolean){ result=((Boolean)o).booleanValue(); } } } catch(Exception ex){ System.err.println("Error checking class:\n"+ex); } return result; } public static void listReferences(org.jdom.Element e, HashMap map) throws Exception{ AutoContentProvider acp=getAutoContentProvider(e); if(acp!=null) acp.innerListReferences(map); } public void innerListReferences(HashMap map) throws Exception{ // default implementation does nothing } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/Activity.java0000644000175000017500000012734211377161311017607 0ustar /* * File : Activity.java * Created : 16-aug-2001 1:05 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.automation.AutoContentProvider; import edu.xtec.jclic.bags.MediaBagElement; import edu.xtec.jclic.boxes.AbstractBox; import edu.xtec.jclic.boxes.ActiveBagContent; import edu.xtec.jclic.boxes.ActiveBoxBag; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.jclic.boxes.BoxConnector; import edu.xtec.jclic.boxes.TextGridContent; import edu.xtec.jclic.clic3.Clic3Activity; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.media.EventSounds; import edu.xtec.jclic.misc.Gradient; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.skins.Skin; import edu.xtec.util.Domable; import edu.xtec.util.Html; import edu.xtec.util.JDomUtility; import edu.xtec.util.ResourceBridge; import java.awt.AWTEvent; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Robot; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.awt.geom.Point2D; import java.lang.reflect.Constructor; import java.util.HashMap; import java.util.Iterator; import java.util.StringTokenizer; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.border.BevelBorder; /** * Activity is the abstract base class for JClic activities. It * defines also the inner class {@link edu.xtec.jclic.Activity.Panel}, wich is * responsible of the user interaction with the activity content. * Activities should extend both Activity and * Activity.Panel classes in order to become fully operative. * JClic stores activities in memory as {@link org.JDom.Element} objects. So, * all non-transient data must be stored to and retrieved from JDom elements. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class Activity extends Object implements Constants, Editable, Domable { /** * The {@link JClicProject} this activity belongs to. */ protected JClicProject project; // public fields /** * The activity name */ public String name=DEFAULT_NAME; /** * Code used in reports to filter queries. Default is null. */ public String code; /** * Description of the activity. */ public String description; /** * Space, measured in pixels, between the activity components. */ public int margin=DEFAULT_MARGIN; /** * Background color of the activity panel. */ public Color bgColor=DEFAULT_BG_COLOR; /** * Gradient used to draw the background of the activity panel. */ public Gradient bgGradient; /** * Whether the bgImage (if any) has to be tiled across the panel background. */ public boolean tiledBgImg; /** * Filename of the image painted in the panel background. Default is null. */ public String bgImageFile; /** * Whether to draw a border around the activity panel. */ public boolean border=true; /** * Whether to place the activity panel at the point specified by {@link * absolutePosition}, or leave it centered in the main window of the player. */ public boolean absolutePositioned; /** Position of the activity panel into the {@link ActivityContainer}. */ public Point absolutePosition; /** * Whether to generate usage reports. */ public boolean includeInReports=true; /** * Whether to send action events to the {@link Reporter}. */ public boolean reportActions; /** * Whether to have a help window or not. */ public boolean helpWindow; /** * Whether to show the solution on the help window. */ public boolean showSolution; /** * Message to show in the help window when {@link showSolution} is false. */ public String helpMsg; /** * Specific set of {@link EventSounds} used in the activity. The default is null, * meaning to use the {@link ActivityContainer} sounds. */ public EventSounds eventSounds=new EventSounds(null); /** * Wheter the activity must be solved in a specific order. The default is false. */ public boolean useOrder; /** * Wheter the cells of the activity will be dragged across the screen. When false, * a line will be painted to link elements. */ public boolean dragCells; /** * File name of the Skin used by the activity. The default value is null, meaning * that the activity will use the skin specified for the project. */ public String skinFileName; /** * Maximum amount of time (seconds) to solve the activity. The default value is 0, * meaning unlimited time. */ public int maxTime; /** * Whether the time counter should display a countdown when {@link maxTime} > 0. */ public boolean countDownTime; /** * Maximum number of actions allowed to solve the activity. The default value is 0, * meaning unlimited actions. */ public int maxActions; /** * Whether the actions counter should display a countdown when {@link maxActions} > 0. */ public boolean countDownActions; /** * String with the URL to be displayed when the user clicks on the info button. * Default is null. */ public String infoUrl; /** * System command to be executed when the user clicks the info button. Default is * null. Applets have this function disabled. */ public String infoCmd; // protected fields /** * String labels corresponding to the four identifiers of JClic messages: * PREVIOUS, MAIN, END and END_ERROR. */ public static final String[] MSG_TYPE={"previous", "initial", "final", "finalError"}; /** * Identifier of the message displayed before the activity starts. Used only in * certain types of activities. */ public static final int PREVIOUS = 0; /** * Identifier of the main message, displayed as long as the activity is playing. */ public static final int MAIN = 1; /** * Identifier of the message displayed when the user successfully ends the * activity. */ public static final int END = 2; /** * Identifier of the message displayed when the user exceeds the maximum amount of time * or actions allowed. * @see maxTime * @see maxActions */ public static final int END_ERROR = 3; /** * Number of message types. */ public static final int NUM_MSG=4; protected ActiveBoxContent[] messages=new ActiveBoxContent[NUM_MSG]; protected Dimension windowSize=new Dimension(DEFAULT_WIDTH, DEFAULT_HEIGHT); protected boolean transparentBg; protected Color activityBgColor=DEFAULT_BG_COLOR; protected Gradient activityBgGradient; protected boolean bTimeCounter=true; protected boolean bScoreCounter=true; protected boolean bActionsCounter=true; protected int shuffles=DEFAULT_SHUFFLES; protected AutoContentProvider acp; // fields used only by certain activity types public ActiveBagContent[] abc; public TextGridContent tgc; public int boxGridPos; public boolean[] scramble=new boolean[2]; public boolean invAss; // static fields // layout constants public static final int AB=0, BA=1, AUB=2, BUA=3; public static final String[] LAYOUT_NAMES={"AB", "BA", "AUB", "BUA"}; public static final int DEFAULT_WIDTH=400; public static final int DEFAULT_HEIGHT=300; public static final int MINIMUM_WIDTH=40; public static final int MINIMUM_HEIGHT=40; public static final String DEFAULT_NAME="---"; public static final int DEFAULT_MARGIN=8; public static final int DEFAULT_SHUFFLES=31; public static final int DEFAULT_GRID_ELEMENT_SIZE=20; public static final Color DEFAULT_BG_COLOR=Color.lightGray; // Constants for actions public static final String ACTION_MATCH="MATCH", ACTION_PLACE="PLACE", ACTION_WRITE="WRITE", ACTION_SELECT="SELECT", ACTION_HELP="HELP"; // Constants for XML fields public static final String ELEMENT_NAME="activity", NAME="name"; public static final String BASE_CLASS="edu.xtec.jclic.activities.", BASE_CLASS_TAG="@"; public static final String ID="id", CODE="code", DESCRIPTION="description", MESSAGES="messages", TYPE="type", //PREVIOUS="previous", INITIAL="initial", FINAL="final", FINAL_ERROR="finalError", SETTINGS="settings", LAYOUT="layout", MARGIN="margin", CONTAINER="container", BGCOLOR="bgColor", IMAGE="image", TILED="tiled", COUNTERS="counters", TIME="time", ACTIONS="actions", SCORE="score", WINDOW="window", TRANSPARENT="transparent", BORDER="border", POSITION="position", X="x", Y="y", SIZE="size", WIDTH="width", HEIGHT="height", PRIMARY="primary", SECONDARY="secondary", SOLVED_PRIMARY="solvedPrimary", SOLVED_SECONDARY="solved_secondary", GRID="grid", ROW="row", CLUES="clues", CLUE="clue", RANDOM_CHARS="random_chars", SCRAMBLE="scramble", TIMES="times", REPORT="report", REPORT_ACTIONS="reportActions", HELP_WINDOW="helpWindow", HELP_SHOW_SOLUTION="showSolution", USE_ORDER="useOrder", DRAG_CELLS="dragCells", SKIN="skin", FILE="file", MAX_TIME="maxTime", COUNT_DOWN_TIME="countDownTime", MAX_ACTIONS="maxActions", COUNT_DOWN_ACTIONS="countDownActions", INFO_URL="infoUrl", INFO_CMD="infoCmd"; public static final String[][] COMPATIBLE_ACTIVITIES = new String[][]{ new String[]{ "@puzzles.DoublePuzzle", "@puzzles.ExchangePuzzle", "@puzzles.HolePuzzle", "@memory.MemoryGame", "@associations.SimpleAssociation", "@associations.ComplexAssociation", "@panels.Explore", "@panels.Identify", "@panels.InformationScreen", "@text.WrittenAnswer" }, new String[]{ "@text.FillInBlanks", "@text.Identify", "@text.Order", "@text.Complete", } }; /** Creates new edu.xtec.jclicActivity */ public Activity(JClicProject project) { this.project=project; } public void initNew(){ name=project.getBridge().getMsg("UNNAMED"); } public String getPublicName(){ return name; } public JClicProject getProject(){ return project; } public Editor getEditor(Editor parent){ Editor result=null; String s=getClass().getName()+"Editor"; try{ Class.forName(s); } catch(ClassNotFoundException ex){ s="edu.xtec.jclic.ActivityEditor"; } return Editor.createEditor(s, this, parent); } public String getShortClassName(){ String s=getClass().getName(); if(s.startsWith(BASE_CLASS)) s=BASE_CLASS_TAG+s.substring(BASE_CLASS.length()); return s; } public String[] getSimilarActivityClasses(){ String[] result=null; String cl=getShortClassName(); for(int i=0; i0) child.setAttribute(INFO_URL, infoUrl); else if(infoCmd!=null && infoCmd.length()>0) child.setAttribute(INFO_CMD, infoCmd); if(useOrder) child.setAttribute(USE_ORDER, JDomUtility.boolString(useOrder)); if(dragCells) child.setAttribute(DRAG_CELLS, JDomUtility.boolString(dragCells)); if(maxTime>0){ child.setAttribute(MAX_TIME, Integer.toString(maxTime)); child.setAttribute(COUNT_DOWN_TIME, JDomUtility.boolString(countDownTime)); } if(maxActions>0){ child.setAttribute(MAX_ACTIONS, Integer.toString(maxActions)); child.setAttribute(COUNT_DOWN_ACTIONS, JDomUtility.boolString(countDownActions)); } child.setAttribute(REPORT, JDomUtility.boolString(includeInReports)); if(includeInReports) child.setAttribute(REPORT_ACTIONS, JDomUtility.boolString(reportActions)); if(helpWindow){ child2=new org.jdom.Element(HELP_WINDOW); boolean hsa=helpSolutionAllowed(); if(hsa) child2.setAttribute(HELP_SHOW_SOLUTION, JDomUtility.boolString(showSolution)); if(helpMsg!=null && (!hsa || !showSolution)) JDomUtility.setParagraphs(child2, helpMsg); child.addContent(child2); } child2=new org.jdom.Element(CONTAINER); child2.setAttribute(BGCOLOR, JDomUtility.colorToString(bgColor)); if(bgGradient!=null) child2.addContent(bgGradient.getJDomElement()); if(bgImageFile!=null && bgImageFile.length()>0){ child3=new org.jdom.Element(IMAGE); child3.setAttribute(NAME, bgImageFile); child3.setAttribute(TILED, JDomUtility.boolString(tiledBgImg)); child2.addContent(child3); } child3=new org.jdom.Element(COUNTERS); child3.setAttribute(TIME, JDomUtility.boolString(bTimeCounter)); child3.setAttribute(ACTIONS, JDomUtility.boolString(bActionsCounter)); child3.setAttribute(SCORE, JDomUtility.boolString(bScoreCounter)); child2.addContent(child3); child.addContent(child2); child2=new org.jdom.Element(WINDOW); child2.setAttribute(BGCOLOR, JDomUtility.colorToString(activityBgColor)); if(activityBgGradient!=null) child2.addContent(activityBgGradient.getJDomElement()); if(transparentBg) child2.setAttribute(TRANSPARENT, JDomUtility.boolString(transparentBg)); child2.setAttribute(BORDER, JDomUtility.boolString(border)); if(absolutePositioned && absolutePosition!=null){ child3=new org.jdom.Element(POSITION); child3.setAttribute(X, Integer.toString(absolutePosition.x)); child3.setAttribute(Y, Integer.toString(absolutePosition.y)); child2.addContent(child3); } if(windowSize.width!=DEFAULT_WIDTH || windowSize.height!=DEFAULT_HEIGHT){ child3=new org.jdom.Element(SIZE); child3.setAttribute(WIDTH, Integer.toString(windowSize.width)); child3.setAttribute(HEIGHT, Integer.toString(windowSize.height)); child2.addContent(child3); } child.addContent(child2); if((child2=eventSounds.getJDomElement())!=null) child.addContent(child2); if(skinFileName!=null){ child2=new org.jdom.Element(SKIN); child2.setAttribute(FILE, skinFileName); //if(skin!=null && skin.name!=null && skin.name.length()>0) // child2.setAttribute(NAME, skin.name); child.addContent(child2); } e.addContent(child); if(acp!=null) e.addContent(acp.getJDomElement()); return e; } public static Activity getActivity(Object o, JClicProject project) throws Exception{ Activity act=null; org.jdom.Element e=null; Clic3Activity c3a=null; String className; String s; //if(o.getClass()==org.jdom.Element.class){ if(o instanceof org.jdom.Element){ e=(org.jdom.Element)o; JDomUtility.checkName(e, ELEMENT_NAME); className=JDomUtility.getClassName(e); } //else if(o.getClass()==Clic3Activity.class){ else if(o instanceof Clic3Activity){ c3a=(Clic3Activity)o; className=c3a.className; } else if(o instanceof String){ className=(String)o; } else throw new Exception("unknown data!!"); Class activityClass; Constructor con; Class[] cparams={JClicProject.class}; Object[] initArgs={project}; if(className.startsWith(BASE_CLASS_TAG)) className=BASE_CLASS+className.substring(1); activityClass=Class.forName(className); con=activityClass.getConstructor(cparams); act=(Activity)con.newInstance(initArgs); if(e!=null) act.setProperties(e, null); else if(c3a!=null) act.setProperties(c3a); else act.initNew(); return act; } public Activity duplicate() throws Exception{ return Activity.getActivity(getJDomElement(), project); } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child, child2, child3; JDomUtility.checkName(e, ELEMENT_NAME); name=JDomUtility.getStringAttr(e, NAME, name, false); code=JDomUtility.getStringAttr(e, CODE, code, false); if((child=e.getChild(DESCRIPTION))!=null) description=JDomUtility.getParagraphs(child); if((child=e.getChild(MESSAGES))!=null){ Iterator itr = child.getChildren(ActiveBoxContent.ELEMENT_NAME).iterator(); while (itr.hasNext()){ child2=((org.jdom.Element)itr.next()); int i=JDomUtility.getStrIndexAttr(child2, TYPE, MSG_TYPE, -1); if(i>=0) messages[i]=ActiveBoxContent.getActiveBoxContent(child2, project.mediaBag); } } if((child=e.getChild(SETTINGS))!=null){ margin=JDomUtility.getIntAttr(child, MARGIN, margin); infoUrl=JDomUtility.getStringAttr(child, INFO_URL, infoUrl, false); if(infoUrl==null) infoCmd=JDomUtility.getStringAttr(child, INFO_CMD, infoCmd, false); useOrder=JDomUtility.getBoolAttr(child, USE_ORDER, useOrder); dragCells=JDomUtility.getBoolAttr(child, DRAG_CELLS, dragCells); maxTime=JDomUtility.getIntAttr(child, MAX_TIME, maxTime); if(maxTime>0) countDownTime=JDomUtility.getBoolAttr(child, COUNT_DOWN_TIME, countDownTime); maxActions=JDomUtility.getIntAttr(child, MAX_ACTIONS, maxActions); if(maxActions>0) countDownActions=JDomUtility.getBoolAttr(child, COUNT_DOWN_ACTIONS, countDownActions); includeInReports=JDomUtility.getBoolAttr(child, REPORT, includeInReports); if(includeInReports) reportActions=JDomUtility.getBoolAttr(child, REPORT_ACTIONS, reportActions); else reportActions=false; if((child2=child.getChild(HELP_WINDOW))!=null){ if(helpSolutionAllowed()){ showSolution=JDomUtility.getBoolAttr(child2, HELP_SHOW_SOLUTION, showSolution); } if(!showSolution) helpMsg=JDomUtility.getParagraphs(child2); helpWindow = helpMsg!=null || showSolution; } if((child2=child.getChild(CONTAINER))!=null){ bgColor=JDomUtility.getColorAttr(child2, BGCOLOR, bgColor); if((child3=child2.getChild(Gradient.ELEMENT_NAME))!=null) bgGradient=Gradient.getGradient(child3); if((child3=child2.getChild(IMAGE))!=null){ bgImageFile=child3.getAttributeValue(NAME); tiledBgImg=JDomUtility.getBoolAttr(child3, TILED, tiledBgImg); } if((child3=child2.getChild(COUNTERS))!=null){ bTimeCounter=JDomUtility.getBoolAttr(child3, TIME, bTimeCounter); bActionsCounter=JDomUtility.getBoolAttr(child3, ACTIONS, bActionsCounter); bScoreCounter=JDomUtility.getBoolAttr(child3, SCORE, bScoreCounter); // Check for old version bug //String v=rb.getOptions().getString(CURRENT_PROJECT_VERSION); String v=project.version; if(v!=null && v.compareTo("0.1.1")<=0){ boolean b=bScoreCounter; bScoreCounter=bTimeCounter; bTimeCounter=bActionsCounter; bActionsCounter=b; } } } if((child2=child.getChild(WINDOW))!=null){ activityBgColor=JDomUtility.getColorAttr(child2, BGCOLOR, activityBgColor); if((child3=child2.getChild(Gradient.ELEMENT_NAME))!=null) activityBgGradient=Gradient.getGradient(child3); transparentBg=JDomUtility.getBoolAttr(child2, TRANSPARENT, transparentBg); border=JDomUtility.getBoolAttr(child2, BORDER, border); if((child3=child2.getChild(POSITION))!=null){ absolutePositioned=true; absolutePosition=JDomUtility.getPointAttr(child3, X, Y, absolutePosition); } if((child3=child2.getChild(SIZE))!=null){ windowSize=JDomUtility.getDimensionAttr(child3, WIDTH, HEIGHT, windowSize); } } if((child2=child.getChild(EventSounds.ELEMENT_NAME))!=null) eventSounds=EventSounds.getEventSounds(child2); if((child2=child.getChild(SKIN))!=null){ skinFileName=JDomUtility.getStringAttr(child2, FILE, skinFileName, false); /* if(skinFileName!=null && skinFileName.length()>0){ if(project.getBridge() instanceof PlayStation) skin=project.mediaBag.getSkinElement(skinFileName, (PlayStation)project.getBridge()); } else skinFileName=null; */ } } if((child=e.getChild(AutoContentProvider.ELEMENT_NAME))!=null){ acp=AutoContentProvider.getAutoContentProvider(child); } } public void setProperties(Clic3Activity c3a) throws Exception{ name=c3a.fileName; if(c3a.fileDesc.length()>0) description=c3a.fileDesc; BoxBase bbMessage=c3a.getBoxBase(2); for(int i=MAIN; i0) project.mediaBag.getImageElement(bgImageFile); tiledBgImg=c3a.tileBmp; bgColor=c3a.colorFons[0]; bTimeCounter=c3a.comptadors[0]; bScoreCounter=c3a.comptadors[1]; bActionsCounter=c3a.comptadors[2]; includeInReports=!c3a.noAv; if(c3a.custHlp==true && c3a.custHelpFile!=null && c3a.custHelpFile.length()>0){ StringBuffer sb=new StringBuffer(); sb.append(c3a.custHelpFile); if(c3a.hlpTopic!=null && c3a.hlpTopic.length()>0) sb.append(" ").append(c3a.hlpTopic); String s=sb.substring(0); if(s.indexOf(".htm")>0){ StringTokenizer st=new StringTokenizer(s, " "); while(st.hasMoreTokens()){ String r=st.nextToken(); if(r.indexOf(".htm")>0){ infoUrl=r; break; } } } else{ if(c3a.custHelpFile.toLowerCase().indexOf(".hlp")>0) infoCmd="winhelp.exe "+c3a.custHelpFile; else infoCmd=s; } } if(helpSolutionAllowed()) showSolution=c3a.shHelp; if(showSolution) helpWindow=true; if(c3a.useDLL){ if(c3a.rgDLL.equalsIgnoreCase("arith2.dll")){ org.jdom.Element e=new org.jdom.Element(AutoContentProvider.ELEMENT_NAME); e.setAttribute(JDomUtility.CLASS, "edu.xtec.jclic.automation.arith.Arith"); try{ acp=AutoContentProvider.getAutoContentProvider(e); if(acp!=null) acp.setClic3Properties(c3a.dllOptions); }catch(Exception ex){ System.err.println("Unable to start arith2:\n"+ex); } } } } public static void listReferences(org.jdom.Element e, HashMap map){ org.jdom.Element child, child2, child3; if((child=e.getChild(MESSAGES))!=null){ Iterator itr = child.getChildren(ActiveBoxContent.ELEMENT_NAME).iterator(); while(itr.hasNext()) ActiveBoxContent.listReferences((org.jdom.Element)itr.next(), map); } if((child=e.getChild(SETTINGS))!=null){ if((child2=child.getChild(CONTAINER))!=null){ if((child3=child2.getChild(IMAGE))!=null){ map.put(child3.getAttributeValue(NAME), Constants.MEDIA_OBJECT); } } if((child2=child.getChild(EventSounds.ELEMENT_NAME))!=null) EventSounds.listReferences(child2, map); if((child2=child.getChild(SKIN))!=null){ String skfn=JDomUtility.getStringAttr(child2, FILE, null, false); if(skfn!=null && !skfn.startsWith(Skin.INTERNAL_SKIN_PREFIX)) map.put(skfn, Constants.SKIN_OBJECT); // check skin dependences... } } Iterator itr = e.getChildren(ActiveBagContent.ELEMENT_NAME).iterator(); while(itr.hasNext()) ActiveBagContent.listReferences((org.jdom.Element)itr.next(), map); if((child=e.getChild("document"))!=null){ //if((child=e.getChild(TextActivityDocument.ELEMENT_NAME))!=null){ //TextActivityDocument.listReferences(child, map); innerListReferences(child, map); } if((child=e.getChild(AutoContentProvider.ELEMENT_NAME))!=null){ try{ AutoContentProvider.listReferences(child, map); } catch(Exception ex){ System.err.println("Error checking AutoContentProvider: "+ex); } } } public static void innerListReferences(org.jdom.Element e, HashMap map){ Iterator it=e.getChildren(ActiveBoxContent.ELEMENT_NAME).iterator(); while(it.hasNext()) ActiveBoxContent.listReferences((org.jdom.Element)it.next(), map); it=e.getChildren().iterator(); while(it.hasNext()){ org.jdom.Element child=(org.jdom.Element)it.next(); if(!ActiveBoxContent.ELEMENT_NAME.equals(child.getName())) innerListReferences(child, map); } } public ActiveBoxContent[] getMessages(){ return messages; } public String toHtmlString(ResourceBridge rb){ Html html=new Html(1000); html.doubleCell(rb.getMsg("about_window_lb_activity"), true, name, true); if(description!=null) html.doubleCell(rb.getMsg("about_window_lb_description"), true, description, false); return Html.table(html.toString(), null, 1, 5, -1, null, false); } // 02-oct-2006: Param "ResourceBridge" removed (can be obtained from "project"), // Changed the call to "init" public void initAutoContentProvider(){ if(acp!=null) acp.init(project.getBridge(), project.getFileSystem()); } public boolean prepareMedia(PlayStation ps){ if(eventSounds!=null) eventSounds.realize(ps.getOptions(), project.mediaBag); for(int i=0; i0) || (infoCmd!=null && infoCmd.length()>0)); } public boolean hasRandom(){ return false; } public boolean shuffleAlways(){ return false; } public void end(){ if(eventSounds!=null){ eventSounds.close(); eventSounds=null; } clear(); } public void clear(){ } public void finalize() throws Throwable{ end(); super.finalize(); } /** Getter for property windowSize. * @return Value of property windowSize. */ public Dimension getWindowSize() { return new Dimension(windowSize); } /** Setter for property windowSize. * @param windowSize New value of property windowSize. */ public void setWindowSize(Dimension windowSize) { this.windowSize = new Dimension(windowSize); } public abstract class Panel extends JPanel { public Skin skin=null; public boolean solved=false; public Image bgImage=null; protected boolean playing=false; protected boolean firstRun=true; protected int currentItem=0; protected BoxConnector bc=null; public PlayStation ps; /* *Object that currently has the focus of user interaction */ protected Object focusedItem=null; /** Creates new ActivityPanel */ protected Panel(PlayStation ps) { super(); //this.act=act; //ac=act.ac; this.ps=ps; setMinimumSize(new Dimension(100, 100)); setPreferredSize(new Dimension(500, 400)); enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK | AWTEvent.KEY_EVENT_MASK); //setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED)); // 02-oct-2006: Added a call to initAutoContentProvider initAutoContentProvider(); //setFocusCycleRoot(false); //setFocusTraversalPolicy(ftp); } /* FocusTraversalPolicy ftp=new FocusTraversalPolicy(){ public Component getComponentAfter(Container focusCycleRoot, Component aComponent){ return Panel.this; } public Component getComponentBefore(Container focusCycleRoot, Component aComponent){ return Panel.this; } public Component getDefaultComponent(Container focusCycleRoot){ return Panel.this; } public Component getFirstComponent(Container focusCycleRoot){ return Panel.this; } public Component getInitialComponent(Window window){ return Panel.this; } public Component getLastComponent(Container focusCycleRoot){ return Panel.this; } }; */ public Activity getActivity(){ return Activity.this; } public PlayStation getPs(){ return ps; } public void buildVisualComponents() throws Exception { playing=false; skin=null; if(skinFileName!=null && skinFileName.length()>0) skin=project.mediaBag.getSkinElement(skinFileName, ps); bgImage=null; if(bgImageFile!=null && bgImageFile.length()>0){ MediaBagElement mbe=project.mediaBag.getImageElement(bgImageFile); bgImage=mbe.getImage(); //bgImageFile=mbe.getFileName(); bgImageFile=mbe.getName(); } //ac.setBackgroundSettings(bgColor, image, tiledBgImg); setBackground(activityBgColor); if(transparentBg){ setOpaque(false); } setBorder(border ? BorderFactory.createBevelBorder(BevelBorder.RAISED) : BorderFactory.createEmptyBorder()); invalidate(); } protected void playEvent(int event){ if(eventSounds!=null) eventSounds.play(event); } public void initActivity() throws Exception{ if(playing){ playing=false; ps.reportEndActivity(Activity.this, solved); } solved=false; ps.reportNewActivity(Activity.this, 0); enableCounters(); //playEvent(EventSounds.START); } public void startActivity() throws Exception{ // do nothing } public void showHelp(){} public abstract void render(Graphics2D g2, Rectangle dirtyRegion); public abstract Dimension setDimension(Dimension maxSize); public void processMouse(MouseEvent e){} public void processKey(KeyEvent e){} public boolean isPlaying(){ return playing; } public final void fitTo(Rectangle proposed, Rectangle bounds){ Point origin=new Point(0,0); if(absolutePositioned && absolutePosition!=null){ //origin=new Point(absolutePosition); //origin.translate(fx, fy); origin.x=Math.max(0, absolutePosition.x+proposed.x); origin.y=Math.max(0, absolutePosition.y+proposed.y); proposed.width-=absolutePosition.x; proposed.height-=absolutePosition.y; } Dimension d=setDimension(new Dimension( Math.max(2*margin+Activity.MINIMUM_WIDTH, proposed.width), Math.max(2*margin+Activity.MINIMUM_HEIGHT, proposed.height))); if(!absolutePositioned){ origin.setLocation( Math.max(0, proposed.x+(proposed.width-d.width)/2), Math.max(0, proposed.y+(proposed.height-d.height)/2)); } if(origin.x+d.width>bounds.width) origin.x=Math.max(0, bounds.width-d.width); if(origin.y+d.height>bounds.height) origin.y=Math.max(0, bounds.height-d.height); setBounds(origin.x, origin.y, d.width, d.height); } public void paintComponent(Graphics g){ Graphics2D g2=(Graphics2D)g; RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(DEFAULT_RENDERING_HINTS); //RenderingHints rh=ac.setScreenRenderingHints(g2); if(!transparentBg){ if(activityBgGradient==null || activityBgGradient.hasTransparency()) super.paintComponent(g2); if(activityBgGradient!=null) activityBgGradient.paint(g2, new Rectangle(0, 0, getWidth(), getHeight())); } while(true){ BoxBase.flagFontReduced=false; render(g2, g2.getClipBounds()); if(!BoxBase.flagFontReduced) break; } g2.setRenderingHints(rh); } public void forceFinishActivity(){ } public void finishActivity(boolean result){ playing=false; solved=result; if(bc!=null) bc.end(); if(result){ setAndPlayMsg(END, EventSounds.FINISHED_OK); //if(messages[END]==null || messages[END].mediaContent==null) // playEvent(EventSounds.FINISHED_OK); //ps.setMsg(messages[END]); } else{ setAndPlayMsg(END_ERROR, EventSounds.FINISHED_ERROR); //if(messages[END_ERROR]==null || messages[END_ERROR].mediaContent==null) // playEvent(EventSounds.FINISHED_ERROR); //ps.setMsg(messages[END_ERROR]); } //ps.playMsg(); ps.activityFinished(solved); ps.reportEndActivity(Activity.this, solved); } protected void setAndPlayMsg(int msgCode, int eventSoundsCode){ ps.setMsg(messages[msgCode]); if(messages[msgCode]==null || messages[msgCode].mediaContent==null) playEvent(eventSoundsCode); else ps.playMsg(); } public void end(){ forceFinishActivity(); if(playing){ if(bc!=null) bc.end(); ps.reportEndActivity(Activity.this, solved); playing=false; solved=false; } clear(); } public abstract void clear(); public void finalize() throws Throwable{ end(); } protected void enableCounters(){ enableCounters(bTimeCounter, bScoreCounter, bActionsCounter); } protected void enableCounters(boolean eTime, boolean eScore, boolean eActions){ ps.setCounterEnabled(TIME_COUNTER, eTime); if(countDownTime) ps.setCountDown(TIME_COUNTER, maxTime); ps.setCounterEnabled(SCORE_COUNTER, eScore); ps.setCounterEnabled(ACTIONS_COUNTER, eActions); if(countDownActions) ps.setCountDown(ACTIONS_COUNTER, maxActions); } public void doLayout(){ } protected void shuffle(ActiveBoxBag[] bg, boolean visible, boolean fitInArea){ //int steps=3; int steps=shuffles; //if(visible) ac.getComponent().paint(ac.getComponent().getGraphics()); int i=shuffles; while(i>0){ int k=i>steps ? steps:i; for(int j=0; jnull if * there are no more objects to be focused. */ public Object nextFocusedItem(){ setFocusedItem(null); return focusedItem; } } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/project/0000755000175000017500000000000011377161311016605 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/project/ProjectSettings.java0000644000175000017500000002606211377161311022605 0ustar /* * File : ProjectSettings.java * Created : 09-may-2002 15:57 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.util.JDomUtility; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.Html; import java.util.*; import edu.xtec.util.Domable; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProjectSettings implements Editable, Domable{ public String title; public String iconFileName; public String description; public String descriptors; public String area; public String level; public Locale locale; public String[] languages; public Author[] authors; public Organization[] organizations; public Revision[] revisions; public String skinFileName; public EventSounds eventSounds; public static String UNTITLED="untitled"; public static String ELEMENT_NAME="settings"; public static String TITLE="title", LOCALE="locale", LANGUAGE="language", DESCRIPTION="description", DESCRIPTORS="descriptors", SKIN="skin", FILE="file", AREA="area", LEVEL="level", ICON="icon"; /** Creates new ProjectSettings */ public ProjectSettings() { title=UNTITLED; description=null; area=null; level=null; descriptors=null; locale=null; languages=null; authors=null; organizations=null; revisions=new Revision[] {new Revision(new Date(), "created")}; eventSounds=new EventSounds(null); skinFileName=null; iconFileName=null; } public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); org.jdom.Element child; e.addContent(new org.jdom.Element(TITLE).setText(title)); if(revisions!=null) for(int i=0; i0){ sb.append('-').append(locale.getCountry()); if(locale.getVariant()!=null && locale.getVariant().length()>0) sb.append('-').append(locale.getVariant()); } e.setAttribute(LOCALE, sb.substring(0)); } if(description!=null) JDomUtility.addParagraphs(e, DESCRIPTION, description); child=new org.jdom.Element(DESCRIPTORS); if(area!=null) child.setAttribute(AREA, area); if(level!=null) child.setAttribute(LEVEL, level); if(descriptors!=null) child.setText(descriptors); e.addContent(child); if((child=eventSounds.getJDomElement())!=null) e.addContent(child); if(skinFileName!=null){ child=new org.jdom.Element(SKIN); child.setAttribute(FILE, skinFileName); //if(skin!=null && skin.name!=null && skin.name.length()>0) // child2.setAttribute(NAME, skin.name); e.addContent(child); } if(iconFileName!=null){ child=new org.jdom.Element(ICON); child.setAttribute(FILE, iconFileName); //if(skin!=null && skin.name!=null && skin.name.length()>0) // child2.setAttribute(NAME, skin.name); e.addContent(child); } return e; } public static ProjectSettings getProjectSettings(org.jdom.Element e) throws Exception{ ProjectSettings st=new ProjectSettings(); st.setProperties(e, null); return st; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); org.jdom.Element child; ArrayList al; Iterator itr; String s; if((child=e.getChild(TITLE))!=null) title=child.getText(); al=new ArrayList(); itr = e.getChildren(Revision.ELEMENT_NAME).iterator(); while (itr.hasNext()) al.add(Revision.getRevision((org.jdom.Element)itr.next())); if(!al.isEmpty()) revisions=(Revision[])al.toArray(new Revision[al.size()]); al=new ArrayList(); itr = e.getChildren(Author.ELEMENT_NAME).iterator(); while (itr.hasNext()) al.add(Author.getAuthor((org.jdom.Element)itr.next())); if(!al.isEmpty()) authors=(Author[])al.toArray(new Author[al.size()]); al=new ArrayList(); itr = e.getChildren(Organization.ELEMENT_NAME).iterator(); while (itr.hasNext()) al.add(Organization.getOrganization((org.jdom.Element)itr.next())); if(!al.isEmpty()) organizations=(Organization[])al.toArray(new Organization[al.size()]); al=new ArrayList(); itr = e.getChildren(LANGUAGE).iterator(); while (itr.hasNext()) al.add(((org.jdom.Element)itr.next()).getText()); if(!al.isEmpty()) languages=(String[])al.toArray(new String[al.size()]); if((s=JDomUtility.getStringAttr(e, LOCALE, null, false))!=null){ StringTokenizer stk=new StringTokenizer(s, "-"); String l=null, c=null, v=null; if(stk.hasMoreTokens()) l=stk.nextToken(); if(stk.hasMoreTokens()) c=stk.nextToken(); if(stk.hasMoreTokens()) v=stk.nextToken(); if(l!=null && c!=null){ if(v!=null) locale=new Locale(l, c, v); else locale=new Locale(l, c); } } description=JDomUtility.getParagraphs(e.getChild(DESCRIPTION)); if((child=e.getChild(DESCRIPTORS))!=null){ // check for old format if(!child.getChildren(JDomUtility.P).isEmpty()){ descriptors=JDomUtility.getParagraphs(e.getChild(DESCRIPTORS)); descriptors=edu.xtec.util.StrUtils.replace(descriptors, "\n", ", "); } else{ descriptors=StrUtils.nullableString(child.getTextNormalize()); } area=JDomUtility.getStringAttr(child, AREA, area, false); level=JDomUtility.getStringAttr(child, LEVEL, level, false); } if((child=e.getChild(EventSounds.ELEMENT_NAME))!=null) eventSounds=EventSounds.getEventSounds(child); if((child=e.getChild(SKIN))!=null){ skinFileName=JDomUtility.getStringAttr(child, FILE, skinFileName, false); //if(jcp.skinFileName!=null && jcp.skinFileName.length()>0) // jcp.skin=jcp.mediaBag.getSkinElement(jcp.skinFileName); //else // jcp.skinFileName=null; } if((child=e.getChild(ICON))!=null){ iconFileName=JDomUtility.getStringAttr(child, FILE, iconFileName, false); //if(jcp.skinFileName!=null && jcp.skinFileName.length()>0) // jcp.skin=jcp.mediaBag.getSkinElement(jcp.skinFileName); //else // jcp.skinFileName=null; } } public String toHtmlString(edu.xtec.util.Messages msg){ String msgBase="about_window_lb_"; Html html=new Html(1000); //html.doubleCell(msg.get(msgBase+"project"), true, name, true); html.doubleCell(msg.get(msgBase+"project"), true, title, true); if(area!=null) html.doubleCell(msg.get(msgBase+"area"), true, area, false); if(level!=null) html.doubleCell(msg.get(msgBase+"level"), true, level, false); if(authors!=null){ int k=authors.length; html.tr(true).td(msg.get(msgBase+"author"+(k>1 ? "s":"")), true).td(true); for(int i=0; i1 ? "s":"")), true).td(true); for(int i=0; i0) html.nbsp().br(); if(organizations[i]!=null) html.append(organizations[i].toHtmlString(msg)).br(); } html.td(false).tr(false); } if(revisions!=null){ html.tr(true).td(msg.get(msgBase+"history"), true).td(true); for(int i=0; i0) html.nbsp().br(); if(revisions[i]!=null) html.append(revisions[i].toHtmlString(msg)).br(); } html.td(false).tr(false); } if(languages!=null){ int k=languages.length; html.tr(true).td(msg.get(msgBase+"language"+(k>1 ? "s":"")), true).td(true); for(int i=0; i: ").appendParagraphs(description).append("
"); //if(by!=null && by.length()>0) // html.br().appendParagraphs(by); if(authors!=null) for(int i=0; i0) html.br().appendParagraphs(comments); return html.toString(); } public String toString(){ DateFormat df=DateFormat.getDateInstance(DateFormat.SHORT); StringBuffer sb=new StringBuffer(); sb.append(df.format(date)).append(" - "); if(description!=null && description.length()>0) sb.append(description); return sb.substring(0); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/project/Organization.java0000644000175000017500000001050411377161311022114 0ustar /* * File : Organization.java * Created : 13-jul-2001 11:21 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.util.JDomUtility; import edu.xtec.util.Html; import edu.xtec.util.Domable; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Organization extends Object implements Domable{ public String name; public String mail; public String url; public String address; public String pc; public String city; public String country; public String state; public String comments; /** Creates new Organization */ public Organization() { name=new String(); mail=null; url=null; address=null; pc=null; city=null; country=null; state=null; comments=null; } public static final String ELEMENT_NAME="organization"; public static final String NAME="name", MAIL="mail", URL="url", ADDRESS="address", PC="pc", CITY="city", COUNTRY="country", STATE="state", COMMENTS="comments"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); e.setAttribute(NAME, name); if(mail!=null) e.setAttribute(MAIL, mail); if(url!=null) e.setAttribute(URL, url); if(address!=null) e.setAttribute(ADDRESS, address); if(pc!=null) e.setAttribute(PC, pc); if(city!=null) e.setAttribute(CITY, city); if(country!=null) e.setAttribute(COUNTRY, country); if(state!=null) e.setAttribute(STATE, state); if(comments!=null) JDomUtility.addParagraphs(e, COMMENTS, comments); return e; } public static Organization getOrganization(org.jdom.Element e) throws Exception{ Organization o=new Organization(); o.setProperties(e, null); return o; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); name=JDomUtility.getStringAttr(e, NAME, name, true); mail=JDomUtility.getStringAttr(e, MAIL, mail, false); url=JDomUtility.getStringAttr(e, URL, url, false); address=JDomUtility.getStringAttr(e, ADDRESS, address, false); pc=JDomUtility.getStringAttr(e, PC, pc, false); city=JDomUtility.getStringAttr(e, CITY, city, false); state=JDomUtility.getStringAttr(e, STATE, state, false); country=JDomUtility.getStringAttr(e, COUNTRY, country, false); comments=JDomUtility.getParagraphs(e.getChild(COMMENTS)); } public String toHtmlString(edu.xtec.util.Messages msg){ Html html=new Html(300); html.append(name); if(mail!=null && mail.length()>0) html.sp().mailTo(mail, true); if(url!=null && url.length()>0) html.br().linkTo(url, null); if(address!=null) html.br().appendParagraphs(address); if(pc!=null || city!=null){ html.br(); if(pc!=null) html.append(pc).nbsp(); if(city!=null) html.appendParagraphs(city); } if(state!=null) html.br().appendParagraphs(state); if(country!=null) html.br().appendParagraphs(country); if(comments!=null) html.br().appendParagraphs(comments); return html.toString(); } public String toString(){ StringBuffer sb=new StringBuffer(); sb.append(name); if(city!=null && city.length()>0) sb.append(" (").append(city).append(")"); return sb.toString(); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/project/Author.java0000644000175000017500000000777211377161311020727 0ustar /* * File : Author.java * Created : 13-jul-2001 11:07 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.util.JDomUtility; import edu.xtec.util.Html; import edu.xtec.util.Domable; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Author extends Object implements Domable{ public String name; public String mail; public String url; public String organization; public String comments; public String rol; /** Creates new Author */ public Author() { name=new String(); mail=null; url=null; organization=null; comments=null; rol=null; } public static final String ELEMENT_NAME="author"; public static final String NAME="name", MAIL="mail", URL="url", ORGANIZATION="organization", COMMENTS="comments", ROL="rol"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); e.setAttribute(NAME, name); if(mail!=null) e.setAttribute(MAIL, mail); if(url!=null) e.setAttribute(URL, url); if(rol!=null) e.setAttribute(ROL, rol); if(organization!=null) e.setAttribute(ORGANIZATION, organization); if(comments!=null) JDomUtility.addParagraphs(e, COMMENTS, comments); return e; } public static Author getAuthor(org.jdom.Element e) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); Author a=new Author(); a.name=JDomUtility.getStringAttr(e, NAME, a.name, true); a.mail=JDomUtility.getStringAttr(e, MAIL, a.mail, false); a.url=JDomUtility.getStringAttr(e, URL, a.url, false); a.rol=JDomUtility.getStringAttr(e, ROL, a.rol, false); a.organization=JDomUtility.getStringAttr(e, ORGANIZATION, a.organization, false); a.comments=JDomUtility.getParagraphs(e.getChild(COMMENTS)); return a; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); name=JDomUtility.getStringAttr(e, NAME, name, true); mail=JDomUtility.getStringAttr(e, MAIL, mail, false); url=JDomUtility.getStringAttr(e, URL, url, false); rol=JDomUtility.getStringAttr(e, ROL, rol, false); organization=JDomUtility.getStringAttr(e, ORGANIZATION, organization, false); comments=JDomUtility.getParagraphs(e.getChild(COMMENTS)); } public String toHtmlString(edu.xtec.util.Messages msg){ Html html=new Html(500); if(rol!=null) html.append(rol).append(": "); html.append(name); if(mail!=null && mail.length()>0) html.sp().mailTo(mail, true); if(url!=null && url.length()>0) html.br().linkTo(url, null); if(organization!=null && organization.length()>0) html.br().appendParagraphs(organization); if(comments!=null && comments.length()>0) html.br().appendParagraphs(comments); return html.toString(); } public String toString(){ StringBuffer sb=new StringBuffer(name); if(rol!=null && rol.length()>0) sb.append(" (").append(rol).append(")"); return sb.substring(0); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/project/JClicProject.java0000644000175000017500000003046111377161311021767 0ustar /* * File : JClicProject.java * Created : 16-aug-2001 1:17 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.PlayStation; import edu.xtec.jclic.bags.*; import edu.xtec.jclic.skins.Skin; import edu.xtec.jclic.media.EventSounds; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.fileSystem.ZipFileSystem; import edu.xtec.util.JDomUtility; import java.util.*; import java.io.*; import java.util.zip.*; import edu.xtec.util.ResourceBridge; import edu.xtec.jclic.edit.Editable; import edu.xtec.jclic.edit.Editor; import edu.xtec.util.Domable; import edu.xtec.util.ProgressDialog; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JClicProject extends Object implements Editable, Domable { public static String CURRENT_VERSION="0.1.3"; protected ResourceBridge bridge; protected FileSystem fileSystem; public ActivityBag activityBag; public ActivitySequence activitySequence; public MediaBag mediaBag; public Skin skin; protected String name; public String version; public ProjectSettings settings; public String type; /** Optional code used in reports for filtering queries by activity */ public String code; protected String fullPath; public static String TYPE="type"; /** Creates new JClicProject */ public JClicProject(ResourceBridge bridge, FileSystem fileSystem, String fullPath) { this.fileSystem=fileSystem; this.bridge=bridge; this.fullPath = (fullPath==null ? "" : fullPath); version=CURRENT_VERSION; settings=new ProjectSettings(); settings.title=bridge.getMsg("UNNAMED"); setName(settings.title); type=null; activityBag=new ActivityBag(this); activitySequence=new ActivitySequence(this); mediaBag=new MediaBag(this/*, fileSystem*/); skin=null; } public static String ELEMENT_NAME="JClicProject"; public static String VERSION="version", NAME="name", CODE="code"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); //if(settings.title==ProjectSettings.UNTITLED && name!=NO_NAME) // settings.title=name; e.setAttribute(NAME, name); e.setAttribute(VERSION, CURRENT_VERSION); if(type!=null) e.setAttribute(TYPE, type); if(code!=null) e.setAttribute(CODE, code); e.addContent(settings.getJDomElement()); e.addContent(activitySequence.getJDomElement()); e.addContent(activityBag.getJDomElement()); e.addContent(mediaBag.getJDomElement()); return e; } //public void load(org.jdom.Element e) throws Exception{ // setProperties(e, null); //} public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); org.jdom.Element child; name=JDomUtility.getStringAttr(e, NAME, name, false); version=JDomUtility.getStringAttr(e, VERSION, version, false); type=JDomUtility.getStringAttr(e, TYPE, type, false); code=JDomUtility.getStringAttr(e, CODE, code, false); if((child=e.getChild(ProjectSettings.ELEMENT_NAME))!=null) settings=ProjectSettings.getProjectSettings(child); //if(settings.title==ProjectSettings.UNTITLED && name!=NO_NAME) // settings.title=name; //activitySequence.addElements(e.getChild(ActivitySequence.ELEMENT_NAME)); activitySequence.setProperties(e.getChild(ActivitySequence.ELEMENT_NAME), null); //activityBag.addActivities(e.getChild(ActivityBag.ELEMENT_NAME)); activityBag.setProperties(e.getChild(ActivityBag.ELEMENT_NAME), null); if(version.compareTo("0.1.2")<=0) activityBag.sortByName(); //mediaBag.addMediaElements(e.getChild(MediaBag.ELEMENT_NAME)); mediaBag.setProperties(e.getChild(MediaBag.ELEMENT_NAME), null); } public static JClicProject getJClicProject(org.jdom.Element e, ResourceBridge rb, FileSystem fs, String fullPath) throws Exception{ JClicProject jcp=new JClicProject(rb, fs, fullPath); //jcp.load(e); jcp.setProperties(e, null); return jcp; } public static JClicProject getJClicProject(ResourceBridge rb, String fullPath, ProgressDialog pd) throws Exception{ JClicProject result=null; if(pd!=null) pd.setText(rb.getMsg("msg_loading")+" "+fullPath); FileSystem fileSystem = FileSystem.createFileSystem(fullPath, rb); fullPath=fileSystem.getUrl(fullPath); if(fullPath.startsWith("file://")) fullPath=fullPath.substring(7); String projectName=null; if(fullPath.endsWith(".jclic.zip")){ fileSystem=FileSystem.createFileSystem(fullPath, rb); String[] projects=((ZipFileSystem)fileSystem).getEntries(".jclic"); if(projects==null) throw new Exception("File "+fullPath+" does not contain any jclic project"); projectName=projects[0]; } else{ fileSystem=new FileSystem(FileSystem.getPathPartOf(fullPath), rb); projectName=FileSystem.getFileNameOf(fullPath); } if(projectName.endsWith(".jclic")){ org.jdom.Document doc=fileSystem.getXMLDocument(projectName); System.gc(); result=getJClicProject(doc.getRootElement(), rb, fileSystem, fullPath); } if(result!=null){ result.mediaBag.waitForAllImages(); //System.gc(); } return result; } public org.jdom.Document getDocument(){ return new org.jdom.Document(getJDomElement()); } public void saveDocument(OutputStream out) throws Exception{ JDomUtility.saveDocument(out, getDocument()); } public void saveZipDocument(OutputStream out, boolean includeMedia) throws Exception{ ZipOutputStream zos=new ZipOutputStream(out); zos.putNextEntry(new ZipEntry(name+".jclic")); saveDocument(zos); zos.closeEntry(); if(includeMedia){ Set set=Collections.synchronizedSet(new HashSet()); Iterator it=mediaBag.getElements().iterator(); while(it.hasNext()){ MediaBagElement mbe=(MediaBagElement)it.next(); if(mbe.saveFlag){ String fName=mbe.getFileName(); if(fName!=null && fName.length()>0) set.add(fName); } } it=set.iterator(); while(it.hasNext()){ String fName=(String)it.next(); zos.putNextEntry(new ZipEntry(fName)); zos.write(fileSystem.getBytes(fName)); zos.closeEntry(); } } zos.close(); out.close(); } public void saveZipDocumentPreservingZipContents(OutputStream out, ZipFileSystem zfs) throws Exception{ ZipOutputStream zos=new ZipOutputStream(out); zos.putNextEntry(new ZipEntry(name+".jclic")); saveDocument(zos); zos.closeEntry(); String[] entries=zfs.getEntries(null); if(entries!=null){ for(int i=0; i=0) name=name.substring(0, p); if(name.indexOf(' ')>=0) name=name.replace(' ', '_'); if(name.length()<1) name="NO_NAME"; } public String getName(){ return name; } public String getPublicName(){ /* String result=name; if("noName".equals(name) || bridge.getMsg("UNNAMED").equals(name)) result=settings.title; return result; */ return settings.title; } public void realize(EventSounds parent, PlayStation ps) { if(skin==null && settings.skinFileName!=null && settings.skinFileName.length()>0) skin=mediaBag.getSkinElement(settings.skinFileName, ps); if(settings.eventSounds!=null){ settings.eventSounds.setParent(parent); settings.eventSounds.realize(ps.getOptions(), mediaBag); } mediaBag.buildFonts(); } public void end(){ if(settings.eventSounds!=null){ settings.eventSounds.close(); settings.eventSounds=null; } mediaBag.clearData(); mediaBag.clear(); fileSystem.close(); System.gc(); } protected void finalize() throws Throwable{ end(); super.finalize(); } /** Getter for property resourceBridge. * @return Value of property resourceBridge. */ public edu.xtec.util.ResourceBridge getBridge() { return bridge; } /** Setter for property resourceBridge. * @param resourceBridge New value of property resourceBridge. */ public void setBridge(edu.xtec.util.ResourceBridge bridge) { this.bridge = bridge; } /** Getter for property fileSystem. * @return Value of property fileSystem. */ public edu.xtec.jclic.fileSystem.FileSystem getFileSystem() { return fileSystem; } /** Setter for property fileSystem. * @param fileSystem New value of property fileSystem. */ public void setFileSystem(edu.xtec.jclic.fileSystem.FileSystem fileSystem) { if(this.fileSystem!=null && this.fileSystem!=fileSystem) this.fileSystem.close(); this.fileSystem = fileSystem; } /** Getter for property fullPath. * @return Value of property fullPath. */ public java.lang.String getFullPath() { return fullPath; } /** Setter for property fullPath. * @param fullPath New value of property fullPath. */ public void setFullPath(java.lang.String fullPath) { this.fullPath = fullPath; } public Editor getEditor(Editor parent) { return Editor.createEditor("edu.xtec.jclic.project.JClicProjectEditor", this, parent); //return Editor.createEditor(getClass().getName()+"Editor", this, parent); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/HelpActivityComponent.java0000644000175000017500000001004611377161311022273 0ustar /* * File : HelpActivityComponent.java * Created : 16-aug-2001 1:32 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.boxes.AbstractBox; import edu.xtec.jclic.boxes.ActiveBox; import java.awt.AWTEvent; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.event.MouseEvent; import javax.swing.BorderFactory; import javax.swing.JPanel; import javax.swing.border.BevelBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; /** * JClic activities have the pottibility to show a dialog window containig an * object with help contents. Activities should call * the ShowHelp method of {@link edu.xtec.jclic.PlayStation} to * make this help window appear. The abstract class HelpActivityComponent * can be used as a base class for this kind of help objects. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class HelpActivityComponent extends JPanel implements ListSelectionListener{ /** * Key used to store the preferred location property. */ public static final String PREFERRED_LOCATION="prefLoc"; /** * The {@link edu.xtec.jclic.Activity.Panel} that this object belongs to. */ public Activity.Panel ap; /** * The currently selected box in the HelpActivityComponent, if any. */ public AbstractBox markedBox; public boolean markedBoxWasVisible; /** Creates new HelpActivityComponent */ public HelpActivityComponent(Activity.Panel setAct) { super(); ap=setAct; markedBox=null; enableEvents(AWTEvent.MOUSE_EVENT_MASK); setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED)); putClientProperty(PREFERRED_LOCATION, new Point(ap.getLocationOnScreen())); } public void init(){} public void end(){ unmarkBox(); } public abstract void render(Graphics2D g2, Rectangle dirtyRegion); public void paintComponent(Graphics g){ Graphics2D g2=(Graphics2D)g; RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(Constants.DEFAULT_RENDERING_HINTS); super.paintComponent(g2); render(g2, g2.getClipBounds()); g2.setRenderingHints(rh); } public void unmarkBox(){ ap.ps.stopMedia(1); if(markedBox!=null){ markedBox.setMarked(!markedBox.isMarked()); markedBox.setInverted(!markedBox.isInverted()); markedBox.setVisible(markedBoxWasVisible); markedBox=null; } } public void markBox(AbstractBox bx, boolean play){ unmarkBox(); markedBox=bx; if(bx!=null){ markedBoxWasVisible=bx.isVisible(); if(play && bx instanceof ActiveBox) ((ActiveBox)bx).playMedia(ap.ps); bx.setMarked(!bx.isMarked()); bx.setInverted(!bx.isInverted()); bx.setVisible(true); } } public void processMouse(MouseEvent p1){} protected void processEvent(AWTEvent e){ if(e instanceof MouseEvent) processMouse((MouseEvent)e); super.processEvent(e); } public void valueChanged(ListSelectionEvent ev) { } public void doLayout(){ } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/report/0000755000175000017500000000000011377161311016452 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/report/TCPReporter.java0000644000175000017500000003052411377161311021472 0ustar /* * File : TCPReporter.java * Created : 17-jul-2001 9:39 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.jclic.Activity; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.bags.*; import edu.xtec.jclic.misc.Utils; import java.net.Socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.util.HashMap; import java.util.Vector; import java.util.StringTokenizer; import java.awt.Component; import edu.xtec.util.Messages; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.InputStream; import edu.xtec.util.Domable; import java.net.URL; import java.net.HttpURLConnection; import java.io.PrintWriter; import edu.xtec.util.JDomUtility; import javax.swing.Timer; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TCPReporter extends Reporter { protected String currentSessionId; protected ActivityReg lastActivity; protected int actCount; protected URL serviceUrl; protected HashMap dbProperties; protected Vector tasks; protected Component parent; protected Messages msg; protected Timer timer; protected int timerLap; public static final String SERVER_PATH="path", DEFAULT_SERVER_PATH="localhost:9000", SERVER_SERVICE="service", DEFAULT_SERVER_SERVICE="/JClicReportService", TIMER_LAP="lap"; public static final int DEFAULT_TIMER_LAP=20; /** Creates new TCPReporter */ public TCPReporter(){ super(); currentSessionId=null; lastActivity=null; actCount=0; serviceUrl=null; tasks=new Vector(); timerLap=DEFAULT_TIMER_LAP; } protected synchronized void flushTasks(){ if(!tasks.isEmpty() && serviceUrl!=null){ TCPReportBean bean=new TCPReportBean(TCPReportBean.MULTIPLE); TCPReportBean[] items=null; synchronized(tasks){ items=(TCPReportBean[])tasks.toArray(new TCPReportBean[tasks.size()]); } for(int i=0; i0){ if(writeProjectName){ html.append(""); html.append(""); html.bold(msg.get(prefix+"project")+Html.NBSP+projectName); html.td(false).tr(false); } html.append(""); html.td(msg.get(prefix+"lb_sequence"), Html.CENTER, true, null); html.td(msg.get(prefix+"lb_activity"), Html.CENTER, true, null); html.td(msg.get(prefix+"lb_solved"), Html.CENTER, true, null); html.td(msg.get(prefix+"lb_actions"), Html.CENTER, true, null); html.td(msg.get(prefix+"lb_score"), Html.CENTER, true, null); html.td(msg.get(prefix+"lb_time"), Html.CENTER, true, null); html.tr(false); for(int i=0; i"); html.td(msg.get(prefix+"lb_totals"), Html.LEFT, true, null); html.td(msg.getNumber(info.nActivities), Html.RIGHT, true, null); html.td(msg.getNumber(info.nActSolved)+" ("+msg.getPercent(info.percentSolved)+")", Html.RIGHT, true, null); html.td(msg.getNumber(info.nActions), Html.RIGHT, true, null); html.td(msg.getPercent(info.tScore), Html.RIGHT, true, null); html.td(msg.getHmsTime(info.tTime), Html.RIGHT, true, null); html.tr(false); } return html.toString(); } public Info getInfo(boolean recalc){ if(recalc) info.recalc(); return info; } public class Info{ public int numSequences, nActivities, nActSolved, nActScore, percentSolved, nActions; public long tScore, tTime; protected Info(){ clear(); } protected void clear(){ numSequences=nActivities=nActSolved=nActScore=percentSolved=nActions=0; tScore=tTime=0L; } public void recalc(){ clear(); for(int i=0; i0){ numSequences++; if(sri.nActClosed>0){ nActivities+=sri.nActClosed; nActions+=sri.nActions; if(sri.nActScore>0){ nActScore+=sri.nActScore; tScore+=(sri.tScore*sri.nActScore); } tTime+=sri.tTime; nActSolved+=sri.nActSolved; } } // // 20-Feb-2006 - Correction of bug #41 // This code must be executed after the "for" iteration: // if(nActScore>0) // tScore/=nActScore; // if(nActivities>0) // percentSolved=(nActSolved*100)/nActivities; } if(nActScore>0) tScore/=nActScore; if(nActivities>0) percentSolved=(nActSolved*100)/nActivities; } } protected void finalize() throws Throwable{ end(); super.finalize(); } public void end(){ endSequence(); } public void endSequence(){ if(currentSequence!=null && currentSequence.totalTime==0) currentSequence.endSequence(); currentSequence=null; } public void newSequence(ActivitySequenceElement ase){ endSequence(); currentSequence=new SequenceReg(ase); sequences.add(currentSequence); } public void newActivity(Activity act){ if(currentSequence!=null) currentSequence.newActivity(act); } public void endActivity(int score, int numActions, boolean solved){ if(currentSequence!=null) currentSequence.endActivity(score, numActions, solved); } public void newAction(String type, String source, String dest, boolean ok){ if(currentSequence!=null) currentSequence.newAction(type, source, dest, ok); } public SequenceReg getSequenceReg(int index){ return index>=sequences.size() ? null : (SequenceReg)sequences.get(index); } public String getCurrentSequenceTag(){ if(currentSequence==null) return null; return currentSequence.name; } public SequenceReg.Info getCurrentSequenceInfo(){ return currentSequence==null ? null : currentSequence.getInfo(true); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/report/Reporter.java0000644000175000017500000005231511377161311021125 0ustar /* * File : Reporter.java * Created : 09-jul-2001 17:04 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.jclic.Activity; import edu.xtec.jclic.bags.ActivitySequenceElement; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.report.SessionReg.Info; import edu.xtec.util.CompoundListCellRenderer; import edu.xtec.util.Encryption; import edu.xtec.util.Html; import edu.xtec.util.JDomUtility; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.HashMap; import java.util.Vector; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JPasswordField; import javax.swing.JScrollPane; import javax.swing.JTextField; /** * This class implements the basic operations related with the process of the results * obtained by users playing JClic activities. These operations include * users identification, compilation of data coming from the activities, storage of * this data for a posterior use and presentation of summarized results. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Reporter extends Object { String userId; String sessionKey; String sessionContext; String groupCodeFilter; String userCodeFilter; String description; Date started; Vector sessions; SessionReg currentSession; /** * true if the system was successfully initiated, false otherwise */ public boolean initiated; /** * true when the system is connected to a database with user's data. * When false, a generic user id will be used. */ protected Boolean bUserBased; public static final String ALLOW_CREATE_GROUPS="ALLOW_CREATE_GROUPS", ALLOW_CREATE_USERS="ALLOW_CREATE_USERS", SHOW_GROUP_LIST="SHOW_GROUP_LIST", SHOW_USER_LIST="SHOW_USER_LIST", USER_TABLES="USER_TABLES", TIME_LAP="TIME_LAP"; /** Creates new Reporter */ public Reporter() { sessions=new Vector(); started=new Date(); initiated=false; } /** * Method use to retrieve specific properties of the reports system * @param key Property key * @param defaultValue Default value for this key * @throws Exception Throwed when the system was unable to read the specified property * @return The value related to this property */ public String getProperty(String key, String defaultValue) throws Exception{ return defaultValue; } /** * Retrieves boolean properties of the reports system * @param key * @param defaultValue * @throws Exception * @return */ public boolean getBooleanProperty(String key, boolean defaultValue) throws Exception{ String s=getProperty(key, new Boolean(defaultValue).toString()); return key==null ? defaultValue : Boolean.valueOf(s).booleanValue(); } public Vector getGroups() throws Exception{ return null; } public Vector getUsers(String groupId) throws Exception{ return null; } public UserData getUserData(String userId) throws Exception{ return null; } public GroupData getGroupData(String groupId) throws Exception{ return null; } public boolean userBased() throws Exception{ if(bUserBased==null) bUserBased=new Boolean(getBooleanProperty(USER_TABLES, true)); return bUserBased.booleanValue(); } protected GroupData promptForNewGroup(Component parent, Messages msg) throws Exception{ JTextField gName=new JTextField(20); JTextField gId=new JTextField(20); JComponent[] jc=new JComponent[]{gName, gId}; String[] ps=new String[]{"report_name_prompt", "report_id_prompt"}; String name=null; String id=null; GroupData result=null; while(result==null){ boolean dlgResult=msg.showInputDlg(parent, new String[]{"report_new_group_data"}, ps, jc, "report_new_group"); if(!dlgResult) return null; name=StrUtils.nullableString(gName.getText()); id=StrUtils.nullableString(gId.getText()); if(id==null) msg.showAlert(parent, "report_err_bad_id"); else if(getGroupData(id)!=null) msg.showAlert(parent, "report_err_duplicate_id"); else if(name==null) msg.showAlert(parent, "report_err_bad_name"); else{ result=new GroupData(id, name, null, null); result.setId(newGroup(result)); } } return result; } protected UserData promptForNewUser(Component parent, Messages msg, String groupId) throws Exception{ if(groupId==null){ groupId=promptGroupId(parent, msg); if(groupId==null) return null; } JTextField gName=new JTextField(20); JTextField gId=new JTextField(20); JPasswordField pwf1=new JPasswordField(Messages.MAX_PASSWORD_LENGTH); JPasswordField pwf2=new JPasswordField(Messages.MAX_PASSWORD_LENGTH); JComponent[] jc=new JComponent[]{gName, gId, pwf1, pwf2}; String[] ps=new String[]{"report_name_prompt", "report_id_prompt", "report_pw_prompt", "report_pw_prompt_confirm"}; String name=null; String id=null; String pw=null; UserData result=null; while(result==null){ if(!msg.showInputDlg(parent, new String[]{"report_new_user_data"}, ps, jc, "report_new_user" )) return null; name=StrUtils.nullableString(gName.getText()); id=StrUtils.nullableString(gId.getText()); pw=StrUtils.nullableString(String.copyValueOf(pwf1.getPassword())); boolean pwOk=true; if(pw!=null){ pwOk=pw.equals(StrUtils.nullableString(String.copyValueOf(pwf2.getPassword()))); pw=Encryption.Encrypt(pw); } if(!pwOk) msg.showAlert(parent, "report_err_bad_pwd"); else if(id==null) msg.showAlert(parent, "report_err_bad_id"); else if(getUserData(id)!=null) msg.showAlert(parent, "report_err_duplicate_id"); else if(name==null) msg.showAlert(parent, "report_err_bad_name"); else{ result=new UserData(id, name, null, pw, groupId); result.setId(newUser(result)); } } return result; } protected String promptGroupId(Component parent, final Messages msg) throws Exception{ String groupId=null; Vector vg=getGroups(); if(vg.isEmpty()){ String s=msg.get("report_generic_group_name"); newGroup(new GroupData(s, s, null, null)); vg=getGroups(); if(vg.isEmpty()) return groupId; } final Vector v=vg; final JList list=new JList(); list.setCellRenderer(new CompoundListCellRenderer()); list.setListData(v); list.setSelectedValue(v.get(0), false); JScrollPane listScroll=new JScrollPane(list); JComponent[] jc=null; if(getBooleanProperty(ALLOW_CREATE_GROUPS, false)){ JButton btn=new JButton(msg.get("report_new_group")); btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ Component cmp=null; if(evt.getSource()!=null && evt.getSource() instanceof Component) cmp=(Component)evt.getSource(); try{ GroupData gd=promptForNewGroup(cmp, msg); if(gd!=null){ v.add(gd); list.setListData(v); list.setSelectedValue(gd, true); } } catch(Exception ex){ msg.showErrorWarning(cmp, "report_err_creating_group", ex); } } }); jc=new JComponent[]{listScroll, btn}; } else{ jc=new JComponent[]{listScroll}; } if(msg.showInputDlg( parent, new String[] {"report_grouplist_title"}, null, jc, "report_ident_user")){ GroupData gd=(GroupData)list.getSelectedValue(); if(gd!=null){ groupId=gd.getId(); } } return groupId; } public String promptUserId(Component parent, final Messages msg) throws Exception{ if(!userBased()) throw new Exception("No users defined in the database!"); boolean cancel=false; int tries=0; while(userId==null && !cancel && tries++<3){ if(getBooleanProperty(SHOW_USER_LIST, true)){ String gi=null; if(getBooleanProperty(SHOW_GROUP_LIST, true)){ gi=promptGroupId(parent, msg); if(gi==null) return null; } final String groupId=gi; final Vector v=getUsers(groupId); boolean allow_create_users=getBooleanProperty(ALLOW_CREATE_USERS, false); if(v.isEmpty() && !allow_create_users){ msg.showErrorWarning(parent, groupId==null ? "report_err_no_users" : "report_err_no_users_in_group", null); break; } final JList list=new JList(); list.setCellRenderer(new CompoundListCellRenderer()); list.setListData(v); if(!v.isEmpty()) list.setSelectedValue(v.get(0), false); JScrollPane listScroll=new JScrollPane(list); JComponent[] jc=null; if(allow_create_users){ JButton btn=new JButton(msg.get("report_new_user")); btn.setToolTipText(msg.get("report_new_user_tooltip")); btn.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent evt){ Component cmp=null; if(evt.getSource()!=null && evt.getSource() instanceof Component) cmp=(Component)evt.getSource(); try{ UserData ud=promptForNewUser(cmp, msg, groupId); if(ud!=null){ v.add(ud); list.setListData(v); list.setSelectedValue(ud, true); } } catch(Exception ex){ msg.showErrorWarning(cmp, "report_err_creating_user", ex); } } }); jc=new JComponent[]{listScroll, btn}; } else{ jc=new JComponent[]{listScroll}; } if(!msg.showInputDlg(parent, new String[] {"report_userlist_title"}, null, jc, "report_ident_user")) break; UserData ud=(UserData)list.getSelectedValue(); if(ud==null) break; if(ud.pwd!=null && ud.pwd.length()>0){ String pwd=Encryption.Decrypt(ud.pwd); String inputPwd=msg.showInputDlg(parent, "report_user_has_pwd", "report_pw_prompt", null, "report_ident_user", true); // 22-mai-06: Modified to avoid null password entries // Old version: /* if(inputPwd==null) break; else if(inputPwd.equals(pwd)) userId=ud.getId(); else msg.showErrorWarning(parent, "report_err_invalid_user", null); */ // New version: if(pwd.equals(inputPwd)) userId=ud.getId(); else msg.showErrorWarning(parent, "report_err_invalid_user", null); } else userId=ud.getId(); } else{ JTextField textField=new JTextField(); JPasswordField pwdField=new JPasswordField(Messages.MAX_PASSWORD_LENGTH); if(!msg.showInputDlg( parent, new String[]{"report_select_user"}, new String[]{"report_id_prompt", "report_pw_prompt"}, new JComponent[]{textField, pwdField}, "report_ident_user")) break; String s=StrUtils.nullableString(textField.getText()); if(s==null) break; UserData ud=getUserData(s); boolean userOk=false; if(ud!=null){ String uPwd=StrUtils.nullableString(ud.pwd); if(uPwd==null || Encryption.Decrypt(uPwd).equals(String.copyValueOf(pwdField.getPassword()))) userOk=true; } if(!userOk) msg.showErrorWarning(parent, "report_err_invalid_user", null); else userId=ud.getId(); } } return userId; } public String toHtmlString(Messages msg){ String prefix="report_"; Html html=new Html(3000); Html tb; tb=new Html(3000); tb.doubleCell(msg.get(prefix+"started"), true, msg.getShortDateTimeStr(started), false); tb.doubleCell(msg.get(prefix+"system"), true, description== null ? msg.get(prefix+"system_standard") : description, false); if(userId!=null) tb.doubleCell(msg.get(prefix+"user"), true, userId, false); int numSessions=0; int numSequences=0; int nActivities=0; int nActSolved=0; int nActScore=0; int nActions=0; int percentSolved=0; long tScore=0; long tTime=0L; for(int i=0; i0){ numSessions++; numSequences+=inf.numSequences; if(inf.nActivities>0){ nActivities+=inf.nActivities; nActSolved+=inf.nActSolved; nActions+=inf.nActions; if(inf.nActScore>0){ tScore+=(inf.tScore*inf.nActScore); nActScore+=inf.nActScore; } tTime+=inf.tTime; } } } if(numSequences>0){ if(numSessions>1) tb.doubleCell(msg.get(prefix+"num_projects"), true, msg.getNumber(numSessions), false); tb.doubleCell(msg.get(prefix+"num_sequences"), true, msg.getNumber(numSequences), false); tb.doubleCell(msg.get(prefix+"num_activities"), true, msg.getNumber(nActivities), false); if(nActivities>0){ tb.doubleCell(msg.get(prefix+"num_activities_solved"), true, msg.getNumber(nActSolved)+" ("+msg.getPercent(nActSolved*100/nActivities)+")", false); if(nActScore>0) tb.doubleCell(msg.get(prefix+"global_score"), true, msg.getPercent(tScore/nActScore), false); tb.doubleCell(msg.get(prefix+"total_time"), true, msg.getHmsTime(tTime), false); tb.doubleCell(msg.get(prefix+"num_actions"), true, msg.getNumber(nActions), false); } html.append(Html.table(tb.toString(), null, 0, 2, -1, null, false)).append(Html.NBSP); StringBuffer tbs=new StringBuffer(); for(int i=0; i0) tbs.append(sr.toHtmlString(msg, false, numSessions>1)); } html.append(Html.table(tbs.substring(0), null, 1, 2, -1, null, false)); } else{ html.append(Html.table(tb.toString(), null, 0, 2, -1, null, false)); html.br().bold(msg.get(prefix+"no_activities")); } return html.toString(); } public static final String ELEMENT_NAME="reporter"; public static final String USER_ID="user", KEY="key", CONTEXT="context", GROUP_CODE_FILTER="groupCodeFilter", USER_CODE_FILTER="userCodeFilter"; public void init(HashMap properties, Component parent, Messages msg) throws Exception{ userId=(String)properties.get(USER_ID); sessionKey=(String)properties.get(KEY); sessionContext=(String)properties.get(CONTEXT); groupCodeFilter=(String)properties.get(GROUP_CODE_FILTER); userCodeFilter=(String)properties.get(USER_CODE_FILTER); initiated=true; } public static Reporter getReporter(HashMap properties, Component parent, Messages msg) throws Exception{ String className=null; if(properties==null) throw new IllegalArgumentException("Null properties passed to \"getReporter\""); if((className=(String)properties.get(JDomUtility.CLASS))==null) throw new IllegalArgumentException("Properties passed to \"getReporter\" with null class name"); Class reporterClass=Class.forName(className); Reporter rep=(Reporter)reporterClass.newInstance(); rep.init(properties, parent, msg); return rep; } public static Reporter getReporter(String className, String strProperties, Component parent, Messages msg) throws Exception{ if(className==null || className.length()==0) throw new IllegalArgumentException("Properties passed to \"getReporter\" with null class name"); if(className.indexOf('.')<0){ className="edu.xtec.jclic.report."+className; } HashMap properties=new HashMap(); properties.put(JDomUtility.CLASS, className); Options.strToMap(strProperties, properties, ";", '=', false); return getReporter(properties, parent, msg); } protected void finalize() throws Throwable{ end(); super.finalize(); } public void end(){ endSession(); } public void endSequence(){ if(currentSession!=null) currentSession.endSequence(); } public void endSession(){ endSequence(); currentSession=null; } public String newGroup(GroupData gd) throws Exception{ throw new Exception("No database!"); } public String newUser(UserData ud) throws Exception{ throw new Exception("No database!"); } public void newSession(JClicProject jcp, Component parent, Messages msg){ endSession(); currentSession=new SessionReg(jcp); sessions.add(currentSession); } public void newSequence(ActivitySequenceElement ase){ if(currentSession!=null) currentSession.newSequence(ase); } public void newActivity(Activity act){ if(currentSession!=null) currentSession.newActivity(act); } public void endActivity(int score, int numActions, boolean solved){ if(currentSession!=null) currentSession.endActivity(score, numActions, solved); } public void newAction(String type, String source, String dest, boolean ok){ if(currentSession!=null) currentSession.newAction(type, source, dest, ok); } public SessionReg getSessionReg(int index){ return index>=sessions.size() ? null : (SessionReg)sessions.get(index); } public edu.xtec.jclic.report.SequenceReg.Info getCurrentSequenceInfo(){ return currentSession==null ? null : currentSession.getCurrentSequenceInfo(); } public String getCurrentSequenceTag(){ return currentSession==null ? null : currentSession.getCurrentSequenceTag(); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/report/SequenceReg.java0000644000175000017500000001100211377161311021515 0ustar /* * File : SequenceReg.java * Created : 11-jul-2001 9:08 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.jclic.Activity; import edu.xtec.jclic.bags.ActivitySequenceElement; import edu.xtec.util.Html; import java.util.Vector; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class SequenceReg extends Object implements java.io.Serializable{ String name; String description; Vector activities; ActivityReg currentActivity; long totalTime; boolean closed; protected transient Info info; /** Creates new SequenceReg */ public SequenceReg(ActivitySequenceElement ase){ name=ase.getTag(); description=ase.getDescription(); activities=new Vector(); currentActivity=null; totalTime=0; closed=false; info=new Info(); } public String toHtmlString(edu.xtec.util.Messages msg){ Html html=new Html(3000); int nRows=activities.size(); String fh=new Html(200).td(name, Html.LEFT, false, "ROWSPAN=\""+msg.getNumber(nRows)+"\"").toString(); for(int i=0; i0){ for(int i=0; i=0){ tScore+=r; nActScore++; } } } if(nActClosed>0) percentSolved=(nActSolved*100)/nActClosed; if(nActScore>0) tScore/=nActScore; } } } void newActivity(Activity act){ if(!closed){ currentActivity=new ActivityReg(act); activities.add(currentActivity); } } void newAction(String type, String source, String dest, boolean ok){ if(currentActivity!=null){ currentActivity.newAction(type, source, dest, ok); } } void endActivity(int score, int numActions, boolean solved){ if(currentActivity!=null) currentActivity.endActivity(score, numActions, solved); } void endSequence(){ if(currentActivity!=null){ if(!currentActivity.closed) currentActivity.closeActivity(); ActivityReg firstActivity=getActivityReg(0); totalTime=currentActivity.startTime+currentActivity.totalTime-firstActivity.startTime; } } ActivityReg getActivityReg(int index){ return index>=activities.size() ? null : (ActivityReg)activities.get(index); } public String toString(){ return new StringBuffer("SEQUENCE: ").append(name).substring(0); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/report/ActivityReg.java0000644000175000017500000001506511377161311021556 0ustar /* * File : ActivityReg.java * Created : 11-jul-2001 9:03 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.jclic.*; import edu.xtec.util.Html; import java.util.Vector; import edu.xtec.util.Domable; import edu.xtec.util.JDomUtility; import java.util.Iterator; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActivityReg extends Object implements java.io.Serializable, Domable{ String name; String code; long startTime; long totalTime; Vector actions; boolean solved; ActionReg lastAction; int score; int minActions; boolean closed; boolean reportActions; int numActions; /** Creates new ActivityReg */ public ActivityReg(Activity act) { name=act.name; code=act.code; actions=new Vector(); startTime=System.currentTimeMillis(); totalTime=0; solved=false; score=0; lastAction=null; closed=false; minActions=act.getMinNumActions(); reportActions=act.reportActions; numActions=0; } public ActivityReg(org.jdom.Element e) throws Exception{ actions=new Vector(); setProperties(e, null); } public static final String ELEMENT_NAME="activity"; public static final String NAME="name", CODE="code", START="start", TIME="time", SOLVED="solved", SCORE="score", MIN_ACTIONS="minActions", CLOSED="closed", REPORT_ACTIONS="reportActions", ACTIONS="actions"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); JDomUtility.setStringAttr(e, NAME, name, false); JDomUtility.setStringAttr(e, CODE, code, false); JDomUtility.setStringAttr(e, START, Long.toString(startTime), false); JDomUtility.setStringAttr(e, TIME, Long.toString(totalTime), false); e.setAttribute(SOLVED, JDomUtility.boolString(solved)); JDomUtility.setStringAttr(e, SCORE, Integer.toString(score), false); JDomUtility.setStringAttr(e, MIN_ACTIONS, Integer.toString(minActions), false); if(!closed) e.setAttribute(CLOSED, JDomUtility.BOOL_STR[JDomUtility.FALSE]); if(reportActions) e.setAttribute(REPORT_ACTIONS, JDomUtility.BOOL_STR[JDomUtility.TRUE]); JDomUtility.setStringAttr(e, ACTIONS, Integer.toString(numActions), false); Iterator it=actions.iterator(); while(it.hasNext()) e.addContent(((ActionReg)it.next()).getJDomElement()); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); name=JDomUtility.getStringAttr(e, NAME, name, false); code=JDomUtility.getStringAttr(e, CODE, code, false); startTime=JDomUtility.getLongAttr(e, START, startTime); totalTime=JDomUtility.getLongAttr(e, TIME, totalTime); solved=JDomUtility.getBoolAttr(e, SOLVED, solved); score=JDomUtility.getIntAttr(e, SCORE, score); minActions=JDomUtility.getIntAttr(e, MIN_ACTIONS, minActions); closed=JDomUtility.getBoolAttr(e, CLOSED, true); reportActions=JDomUtility.getBoolAttr(e, REPORT_ACTIONS, false); numActions=JDomUtility.getIntAttr(e, ACTIONS, numActions); Iterator it=e.getChildren(ActionReg.ELEMENT_NAME).iterator(); while(it.hasNext()){ lastAction=new ActionReg((org.jdom.Element)it.next()); actions.add(lastAction); } } private static final String okTd="BGCOLOR=\"#90FF90\""; private static final String badTd="BGCOLOR=\"#FF9090\""; public String toHtmlString(edu.xtec.util.Messages msg, String firstTd){ Html html=new Html(300); html.tr(true); if(firstTd!=null) html.append(firstTd); html.td(name, false); if(closed){ html.td(msg.get(solved ? "YES":"NO"), Html.CENTER, true, solved ? okTd:badTd); html.td(msg.getNumber(numActions), Html.RIGHT, false, null); html.td(msg.getPercent(getPrecision()), Html.RIGHT, false, null); html.td(msg.getHmsTime(totalTime), Html.RIGHT, false, null); } else html.append("").append(msg.get("report_not_finished")).td(false); html.tr(false); return html.toString(); } public void newAction(String type, String source, String dest, boolean ok){ if(!closed){ lastAction=new ActionReg(type, source, dest, ok); actions.add(lastAction); } } public ActionReg getActionReg(int index){ return index>=actions.size() ? null : (ActionReg)actions.get(index); } public void closeActivity(){ if(!closed){ if(lastAction!=null){ totalTime=lastAction.time-startTime; } else{ totalTime=System.currentTimeMillis()-startTime; } closed=true; } } public int getPrecision(){ int result=0; if(closed && minActions>0 && numActions>0){ if(solved){ if(numActions0){ if(isStrUrl(root)) { isURL=true; ISURL=new Boolean(isURL); //if(root.indexOf('\\')>=0) // root=root.replace('\\', '/'); //if(!root.endsWith("/")) root = root + "/"; if(!root.endsWith(FS)) root = root + FS; root=getCanonicalNameOf(root); } else { File f=new File(sysFn(root)); String saveRoot=new String(root); try{ root=stdFn(f.getCanonicalPath()); } catch(Exception e){ root=saveRoot; } //if(!root.endsWith(File.separator)) // root=root+File.separator; if(!root.endsWith(FS)) root = root + FS; } } } public FileSystem duplicate() throws Exception{ return createFileSystem(root, rb); } protected void changeBase(String newRoot, String newFileName) throws Exception{ File f=new File(sysFn(newRoot)); String saveRoot=new String(root); try{ root=stdFn(f.getCanonicalPath()); } catch(Exception e){ root=saveRoot; } if(!root.endsWith(FS)) root = root + FS; } public static String stdFn(String s){ return s==null ? s : s.replace(WINFSCH, FSCH); } public static String sysFn(String s){ String result=s; if(result!=null){ result=stdFn(result).replace(FSCH, File.separatorChar); if(result.indexOf("%20")>=0) result=StrUtils.replace(result, "%20", " "); } return result; } public static final FileSystem createFileSystem(String rootPath, String fileName, ResourceBridge rb) throws Exception { if(fileName==null) return new FileSystem(rootPath, rb); else if(fileName.endsWith(".pcc")) return PCCFileSystem.createPCCFileSystem(rootPath, fileName, rb); else if(fileName.endsWith(".zip")) return ZipFileSystem.createZipFileSystem(rootPath, fileName, rb); else throw new Exception("unknown format " + fileName); } public static final FileSystem createFileSystem(String fullPath, ResourceBridge rb) throws Exception { fullPath=getCanonicalNameOf(fullPath, null); String fileName=null; //String rootPath=getPathOf(fullPath); String rootPath=getPathPartOf(fullPath); if(fullPath.endsWith(".pcc") || fullPath.endsWith(".zip")){ fileName=getFileNameOf(fullPath); } return createFileSystem(rootPath, fileName, rb); } public String getFullFileNamePath(String fName){ if(fName==null || fName.length()==0){ return root.length()>0 ? root.substring(0, root.length()-1) : root; } String result=getCanonicalNameOf(fName); if(!isURL){ File f=new File(sysFn(result)); if(!f.isAbsolute()) result=getCanonicalNameOf(root+result); } else{ if(!isStrUrl(result)) result=getCanonicalNameOf(root+result); } return result; } public String getRelativeFileNamePath(String fName){ String s=stdFn(fName); if(s==null || s.length()2 && fn.charAt(1)==':'){ cut=(fn.charAt(2)==FSCH ? 2 : 1); } //else if(fileName.startsWith("\\\\")){ else if(fn.startsWith("//")){ int i=fn.indexOf(FSCH, 2); cut=fn.indexOf(FSCH, i+1); } else if(fn.startsWith(FS)){ cut=0; } if(cut>=0){ prefix=fn.substring(0, cut+1); fn=fn.substring(cut+1); } // interceptar '\...' //String back= flagUrl ? "/.." : SEP_FILE_BAK; int r; while((r=fn.indexOf(FS_BAK))>=0){ int p; for(p=r-1; p>=0; p--) if(fn.charAt(p)==FSCH) break; StringBuffer newfn=new StringBuffer(); if(p>=0) newfn.append(fn.substring(0, p+1)); if(r+40); } else{ File f=new File(sysFn(getFullFileNamePath(fName))); result=f.exists(); } } catch(Exception ex){ // eat exception result=false; } return result; } public InputStream getInputStream(String fName) throws IOException{ InputStream result=null; int length=0; if(isURL){ //URL url=new URL(getCanonicalNameOf(root + fName)); URL url=new URL(getFullFileNamePath(fName)); URLConnection c=url.openConnection(); length=c.getContentLength(); result=c.getInputStream(); } else{ //File f=new File(getCanonicalNameOf(root + fName)); File f=new File(sysFn(getFullFileNamePath(fName))); if(!f.exists()){ String alt=(String)altFileNames.get(fName); if(alt!=null) f=new File(sysFn(getFullFileNamePath(alt))); } length=(int)f.length(); result=new FileInputStream(f); } if(result!=null && rb!=null){ result=rb.getProgressInputStream(result, length, fName); } return result; } public Object getMediaDataSource(String fName) throws Exception{ if(isURL) return getExtendedByteArrayInputStream(fName); //StringBuffer sb=new StringBuffer("file:").append(getCanonicalNameOf(root+fName)); return new StringBuffer("file:").append(getFullFileNamePath(fName)).substring(0); } public edu.xtec.util.ExtendedByteArrayInputStream getExtendedByteArrayInputStream(String fName) throws Exception{ return new edu.xtec.util.ExtendedByteArrayInputStream(getBytes(fName), fName); } public static org.jdom.Document getXMLDocument(InputStream is) throws Exception{ org.jdom.Document doc=JDomUtility.getSAXBuilder().build(is); edu.xtec.util.JDomUtility.clearNewLineElements(doc.getRootElement()); return doc; } public org.jdom.Document getXMLDocument(String fName) throws Exception{ org.jdom.Document doc=buildDoc(fName, JDomUtility.getSAXBuilder()); edu.xtec.util.JDomUtility.clearNewLineElements(doc.getRootElement()); return doc; } protected org.jdom.Document buildDoc(String fName, org.jdom.input.SAXBuilder builder) throws Exception{ return builder.build(getInputStream(fName)); } public void close(){ // nothing to do } protected void open() throws Exception{ // nothing to do } protected void finalize() throws Throwable{ close(); super.finalize(); } public static FileChooserForFiles getFileChooser(String root){ if(fileChooser==null){ fileChooser=new FileChooserForFiles(); if(root!=null){ fileChooser.setCurrentDirectory(new File(sysFn(root))); } } return fileChooser; } /* public String chooseFile(String defaultValue, boolean save, int[] filters, edu.xtec.util.Options options, String titleKey, java.awt.Component dlgOwner, boolean proposeMove){ String result=null; FileChooserForFiles chooser; if(options!=null){ Messages msg=options.getMessages(); if(isURL){ if(save){ msg.showErrorWarning(dlgOwner, "filesystem_saveURLerror", null); } else{ result=msg.showInputDlg(dlgOwner, "filesystem_enterURL", "URL", "http://", titleKey!=null ? titleKey : "filesystem_openURL", false); } } else if((chooser=getFileChooser())!=null){ chooser.setCurrentDirectory(new File(sysFn(root))); chooser.setDialogType(save ? JFileChooser.SAVE_DIALOG : JFileChooser.OPEN_DIALOG); chooser.setDialogTitle(msg.get(titleKey!=null ? titleKey : save ? "FILE_SAVE" : "FILE_OPEN")); chooser.resetChoosableFileFilters(); if(filters!=null){ chooser.setAcceptAllFileFilterUsed(false); for(int i=0; i0 && result.indexOf(FS)>=0 && msg.showQuestionDlgObj(dlgOwner, new String[] { msg.get("filesystem_copyToRoot_1")+" "+result, msg.get("filesystem_copyToRoot_2"), msg.get("filesystem_copyToRoot_3"), msg.get("filesystem_copyToRoot_4"), }, "CONFIRM")){ String name=stdFn(f.getName()); File destFile=new File(sysFn(getFullFileNamePath(name))); if(msg.confirmOverwriteFile(dlgOwner, destFile)){ try{ OutputStream os=createSecureFileOutputStream(name); InputStream is=getInputStream(result); if(StreamIO.writeStreamDlg(is, os, (int)f.length(), msg.get("filesystem_copyFile"), dlgOwner, options)) result=name; else if(destFile.exists()) destFile.delete(); } catch(Exception ex){ msg.showErrorWarning(dlgOwner, "ERROR", ex); } } } } } else{ result=null; done=true; } } } } return result; } */ public String chooseFile(String defaultValue, boolean save, int[] filters, Options options, String titleKey, Component dlgOwner, boolean proposeMove){ String result=null; String[] files=chooseFiles(defaultValue, save, filters, options, titleKey, dlgOwner, proposeMove, false); if(files!=null && files.length>0) result=files[0]; return result; } public String[] chooseFiles(String defaultValue, boolean save, int[] filters, Options options, String titleKey, Component dlgOwner, boolean proposeMove, boolean multiSelection){ String[] result=null; FileChooserForFiles chooser; if(save) multiSelection=false; if(options!=null){ Messages msg=options.getMessages(); if(isURL){ if(save){ msg.showErrorWarning(dlgOwner, "filesystem_saveURLerror", null); } else{ String s=msg.showInputDlg(dlgOwner, "filesystem_enterURL", "URL", "http://", titleKey!=null ? titleKey : "filesystem_openURL", false); if(s!=null) result=new String[]{s}; } } else if((chooser=getFileChooser(root))!=null){ chooser.setApproveButtonToolTipText(msg.get(save ? "FILE_SAVE_TOOLTIP" : "FILE_OPEN_TOOLTIP")); chooser.setDialogType(save ? JFileChooser.SAVE_DIALOG : JFileChooser.OPEN_DIALOG); chooser.setApproveButtonText(msg.get(save ? "SAVE" : "OPEN")); chooser.setMultiSelectionEnabled(multiSelection); //chooser.setCurrentDirectory(new File(sysFn(root))); chooser.setDialogTitle(msg.get(titleKey!=null ? titleKey : save ? "FILE_SAVE" : "FILE_OPEN")); chooser.resetChoosableFileFilters(); if(filters!=null){ chooser.setAcceptAllFileFilterUsed(false); for(int i=0; i0 && result[i].indexOf(FS)>=0 && msg.showQuestionDlgObj(dlgOwner, new String[] { msg.get("filesystem_copyToRoot_1")+" "+result[i], msg.get("filesystem_copyToRoot_2"), msg.get("filesystem_copyToRoot_3"), msg.get("filesystem_copyToRoot_4"), }, "CONFIRM", "yn")==Messages.YES){ String name=stdFn(f.getName()); File destFile=new File(sysFn(getFullFileNamePath(name))); if(msg.confirmOverwriteFile(dlgOwner, destFile, "yn")==Messages.YES){ try{ OutputStream os=createSecureFileOutputStream(name); InputStream is=getInputStream(result[i]); if(StreamIO.writeStreamDlg(is, os, (int)f.length(), msg.get("filesystem_copyFile"), dlgOwner, options)) result[i]=name; else if(destFile.exists()) destFile.delete(); } catch(Exception ex){ msg.showErrorWarning(dlgOwner, "ERROR", ex); } } } } if(!done){ break; } } } else{ result=null; done=true; } } } } return result; } class SecureFileOutputStream extends FileOutputStream{ boolean closed; File tempFile; File destFile; /** Creates new SecureFileOutputStream */ private SecureFileOutputStream(File tempFile, File destFile) throws FileNotFoundException{ super(tempFile); this.tempFile=tempFile; this.destFile=destFile; closed=false; } public void close() throws IOException{ super.close(); if(!closed){ closed=true; if(destFile!=null){ boolean isCurrentFs=getFullRoot().equals(stdFn(destFile.getAbsolutePath())); if(isCurrentFs) FileSystem.this.close(); if(destFile.exists()) destFile.delete(); boolean renamed=tempFile.renameTo(destFile); if(!renamed){ System.err.println("WARNING: Unable to rename "+tempFile+" to "+destFile.getName()); } if(isCurrentFs){ try{ if(!renamed){ // Try to continue using the temp file as base changeBase(tempFile.getParent(), tempFile.getName()); } FileSystem.this.open(); } catch(Exception ex){ throw new IOException(ex.getMessage()); } } } } } } public FileOutputStream createSecureFileOutputStream(String fileName) throws IOException{ FileOutputStream result=null; File file=new File(sysFn(getFullFileNamePath(fileName))); // 27-Sept-2006: Create parent directories if they don't exists file.getParentFile().mkdirs(); // --------- // Fatal errrors detected probably caused by bad info on file.exists // Try to use SecureFileOutputStream always // //if(file.exists()){ File tmp=File.createTempFile("tmp", ".tmp", file.getParentFile()); result=new SecureFileOutputStream(tmp, file); //} else{ // result=new FileOutputStream(file); //} return result; } public static void exploreFiles(String prefix, File f, Vector v, char pathSep, FileFilter filter){ File[] files = filter==null ? f.listFiles() : f.listFiles(filter); StringBuffer sb=new StringBuffer(); for(int i=0; i=0) ch=equivalentChars.charAt(p); else ch='_'; } sb.append(ch); } result=sb.substring(0); } return result; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/fileSystem/ZipFileSystem.java0000644000175000017500000001146311377161311022702 0ustar /* * File : ZipFileSystem.java * Created : 24-sep-2001 19:48 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.fileSystem; import java.util.zip.*; import java.util.Vector; import java.io.IOException; import java.io.InputStream; import java.awt.Image; import java.awt.Toolkit; import edu.xtec.util.ResourceBridge; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class ZipFileSystem extends FileSystem { String zipName; protected boolean loaded; ExtendedZipEntry[] entries; public ZipFileSystem(ResourceBridge rb) { super("", rb); entries=null; zipName=null; loaded=false; } public ZipFileSystem(String rootPath, String zipFileName, ResourceBridge rb) { super(rootPath, rb); zipName = getCanonicalNameOf(zipFileName); entries=null; loaded=false; } public final static ZipFileSystem createZipFileSystem(String rootPath, String zipFileName, ResourceBridge rb) throws Exception { if (isStrUrl(rootPath)) return new UrlZip(rootPath, zipFileName, rb); else return new FileZip(rootPath, zipFileName, rb); } public String getFullRoot(){ return root+zipName; } public abstract class ExtendedZipEntry extends ZipEntry{ public boolean ignore; ExtendedZipEntry(ZipEntry entry){ super(entry); } public abstract byte[] getBytes() throws IOException; public abstract InputStream getInputStream() throws IOException; public String getName(){ return stdFn(super.getName()); } } public ExtendedZipEntry getEntry(String fName){ if(fName==null || fName.length()==0 || entries==null) return null; String name=getCanonicalNameOf(fName); for(int i=0; i0){ Vector v=new Vector(); for(int i=0; i0) System.arraycopy(pccBytes, (int)offset, b, 0, (int)fileSize); return b; } public void close(){ pccBytes=null; super.close(); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/fileSystem/UrlZip.java0000644000175000017500000000460311377161311021356 0ustar /* * File : UrlZip.java * Created : 25-sep-2001 10:54 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.fileSystem; import java.io.*; import java.util.zip.*; import java.util.Vector; import edu.xtec.util.ResourceBridge; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class UrlZip extends ZipFileSystem{ /** Creates new ZipFileSystem */ public UrlZip(String rootPath, String fName, ResourceBridge rb) throws Exception{ super(rootPath, fName, rb); ZipInputStream zis=new ZipInputStream(super.getInputStream(fName)); Vector v=new Vector(); ZipEntry entry; while((entry=zis.getNextEntry())!=null){ ByteArrayOutputStream baos=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int bytesRead; while((bytesRead=zis.read(buffer, 0, 1024))>0) baos.write(buffer, 0, bytesRead); v.add(new UrlZipEntry(entry, baos.toByteArray())); zis.closeEntry(); } zis.close(); entries=(UrlZipEntry[])v.toArray(new UrlZipEntry[v.size()]); } protected class UrlZipEntry extends ExtendedZipEntry{ byte[] data; UrlZipEntry(ZipEntry entry){ super(entry); data=null; } UrlZipEntry(ZipEntry entry, byte[] setData){ super(entry); data=setData; } public byte[] getBytes() throws IOException{ return data; } public InputStream getInputStream() throws IOException{ return new ByteArrayInputStream(data); } } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/fileSystem/FileBackup.java0000644000175000017500000000551311377161311022137 0ustar /* * File : FileBackup.java * Created : 14-nov-2002 15:23 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.fileSystem; import java.io.File; import java.util.Vector; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class FileBackup { File file; File backup; Vector createdDirs; static final String BAK_EXT=".bak"; /** Creates a new instance of FileBackup */ public FileBackup(File file) throws java.io.IOException{ this.file=file; if(file.exists() && file.isFile()){ backup=new File(file.getAbsolutePath()+BAK_EXT); if(backup.exists()) backup.delete(); file.renameTo(backup); } else if(!file.exists() && file.getParentFile()!=null && !file.getParentFile().exists()){ File f=file.getParentFile(); createdDirs=new Vector(2); while(f!=null && !f.exists()){ createdDirs.add(f); f=f.getParentFile(); } file.getParentFile().mkdirs(); } } public void rollback() throws java.io.IOException{ if(backup!=null){ if(file.exists()) file.delete(); backup.renameTo(file); backup=null; } else{ file.delete(); file=null; if(createdDirs!=null){ for(int i=0; i=numFiles) ? "OUT OF INDEX!" : fe[n].toString(); } public String getEntryName(int n){ return (n<0 || n>=numFiles) ? "OUT OF INDEX!" : fe[n].fileName; } public int getEntryNum(String fName){ int i=-1; String normalizedFName=stdFn(fName); if(numFiles>0){ for(i=0; iPlayer this PlayerHistory belongs to */ protected Player player; /** * This is the main member of the class. PlayerHistory puts and retrieves * on it information about the proects and activities done by the current user. */ protected Stack sequenceStack; /** * When in test mode (for instance, in the Player used by JClic author * to preview activities), jumps are only simulated. */ protected boolean testMode; /** * Creates a new PlayerHistory * @param player The Player this PlayerHistory belongs to */ public PlayerHistory(Player player) { this.player=player; sequenceStack=new Stack(); } /** * Counts the number of history elements stored in the stack * @return The number of stored elements */ public int storedElementsCount(){ return sequenceStack.size(); } /** * Removes all the elements from the history stack */ public void clearHistory(){ sequenceStack.clear(); } /** * PlayerHistory uses this inner class to store history elements. */ protected class HistoryElement{ String projectPath; String sequence; int activity; HistoryElement(String path, String seq, int act){ projectPath=path; sequence=seq; activity=act; } } /** * Adds the current Player's project and activity to the top of the * history stack. */ public void push(){ if(player.project!=null && player.project.getFullPath()!=null){ ActivitySequence ase=player.project.activitySequence; int act=ase.getCurrentActNum(); if(act>=0){ if(!sequenceStack.isEmpty()){ HistoryElement last=(HistoryElement)sequenceStack.peek(); if(last.projectPath.equals(player.project.getFullPath()) && last.activity==act) return; } sequenceStack.push(new HistoryElement(player.project.getFullPath(), ase.getSequenceForElement(act), act)); } } } /** * Retrieves the history element placed at the top of the stack (if any) and makes * the Player to load it. The obtained effect is to "rewind" or "go back", * usually to a caller menu or activity. * @return The current implementation of this method always returns true. */ public boolean pop(){ // todo: check return value if(!sequenceStack.isEmpty()){ HistoryElement e=(HistoryElement)sequenceStack.pop(); if(e.projectPath.equals(player.project.getFullPath())) player.load(null, Integer.toString(e.activity), null, null); else{ if(testMode && e.projectPath!=null && e.projectPath.length()>0){ player.getMessages().showAlert(player, new String[]{ player.getMsg("test_alert_jump_to"), e.projectPath}); } else{ player.load(e.projectPath, Integer.toString(e.activity), null, null); } } } return true; } /** * Processes the provided JumpInfo object, instructing the Player * to go back, stop or jump to another point in the sequence. * @param ji The JumpInfo object to be processed * @param allowReturn When this param is true, the jump instructed by the JumpInfo * (if any) will be recorded, in order to make possible to go back to the current activity. * @return true if the jump can be processed without errors. false otherwise. */ public boolean processJump(JumpInfo ji, boolean allowReturn){ boolean result=false; if(ji!=null && player.project!=null){ switch(ji.action){ case JumpInfo.STOP: break; case JumpInfo.RETURN: result=pop(); break; case JumpInfo.EXIT: if(testMode){ player.getMessages().showAlert(player, "test_alert_exit"); } else player.exit(ji.sequence); break; case JumpInfo.JUMP: if(ji.sequence==null && ji.projectPath==null){ ActivitySequenceElement ase=player.project.activitySequence.getElement(ji.actNum, true); if(ase!=null){ if(allowReturn) push(); //jcp.activitySequence.setCurrentAct(ji.actNum); //result=loadActivity(ase.getActivityName()); player.load(null, null, ase.getActivityName(), null); result=true; } } else{ if(testMode && ji.projectPath!=null && ji.projectPath.length()>0){ player.getMessages().showAlert(player, new String[]{ player.getMsg("test_alert_jump_to"), ji.projectPath}); } else result=jumpToSequence(ji.sequence, ji.projectPath, allowReturn); } break; } } return result; } private boolean jumpToSequence(String sequence, String path, boolean allowReturn){ if(sequence==null && path==null) return false; if(path==null) path=player.project.getFullPath(); if(!sequenceStack.isEmpty()){ HistoryElement e=(HistoryElement)sequenceStack.peek(); if(path.equals(e.projectPath)){ boolean same=sequence.equals(e.sequence); if(path.equals(player.project.getFullPath())){ ActivitySequenceElement ase=player.project.activitySequence.getElement(e.activity, false); same=(ase!=null && sequence.equals(ase.getTag())); } if(same) return pop(); } } if(allowReturn) push(); if(path.equals(player.project.getFullPath())) player.load(null, sequence, null, null); else player.load(path, sequence, null, null); return true; } /** * Getter for property testMode. * @return Value of property testMode. */ public boolean isTestMode() { return testMode; } /** * Setter for property testMode. * @param testMode New value of property testMode. */ public void setTestMode(boolean testMode) { this.testMode = testMode; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/skins/0000755000175000017500000000000011377161311016266 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/skins/Skin.java0000644000175000017500000004030211377161311020034 0ustar /* * File : Skin.java * Created : 11-oct-2001 16:09 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.skins; import edu.xtec.jclic.*; import edu.xtec.util.*; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.fileSystem.FileSystem; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import javax.swing.border.*; import java.io.InputStream; import java.io.FilterInputStream; import java.io.IOException; import java.util.HashSet; import java.util.Iterator; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class Skin extends JPanel implements ProgressInputStream.ProgressInputStreamListener{ public static final int DEFAULT_PROGRESS_WAKE_ON=1000; public static final String RESOURCE_FOLDER="skins"; public static final String RESOURCE_LIST_FILE="listskins.properties"; public static final int MAIN=0, AUX=1, MEM=2, NUM_MSG_AREAS=3; public static final String[] msgAreaNames={"main", "aux", "mem"}; public String name; public String fileName; protected AbstractButton[] buttons = new AbstractButton[Constants.NUM_ACTIONS]; protected Counter [] counters = new Counter[Constants.NUM_COUNTERS]; protected ActiveBox[] msgArea = new ActiveBox[NUM_MSG_AREAS]; protected Component player; protected PlayStation ps; protected ActiveBox msgBox; long mem; private static int waitCursorCount; protected boolean readyToPaint; public JDialog currentHelpWindow, currentAboutWindow; protected int progressMax, progress; protected boolean hasProgress, progressActive; protected long progressStartTime=0L; protected static HashSet skinStack=new HashSet(); /** Creates new Skin */ protected Skin() { super(); name=null; fileName=null; setEnabled(false); //setDoubleBuffered(true); readyToPaint=false; setLayout(null); player=null; ps=null; currentHelpWindow=null; currentAboutWindow=null; progress=0; progressMax=100; progressActive=false; hasProgress=false; skinStack.add(this); } public void emptySkinStack(){ skinStack=new HashSet(); } public void attach(Component setPlayer){ if(player!=null) detach(); player=setPlayer; add(player); /* if(player instanceof ActionListener) for(int i=0; i=Constants.NUM_COUNTERS) ? null : counters[counterId]); } public void enableCounter(int counterId, boolean bEnabled){ Counter counter=getCounter(counterId); if(counter!=null) counter.setEnabled(bEnabled); } public void resetAllCounters(boolean bEnabled){ for(int i=0; i=Constants.NUM_ACTIONS) ? null : buttons[buttonId]); } /* public void enableButton(int buttonId, boolean state){ AbstractButton button=getButton(buttonId); if(button!=null) button.setEnabled(state); } */ public Object[] getCurrentSettings(){ Object [] settings = new Object[4]; settings[0]=buttons; settings[1]=msgBox; settings[2]=counters; settings[3]=new Integer(waitCursorCount); return settings; } public void setCurrentSettings(Object[] settings){ if(settings.length>0 && settings[0]!=null){ AbstractButton[] buttonSettings=(AbstractButton[])settings[0]; for(int i=0; i1 && settings[1]!=null && msgBox!=null){ ActiveBox abSettings=(ActiveBox)settings[1]; msgBox.copyContent(abSettings); msgBox.setBoxBase((abSettings.getBoxBaseResolve())); } if(settings.length>2 && settings[2]!=null && counters!=null){ Counter[] counterSettings=(Counter[])settings[2]; for(int i=0; i3 && settings[3]!=null){ waitCursorCount=((Integer)settings[3]).intValue(); setWaitCursor(); } } protected void drawSlicedFrame(Graphics g, Rectangle dest, Rectangle source, Image img, int leftSlicer, int rightSlicer, int topSlicer, int bottomSlicer){ Rectangle rs=new Rectangle(); Rectangle rd=new Rectangle(); // first row rs.setBounds(source.x, source.y, leftSlicer, topSlicer); rd.setBounds(dest.x, dest.y, rs.width, rs.height); Utils.drawImage(g, img, rd, rs, this); rs.x+=leftSlicer; rs.width=rightSlicer-leftSlicer; rd.x+=leftSlicer; rd.width=dest.width-leftSlicer-(source.width-rightSlicer); Utils.tileImage(g, img, rd, rs, this); rs.x=source.x+rightSlicer; rs.width=source.width-rightSlicer; rd.x=dest.x+dest.width-(source.width-rightSlicer); rd.width=rs.width; Utils.drawImage(g, img, rd, rs, this); // second row rs.setBounds(source.x, source.y+topSlicer, leftSlicer, bottomSlicer-topSlicer); rd.setBounds(dest.x, dest.y+topSlicer, leftSlicer, dest.height-topSlicer-(source.height-bottomSlicer)); Utils.tileImage(g, img, rd, rs, this); rs.x+=leftSlicer; rs.width=rightSlicer-leftSlicer; rd.x+=leftSlicer; rd.width=dest.width-leftSlicer-(source.width-rightSlicer); Utils.tileImage(g, img, rd, rs, this); rs.x=source.x+rightSlicer; rs.width=source.width-rightSlicer; rd.x=dest.x+dest.width-(source.width-rightSlicer); rd.width=rs.width; Utils.tileImage(g, img, rd, rs, this); // third row rs.setBounds(source.x, source.y+bottomSlicer, leftSlicer, source.height-bottomSlicer); rd.setBounds(dest.x, dest.y+dest.height-(source.height-bottomSlicer), rs.width, rs.height); Utils.drawImage(g, img, rd, rs, this); rs.x+=leftSlicer; rs.width=rightSlicer-leftSlicer; rd.x+=leftSlicer; rd.width=dest.width-leftSlicer-(source.width-rightSlicer); Utils.tileImage(g, img, rd, rs, this); rs.x=source.x+rightSlicer; rs.width=source.width-rightSlicer; rd.x=dest.x+dest.width-(source.width-rightSlicer); rd.width=rs.width; Utils.drawImage(g, img, rd, rs, this); } public boolean hasMemMonitor(){ return msgArea[MEM]!=null; } public void setMem(long newMem){ mem=newMem; if(msgArea[MEM]!=null){ String s=new StringBuffer(Long.toString(mem/1000)).append(" Kb").substring(0); msgArea[MEM].setTextContent(s); } } public void setSystemMessage(String msg1, String msg2){ if(/*!isEnabled() ||*/ !isVisible()) return; if(msgArea[MAIN]!=null && msg1!=null){ msgArea[MAIN].setTextContent(msg1); //if(readyToPaint) // msgArea[MAIN].paintImmediatelly(); } if(msgArea[AUX]!=null){ msgArea[AUX].setTextContent(msg2==null ? "" : msg2); //if(readyToPaint) // msgArea[AUX].paintImmediatelly(); } } public void startAnimation(){ } public void stopAnimation(){ } public void setWaitCursor(boolean status){ if(status){ waitCursorCount++; } else{ waitCursorCount--; if(waitCursorCount<0){ waitCursorCount=0; } } setWaitCursor(); } public void setWaitCursor(){ setCursor( waitCursorCount>0 ? Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR) : /*Cursor.getDefaultCursor()*/ null); } public void showHelp(JComponent solution, String msg){ currentHelpWindow=new HelpWindow(this, solution, msg); currentHelpWindow.setVisible(true); currentHelpWindow=null; requestFocus(); } class HelpWindow extends ExtendedJDialog{ HelpWindow(Component parent, JComponent solution, String msg){ super(parent, ps.getMsg("help_window_caption"), true); getContentPane().setLayout(new BorderLayout()); if(solution!=null) getContentPane().add(solution, BorderLayout.CENTER); else{ JLabel lb=new JLabel(msg==null || msg.trim().length()==0 ? "?" : msg.trim()); getContentPane().add(lb, BorderLayout.NORTH); } JButton btClose=new JButton(ps.getMsg("help_window_close_button"), ResourceManager.getImageIcon("icons/exit_small.gif")); btClose.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ setVisible(false); } }); getContentPane().add(btClose, BorderLayout.SOUTH); //setLocationRelativeTo(Skin.this); pack(); Point p=null; if(solution!=null){ p=(Point)solution.getClientProperty(HelpActivityComponent.PREFERRED_LOCATION); if(p!=null){ p=new Point(p); int dx=(getWidth()-getContentPane().getWidth())/2; int dy=getHeight()-getContentPane().getHeight()-dx; p.translate(-dx, -dy); } } if(p==null) p=parent.getLocationOnScreen(); setLocation(p); } } public AboutWindow buildAboutWindow(){ return new AboutWindow(this, ps, new Dimension(500, 400)); } public void showAboutWindow(AboutWindow aw){ currentAboutWindow=aw; currentAboutWindow.setVisible(true); currentAboutWindow=null; requestFocus(); } public void requestFocus(){ if(player!=null) player.requestFocus(); } public static String[] getSystemSkinList(boolean withEmptyEntry){ java.util.Vector v=new java.util.Vector(); java.util.Properties prop=new java.util.Properties(); try{ prop.load(ResourceManager.getResourceAsStream(RESOURCE_FOLDER+"/"+RESOURCE_LIST_FILE)); } catch(Exception e){ System.err.println("Unable to open "+ResourceManager.RESOURCE_ROOT+RESOURCE_FOLDER+"/"+RESOURCE_LIST_FILE+":\n"+e); } if(withEmptyEntry) v.add(""); for(java.util.Enumeration e=prop.propertyNames(); e.hasMoreElements();){ String key=(String)e.nextElement(); String value="@"+prop.getProperty(key).trim(); v.add(value); } if(v.size()>0) return (String[])v.toArray(new String[v.size()]); else return new String[0]; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/skins/BasicSkin.java0000644000175000017500000005231611377161311021006 0ustar /* * File : BasicSkin.java * Created : 10-oct-2001 18:19 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.skins; import edu.xtec.jclic.*; import edu.xtec.jclic.misc.*; import edu.xtec.util.*; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.fileSystem.FileSystem; import java.awt.*; import java.awt.image.*; import javax.swing.*; import javax.swing.border.*; import javax.swing.event.*; import java.util.Properties; import edu.xtec.jclic.boxes.AbstractBox; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BasicSkin extends Skin { BufferedImage img; Color fillColor; int initiated; Rectangle frame; int leftSlicer, rightSlicer, topSlicer, bottomSlicer; Rectangle playerRect; Rectangle msgRect; Rectangle [] msgAreaRect = new Rectangle[NUM_MSG_AREAS]; Color textColor; Rectangle [] buttonsRect = new Rectangle[Constants.NUM_ACTIONS]; Rectangle [][] countersRect = new Rectangle[Constants.NUM_COUNTERS][]; ActiveBox[] countersLabel = new ActiveBox[Constants.NUM_COUNTERS]; AbstractBox[] boxes = new AbstractBox[NUM_BOXES]; JProgressBar progressBar; Rectangle progressBarRect; Rectangle progressAnimationRect; AnimatedActiveBox progressAnimation; boolean hideProgressBar, hideProgressAnim; static final int NUM_BOXES=2*Constants.NUM_COUNTERS+5; /** Creates new BasicSkin */ protected BasicSkin() { super(); for(int i=0; i0 && delay>=AnimatedActiveBox.MIN_DELAY){ int dx, dy; switch(direction){ case JDomUtility.DIRECTION_RIGHT: dx=1; dy=0; break; case JDomUtility.DIRECTION_LEFT: dx=-1; dy=0; break; case JDomUtility.DIRECTION_UP: dx=0; dy=-1; break; default: dx=0; dy=1; } int sx=JDomUtility.getIntAttr(child, STEP, d.width); int sy=JDomUtility.getIntAttr(child, STEP, d.height); progressAnimationRect=new Rectangle(pos, d); progressAnimation=new AnimatedActiveBox(null, this, 0, progressAnimationRect, getBoxBase(child, null)); progressAnimation.setDelay(delay); ActiveBagContent abc=new ActiveBagContent(1, frames); for(int i=0; irightSlicer) result.x+=extra.width; if(pt.y>bottomSlicer) result.y+=extra.height; return result; } Rectangle translateRect(Rectangle r){ Rectangle bounds=getBounds(); Dimension extra=new Dimension(bounds.width-frame.width, bounds.height-frame.height); Rectangle result=new Rectangle(r.x, r.y, r.width, r.height); if(r.x>rightSlicer){ result.x+=extra.width; } else{ if(r.x+r.width>leftSlicer) result.width+=extra.width; } if(r.y>bottomSlicer){ result.y+=extra.height; } else{ if(r.y+r.height>topSlicer) result.height+=extra.height; } return result; } public void setProgressMax(int max){ super.setProgressMax(max); if(progressBar!=null) progressBar.setMaximum(max); } public void setProgressValue(int value){ super.setProgressValue(value); if(progressBar!=null){ progressBar.setValue(value); if(!progressBar.isVisible() && (System.currentTimeMillis()-progressStartTime)>=DEFAULT_PROGRESS_WAKE_ON) progressBar.setVisible(true); } } public void endProgress(){ super.endProgress(); if(progressBar!=null && hideProgressBar==true) progressBar.setVisible(false); } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/skins/AboutWindow.java0000644000175000017500000002343311377161311021400 0ustar /* * File : AboutWindow.java * Created : 07-dec-2001 10:14 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.skins; import edu.xtec.jclic.Constants; import edu.xtec.jclic.PlayStation; import edu.xtec.util.*; import edu.xtec.util.StreamIO; import java.awt.Component; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.html.HTMLDocument; import java.util.Vector; import edu.xtec.util.ResourceBridge; import edu.xtec.util.StrUtils; import java.awt.Rectangle; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class AboutWindow extends edu.xtec.util.ExtendedJDialog implements HyperlinkListener{ protected ResourceBridge rb; protected JTabbedPane tPane; public AboutWindow(Component parent, ResourceBridge rb, Dimension setSize){ super(parent, rb.getMsg("about_window_caption"), true); this.rb=rb; JPanel mainPane=new JPanel(); mainPane.setLayout(new BorderLayout()); mainPane.setPreferredSize(setSize); tPane=new JTabbedPane(); mainPane.add(tPane, BorderLayout.CENTER); JPanel btPanel=new JPanel(); btPanel.setLayout(new java.awt.GridLayout(1, 2)); JButton btClose=new JButton(rb.getMsg("about_window_close_button"), ResourceManager.getImageIcon("icons/exit_small.gif")); btClose.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ setVisible(false); } }); btPanel.add(btClose); mainPane.add(btPanel, BorderLayout.SOUTH); getContentPane().add(mainPane); pack(); centerOver(parent); } public JTabbedPane getTabbedPane(){ return tPane; } public void addUrlDocumentTab(java.net.URL url, String tabTitle, Icon icon){ try{ final JEditorPane ep=new JEditorPane(url); ep.setEditable(false); ep.addHyperlinkListener(this); tPane.addTab(tabTitle, icon, new JScrollPane(ep)); javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){ ep.scrollRectToVisible(new Rectangle(0, 0)); } }); } catch(java.io.IOException ex){ System.err.println("Error building about window:\n"+ex); tPane.addTab(tabTitle, new JLabel("ERROR")); } } public void addStrDocumentTab(String src, String tabTitle, java.net.URL base, Icon icon){ final JEditorPane ep=new JEditorPane(); ep.setEditorKit(ep.getEditorKitForContentType("text/html")); if(base==null) base=getAboutUrlBase(); if(base!=null) ((HTMLDocument)ep.getDocument()).setBase(base); ep.setText(src); ep.setEditable(false); ep.addHyperlinkListener(this); tPane.addTab(tabTitle, icon, new JScrollPane(ep)); javax.swing.SwingUtilities.invokeLater(new Runnable(){ public void run(){ ep.scrollRectToVisible(new Rectangle(0, 0)); } }); } public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { final String sUrl=e.getURL().toString(); SwingUtilities.invokeLater(new Runnable(){ public void run(){ rb.displayUrl(sUrl, true); } }); } } private static java.net.URL urlBase; public static java.net.URL getAboutUrlBase(){ if(urlBase==null){ try{ java.net.URL rootDocUrl=ResourceManager.getResource("about/about.html"); String s=rootDocUrl.toString(); urlBase=new java.net.URL(s.substring(0, s.lastIndexOf('/')+1)); } catch(Exception ex){ System.err.println("Resource missing: about.html"); } } return urlBase; } public void buildAboutTab(String appName, String appVersion, String logoIcon, String creditsDoc, String otherCreditsDoc, String licenseDoc, String sponsorsDoc) throws Exception{ String doc=ResourceManager.getResourceText("about/about.html", false); if(appName==null) appName="JClic"; if(logoIcon==null) logoIcon="logo_small.png"; if(creditsDoc==null) //creditsDoc=rb.getMsg("about_creditsDoc"); creditsDoc="about/credits.html"; String credits=ResourceManager.getResourceText(creditsDoc, false); String translationCredits=rb.getMsg("html_translation_credits"); if(otherCreditsDoc==null) otherCreditsDoc=rb.getMsg("about_otherCreditsDoc"); String otherCredits=ResourceManager.getResourceText(otherCreditsDoc, false); String license=rb.getMsg("html_gpl_license"); if(licenseDoc!=null) //licenseDoc=rb.getMsg("about_licenseDoc"); license=ResourceManager.getResourceText(licenseDoc, false); if(sponsorsDoc==null) sponsorsDoc=rb.getMsg("about_sponsorsDoc"); String sponsors=ResourceManager.getResourceText(sponsorsDoc, false); java.net.URL iconUrl=ResourceManager.getResource("about/"+logoIcon); //doc=StrUtils.replace(doc, "%LOGO", logoIcon); doc=StrUtils.replace(doc, "%LOGO", iconUrl.toExternalForm()); StringBuffer sb=new StringBuffer(appName); if(appVersion!=null) sb.append(" ").append(rb.getMsg("VERSION")).append(" ").append(appVersion); doc=StrUtils.replace(doc, "%APPVERSION", sb.substring(0)); doc=StrUtils.replace(doc, "%CREDITS", credits); doc=StrUtils.replace(doc, "%TRANSLATION", translationCredits); sb.setLength(0); sb.append(rb.getMsg("about_otherCreditsCaption")).append("
 
").append(otherCredits); doc=StrUtils.replace(doc, "%OTHERCREDITS", sb.substring(0)); doc=StrUtils.replace(doc, "%LICENSE", license); sb.setLength(0); if(sponsors!=null && sponsors.length()>0) sb.append(rb.getMsg("about_sponsorsCaption")).append("
").append(sponsors); doc=StrUtils.replace(doc, "%SPONSORS", sb.substring(0)); addStrDocumentTab(doc, rb.getMsg("ABOUT"), getAboutUrlBase(), ResourceManager.getImageIcon("icons/about_small.gif")); } public void buildStandardTab(String htmlContent, String titleKey, String labelKey, String icon){ String htmlBgColor=rb.getMsg("about_window_html_bgcolor"); String htmlStyle=rb.getMsg("about_window_html_style"); String header=rb.getMsg("about_window_html_header"); StringBuffer sb=new StringBuffer(4096); sb.append(header); if(titleKey!=null){ sb.append("
").append(rb.getMsg(titleKey)).append("
"); } sb.append(htmlContent); String s=Html.table(sb.substring(0), "100%", 0, 5, -1, htmlStyle, true); addStrDocumentTab(Html.getHtmlDoc(s, htmlBgColor), rb.getMsg(labelKey), getAboutUrlBase(), ResourceManager.getImageIcon(icon)); } public String getHtmlSystemInfo(){ Messages msg=rb.getOptions().getMessages(); Html html=new Html(3000); //html.tr(true).td(msg.get("about_window_lb_version"), Html.LEFT, true, "WIDTH=\"40%\"").td(Constants.VERSION_STR, Html.LEFT, false, "WIDTH=\"60%\"").tr(false); html.doubleCell(msg.get("about_window_lb_os"), true, System.getProperty("os.name")+" "+System.getProperty("os.version")+" - "+System.getProperty("os.arch"), false); html.doubleCell(msg.get("about_window_lb_java_version"), true, System.getProperty("java.version"), false); html.doubleCell(msg.get("about_window_lb_java_vm"), true, System.getProperty("java.vm.name")+" "+System.getProperty("java.vm.version")+"\n"+System.getProperty("java.vm.vendor"), false); html.doubleCell(msg.get("about_window_lb_java_home"), true, System.getProperty("java.home"), false); html.doubleCell(msg.get("about_window_lb_free_mem"), true, msg.kValue(Runtime.getRuntime().freeMemory()), false); html.doubleCell(msg.get("about_window_lb_total_mem"), true, msg.kValue(Runtime.getRuntime().totalMemory()), false); Object o=rb.getOptions().get(Constants.MEDIA_SYSTEM); String s= Constants.JMF.equals(o) ? "Java Media Framework" //: Constants.QT.equals(o) ? "QuickTime for Java 6.0-" : Constants.QT61.equals(o) ? "QuickTime for Java 6.1+" : "-"; html.doubleCell(msg.get("about_window_lb_mediaSystem"), true, s, false); if(rb.getOptions().getBoolean(Constants.TRACE)){ java.util.Iterator it=System.getProperties().keySet().iterator(); while(it.hasNext()){ String k=(String)it.next(); html.doubleCell(k, true, System.getProperty(k), false); } } return Html.table(html.toString(), null, 0, 5, -1, null, false); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/Player.java0000644000175000017500000016550611377161311017253 0ustar /* * File : Player.java * Created : 18-dec-2000 10:21 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.bags.ActivityBagElement; import edu.xtec.jclic.bags.ActivitySequenceElement; import edu.xtec.jclic.bags.JumpInfo; import edu.xtec.jclic.boxes.ActiveBox; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.jclic.boxes.BoxConnector; import edu.xtec.jclic.boxes.Counter; import edu.xtec.jclic.clic3.Clic3; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.jclic.fileSystem.ZipFileSystem; import edu.xtec.jclic.media.ActiveMediaBag; import edu.xtec.jclic.media.ActiveMediaPlayer; import edu.xtec.jclic.media.CheckMediaSystem; import edu.xtec.jclic.media.EventSounds; import edu.xtec.jclic.media.JavaSoundAudioBuffer; import edu.xtec.jclic.media.MediaContent; import edu.xtec.jclic.misc.Utils; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.report.Reporter; import edu.xtec.jclic.skins.AboutWindow; import edu.xtec.jclic.skins.Skin; import edu.xtec.util.BrowserLauncher; import edu.xtec.util.FontCheck; import edu.xtec.util.Html; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.util.StrUtils; import edu.xtec.util.SwingWorker; import java.applet.Applet; import java.awt.Color; import java.awt.Component; import java.awt.Container; import java.awt.Cursor; import java.awt.Dialog; import java.awt.Dimension; import java.awt.Font; import java.awt.Frame; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Image; import java.awt.Point; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.Robot; import java.awt.Toolkit; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.io.ByteArrayInputStream; import java.io.File; import java.io.InputStream; import java.net.URL; import java.util.Locale; import java.util.Vector; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.KeyStroke; import javax.swing.RootPaneContainer; import javax.swing.SwingUtilities; import javax.swing.Timer; /** * Player is one of the the main classes of the JClic system. It implements the * {@link edu.xtec.jclic.PlayStation} interface, so it can read and play JClic * projects from files or streams. In order to allow activities to run, * Player provides them of all the necessary resources: media bags * (to load and realize images and other media contents), sequence control, * report system management, user interface (loading and management of skins), * display of system messages, etc. * Player is also a {@link edu.xtec.jclic.RunnableComponent}, so it can be * embedded in applets, frames and other containers. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Player extends JPanel implements Constants, RunnableComponent, PlayStation, ActionListener { // check fonts //private static final Font CHECK_ARIAL=FontCheck.checkSystemFont("Arial", "arial2.ttf"); // static fields /** * Name of the resource corresponding to the default skin of JClic. */ public static final String DEFAULT_SKIN="@default.xml"; /** * Name of the default reporter used by JClic. */ public static final String DEFAULT_REPORTER="Reporter"; /** * List of the names of the internal resources corresponding to the default * event sounds used by JClic. */ public static final String[] DEFAULT_EVENT_SOUNDS={ // MP3 /*START*/ "sounds/start.mp3", /*CLICK*/ "sounds/click.mp3", /*ACTION_ERROR*/ "sounds/action_error.mp3", /*ACTION_OK*/ "sounds/action_ok.mp3", /*FINISHED_ERROR*/ "sounds/finished_error.mp3", /*FINISHED_OK*/ "sounds/finished_ok.mp3" }; /** * List of the names of the internal resources corresponding to the default icons * associated to the basic actions defined in {@link edu.xtec.jclic.Constants}. */ public static final String[] ACTION_ICONS={ "icons/prev.gif", "icons/next.gif", "icons/return.gif", "icons/reset.gif", "icons/info_small.gif", "icons/help.gif", "icons/audio_on.gif", "icons/logo_button.gif" }; /** * The default name of the application (JClic) */ public static final String DEFAULT_APP_NAME="JClic"; /** * Array containing the {@link javax.swing.Action} objects used by the player. */ protected Action[] actions; /** * The main {@link edu.xtec.util.Messages} object. */ protected Messages messages; /** * The {@link edu.xtec.jclic.JClicProject} currently hosted by the * Player. */ protected JClicProject project; /** * The UI element (Panel)of the Activity currently * running in the Player. */ protected Activity.Panel actPanel; /** * This object manages a list with the names of all the activities * currently played by the user in this Player. */ protected PlayerHistory history; /** * Current {@link edu.xtec.jclic.skins.Skin} of the Player. */ protected Skin skin; /** * Default skin of this Player. Users can override the * DEFAULT_SKIN setting and choose another Skin to be used by * default in JClic. */ protected Skin defaultSkin; /** * Bag of realized media objects, ready to play. */ protected ActiveMediaBag activeMediaBag; /** * Current reporter used by this Player. */ protected Reporter reporter; /** * Current set of system sonds used in this Player. */ protected EventSounds eventSounds; /** * Main Timer, used to feed the time conter. This timer generates an * ActionPerformed event every second. */ protected Timer timer; /** * This flag indicates if the Player must play the sounds (including * system sounds) and other media contents of the activities. */ protected boolean audioEnabled=true; /** * This flag indicates if the program must write verbose info to the system console. */ protected boolean trace=false; /** * This flag indicates if the navigation buttons (go to next activity and * go back) are enabled o disabled. */ protected boolean navButtonsDisabled=false; /** * When this flag is true, the navigation buttons are always enabled, * despite of the indications made by the activities or the sequence control system. * Used only for debugging projects with complicated sequence chaining. */ protected boolean navButtonsAlways=false; /** * The main name of the application in wich this Player is running. */ protected String appName=DEFAULT_APP_NAME; /** * Determines if focused items of activities must be visually marked or not. */ protected boolean focusedItemMarked=false; /** * Object used for simulating mouse movements and keystrokes */ protected Robot robot=null; Timer delayedTimer; Action delayedAction; Object currentConstraints; int[] counterVal=new int[NUM_COUNTERS]; Cursor[] cursors=new Cursor[3]; Options options; Image splashImg; Point bgImageOrigin=new Point(); private SwingWorker worker=null; /** * Creates a new Player object. * @param options Options object to be used in the initialization process */ public Player(Options options) { this(options, null); } /** * Creates a new Player object that will be initially loaded with a specific * JClicProject. * @param options Options object to be used in the initialization process * @param project JClic project to load (can be null) */ public Player(Options options, JClicProject project) { this.options=options; this.project=project; init(); // TODO: Build robot and determine if focused items should be marked /* setFocusedItemMarked(true); try{ robot=new Robot(); } catch(Exception ex){ System.err.println("Unable to create Robot"); } */ } /** * Main initialization process, called once by constructors. Subclasses of * Player should override this method to initialize additional members. */ protected void init(){ options.setLookAndFeel(); CheckMediaSystem.check(options, false); setPreferredSize(new Dimension(600, 400)); setLayout(null); Utils.checkRenderingHints(options); BoxConnector.checkOptions(options); ActiveBox.checkOptions(options); for(int i=0; inull. * @param sequence Optional parameter, used only when fullPath * is not null. It * indicates the sequence where the to start. It's also possible to indicate * a string representation of a number "N". In this case, the player will * start with the activity indicated by the Nth element of the main sequence * of the project. * @return true if the player starts successfully. * false otherwise. */ public boolean start(String fullPath, String sequence){ initReporter(); if(fullPath!=null) return load(fullPath, sequence); else return false; } /** * This method is called when the container gains the focus for the first * time or after have lost it. Not used in Player. */ public void activate() { } /** * Instructs the RunnableComponent to stop working. */ public void stop(){ stopMedia(-1); } /** * * @throws Throwable */ protected void finalize() throws Throwable { end(); super.finalize(); } /** * Executes miscellaneous finalization routines. */ public void end(){ if(worker!=null){ worker.interrupt(); worker=null; } stopMedia(); closeHelpWindow(); if(actPanel!=null){ actPanel.end(); remove(actPanel); actPanel=null; } if(eventSounds!=null){ eventSounds.close(); eventSounds=null; } if(project!=null){ project.end(); project=null; } if(activeMediaBag!=null) activeMediaBag.removeAll(); if(reporter!=null){ reporter.end(); reporter=null; } } /** * Creates and initializes the members of the {@link cursors} array. */ protected void createCursors(){ try{ Toolkit tk=Toolkit.getDefaultToolkit(); cursors[HAND_CURSOR]=tk.createCustomCursor( ResourceManager.getImageIcon("cursors/hand.gif").getImage(), new Point(8,0), "hand"); cursors[OK_CURSOR]=tk.createCustomCursor( ResourceManager.getImageIcon("cursors/ok.gif").getImage(), new Point(0,0), "ok"); cursors[REC_CURSOR]=tk.createCustomCursor( ResourceManager.getImageIcon("cursors/micro.gif").getImage(), new Point(15,3), "record"); }catch(Exception e){ System.err.println("Error creating cursor:\n"+e); } } /** * Creates the {@link eventSounds} member and initializes the sound system. */ protected void createEventSounds(){ // Workaround for a JavaSound bug in Mac OS X if(options.getBoolean(Options.MAC)){ try{ JavaSoundAudioBuffer.initialize(); } catch(Exception ex){ System.err.println("Error initializing AudioBuffer lines:\n"+ex); } } // end of workaround eventSounds=new EventSounds(null); try{ for(int i=0; imessages member. */ protected Messages setMessages(){ messages=Messages.getMessages(options, DEFAULT_BUNDLE); messages.addBundle(COMMON_SETTINGS); setLocale(messages.getLocale()); Locale.setDefault(messages.getLocale()); setActionsText(); if(skin!=null){ skin.setLocale(messages.getLocale()); } return messages; } public Component getTopComponent(){ if(skin!=null) return skin; return this; } public Skin getSkin(){ return skin; } /** * * @param newSkin */ public void setSkin(Skin newSkin){ if(newSkin==null) newSkin=defaultSkin; if(newSkin!=null && !newSkin.equals(skin)){ Container top=null; Object [] currentSkinSettings=null; if(skin!=null){ currentSkinSettings=skin.getCurrentSettings(); skin.detach(); top=skin.getParent(); top.remove(skin); } newSkin.attach(this); skin=newSkin; if(top!=null){ RootPaneContainer rpc=null; while(top!=null && rpc==null){ if(top instanceof RootPaneContainer) rpc=(RootPaneContainer)top; else top=top.getParent(); } if(rpc!=null){ addTo(rpc, currentConstraints); //top.invalidate(); top.validate(); top.repaint(); } } if(currentSkinSettings!=null && skin!=null) skin.setCurrentSettings(currentSkinSettings); } } public void addTo(RootPaneContainer cont, Object constraints){ currentConstraints=constraints; if(constraints==null){ cont.getContentPane().add(getTopComponent()); } else{ cont.getContentPane().add(getTopComponent(), constraints); } } protected FileSystem createFileSystem(){ return new FileSystem(this); } protected void setProject(JClicProject p) { if(project!=null){ if(project!=p) project.end(); removeActivity(); } project=(p!=null ? p : new JClicProject(this, createFileSystem(), null)); project.realize(eventSounds, this); if(project.skin!=null) defaultSkin=project.skin; } public boolean load(String fullPath, String sequence){ load(fullPath, sequence, null, null); return true; } public void load(final String sFullPath, final String sSequence, final String sActivity, final ActivityBagElement sAbe){ if(worker!=null){ return; } worker=new SwingWorker(){ Activity.Panel actp; Exception exception=null; Player thisPlayer=Player.this; public Object construct(){ if(skin!=null) skin.startAnimation(); setWaitCursor(true); String fullPath=Clic3.pacNameToLowerCase(sFullPath); String sequence=Clic3.pacNameToLowerCase(sSequence); Activity act=null; String activityName=sActivity; ActivityBagElement abe=sAbe; FileSystem fileSystem=project.getFileSystem(); try{ // Step 1: load or create project and set a valid value for "sequence" if(fullPath!=null){ setSystemMessage(messages.get("msg_loading_project"), FileSystem.getFileNameOf(fullPath)); if(sequence==null) sequence="0"; // Check fileSystem and projectName if(fileSystem!=null){ fullPath=fileSystem.getUrl(fullPath); if(fullPath.startsWith("file://")) fullPath=fullPath.substring(7); } String projectName=null; if(fullPath.endsWith(".jclic.zip")){ fileSystem=FileSystem.createFileSystem(fullPath, thisPlayer); String[] projects=((ZipFileSystem)fileSystem).getEntries(".jclic"); if(projects==null) throw new Exception("File "+fullPath+" does not contain any jclic project"); projectName=projects[0]; } else{ fileSystem=new FileSystem(FileSystem.getPathPartOf(fullPath), thisPlayer); projectName=FileSystem.getFileNameOf(fullPath); } // Set project if(projectName.endsWith(".jclic")){ org.jdom.Document doc=fileSystem.getXMLDocument(projectName); setProject(JClicProject.getJClicProject(doc.getRootElement(), thisPlayer, fileSystem, fullPath)); if(reporter!=null) reporter.newSession(project, thisPlayer, messages); } else{ sequence=projectName; setProject(new JClicProject(thisPlayer, fileSystem, fullPath)); } } // Step 2: load ActivitySequenceElement ase if(sequence!=null){ String seqName=FileSystem.stdFn(sequence); setSystemMessage(messages.get("msg_loading_project"), FileSystem.getFileNameOf(seqName)); navButtonsDisabled=false; ActivitySequenceElement ase=project.activitySequence.getElementByTag(seqName, true); // if sequence does no exists, get existing sequence by number if(ase==null){ int i=StrUtils.getAbsIntValueOf(seqName); if(i>=0) ase=project.activitySequence.getElement(i, true); } // at this point, if ase==null the sequence was not found in project. // try load new sequence (only with Clic3 files) if(ase==null){ boolean firstPac=(project.activitySequence.getSize()==0); boolean isPcc=seqName.endsWith(".pcc"); boolean isPac=seqName.endsWith(".pac"); if(isPcc || isPac){ if(isPcc){ String path=fileSystem.root+seqName; fileSystem=FileSystem.createFileSystem(path, thisPlayer); if(firstPac){ project.setFileSystem(fileSystem); project.setFullPath(path); } else setProject(new JClicProject(thisPlayer, fileSystem, path)); firstPac=true; Clic3.readPccFile(project); ase=project.activitySequence.getCurrentAct(); } else if(isPac){ Clic3.addPacToSequence(project, seqName); ase=project.activitySequence.getElementByTag(seqName, true); } if(firstPac){ project.setName(seqName); if(reporter!=null) reporter.newSession(project, thisPlayer, messages); } } } if(ase!=null){ if(reporter!=null) reporter.newSequence(ase); activityName=ase.getActivityName(); } } // step 3: load ActivityBagElement abe if(activityName!=null){ String actName=FileSystem.stdFn(activityName); abe=project.activityBag.getElement(actName); } // step 4: load Activity act if(abe!=null){ setSystemMessage(messages.get("msg_loading_activity"), abe.getName()); act=Activity.getActivity(abe.getData(), project); } // step 5: Load activity if(act!=null){ setSystemMessage(null, messages.get("msg_preparing_media")); if(project.settings.eventSounds!=null) act.eventSounds.setParent(project.settings.eventSounds); project.mediaBag.waitForAllImages(); act.prepareMedia(thisPlayer); activeMediaBag.realizeAll(); project.activitySequence.checkCurrentActivity(abe.getName()); setSystemMessage(null, messages.get("msg_initializing")); actp=act.getActivityPanel(thisPlayer); actp.buildVisualComponents(); } } catch(Exception ex){ exception=ex; if(project==null) setProject(null); act=null; actp=null; } return actp; } public void finished(){ setWaitCursor(false); if(actPanel!=null){ actPanel.end(); remove(actPanel); actPanel=null; setCounterValue(TIME_COUNTER, 0); } if(actp!=null && worker!=null){ // moved to thread setBackgroundSettings(actp.getActivity()); add(actPanel=actp); actPanel.setCursor(null); splashImg=null; // set skin if(skin!=null) skin.resetAllCounters(false); if(actp.skin!=null) setSkin(actp.skin); else if(project.skin!=null) setSkin(project.skin); else setSkin(defaultSkin); if(skin!=null){ boolean hasReturn=(history.storedElementsCount()>0); int navBtnFlag = navButtonsAlways ? ActivitySequenceElement.NAV_BOTH : navButtonsDisabled ? ActivitySequenceElement.NAV_NONE : project.activitySequence.getNavButtonsFlag(); if(actions!=null){ actions[ACTION_NEXT].setEnabled((navBtnFlag & ActivitySequenceElement.NAV_FWD)!=0 && project.activitySequence.hasNextAct(hasReturn)); actions[ACTION_PREV].setEnabled((navBtnFlag & ActivitySequenceElement.NAV_BACK)!=0 && project.activitySequence.hasPrevAct(hasReturn)); actions[ACTION_RETURN].setEnabled(history.storedElementsCount()>0); actions[ACTION_HELP].setEnabled(actp.getActivity().helpWindowAllowed()); actions[ACTION_RESET].setEnabled(actp.getActivity().canReinit()); actions[ACTION_INFO].setEnabled(actp.getActivity().hasInfo()); } } // place activity on screen setSystemMessage(messages.get("msg_ready"), null); initActivity(); } else if(exception!=null){ String sType=null; Vector v=new Vector(); if(sFullPath!=null){ v.add(sFullPath); sType="msg_error_loading_project"; } if(sSequence!=null){ v.add(sSequence); if(sType==null) sType="msg_error_loading_sequence"; } if(sActivity!=null){ v.add(sActivity); if(sType==null) sType="msg_error_loading_activity"; } if(sAbe!=null){ v.add(sAbe.getName()); if(sType==null) sType="msg_error_loading_activity"; } if(sType==null) sType=Messages.ERROR; setSystemMessage(messages.get(sType), null); messages.showErrorWarning(thisPlayer, "err_reading_data", v, exception, null); validate(); } else{ setSystemMessage(messages.get("msg_ready"), null); } // unlock events setWindowTitle(); worker=null; if(skin!=null){ skin.stopAnimation(); skin.setEnabled(true); } setEnabled(true); } }; // Main thread, after SwingWorker was build: forceFinishActivity(); if(skin!=null) skin.setEnabled(false); setEnabled(false); worker.start(); } public void forceFinishActivity(){ if(timer!=null){ timer.stop(); delayedTimer.stop(); if(actPanel!=null){ closeHelpWindow(); actPanel.forceFinishActivity(); stopMedia(); activeMediaBag.removeAll(); if(Utils.lowMemoryCondition()){ if(trace) System.out.println(">>> LOW MEMORY! cleaning..."); project.mediaBag.clearData(); System.runFinalization(); System.gc(); } } setCursor(null); } } public void removeActivity(){ forceFinishActivity(); if(actPanel!=null){ actPanel.end(); remove(actPanel); setMsg(null); setBackgroundSettings(null); actPanel=null; } } public void initActivity(){ setWaitCursor(true); setCursor(null); timer.stop(); delayedTimer.stop(); setCounterValue(TIME_COUNTER, 0); stopMedia(); try{ if(actPanel!=null){ actPanel.initActivity(); timer.start(); if(!actPanel.getActivity().mustPauseSequence()) startAutoPassTimer(); setSystemMessage(messages.get("msg_activity_running"), null); } if(skin!=null) skin.setMem(Runtime.getRuntime().freeMemory()); } catch(Exception ex){ messages.showErrorWarning(this, "msg_error_starting_activity", ex); setSystemMessage(messages.get("ERROR"), null); } finally{ setWaitCursor(false); validate(); repaint();// } } public void startActivity(Activity.Panel ap){ setWaitCursor(true); try{ ap.startActivity(); } catch(Exception ex){ messages.showErrorWarning(this, "msg_error_starting_activity", ex); setSystemMessage(messages.get("ERROR"), null); } finally{ setWaitCursor(false); } } public void doLayout(){ if(trace) System.out.println(">>> layout!"); if(actPanel!=null){ BoxBase.resetAllFonts(); Rectangle bounds=getBounds(); Rectangle proposedRect=new Rectangle(AC_MARGIN, AC_MARGIN, bounds.width-2*AC_MARGIN, bounds.height-2*AC_MARGIN); if(actPanel.bgImage!=null && !actPanel.getActivity().tiledBgImg){ bgImageOrigin.x=(getWidth()-actPanel.bgImage.getWidth(this))/2; bgImageOrigin.y=(getHeight()-actPanel.bgImage.getHeight(this))/2; if(actPanel.getActivity().absolutePositioned){ proposedRect.x=bgImageOrigin.x; proposedRect.y=bgImageOrigin.y; proposedRect.width-=(bgImageOrigin.x-AC_MARGIN); proposedRect.height-=(bgImageOrigin.y-AC_MARGIN); proposedRect.width=Math.min(proposedRect.width, bounds.width); proposedRect.height=Math.min(proposedRect.height, bounds.height); } } actPanel.fitTo(proposedRect, bounds); } } public void paintComponent(Graphics g){ Graphics2D g2=(Graphics2D)g; if(splashImg!=null){ int x, y, imgW, imgH; g2.setColor(BG_COLOR); g2.fill(g2.getClip()); imgW=splashImg.getWidth(this); imgH=splashImg.getHeight(this); x=(getBounds().width-imgW)/2; y=(getBounds().height-imgH)/2; g2.drawImage(splashImg, x, y, this); return; } Rectangle rBounds=new Rectangle(0, 0, getWidth(), getHeight()); if(actPanel==null || actPanel.getActivity().bgGradient==null || actPanel.getActivity().bgGradient.hasTransparency()) super.paintComponent(g); if(actPanel!=null && (actPanel.getActivity().bgGradient!=null || actPanel.bgImage!=null)){ RenderingHints rh=g2.getRenderingHints(); g2.setRenderingHints(DEFAULT_RENDERING_HINTS); if(actPanel.getActivity().bgGradient!=null) actPanel.getActivity().bgGradient.paint(g2, rBounds); if(actPanel.bgImage!=null){ Rectangle r=new Rectangle(0, 0, actPanel.bgImage.getWidth(this), actPanel.bgImage.getHeight(this)); Rectangle gBounds=g2.getClipBounds(); if(!actPanel.getActivity().tiledBgImg){ r.setLocation(bgImageOrigin); if(r.intersects(gBounds)){ g2.drawImage(actPanel.bgImage, bgImageOrigin.x, bgImageOrigin.y, this); } } else{ Utils.tileImage(g2, actPanel.bgImage, rBounds, r, this); } } g2.setRenderingHints(rh); } } // Methods inherited from interface ActionListener public void actionPerformed(ActionEvent e){ String ac=null; if(timer!=null && e.getSource().equals(timer)){ incCounterValue(TIME_COUNTER); if(actPanel!=null && actPanel.getActivity().maxTime>0 && actPanel.isPlaying() && counterVal[TIME_COUNTER]>=actPanel.getActivity().maxTime){ actPanel.finishActivity(false); } return; } if(delayedTimer!=null && e.getSource().equals(delayedTimer)){ delayedTimer.stop(); if(delayedAction!=null){ delayedAction.actionPerformed(null); } } if(ac==null && (ac=e.getActionCommand())==null) return; delayedAction=null; processActionEvent(ac); } protected int getNumActions(){ return NUM_ACTIONS; } protected void buildActions(){ actions=new Action[getNumActions()]; actions[ACTION_NEXT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ history.processJump(project.activitySequence.getJump(false, reporter), false); } }; actions[ACTION_PREV]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ history.processJump(project.activitySequence.getJump(true, reporter), false); } }; actions[ACTION_RETURN]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ history.pop(); } }; actions[ACTION_RESET]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(actPanel!=null && actPanel.getActivity().canReinit()) initActivity(); } }; actions[ACTION_HELP]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(actPanel!=null) actPanel.showHelp(); } }; actions[ACTION_INFO]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ if(actPanel!=null && actPanel.getActivity().hasInfo()){ if(actPanel.getActivity().infoUrl!=null){ displayUrl(actPanel.getActivity().infoUrl, true); } else if(actPanel.getActivity().infoCmd!=null){ runCmd(actPanel.getActivity().infoCmd); } } } }; actions[ACTION_REPORTS]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ showAbout(true); } }; actions[ACTION_AUDIO]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ Object vBack=getValue(AbstractAction.DEFAULT); audioEnabled=!audioEnabled; Object vNew=audioEnabled ? Boolean.TRUE : Boolean.FALSE; if(!audioEnabled){ stopMedia(); EventSounds.globalEnabled=false; } else{ EventSounds.globalEnabled=options.getBoolean(SYSTEM_SOUNDS, true); } putValue(AbstractAction.DEFAULT, vNew); if(changeSupport!=null){ PropertyChangeEvent evt=new PropertyChangeEvent(this, "selected", vBack, vNew); changeSupport.firePropertyChange(evt); } } }; actions[ACTION_AUDIO].putValue(AbstractAction.DEFAULT, audioEnabled ? Boolean.TRUE : Boolean.FALSE); for(int i=0; i=0) actions[i].putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(kk, KeyEvent.CTRL_MASK)); } Icon icon=getActionIcon(i); if(icon!=null && !icon.equals(actions[i].getValue(Action.SMALL_ICON))) actions[i].putValue(Action.SMALL_ICON, icon); } } } } protected String getActionName(int actionId){ if(actionId<0 || actionId>=ACTION_NAME.length) return null; return ACTION_NAME[actionId]; } protected Icon getActionIcon(int actionId){ if(actionId<0 || actionId>=ACTION_ICONS.length) return null; return ResourceManager.getImageIcon(ACTION_ICONS[actionId]); } public Action getAction(int id) { if(actions==null || id<0 || id>=actions.length) return null; return actions[id]; } protected boolean processActionEvent(String ac){ return !isEnabled(); } protected void showAbout(boolean selectReportPane){ if(skin!=null){ AboutWindow aw=skin.buildAboutWindow(); try{ aw.buildAboutTab("JClic", getMsg("JCLIC_VERSION"), null, null, null, null, null); aw.buildStandardTab(aw.getHtmlSystemInfo(), "about_window_systemInfo", "about_window_lb_system", "icons/system_small.gif"); if(project!=null){ StringBuffer sb=new StringBuffer(4096); sb.append(project.settings.toHtmlString(messages)); if(actPanel!=null){ sb.append(Html.BR).append(actPanel.getActivity().toHtmlString(this)); } aw.buildStandardTab(sb.substring(0), "about_window_projectInfo", "about_window_lb_project", "icons/info_small.gif"); } if(reporter!=null){ aw.buildStandardTab(reporter.toHtmlString(messages), "about_window_reportInfo", "about_window_lb_report", "icons/report_small.gif"); if(selectReportPane) aw.getTabbedPane().setSelectedIndex(3); } skin.showAboutWindow(aw); } catch(Exception ex){ System.err.println("Error building about window!\n"+ex); } } } // Methods inherited from interface ActivityContainer public void playMedia(final MediaContent mediaContent, final ActiveBox mediaPlacement) { SwingUtilities.invokeLater(new Runnable(){ public void run(){ String s=mediaContent.mediaFileName; JumpInfo ji=null; switch(mediaContent.mediaType){ case MediaContent.RUN_CLIC_PACKAGE: ji=new JumpInfo(JumpInfo.JUMP, FileSystem.stdFn(s)); ji.projectPath=mediaContent.externalParam; history.processJump(ji, true); break; case MediaContent.RUN_CLIC_ACTIVITY: history.push(); // ----- MODIFIED 24-Feb-2009 // Treat links to activity as links to sequence // TODO: Check if this has secondary effects on existing JClic projects // if(!navButtonsAlways) // navButtonsDisabled=true; load(null, null, s, null); break; case MediaContent.RETURN: history.pop(); break; case MediaContent.EXIT: String exitUrl=mediaContent.mediaFileName; if(exitUrl!=null) exitUrl=project.getFileSystem().getUrl(exitUrl); ji=new JumpInfo(JumpInfo.EXIT, exitUrl); history.processJump(ji, false); break; case MediaContent.RUN_EXTERNAL: if(mediaContent.mediaFileName!=null){ StringBuffer sb=new StringBuffer(mediaContent.mediaFileName); if(mediaContent.externalParam!=null) sb.append(" ").append(mediaContent.externalParam); runCmd(sb.substring(0)); } break; case MediaContent.URL: if(mediaContent.mediaFileName!=null){ displayUrl(mediaContent.mediaFileName, true); } break; case MediaContent.PLAY_AUDIO: case MediaContent.PLAY_MIDI: case MediaContent.PLAY_VIDEO: case MediaContent.RECORD_AUDIO: case MediaContent.PLAY_RECORDED_AUDIO: if(audioEnabled){ ActiveMediaPlayer amp=activeMediaBag.getActiveMediaPlayer(mediaContent, project.mediaBag, Player.this); if(amp!=null){ amp.play(mediaPlacement); } } break; default: break; } } }); } protected void runCmd(String cmd){ if(options.get(Options.APPLET)!=null){ messages.showAlert(this, "msg_warn_no_exec_in_applets"); return; } try{ Runtime.getRuntime().exec(cmd, null, new File(project.getFileSystem().root)); } catch(Exception ex){ messages.showErrorWarning(this, "msg_error_executing_external", cmd, ex, null); } } public void stopMedia(){ stopMedia(-1); } public void stopMedia(int level){ activeMediaBag.stopAll(level); } public void activityFinished(boolean completedOk) { closeHelpWindow(); if(completedOk){ setCursor(getCustomCursor(OK_CURSOR)); actPanel.setCursor(null); } setSystemMessage(messages.get("msg_activity_finished"), null); timer.stop(); startAutoPassTimer(); } public void startAutoPassTimer(){ ActivitySequenceElement ase=project.activitySequence.getCurrentAct(); if(ase!=null && ase.delay>0 && !delayedTimer.isRunning() && !navButtonsDisabled){ delayedAction=actions[ACTION_NEXT]; delayedTimer.setInitialDelay(ase.delay * 1000); delayedTimer.start(); } } protected void setBackgroundSettings(Activity act){ setBackground(act!=null ? act.bgColor : Color.lightGray); bgImageOrigin.setLocation(0, 0); repaint(); } public void setMsg(ActiveBoxContent abc) { ActiveBox ab=null; if(skin!=null) ab=skin.getMsgBox(); if(ab!=null){ ab.clear(); ab.setContent(abc==null ? ActiveBoxContent.getEmptyContent() : abc); } } public void playMsg() { if(skin!=null && skin.getMsgBox()!=null){ skin.getMsgBox().playMedia(this); } } public void incCounterValue(int counterId){ counterVal[counterId]++; Counter c=null; if(skin!=null && (c=skin.getCounter(counterId))!=null) c.setValue(counterVal[counterId]); if(counterId==ACTIONS_COUNTER && actPanel!=null && actPanel.getActivity().maxActions>0 && actPanel.isPlaying() && counterVal[ACTIONS_COUNTER]>=actPanel.getActivity().maxActions){ actPanel.finishActivity(false); } } public void setCountDown(int counterId, int maxValue){ Counter c=null; if(skin!=null && (c=skin.getCounter(counterId))!=null) c.setCountDown(maxValue); } public void setCounterValue(int counterId, int newValue) { counterVal[counterId]=newValue; Counter c=null; if(skin!=null && (c=skin.getCounter(counterId))!=null) c.setValue(newValue); } public int getCounterValue(int counterId) { return counterVal[counterId]; } public void setCounterEnabled(int counterId, boolean bEnabled) { if(skin!=null){ skin.enableCounter(counterId, bEnabled); setCountDown(counterId, 0); } } public Messages getMessages(){ return (messages==null ? setMessages() : messages); } public void setWaitCursor(boolean state) { if(skin!=null){ skin.setWaitCursor(state); } } public void setSystemMessage(String msg1, String msg2) { if(skin!=null) skin.setSystemMessage(msg1, msg2); if(trace) System.out.println("MSG "+(msg1==null ? "" : msg1 + " ")+(msg2==null ? "" : msg2)); } public JComponent getComponent(){ return this; } public ActiveMediaPlayer getActiveMediaPlayer(MediaContent mediaContent){ if(activeMediaBag!=null && mediaContent!=null) return activeMediaBag.getActiveMediaPlayer(mediaContent, project.mediaBag, this); else return null; } /** Gets the custom cursor corresponding to the indicated type * @param type Type of cursor. * @return The requested cursor, or the default system cursor if not found. */ public Cursor getCustomCursor(int type) { if(type>=0 && type=0){ incCounterValue(ACTIONS_COUNTER); setCounterValue(SCORE_COUNTER, currentScore); } } public void reportEndActivity(Activity act, boolean solved){ if(reporter!=null && act.includeInReports) reporter.endActivity(counterVal[SCORE_COUNTER], counterVal[ACTIONS_COUNTER], solved); } public boolean showHelp(JComponent hlpComponent, String hlpMsg) { if(skin!=null){ skin.showHelp(hlpComponent, hlpMsg); return true; } return false; } public InputStream getProgressInputStream(InputStream is, int expectedLength, String name){ if(skin!=null && is!=null && !(is instanceof ByteArrayInputStream)){ is=skin.getProgressInputStream(is, expectedLength, name); } return is; } public Options getOptions(){ return options; } public PlayerHistory getHistory(){ return history; } public void displayUrl(String url, boolean inFrame){ if(url!=null){ url=project.getFileSystem().getUrl(url); try{ displayUrl(new URL(url), inFrame); } catch(Exception ex){ System.err.println("Unable to invoque URL "+url+"\n"+ex); } } } public void displayUrl(URL url, boolean inFrame){ if(url==null) return; Applet applet=options.getApplet(); try{ if(applet!=null){ if(inFrame){ String frame=(String)options.get(INFO_URL_FRAME); if(frame==null) frame="_BLANK"; applet.getAppletContext().showDocument(url, frame); } else{ end(); applet.getAppletContext().showDocument(url); } } else{ BrowserLauncher.openURL(url.toExternalForm()); } }catch(Exception ex){ System.err.println("Unable to invoque URL "+url+"\n"+ex); } } public void exit(){ exit(null); } public void exit(String url){ final String sUrl=(url==null ? options.getString(EXIT_URL) : url); SwingUtilities.invokeLater(new Runnable(){ public void run(){ if(sUrl!=null){ displayUrl(sUrl, false); } if(options.getApplet()==null){ try{ end(); Frame fr=JOptionPane.getFrameForComponent(getTopComponent()); if(fr!=null) fr.dispose(); else System.exit(0); } catch(Exception ex){ System.err.println("Unable to exit!\n"+ex); } } } }); } public void requestFocus(){ if(actPanel!=null) actPanel.requestFocus(); } public String getMsg(String key) { return messages.get(key); } public void doAutoStart() { } public boolean newInstanceRequest(final String param1, final String param2) { boolean result=false; if(param1!=null){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ Frame frame=JOptionPane.getFrameForComponent(Player.this); if(frame!=null) frame.toFront(); load(param1, param2); } }); result=true;; } return result; } public boolean windowCloseRequested() { return true; } public void setWindowTitle(String docTitle){ Window w=Options.getWindowForComponent(this); if(w!=null){ StringBuffer sb=new StringBuffer(); String s=StrUtils.nullableString(docTitle); if(s!=null) sb.append(s).append(" - "); sb.append(appName); if(w instanceof Frame) ((Frame)w).setTitle(sb.substring(0)); else if(w instanceof Dialog) ((Dialog)w).setTitle(sb.substring(0)); } } public void setWindowTitle(){ StringBuffer sb=new StringBuffer(); String prjName=project==null ? null : StrUtils.nullableString(project.getPublicName()); String actName=actPanel==null ? null : StrUtils.nullableString(actPanel.getActivity().getPublicName()); if(actName!=null){ sb.append(actName); if(prjName!=null) sb.append(" ["); } if(prjName!=null){ sb.append(prjName); if(actName!=null) sb.append("]"); } setWindowTitle(sb.substring(0)); } /** * Getter for property focusedItemsMarked. * @return Value of property focusedItemsMarked. */ public boolean isFocusedItemMarked() { return focusedItemMarked; } /** * Setter for property focusedItemsMarked. * @param focusedItemsMarked New value of property focusedItemsMarked. */ public void setFocusedItemMarked(boolean focusedItemMarked) { this.focusedItemMarked = focusedItemMarked; } /** * Getter for property robot. * @return Value of property robot. */ public Robot getRobot() { return robot; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/shapers/0000755000175000017500000000000011377161311016604 5ustar jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/shapers/Rectangular.java0000644000175000017500000000332111377161311021715 0ustar /* * File : Rectangular.java * Created : 10-may-2001 16:53 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import java.awt.geom.*; import java.awt.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Rectangular extends Shaper { public Rectangular(int nx,int ny){ super(nx, ny); } public boolean rectangularShapes(){ return true; } protected void buildShapes(){ int r, c; double w=WIDTH/nCols; double h=HEIGHT/nRows; double x, y; for(r=0; r=nCells || shapeData[n]==null) return null; return shapeData[n].getShape(rect); } public ShapeData getShapeData(int n){ return (n>=0 && n0 && n!=nRows) reset(nCols, n); } public int getNumColumns(){ return nCols; } public void setNumColumns(int n){ if(n>0 && n!=nCols) reset(nRows, n); } public int getNumCells(){ return nCells; } public static final String SYSTEM_LIST="shapers.listshapers"; public static java.util.Vector getSystemShaperList(Options options){ java.util.Vector result=new java.util.Vector(); try{ result=TripleString.getTripleList(SYSTEM_LIST, options, false, true, true); } catch(Exception ex){ System.err.println("Error reading list of shapers!\n"+ex); } return result; } public Object clone() throws CloneNotSupportedException { Shaper clon=(Shaper)super.clone(); clon.shapeData=(ShapeData[])shapeData.clone(); for(int i=0; i0) initiated=true; } public boolean hasRemainder(){ return showEnclosure; } protected ShapeData getEnclosingShapeData(){ if(!showEnclosure) return null; return enclosingShapeData!=null ? enclosingShapeData : super.getEnclosingShapeData(); } public Object clone() throws CloneNotSupportedException { Holes clon=(Holes)super.clone(); if(enclosingShapeData!=null) enclosingShapeData=(ShapeData)enclosingShapeData.clone(); return clon; } public void removeShape(int iIndex){ if (shapeData==null || iIndex<0 || iIndex>=shapeData.length) return; ShapeData[] newShapeData=new ShapeData[shapeData.length-1]; System.arraycopy(shapeData,0,newShapeData,0,iIndex); System.arraycopy(shapeData,iIndex+1,newShapeData,iIndex,shapeData.length-iIndex-1); nCells=newShapeData.length; shapeData=newShapeData; } public void addShape(ShapeData sd){ ShapeData[] newShapeData=new ShapeData[shapeData.length+1]; System.arraycopy(shapeData,0,newShapeData,0,shapeData.length); newShapeData[shapeData.length]=sd; nCells=newShapeData.length; shapeData=newShapeData; } public void modifyShape(int iIndex, ShapeData sd){ if (iIndex>=0 && iIndex0) e.setAttribute(COMMENT, comment); StringBuffer sb=new StringBuffer(); int j=0; if(primitiveType>=0 && primitivePoints!=null){ writeToSb(sb, PRIMITIVES[primitiveType], primitivePoints, j, primitivePoints.length, scaleW, scaleH); } else{ if(windingRule!=PathIterator.WIND_NON_ZERO) e.setAttribute(RULE, Integer.toString(windingRule)); for(int i=0; i0) sb.append(DELIM_CHAR[0]); switch(descriptors[i]){ case PathIterator.SEG_MOVETO: type=MOVE_TO; k=2; break; case PathIterator.SEG_LINETO: type=LINE_TO; k=2; break; case PathIterator.SEG_QUADTO: type=QUAD_TO; k=4; break; case PathIterator.SEG_CUBICTO: type=CUBIC_TO; k=6; break; default: break; } writeToSb(sb, type, points, j, k, scaleW, scaleH); j+=k; } } e.addContent(sb.substring(0)); return e; } public static ShapeData getShapeData(org.jdom.Element e, double scaleW, double scaleH) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); ShapeData sd=new ShapeData(); sd.comment=JDomUtility.getStringAttr(e, COMMENT, sd.comment, false); sd.setWindingRule(JDomUtility.getIntAttr(e, RULE, sd.windingRule)); StringTokenizer st=new StringTokenizer(e.getText(), DELIMS); while(st.hasMoreTokens()){ String s=st.nextToken(); for(int k=0; k=ROUND_RECT ? 6 : 4, scaleW, scaleH); Shape sh=null; switch(k){ case RECTANGLE: sh=new Rectangle2D.Double(data[0], data[1], data[2], data[3]); break; case ELLIPSE: sh=new Ellipse2D.Double(data[0], data[1], data[2], data[3]); break; case ROUND_RECT: sh=new RoundRectangle2D.Double(data[0], data[1], data[2], data[3], data[4], data[5]); break; case ARC: sh=new Arc2D.Double(data[0], data[1], data[2], data[3], data[4]*scaleW, data[5]*scaleH, Arc2D.PIE); break; default: throw new Exception("unknown primitive shape!"); } if(sh!=null) return getShapeData(sh, sd.comment); } } if(s.equals(MOVE_TO)){ sd.addDescriptor(PathIterator.SEG_MOVETO); sd.addData(decodeData(st, 2, scaleW, scaleH)); } else if(s.equals(LINE_TO)){ sd.addDescriptor(PathIterator.SEG_LINETO); sd.addData(decodeData(st, 2, scaleW, scaleH)); } else if(s.equals(QUAD_TO)){ sd.addDescriptor(PathIterator.SEG_QUADTO); sd.addData(decodeData(st, 4, scaleW, scaleH)); } else if(s.equals(CUBIC_TO)){ sd.addDescriptor(PathIterator.SEG_CUBICTO); sd.addData(decodeData(st, 6, scaleW, scaleH)); } else if(s.equals(CLOSE)){ sd.addDescriptor(PathIterator.SEG_CLOSE); } else{ throw new IllegalArgumentException("Unknown ShapeData type: "+s); } } return sd; } private static java.text.DecimalFormat DF; private void writeToSb(StringBuffer sb, String type, double[] values, int j, int k, double scaleW, double scaleH){ sb.append(type); if(k>0){ if(DF==null){ DF=new java.text.DecimalFormat("0.0#####"); java.text.DecimalFormatSymbols dfs=new java.text.DecimalFormatSymbols(); dfs.setDecimalSeparator('.'); DF.setDecimalFormatSymbols(dfs); } sb.append(DELIM_CHAR[1]); for(int w=0; w0) sb.append(DELIM_CHAR[2]); sb.append(s); } } } private void addDescriptor(int descriptor){ if(descriptorsIndex+1>=descriptors.length){ int[] d2=new int[descriptors.length+CAPACITY_BLOCK]; for(int i=0; i=points.length){ double[] d2=new double[points.length+2*CAPACITY_BLOCK]; for(int i=0; i=0){ Area a=scan(null, x, y); Shape sh=a; if(a.isRectangular()) sh=a.getBounds2D(); shapeDataX[j]=ShapeData.getShapeData(sh, null); shapeDataX[j].scaleTo(nx, ny); j++; } } if(!useIds){ int maxId=0; for(int i=0; imaxId) maxId=newIds[i]; int nCells=maxId+1; h.nCells=nCells; h.shapeData=new ShapeData[nCells]; for(int i=0; i0 && !flagDone[x-1][y] && ids[x-1][y]==id) scan(a, x-1, y); if(y>0 && !flagDone[x][y-1] && ids[x][y-1]==id) scan(a, x, y-1); if(y<(ny-1) && !flagDone[x][y+1] && ids[x][y+1]==id) scan(a, x, y+1); } return a; } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/shapers/ClassicJigSaw.java0000644000175000017500000000534211377161311022141 0ustar /* * File : ClassicJigSaw.java * Created : 13-may-2001 20:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import java.awt.geom.*; import java.awt.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ClassicJigSaw extends JigSaw{ /** Creates new ClassicJigSaw */ public ClassicJigSaw(int nx,int ny) { super(nx, ny); } protected double getDefaultBaseWidthFactor(){return 3f/4;} protected double getDefaultToothHeightFactor(){return 3f/5;} protected int getBaseFactor(){return 85;} protected void hLine(ShapeData sd, int type, double x, double y, double w, double h, boolean inv){ int kx=inv ? -1 : 1; int ky=(type==1 ? 1 : -1); if(type==0){ sd.lineTo(x+w*kx, y); } else{ double x0=x+((w-w*baseWidthFactor)/2)*kx; double wb=((w*baseWidthFactor)/12)*kx; sd.lineTo(x0, y); double hb=((h*toothHeightFactor)*ky)/8; sd.cubicTo(x0+4*wb, y, x0+6*wb, y-hb, x0+4*wb, y-3*hb); sd.cubicTo(x0+2*wb, y-5*hb, x0+10*wb, y-5*hb, x0+8*wb, y-3*hb); sd.cubicTo(x0+6*wb, y-1*hb, x0+8*wb, y, x0+12*wb, y); sd.lineTo(x+w*kx, y); } } protected void vLine(ShapeData sd, int type, double x, double y, double w, double h, boolean inv){ int ky=inv ? -1 : 1; int kx=(type==1 ? 1 : -1); if(type==0){ sd.lineTo(x, y+h*ky); } else{ double y0=y+((h-h*baseWidthFactor)/2)*ky; double hb=((h*baseWidthFactor)/12)*ky; sd.lineTo(x, y0); double wb=((w*toothHeightFactor)*kx)/8; sd.cubicTo(x, y0+4*hb, x-wb, y0+6*hb, x-3*wb, y0+4*hb); sd.cubicTo(x-5*wb, y0+2*hb, x-5*wb, y0+10*hb, x-3*wb, y0+8*hb); sd.cubicTo(x-1*wb, y0+6*hb, x, y0+8*hb, x, y0+12*hb); sd.lineTo(x, y+h*ky); } } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/shapers/JigSaw.java0000644000175000017500000001266211377161311020642 0ustar /* * File : JigSaw.java * Created : 10-may-2001 18:31 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import edu.xtec.util.JDomUtility; import java.awt.geom.*; import java.awt.*; import edu.xtec.util.Options; import edu.xtec.jclic.boxes.BoxBase; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JigSaw extends Shaper { protected double baseWidthFactor; protected double toothHeightFactor; protected boolean randomLines; public JigSaw(int nx,int ny) { super(nx, ny); baseWidthFactor=getDefaultBaseWidthFactor(); toothHeightFactor=getDefaultToothHeightFactor(); randomLines=false; } protected int getBaseFactor(){return 50;} public String getEditorPanelClassName(){ return getClass().getPackage().getName()+".JigSawEditorPanel"; } protected double getDefaultBaseWidthFactor(){return 1f/3;} protected double getDefaultToothHeightFactor(){return 1f/6;} protected static final String BASE_WIDTH_FACTOR="baseWidthFactor", TOOTH_HEIGHT_FACTOR="toothHeightFactor", RANDOM_LINES="randomLines"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); if(baseWidthFactor!=getDefaultBaseWidthFactor()){ e.setAttribute(BASE_WIDTH_FACTOR, Double.toString(baseWidthFactor)); } if(toothHeightFactor!=getDefaultToothHeightFactor()){ e.setAttribute(TOOTH_HEIGHT_FACTOR, Double.toString(toothHeightFactor)); } if(randomLines) e.setAttribute(RANDOM_LINES, JDomUtility.boolString(randomLines)); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ initiated=false; baseWidthFactor=JDomUtility.getDoubleAttr(e, BASE_WIDTH_FACTOR, baseWidthFactor); toothHeightFactor=JDomUtility.getDoubleAttr(e, TOOTH_HEIGHT_FACTOR, toothHeightFactor); randomLines=JDomUtility.getBoolAttr(e, RANDOM_LINES, randomLines); } protected void buildShapes(){ int[][] hLineType=new int[nRows+1][nCols+1]; int[][] vLineType=new int[nRows+1][nCols+1]; for(int row=0; rowActiveBox. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBoxContent extends Object implements Cloneable, Domable{ public BoxBase bb=null; public Dimension dimension=null; public Boolean border=null; public String text=null; public String imgName=null; public Shape imgClip=null; public MediaContent mediaContent=null; public int[] imgAlign=new int[]{JDomUtility.ALIGN_MIDDLE,JDomUtility.ALIGN_MIDDLE}; public int[] txtAlign=new int[]{JDomUtility.ALIGN_MIDDLE,JDomUtility.ALIGN_MIDDLE}; public boolean avoidOverlapping=false; public int id=-1; public int item=-1; public Image img=null; // static fields protected static ActiveBoxContent EMPTY_CONTENT; // transient properties public Object userData=null; public String rawText=null; public String htmlText=null; public String innerHtmlText=null; public boolean animated=false; public ActiveMediaPlayer amp=null; protected void copyRawDataFrom(ActiveBoxContent src){ bb=src.bb; dimension=src.dimension; border=src.border; text=src.text; imgName=src.imgName; imgClip=src.imgClip; mediaContent=src.mediaContent; imgAlign=src.imgAlign; txtAlign=src.txtAlign; avoidOverlapping=src.avoidOverlapping; id=src.id; item=src.item; img=src.img; userData=src.userData; rawText=src.rawText; htmlText=src.htmlText; innerHtmlText=src.innerHtmlText; animated=src.animated; amp=src.amp; } /** Creates new ActiveBoxContent */ public ActiveBoxContent() { } public static ActiveBoxContent getEmptyContent(){ if(EMPTY_CONTENT==null) EMPTY_CONTENT=new ActiveBoxContent(); return EMPTY_CONTENT; } public static final String ELEMENT_NAME="cell"; protected static final String ID="id", ITEM="item", WIDTH="width", HEIGHT="height", BORDER="border", IMAGE="image", TXTALIGN="txtAlign", IMGALIGN="imgAlign", AVOID_OVERLAPPING="avoidOverlapping"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); if(id!=-1) e.setAttribute(ID, Integer.toString(id)); if(item!=-1) e.setAttribute(ITEM, Integer.toString(item)); JDomUtility.setAlignProp(e, TXTALIGN, txtAlign, true); JDomUtility.setAlignProp(e, IMGALIGN, imgAlign, true); if(avoidOverlapping) e.setAttribute(AVOID_OVERLAPPING, JDomUtility.boolString(avoidOverlapping)); if(dimension!=null){ e.setAttribute(WIDTH, Integer.toString(dimension.width)); e.setAttribute(HEIGHT, Integer.toString(dimension.height)); } if(border!=null) e.setAttribute(BORDER, JDomUtility.boolString(border.booleanValue())); if(imgName!=null) e.setAttribute(IMAGE, imgName); if(bb!=null) e.addContent(bb.getJDomElement()); if(mediaContent!=null) e.addContent(mediaContent.getJDomElement()); if(text!=null) JDomUtility.setParagraphs(e, text); return e; } public static final int EMPTY_CELL=0, ONLY_ID=1, HAS_CONTENT=2; public int testCellContents(){ if(JDomUtility.isDefaultAlign(txtAlign) && JDomUtility.isDefaultAlign(imgAlign) && !avoidOverlapping && dimension==null && border==null && imgName==null && bb==null && mediaContent==null && (text==null || text.length()==0)){ return ((id==-1 && item==-1) ? EMPTY_CELL : ONLY_ID); } return HAS_CONTENT; } public static ActiveBoxContent getActiveBoxContent(org.jdom.Element e, MediaBag mediaBag) throws Exception{ ActiveBoxContent abc=new ActiveBoxContent(); abc.setProperties(e, mediaBag); return abc; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); MediaBag mediaBag=(MediaBag)aux; org.jdom.Element child=null; id=JDomUtility.getIntAttr(e, ID, id); item=JDomUtility.getIntAttr(e, ITEM, item); if(e.getAttribute(JDomUtility.HALIGN)!=null || e.getAttribute(JDomUtility.VALIGN)!=null){ // old version!!! txtAlign[0]=JDomUtility.getHAlign(e, txtAlign[0]); txtAlign[1]=JDomUtility.getVAlign(e, txtAlign[1]); imgAlign[0]=txtAlign[0]; imgAlign[1]=txtAlign[1]; } else{ txtAlign=JDomUtility.getAlignProp(e, TXTALIGN, txtAlign); imgAlign=JDomUtility.getAlignProp(e, IMGALIGN, imgAlign); } avoidOverlapping=JDomUtility.getBoolAttr(e, AVOID_OVERLAPPING, avoidOverlapping); dimension=JDomUtility.getDimensionAttr(e, WIDTH, HEIGHT, dimension); border=JDomUtility.getBooleanAttr(e, BORDER, border); imgName=FileSystem.stdFn(e.getAttributeValue(IMAGE)); if((child=e.getChild(BoxBase.ELEMENT_NAME))!=null) setBoxBase(BoxBase.getBoxBase(child)); if((child=e.getChild(MediaContent.ELEMENT_NAME))!=null) mediaContent=MediaContent.getMediaContent(child); setTextContent(JDomUtility.getParagraphs(e)); if(mediaBag!=null) realizeContent(mediaBag); } public static void listReferences(org.jdom.Element e, HashMap map){ if(e!=null){ String s=e.getAttributeValue(IMAGE); if(s!=null && s.length()>0) map.put(s, Constants.MEDIA_OBJECT); org.jdom.Element child=e.getChild(MediaContent.ELEMENT_NAME); if(child!=null) MediaContent.listReferences(child, map); } } public Object clone(){ ActiveBoxContent abc=null; try{ abc=(ActiveBoxContent)super.clone(); abc.txtAlign=new int[]{txtAlign[0], txtAlign[1]}; abc.imgAlign=new int[]{imgAlign[0], imgAlign[1]}; } catch(Exception ex){ System.err.println("Unexpected error cloning ActiveBoxContent!"); } return abc; } public void realizeContent(MediaBag mediaBag) throws Exception{ //todo: check global img and imgclip //img=null; //animated=false; if(imgName!=null){ MediaBagElement mbe=mediaBag.getImageElement(imgName); if(mbe!=null){ img=mbe.getImage(); animated=mbe.animated; } } if(mediaContent!=null){ mediaContent.registerContentTo(mediaBag); if(img==null && (text==null || text.length()==0)){ String s=mediaContent.getIconName(); img=ResourceManager.getImageIcon("icons/"+s).getImage(); } } checkHtmlText(mediaBag); } public boolean isEmpty(){ return (text==null && img==null); } public boolean isEquivalent(ActiveBoxContent abc, boolean checkCase){ if(abc==this) return true; boolean result=false; if(abc!=null){ if(isEmpty() && abc.isEmpty()) result=(id==abc.id); else result=(text==null ? abc.text==null : (checkCase ? text.equals(abc.text) : text.equalsIgnoreCase(abc.text))) && (mediaContent==null ? abc.mediaContent==null : mediaContent.isEquivalent(abc.mediaContent)) && (img == abc.img) && (imgClip==null ? abc.imgClip==null : imgClip.equals(abc.imgClip)); } return result; } public boolean equals(Object o){ boolean result=(o==this); if(!result && o!=null && o instanceof ActiveBoxContent){ ActiveBoxContent abc=(ActiveBoxContent)o; result = isEquivalent(abc, true) && ((bb==null && abc.bb==null) || (bb!=null && bb.equals(abc.bb))) && txtAlign[0]==abc.txtAlign[0] && txtAlign[1]==abc.txtAlign[1] && imgAlign[0]==abc.imgAlign[0] && imgAlign[1]==abc.imgAlign[1] && avoidOverlapping==abc.avoidOverlapping; } return result; } public void setTextContent(String tx){ // only plain text! if(tx!=null){ rawText=new String(tx); text=new String(tx); checkHtmlText(null); } else{ rawText=null; text=null; htmlText=null; innerHtmlText=null; } } protected void checkHtmlText(MediaBag mediaBag){ htmlText=null; innerHtmlText=null; if(text!=null && text.substring(0).toLowerCase().startsWith("")){ htmlText=new String(text); if(mediaBag!=null){ FileSystem fs=mediaBag.getProject().getFileSystem(); String path=fs.root; if(!fs.isUrlBased()) path="file:"+FileSystem.sysFn(path); htmlText=StrUtils.replace(htmlText, "SRC=\"", "SRC=\""+path); htmlText=StrUtils.replace(htmlText, "src=\"", "src=\""+path); } String s=htmlText.substring(0).toLowerCase(); if(s.indexOf(""); if(s2>=0){ innerHtmlText=htmlText.substring(6, s2); } } } } public void setImgContent(Image setImg, Shape setImgClip){ img=setImg; imgName=null; imgClip=setImgClip; } public void setImgAlign(int[] align){ imgAlign[0]=align[0]; imgAlign[1]=align[1]; } public void setImgAlign(int h, int v){ imgAlign[0]=h; imgAlign[1]=v; } public void setTxtAlign(int[] align){ txtAlign[0]=align[0]; txtAlign[1]=align[1]; } public void setTxtAlign(int h, int v){ txtAlign[0]=h; txtAlign[1]=v; } public void prepareMedia(PlayStation ps){ if(mediaContent!=null) amp=ps.getActiveMediaPlayer(mediaContent); else amp=null; } public void setBoxBase(BoxBase boxBase){ bb=boxBase; } public void setDimension(Dimension d){ dimension=d; } public Dimension getDimension(){ return dimension; } public void setBorder(boolean b){ border=new Boolean(b); } public void copyStyleTo(ActiveBoxContent abc){ if(abc!=null){ abc.setBoxBase(bb); if(border!=null) abc.setBorder(border.booleanValue()); } } public String getDescription(){ StringBuffer result=new StringBuffer(); if(text!=null && text.length()>0) result.append(text); else if(imgName!=null) result.append("IMG:").append(imgName); else if(imgClip!=null){ Rectangle r=imgClip.getBounds(); result.append("[").append(r.x).append(",").append(r.y).append(","); result.append(r.width).append(",").append(r.height).append("]"); } if(mediaContent!=null){ if(result.length()>0) result.append(' '); result.append(mediaContent.getDescription()); } return result.substring(0); } } jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/boxes/BoxBag.java0000644000175000017500000003110211377161311020261 0ustar /* * File : BoxBag.java * Created : 10-sep-2001 10:13 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.jclic.Activity; import edu.xtec.jclic.Constants; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.awt.image.ImageObserver; import java.util.ArrayList; import javax.swing.JComponent; /** * A BoxBag is a class derived from {@link edu.xtec.jclic.boxes.AbstractBox} that contains * a collection of "boxes" (objects also derived from AbstractBox). The boxes are stores into * a protected {@link java.util.ArrayList}. The class implements methods to add, remove and * retrieve boxes, and to manage some of its properties like visibility, status, location * and size. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BoxBag extends AbstractBox implements Cloneable, Resizable { protected ArrayList cells= new ArrayList(12); protected Rectangle2D preferredBounds=new Rectangle2D.Double(); protected AbstractBox backgroundBox=null; /** Creates new ActiveBoxBag */ public BoxBag(AbstractBox parent, JComponent container, BoxBase boxBase) { super(parent, container, boxBase); preferredBounds.setRect(getBounds()); } public Object clone(){ BoxBag dBB=(BoxBag)super.clone(); dBB.preferredBounds=(Rectangle2D)preferredBounds.clone(); dBB.cells=new ArrayList(); for(int i=0; i=cells.size()) ? null : (AbstractBox)cells.get(id); } public AbstractBox getBackgroundBox(){ return backgroundBox; } public void setBackgroundBox(AbstractBox bx){ backgroundBox=bx; if(backgroundBox!=null){ add(backgroundBox); backgroundBox.setParent(this); } preferredBounds.setRect(getBounds()); } public void recalcSize(){ Rectangle2D r=new Rectangle2D.Double(x, y, 0, 0); if(backgroundBox!=null) r.add(backgroundBox); for(int i=0; i0 && height>0 && (x!=newX || y!=newY || width!=newWidth || height!=newHeight)){ if(!r.isEmpty() && !r.equals(this)){ double scaleW=r.getWidth()/width; double scaleH=r.getHeight()/height; double dx=r.getX()-x; double dy=r.getY()-y; for(int i=0; i=0; i--){ bx=getBox(i); if(bx.isVisible() && bx.contains(p)) return bx; } return null; } public int countInactiveCells(){ int n=0; for(int i=0; imaxSize.width || minSize.height>maxSize.height){ maxSize=minSize; } // compute scale factor double scale=1; if(d.width>maxSize.width){ scale=(double)maxSize.width/d.width; } if((scale*d.height)>maxSize.height){ scale=(double)maxSize.height/d.height; } // resize bg d=rs.getScaledSize(scale); rs.setBounds(margin, margin, d.width, d.height); // restore margins d.width+=2*margin; d.height+=2*margin; return d; } public static Dimension layoutDouble(Dimension desiredMaxSize, Resizable rsA, Resizable rsB, int boxGridPos, int margin){ // number of horizontally and vertically grids boolean isHLayout=false; int nbh=1, nbv=1; switch(boxGridPos){ case Activity.AB: case Activity.BA: nbh=2; nbv=1; isHLayout=true; break; case Activity.AUB: case Activity.BUA: nbh=1; nbv=2; isHLayout=false; break; } Rectangle2D ra=rsA.getBounds2D(); Rectangle2D rb=rsB.getBounds2D(); // optimal dimensions Dimension da=rsA.getPreferredSize(); Dimension db=rsB.getPreferredSize(); Dimension d=new Dimension( isHLayout ? da.width+db.width : Math.max(da.width, db.width), isHLayout ? Math.max(da.height, db.height) : da.height+db.height ); // minimal dimensions Dimension minSizeA=rsA.getMinimumSize(); Dimension minSizeB=rsB.getMinimumSize(); Dimension minSize=new Dimension( isHLayout ? minSizeA.width+minSizeB.width : Math.max(minSizeA.width, minSizeB.width), isHLayout ? Math.max(minSizeA.height, minSizeB.height) : minSizeA.height+minSizeB.height ); // maximal dimension Dimension maxSize=desiredMaxSize; // remove margins maxSize.width-=(1+nbh)*margin; maxSize.height-=(1+nbv)*margin; // correct maxSize if less than minSize if(minSize.width>maxSize.width || minSize.height>maxSize.height){ maxSize.setSize(minSize); } // compute scale factor double scale=1; if(d.width>maxSize.width){ scale=(double)maxSize.width/d.width; } if((scale*d.height)>maxSize.height){ scale=(double)maxSize.height/d.height; } // correct possible minimal infractions // ... // resize da=rsA.getScaledSize(scale); db=rsB.getScaledSize(scale); // margins to center one box relatove to the other int dah, dav, dbh, dbv; dah=db.width>da.width ? (db.width-da.width)/2 : 0; dbh=da.width>db.width ? (da.width-db.width)/2 : 0; dav=db.height>da.height ? (db.height-da.height)/2 : 0; dbv=da.height>db.height ? (da.height-db.height)/2 : 0; switch(boxGridPos){ case Activity.AB: rsA.setBounds(margin, margin+dav, da.width, da.height); rsB.setBounds(2*margin+da.width, margin+dbv, db.width, db.height); break; case Activity.BA: rsB.setBounds(margin, margin+dbv, db.width, db.height); rsA.setBounds(2*margin+db.width, margin+dav, da.width, da.height); break; case Activity.AUB: rsA.setBounds(margin+dah, margin, da.width, da.height); rsB.setBounds(margin+dbh, 2*margin+da.height, db.width, db.height); break; case Activity.BUA: rsB.setBounds(margin+dbh, margin, db.width, db.height); rsA.setBounds(margin+dah, 2*margin+db.height, da.width, da.height); break; default: rsA.setBounds((int)(margin+scale*ra.getX()), (int)(margin+scale*ra.getY()), da.width, da.height); rsB.setBounds((int)(margin+scale*rb.getX()), (int)(margin+scale*rb.getY()), da.width, da.height); break; } // recompute d adding margins Rectangle r=new Rectangle(rsA.getBounds()); r.add(rsB.getBounds()); d.width=r.width+2*margin; d.height=r.height+2*margin; return d; } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/boxes/ActiveBoxBag.java0000644000175000017500000001555411377161311021432 0ustar /* * File : ActiveBoxBag.java * Created : 13-dec-2000 12:09 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import java.awt.geom.Point2D; import javax.swing.JComponent; /** * This class is a special case of {@link edu.xtec.jclic.boxes.BoxBag}, containing only * {@link edu.xtec.jclic.boxes.ActiveBox} objects. In addition to the members and * methods of BoxBag, it implements specific methods to deal with * {@link edu.xtec.jclic.boxes.ActiveBagContent} objects and with other specific * members of {@link edu.xtec.jclic.boxes.ActiveBox}, like its "ids" (idOrder, * idLoc and idAss). * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActiveBoxBag extends BoxBag implements Cloneable { /** Creates new ActiveBoxBag */ public ActiveBoxBag(AbstractBox parent, JComponent container, BoxBase boxBase){ super(parent, container, boxBase); } public final void addActiveBox(ActiveBox bx){ bx.idLoc=cells.size(); bx.idOrder=bx.idLoc; super.addBox(bx); } public ActiveBox getActiveBox(int idLoc){ return (ActiveBox)super.getBox(idLoc); } public ActiveBox getBackgroundActiveBox(){ return (ActiveBox)getBackgroundBox(); } public void setContent(ActiveBagContent abc){ setContent(abc, null); } public void setContent(ActiveBagContent abc, ActiveBagContent altAbc){ setContent(abc, altAbc, 0, 0, getNumCells()); } public void setContent(ActiveBagContent abc, ActiveBagContent altAbc, int fromIndex, int toCell, int numCells){ ActiveBox bx; for(int i=0; i=2){ Point2D[] pos=new Point2D[nc]; int[] idLoc=new int[nc]; for(int i=0; i=0) break; } return i; } }jclic-0.2.1.0.orig/src/core/edu/xtec/jclic/boxes/BoxBase.java0000644000175000017500000002622311377161311020452 0ustar /* * File : BoxBase.java * Created : 12-dec-2000 11:28 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.boxes; import edu.xtec.jclic.Constants; import edu.xtec.jclic.misc.Gradient; import edu.xtec.util.Domable; import edu.xtec.util.FontCheck; import edu.xtec.util.JDomUtility; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Stroke; import java.awt.geom.AffineTransform; /** * This class contains all the main visual attributes needed to draw * {@link edu.xtec.jclic.boxes.AbstractBox} objects: background and foreground color * and gradient, colors for special states (inactive, alternative, disabled...), * mrgins, fonts, strokes for borders, etc. Objects derived from AbstractBox * can have inheritance: boxes that act as "containers" of other boxes * (like {@link edu.xtec.jclic.boxes.BoxBag}). Most of the attributes of BoxBase * can be null, meaning that the value of the ancestor, or a default value * if the box has no ancestors, must be taken. * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BoxBase extends Object implements Cloneable, Domable{ private Font originalFont; public Color backColor; public Gradient bgGradient; public Color textColor; public Color shadowColor; public Color borderColor; public Color inactiveColor; public Color alternativeColor; public boolean shadow; public boolean transparent; public int textMargin; protected BasicStroke borderStroke, markerStroke; private Font font; private float dynFontSize; private static final float REDUCE_FONT_STEP=1; public static final float MIN_FONT_SIZE=8; private static int resetAllFontsCounter=0; public static boolean flagFontReduced=false; private int resetFontCounter; public static final Stroke DEFAULT_STROKE=new BasicStroke(1); public static final Color DEFAULT_BACK_COLOR=Color.lightGray; public static final Color DEFAULT_TEXT_COLOR=Color.black; public static final Color DEFAULT_SHADOW_COLOR=Color.gray; public static final Color DEFAULT_INACTIVE_COLOR=Color.gray; public static final Color DEFAULT_ALTERNATIVE_COLOR=Color.gray; public static final Color DEFAULT_BORDER_COLOR=Color.black; public static final float DEFAULT_BORDER_STROKE_WIDTH=0.75f; public static final BasicStroke DEFAULT_BORDER_STROKE=new BasicStroke(DEFAULT_BORDER_STROKE_WIDTH); public static final float DEFAULT_MARKER_STROKE_WIDTH=2.75f; public static final BasicStroke DEFAULT_MARKER_STROKE=new BasicStroke(DEFAULT_MARKER_STROKE_WIDTH); // default font will be build on first call to getDefaultFont(); private static Font DEFAULT_FONT=null; public static BoxBase DEFAULT_BOX_BASE=new BoxBase(); /** Creates new BoxBase */ public BoxBase() { //setFont(new Font(null)); setFont(getDefaultFont()); dynFontSize=font.getSize2D(); backColor=DEFAULT_BACK_COLOR; bgGradient=null; textColor=DEFAULT_TEXT_COLOR; shadowColor=DEFAULT_SHADOW_COLOR; inactiveColor=DEFAULT_INACTIVE_COLOR; alternativeColor=DEFAULT_ALTERNATIVE_COLOR; borderColor=DEFAULT_BORDER_COLOR; shadow=false; transparent=false; textMargin=Constants.AC_MARGIN; resetFontCounter=resetAllFontsCounter; borderStroke=DEFAULT_BORDER_STROKE; markerStroke=DEFAULT_MARKER_STROKE; } public Object clone(){ BoxBase result=null; try{ result=(BoxBase)super.clone(); if(bgGradient!=null) result.bgGradient=(Gradient)bgGradient.clone(); result.setFont(originalFont); }catch(Exception ex){ System.err.println("Unexpected error cloning BoxBase!"); } return result; } public boolean equals(Object o){ if(o==null) return false; boolean result=(o==this); if(!result && o instanceof BoxBase){ BoxBase bb=(BoxBase)o; result=originalFont.equals(bb.originalFont) && backColor.equals(bb.backColor) && ((bgGradient==null && bb.bgGradient==null) || (bgGradient!=null && bgGradient.equals(bb.bgGradient))) && textColor.equals(bb.textColor) && shadowColor.equals(bb.shadowColor) && borderColor.equals(bb.borderColor) && inactiveColor.equals(bb.inactiveColor) && alternativeColor.equals(bb.alternativeColor) && shadow==bb.shadow && transparent==bb.transparent && textMargin==bb.textMargin && borderStroke.equals(bb.borderStroke) && markerStroke.equals(bb.markerStroke); } return result; } public static final Font getDefaultFont(){ if(DEFAULT_FONT==null) DEFAULT_FONT=FontCheck.getValidFont("Arial", Font.PLAIN, 17); return DEFAULT_FONT; } public static final String ELEMENT_NAME="style"; public static final String COLOR="color", FOREGROUND="foreground", BACKGROUND="background", SHADOW="shadow", INACTIVE="inactive", ALTERNATIVE="alternative", BORDER="border", TRANSPARENT="transparent", MARGIN="margin", BORDER_STROKE="borderStroke", MARKER_STROKE="markerStroke"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); //if(originalFont!=null) e.addContent(JDomUtility.fontToElement(originalFont)); if(!getDefaultFont().equals(originalFont)) e.addContent(JDomUtility.fontToElement(originalFont)); org.jdom.Element ce=new org.jdom.Element(COLOR); if(!textColor.equals(DEFAULT_TEXT_COLOR)) ce.setAttribute(FOREGROUND, JDomUtility.colorToString(textColor)); if(!backColor.equals(DEFAULT_BACK_COLOR)) ce.setAttribute(BACKGROUND, JDomUtility.colorToString(backColor)); if(!shadowColor.equals(DEFAULT_SHADOW_COLOR)) ce.setAttribute(SHADOW, JDomUtility.colorToString(shadowColor)); if(!inactiveColor.equals(DEFAULT_INACTIVE_COLOR)) ce.setAttribute(INACTIVE, JDomUtility.colorToString(inactiveColor)); if(!alternativeColor.equals(DEFAULT_ALTERNATIVE_COLOR)) ce.setAttribute(ALTERNATIVE, JDomUtility.colorToString(alternativeColor)); if(!borderColor.equals(DEFAULT_BORDER_COLOR)) ce.setAttribute(BORDER, JDomUtility.colorToString(borderColor)); if(!ce.getAttributes().isEmpty()) e.addContent(ce); if(bgGradient!=null) e.addContent(bgGradient.getJDomElement()); if(shadow) e.setAttribute(SHADOW, JDomUtility.boolString(shadow)); if(transparent) e.setAttribute(TRANSPARENT, JDomUtility.boolString(transparent)); if(textMargin!=Constants.AC_MARGIN) e.setAttribute(MARGIN, Integer.toString(textMargin)); if(borderStroke.getLineWidth()!=DEFAULT_BORDER_STROKE_WIDTH) e.setAttribute(BORDER_STROKE, Float.toString(borderStroke.getLineWidth())); if(markerStroke.getLineWidth()!=DEFAULT_MARKER_STROKE_WIDTH) e.setAttribute(MARKER_STROKE, Float.toString(markerStroke.getLineWidth())); return e; } public static BoxBase getBoxBase(org.jdom.Element e) throws Exception { BoxBase bb=new BoxBase(); bb.setProperties(e, null); return bb; } public void setProperties(org.jdom.Element e, Object aux) throws Exception { JDomUtility.checkName(e, ELEMENT_NAME); org.jdom.Element child; String s; if((child=e.getChild(JDomUtility.FONT))!=null){ setFont(JDomUtility.elementToFont(child)); } if((child=e.getChild(COLOR))!=null){ textColor=JDomUtility.getColorAttr(child, FOREGROUND, textColor); backColor=JDomUtility.getColorAttr(child, BACKGROUND, backColor); shadowColor=JDomUtility.getColorAttr(child, SHADOW, shadowColor); inactiveColor=JDomUtility.getColorAttr(child, INACTIVE, inactiveColor); alternativeColor=JDomUtility.getColorAttr(child, ALTERNATIVE, alternativeColor); borderColor=JDomUtility.getColorAttr(child, BORDER, borderColor); } shadow=JDomUtility.getBoolAttr(e, SHADOW, shadow); transparent=JDomUtility.getBoolAttr(e, TRANSPARENT, transparent); textMargin=JDomUtility.getIntAttr(e, MARGIN, textMargin); if((s=e.getAttributeValue(BORDER_STROKE))!=null) setBorderWidth(Float.parseFloat(s)); if((s=e.getAttributeValue(MARKER_STROKE))!=null) setMarkerWidth(Float.parseFloat(s)); if((child=e.getChild(Gradient.ELEMENT_NAME))!=null) bgGradient=Gradient.getGradient(child); } public Stroke getBorder(){ return borderStroke; } public float getBorderWidth(){ return borderStroke.getLineWidth(); } public void setBorderWidth(float w){ borderStroke=new BasicStroke(w); } public Stroke getMarker(){ return markerStroke; } public float getMarkerWidth(){ return markerStroke.getLineWidth(); } public void setMarkerWidth(float w){ markerStroke=new BasicStroke(w); } public static void resetAllFonts(){ resetAllFontsCounter++; } public void setFont(Font newFont){ if(newFont!=null){ font=newFont; dynFontSize=font.getSize(); originalFont=font.deriveFont(new AffineTransform()); } } public void resetFont(){ resetFontCounter=resetAllFontsCounter-1; } public Font getFont(){ if(resetFontCounter
\n
 
\n"); if(msg!=null) sb.append(msg); minimalPage("ERROR: "+err, sb.substring(0)); } public void redirect(String url) throws Exception{ head.contentType=null; head.code=MOVED_PERM; head.title="Moved permanently"; StringBuffer sb=new StringBuffer(100); sb.append("http://"); String serverAddress=socket.getLocalAddress().getHostAddress(); if(serverAddress==null || "0.0.0.0".equals(serverAddress)) serverAddress=java.net.InetAddress.getLocalHost().getHostAddress(); sb.append(serverAddress); sb.append(":").append(socket.getLocalPort()).append("/").append(url); String fullUrl=sb.substring(0); sb.setLength(0); sb.append("Location: ").append(fullUrl); head.extra=sb.substring(0); head.write(); sb.setLength(0); sb.append("redirected to:
").append(fullUrl).append(""); minimalPage("redirect", sb.substring(0)); } public class ResponseHead{ public String contentType; public int code, contentLength; public String title, extra; public boolean cache; public boolean commited; public ResponseHead(){ contentType=MIME_HTML; code=OK; cache=true; commited=false; contentLength=-1; } public void write(){ StringBuffer sb=new StringBuffer(200); sb.append("HTTP/1.0 "); sb.append(code).append(" ").append(title==null ? "OK" : title); pw.println(sb.substring(0)); if(extra!=null) pw.println(extra); if(contentType!=null){ sb.setLength(0); pw.println(sb.append("Content-Type: ").append(contentType).substring(0)); } sb.setLength(0); pw.println(sb.append("Date: ").append(RequestProcessor.httpDate(new java.util.Date())).substring(0)); pw.println("Server: JClicHttpServer 1.0"); if (!cache){ pw.println("Pragma: no-cache");//HTTP/1.0 pw.println("Cache-Control: no-cache");//HTTP/1.1 pw.println("Expires: 0"); } if(cookies.size()>0){ sb.setLength(0); sb.append("Set-Cookie: "); Iterator it=cookies.keySet().iterator(); boolean first=true; while(it.hasNext()){ String key=(String)it.next(); if(!first) sb.append(";"); else first=false; sb.append(key).append("=").append(cookies.get(key)); } pw.println(sb.substring(0)); } if(contentLength>0){ sb.setLength(0); pw.println(sb.append("Content-Length: ").append(contentLength).substring(0)); } pw.println(""); pw.flush(); commited=true; } } public void minimalPage(String title, String text) throws Exception{ StringBuffer sb=new StringBuffer(1024); sb.append("\n"); sb.append("\n\n"); if(title!=null) sb.append("").append(title).append("\n"); sb.append("\n\n"); sb.append("

").append(title).append("

\n"); sb.append(text); sb.append("\n\n"); pw.println(sb.substring(0)); os.flush(); commited=true; } } jclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/0000755000175000017500000000000011377161311021152 5ustar jclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/0000755000175000017500000000000011377161311022761 5ustar ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_de.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_de.prope0000644000175000017500000000643511377161311030642 0ustar error_serverCannotStart=Server kann nicht gestartet werden! error_incorrectData=Falsche Daten! column_IP_title=IP column_port_title=Port column_started_title=Hergestellt column_lastMessage_title=Letzte Nachricht column_IP_tooltip=IP Adresse des Client column_port_tooltip=Lokaler Port f\u00FCr diese Verbindung column_started_tooltip=Datum und Zeitpunkt zu dem die Verbindung hergestellt wurde column_lastMessage_tooltip=Header der letzten empfangenen Nachricht error_propertiesFile_beg=Configurationsdatei kann nicht geladen werden " error_propertiesFile_end=" Standardeinstellungen verwenden. form_title=JClic Datenbank form_connections_title=Verbindungen: form_messages_title=Systemmeldungen: form_settings_title=Einstellungen: form_connections_close=Verbindung schlie\u00DFen form_connections_close_tooltip=Ausgew\u00E4hlte Verbindung schlie\u00DFen form_settings_driver=Treiber: form_settings_driver_tooltip=JDBC Treiber, der zum Herstellen der Verbindung mit der Datenbank verwendet wird form_settings_database=Datenbank: form_settings_database_tooltip=Name der JClic Datenbank form_settings_port=Port: form_settings_port_tooltip=TCP Port, \u00FCber den die Verbingung zum Server hergestellt wird form_settings_password_tooltip=Passwort f\u00FCr Zugriff auf DB-System form_settings_password=Passwort: form_settings_user_tooltip=Username f\u00FCr Zugriff auf Datenbank form_settings_user=User: ERROR=FEHLER form_settings_timeout=Timeout: form_settings_timeout_tooltip=Erlaubte Ruhezeit (in Sekunden), nach der die Verbindung getrennt wird form_btn_start=Beginnen form_btn_stop=Beenden form_btn_exit=Beenden form_btn_exit_tooltip=Verbindung zum Server schlie\u00DFen und Programm herunterfahren form_btn_stop_tooltip=Alle Verbindungen schlie\u00DFen und Server beenden form_btn_start_tooltip=Clients auflisten form_messages_verbose=Details anzeigen form_messages_verbose_tooltip=Alle Nachrichten anzeigen form_messages_copy=In Zwischenablage kopieren form_messages_copy_tooltip=Kopiert Inhalte des Fensters in die Zwischenablage form_messages_clear=L\u00F6schen form_messages_clear_tooltip=L\u00F6scht alle Nachrichten aus dem Fenster error_DB=Gew\u00FCnschter Vorgang kann nicht fertiggestellt werden settings_title=Einstellungen f\u00FCr JClic Datenbank settings_options_title=Optionen settings_options_language=Sprache: settings_options_look=Erscheinungsbild: settings_db_title=Datenbank settings_db_driver=Treiber: settings_options_tooltips=Tooltips settings_db_url=URL: settings_db_usr=DB User settings_db_pwd=Passwort: settings_server_title=Datenbank settings_server_timeout=Timeout: settings_server_port=Port: settings_server_autostart=Autostart settings_web_title=Webserver settings_server_logFile=History in Logfile eintragen : settings_button=Einstellungen... error_writting_settings=Fehler beim Eintragen der Konfigurationseinstellungen! form_btn_show=Browser \u00F6ffnen... error_starting_browser=Fehler beim \u00D6ffnen des Browsers! error_opening_logs=Fehler beim \u00D6ffnen der Log-Files! settings_file=Datei... settings_tablePrefix=Pr\u00E4fix der Tabelle: settings_createTables=Verzeichnisse erstellen wenn nicht vorhanden settings_session_lifetime=H\u00F6chstdauer f\u00FCr inaktive Sitzung (in Minuten): settings_browser=Bevorzugter Browser: settings_browser_tooltip=Befehl zum Starten des Browsers (Firefox, IE, Mozilla, Opera,...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt.prope0000644000175000017500000000661511377161311030675 0ustar error_serverCannotStart=Imposs\u00EDvel iniciar servidor! error_incorrectData=Dados incorrectos! column_IP_title=IP column_port_title=Porta column_started_title=Iniciado column_lastMessage_title=\u00DAltima mensagem column_IP_tooltip=Endere\u00E7o IP do cliente column_port_tooltip=Porta local usada nesta liga\u00E7\u00E3o column_started_tooltip=Data e hora em que a liga\u00E7\u00E3o foi iniciada column_lastMessage_tooltip=Cabe\u00E7alho da \u00FAltima mensagem recebida error_propertiesFile_beg=Imposs\u00EDvel carregar o ficheiro de propriedades " error_propertiesFile_end=". A usar as defini\u00E7\u00F5es padr\u00E3o. form_title=Servidor de relat\u00F3rios JClic form_connections_title=Liga\u00E7\u00F5es: form_messages_title=Mensagens de sistema: form_settings_title=Defini\u00E7\u00F5es: form_connections_close=Fechar liga\u00E7\u00E3o form_connections_close_tooltip=Fechar a liga\u00E7\u00E3o seleccionada form_settings_driver=Controlador: form_settings_driver_tooltip=Controlador JDBC a usar para ligar-se \u00E0 base de dados form_settings_database=Base de dados: form_settings_database_tooltip=Nome da base de dados de relat\u00F3rios form_settings_port=Porta: form_settings_port_tooltip=Porta TCP em que o servidor escutar\u00E1 as conex\u00F5es form_settings_password_tooltip=BD palavras-chave do sistema form_settings_password=Palavra-chave: form_settings_user_tooltip=BD utilizadores do sistema form_settings_user=Utilizador: ERROR=ERRO form_settings_timeout=Tempo-limite: form_settings_timeout_tooltip=Tempo m\u00E1ximo em segundos permitido \u00E0s conex\u00F5es form_btn_start=Iniciar form_btn_stop=Parar form_btn_exit=Sair form_btn_exit_tooltip=Parar servidor e desligar programa form_btn_stop_tooltip=Fechar todas as conex\u00F5es e parar servidor form_btn_start_tooltip=Iniciar atendimento de clientes form_messages_verbose=Descritivo form_messages_verbose_tooltip=Mostrar todas as mensagens form_messages_copy=Copiar para a \u00E1rea de transfer\u00EAncia form_messages_copy_tooltip=Copiar o conte\u00FAdo da consola para a \u00E1rea de transfer\u00EAncia form_messages_clear=Limpar form_messages_clear_tooltip=Limpar a janela de mensagens error_DB=A ac\u00E7\u00E3o solicitada n\u00E3o pode ser completada settings_title=Defini\u00E7\u00F5es do servidor de relat\u00F3rios Jclic settings_options_title=Op\u00E7\u00F5es settings_options_language=Idioma: settings_options_look=Aspecto: settings_db_title=Base de dados settings_db_driver=Controlador: settings_options_tooltips=Sugest\u00F5es settings_db_url=URL: settings_db_usr=Utilizador da base de dados: settings_db_pwd=Palavra-chave: settings_server_title=Servidor de relat\u00F3rios settings_server_timeout=Tempo-limite: settings_server_port=Porto: settings_server_autostart=Arranque autom\u00E1tico settings_web_title=Servidor Web settings_server_logFile=Escrever logs para ficheiro settings_button=Defini\u00E7\u00F5es... error_writting_settings=Erro ao escrever no ficheiro de configura\u00E7\u00E3o! form_btn_show=Iniciar navegador... error_starting_browser=Erro ao iniciar o navegador! error_opening_logs=Erro ao abrir ficheiros de log! settings_file=Ficheiro... settings_tablePrefix=Prefixo dos nomes da tabela settings_createTables=Criar tabelas se n\u00E3o existirem settings_session_lifetime=Tempo restante da sess\u00E3o (minutos): settings_browser=Navegador web preferido: settings_browser_tooltip=Comando usado para iniciar o navegador web (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_es.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_es.prope0000644000175000017500000000676511377161311030667 0ustar error_serverCannotStart=\u00A1No se ha podido poner en marcha el servidor! error_incorrectData=\u00A1Datos incorrectos! column_IP_title=IP column_port_title=Puerto column_started_title=Iniciado column_lastMessage_title=\u00DAltimo mensaje column_IP_tooltip=Direcci\u00F3n IP del cliente column_port_tooltip=Puerto local utilizado en esta conexi\u00F3n column_started_tooltip=Fecha y hora en la que se inici\u00F3 la conexi\u00F3n column_lastMessage_tooltip=Cabecera del \u00FAltimo mensaje recibido error_propertiesFile_beg=No se ha podido abrir el archivo de inicializaci\u00F3n " error_propertiesFile_end=". Usando valores por defecto. form_title=Servidor de informes JClic form_connections_title=Conexiones: form_messages_title=Mensajes de sistema: form_settings_title=Configuraci\u00F3n: form_connections_close=Cerrar conexi\u00F3n form_connections_close_tooltip=Cerrar la conexi\u00F3n seleccionada form_settings_driver=Controlador: form_settings_driver_tooltip=Controlador JDBC que se utilizar\u00E1 para acceder a l base de datos form_settings_database=Base de datos: form_settings_database_tooltip=Nombre de la base de datos de informes form_settings_port=Puerto: form_settings_port_tooltip=Puerto TCP en el que el servidor atiende las peticiones form_settings_password_tooltip=Contrase\u00F1a del usuario con el que se accede a la base de datos form_settings_password=Contrase\u00F1a: form_settings_user_tooltip=Nombre de usuario con el que se acceder\u00E1 a la base de datos form_settings_user=Usuario: ERROR=ERROR form_settings_timeout=Timeout: form_settings_timeout_tooltip=M\u00E1ximo tiempo de inactividad permitido antes de cerrar una conexi\u00F3n, en segundo form_btn_start=Iniciar form_btn_stop=Parar form_btn_exit=Salir form_btn_exit_tooltip=Parar el servidor y cerrar el programa form_btn_stop_tooltip=Cerrar todas las conexiones y parar el servidor form_btn_start_tooltip=Empezar a atender a los clientes form_messages_verbose=Mostrar informaci\u00F3n ampliada form_messages_verbose_tooltip=Muestra todos los mensajes form_messages_copy=Copiar form_messages_copy_tooltip=Copia el contenido de la c\u00F3nsola en la memoria form_messages_clear=Limpiar form_messages_clear_tooltip=Limpia la ventana de mensajes error_DB=La acci\u00F3n solicitada no se ha podido completar settings_title=Configuraci\u00F3n del servidor de informes JClic settings_options_title=Opciones settings_options_language=Idioma: settings_options_look=Apariencia: settings_db_title=Base de datos settings_db_driver=Controlador: settings_options_tooltips=Etiquetas de ayuda settings_db_url=URL: settings_db_usr=Usuario de la base de datos settings_db_pwd=Contrase\u00F1a: settings_server_title=Servidor de informes settings_server_timeout=Tiempo m\u00E1ximo de espera: settings_server_port=Puerto: settings_server_autostart=Arranque autom\u00E1tico settings_web_title=Servidor web settings_server_logFile=Escribir logs en el archivo: settings_button=Configuraci\u00F3n... error_writting_settings=\u00A1Error al escribir el archivo de configuraci\u00F3n! form_btn_show=Iniciar el navegador... error_starting_browser=Error al iniciar el navegador\\! error_opening_logs=\u00A1Error al abrir los archivos de registro! settings_file=Archivo... settings_tablePrefix=Prefijo de los nombers de las tablas: settings_createTables=Crear tablas si no existen settings_session_lifetime=Duraci\u00F3n m\u00E1xima de una sesi\u00F3n inactiva (minutos): settings_browser=Navegador preferido: settings_browser_tooltip=Orden utilizada para lanzar el navegador (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_fr.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_fr.prope0000644000175000017500000000660711377161311030662 0ustar error_serverCannotStart=Impossible de d\u00E9marrer le serveur \\! error_incorrectData=Donn\u00E9e incorrecte \\! column_IP_title=IP column_port_title=Port column_started_title=D\u00E9marr\u00E9 column_lastMessage_title=Dernier message column_IP_tooltip=Adresse IP client column_port_tooltip=Port local utilis\u00E9 dans cette connexion column_started_tooltip=Date et heure auxquelles la connexion a d\u00E9marr\u00E9 column_lastMessage_tooltip=En-t\u00EAte du dernier message re\u00E7u error_propertiesFile_beg=Impossible de charger le fichier des propri\u00E9t\u00E9s " error_propertiesFile_end=" Utilisation des param\u00E8tres par d\u00E9faut. form_title=Serveur de rapports JClic form_connections_title=Connexions: form_messages_title=Messages system: form_settings_title=param\u00E8tres: form_connections_close=Fermer connexion form_connections_close_tooltip=Fermer la connexion s\u00E9lectionn\u00E9e form_settings_driver=Driver: form_settings_driver_tooltip=Driver JDBC \u00E0 utiliser pour se connecter \u00E0 la base form_settings_database=Base de donn\u00E9es: form_settings_database_tooltip=Nom de la base de donn\u00E9es de rapports form_settings_port=Port: form_settings_port_tooltip=Port TCP o\u00F9 le serveur \u00E9coutera les connexions form_settings_password_tooltip=System DB mot de passe form_settings_password=Mot de passe: form_settings_user_tooltip=Nom d'utilisateur System DB form_settings_user=Utilisateur: ERROR=ERREUR form_settings_timeout=Timeout: form_settings_timeout_tooltip=Secondes maximales d'inactivit\u00E9 allou\u00E9es aux connexions form_btn_start=D\u00E9marrer form_btn_stop=Stop form_btn_exit=Quitter form_btn_exit_tooltip=Arr\u00EAter le serveur et arr\u00EAter le programme form_btn_stop_tooltip=Fermer toutes les connexions et arr\u00EAter le serveur form_btn_start_tooltip=Commencer la veille pour les clients form_messages_verbose=Verbose form_messages_verbose_tooltip=Afficher tous les messages form_messages_copy=Copier dans le presse-papiers form_messages_copy_tooltip=Copier la console de sortie vers le presse-papiers form_messages_clear=Effacer form_messages_clear_tooltip=Efface la console de sortie error_DB=L'action requise ne peut \u00EAtre termin\u00E9e settings_title=Param\u00E8tres du serveur de rapports JClic settings_options_title=Options settings_options_language=Langue: settings_options_look=Apparence: settings_db_title=Base de donn\u00E9es settings_db_driver=Driver: settings_options_tooltips=Outils settings_db_url=URL: settings_db_usr=Utilisateur DB: settings_db_pwd=Mot de passe: settings_server_title=Serveur de rapports settings_server_timeout=Timeout: settings_server_port=Port: settings_server_autostart=D\u00E9marrage automatique settings_web_title=serveur Web settings_server_logFile=Ecrire les connexions dans le fichier: settings_button=Param\u00E8tres... error_writting_settings=Erreur d'\u00E9criture du fichier param\u00E8tres \\! form_btn_show=Lancer l'explorateur... error_starting_browser=Erreur au lancement de l'explorateur \\! error_opening_logs=Erreur \u00E0 l'ouverture des fichiers log \\! settings_file=Fichier... settings_tablePrefix=Pr\u00E9fixe des noms de table: settings_createTables=Cr\u00E9er les tables si elles n'existent pas settings_session_lifetime=Dur\u00E9e de vie d'une session (minutes): settings_browser=Explorateur pr\u00E9f\u00E9r\u00E9: settings_browser_tooltip=Commande utilis\u00E9e pour lancer l'explorateur (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_it.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_it.prope0000644000175000017500000000632211377161311030661 0ustar error_serverCannotStart=Impossibile avviare il server! error_incorrectData=Dati inesatti! column_IP_title=IP column_port_title=Porta column_started_title=Avviato column_lastMessage_title=Ultimo messaggio column_IP_tooltip=Indirizzo IP del client column_port_tooltip=Porta locale usata in questa connessione column_started_tooltip=Data e ora di inizio della connessione column_lastMessage_tooltip=Intestazione dell'ultimo messaggio ricevuto error_propertiesFile_beg=Impossibile aprire il file di inizializzazione " error_propertiesFile_end=" Verrano usati i valori predefiniti. form_title=Server dei rapporti JClic form_connections_title=Connessioni: form_messages_title=Messaggi di sistema: form_settings_title=Impostazioni: form_connections_close=Chiudi la connessione form_connections_close_tooltip=Chiudi la connessione selezionata form_settings_driver=Driver: form_settings_driver_tooltip=Driver JDBC da usare per la connessione al database form_settings_database=Database: form_settings_database_tooltip=Nome del database dei rapporti form_settings_port=Porta: form_settings_port_tooltip=Porta TCP dove il server verr\u00E0 usato per le connessioni form_settings_password_tooltip=Password dell'utente per l'accesso al database form_settings_password=Password: form_settings_user_tooltip=Nome dell'utente per l'accesso al database form_settings_user=Utente: ERROR=ERRORE form_settings_timeout=Timeout: form_settings_timeout_tooltip=Secondi max di inattivit\u00E0 permessi durante le connessioni form_btn_start=Avvio form_btn_stop=Stop form_btn_exit=Esci form_btn_exit_tooltip=Ferma il server e chiudi il programma form_btn_stop_tooltip=Chiudi tutte le connessioni e ferma il server form_btn_start_tooltip=Inizia l'attesa per i client form_messages_verbose=Mostra informazioni pi\u00F9 ampie form_messages_verbose_tooltip=Mostra tutti i messaggi form_messages_copy=Copia negli appunti form_messages_copy_tooltip=Copia i contenuti della finestra nella clipboard form_messages_clear=Pulisci form_messages_clear_tooltip=Pulisci la finestra dei messaggi error_DB=L'azione richiesta potrebbe non essere stata completata settings_title=Impostazioni del server dei rapporti JClic settings_options_title=Opzioni settings_options_language=Lingua: settings_options_look=Aspetto settings_db_title=Database settings_db_driver=Driver: settings_options_tooltips=Suggerimenti settings_db_url=URL: settings_db_usr=Utenti del database: settings_db_pwd=Password: settings_server_title=Server dei rapporti settings_server_timeout=Timeout: settings_server_port=Porta: settings_server_autostart=Avvio automatico settings_web_title=Server Web settings_server_logFile=Scrivi logs nel file: settings_button=Impostazioni... error_writting_settings=Errore nella scrittura del file delle impostazioni! form_btn_show=avvio del navigatore... error_starting_browser=Errore nell'avvio del navigatore! error_opening_logs=Errore nell'apertura dei file log! settings_file=File... settings_tablePrefix=Prefisso dei nomi delle tabelle: settings_createTables=Crea tabelle se non esistono settings_session_lifetime=Durata massima di una sessione inattiva (minuti): settings_browser=Navigatore preferito: settings_browser_tooltip=Comando usato per avviare il navigatore Internet (Firefox, IExplore, Mozilla, Opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_gl.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_gl.prope0000644000175000017500000000650311377161311030650 0ustar error_serverCannotStart=Non se puido p\u00F3r en marcha o servidor! error_incorrectData=Datos incorrectos! column_IP_title=IP column_port_title=Porto column_started_title=Comezado column_lastMessage_title=\u00DAltima mensaxe column_IP_tooltip=Enderezo IP do cliente column_port_tooltip=Porto local empregado nesta conexi\u00F3n column_started_tooltip=Data e hora na que comezou a conexi\u00F3n column_lastMessage_tooltip=Encabezamento da \u00FAltima mensaxe recibida error_propertiesFile_beg=Impos\u00EDbel abrir o arquivo de configuraci\u00F3n " error_propertiesFile_end=". Usaranse os valores por omisi\u00F3n. form_title=Servidor de informes JClic form_connections_title=Conexi\u00F3ns form_messages_title=Mensaxes do sistema: form_settings_title=Configuraci\u00F3n: form_connections_close=Pechar a conexi\u00F3n form_connections_close_tooltip=Pechar a conexi\u00F3n seleccionada form_settings_driver=Controlador: form_settings_driver_tooltip=Controlador JDBC a empregar para conectar coa base de datos form_settings_database=Base de datos: form_settings_database_tooltip=Nome da base de datos de informes form_settings_port=Porto: form_settings_port_tooltip=Porto TCP no que o servidor atende as conexi\u00F3ns form_settings_password_tooltip=Sinal do usuario do sistema form_settings_password=Sinal: form_settings_user_tooltip=Nome de usuario do sistema da base de datos form_settings_user=Usuario: ERROR=ERRO form_settings_timeout=Timeout: form_settings_timeout_tooltip=Tempo m\u00E1ximo de inactividade en segundos que se lle permite \u00E1s conexi\u00F3ns form_btn_start=Iniciar form_btn_stop=Parar form_btn_exit=Sa\u00EDr form_btn_exit_tooltip=Parar o servidor e pechar o programa form_btn_stop_tooltip=Pechar todas as conexi\u00F3ns e parar o servidor form_btn_start_tooltip=Comezar a atender os clientes form_messages_verbose=Mostra informaci\u00F3n ampliada form_messages_verbose_tooltip=Mostra todas as mensaxes form_messages_copy=Copiar form_messages_copy_tooltip=Copia o contido da xanela ao cartafol do sistema form_messages_clear=Limpar form_messages_clear_tooltip=Limpa a xanela de mensaxes error_DB=A acci\u00F3n solicitada non puido completarse settings_title=Configuraci\u00F3n do servidor de informes JClic settings_options_title=Opci\u00F3ns settings_options_language=Idioma: settings_options_look=Apariencia: settings_db_title=Base de datos settings_db_driver=Controlador: settings_options_tooltips=Etiquetas de axuda settings_db_url=URL: settings_db_usr=Usuario da base de datos: settings_db_pwd=Sinal: settings_server_title=Servidor de informes settings_server_timeout=Timeout: settings_server_port=Porto: settings_server_autostart=Inicio autom\u00E1tico settings_web_title=Servidor web settings_server_logFile=Escribir logs no arquivo: settings_button=Configuraci\u00F3n... error_writting_settings=Erro de escritura do arquivo de configuraci\u00F3n! form_btn_show=Iniciar o navegador error_starting_browser=Erro de execuci\u00F3n do navegador! error_opening_logs=Erro na apertura de arquivos de rexisto! settings_file=Arquivo... settings_tablePrefix=Prefixo dos nomes das t\u00E1boas: settings_createTables=Crear t\u00E1boas se non existen settings_session_lifetime=Duraci\u00F3n m\u00E1xima en minutos dunha sesi\u00F3n inactiva: settings_browser=Navegador preferido: settings_browser_tooltip=Orde usada para iniciar o navegador (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages.properti0000644000175000017500000000553711377161311030713 0ustar error_serverCannotStart=Unable to start server! error_incorrectData=Incorrect data! column_IP_title=IP column_port_title=Port column_started_title=Started column_lastMessage_title=Last message column_IP_tooltip=Client IP address column_port_tooltip=Local port used in this connection column_started_tooltip=Date and time at witch the connection was started column_lastMessage_tooltip=Header of the last received message error_propertiesFile_beg=Unable to load the properties file " error_propertiesFile_end=" Using default settings. form_title=JClic reports server form_connections_title=Connections: form_messages_title=System messages: form_settings_title=Settings: form_connections_close=Close connection form_connections_close_tooltip=Close the selected connection form_settings_driver=Driver: form_settings_driver_tooltip=JDBC driver to use for connect to the database form_settings_database=Database: form_settings_database_tooltip=Name of the reports database form_settings_port=Port: form_settings_port_tooltip=TCP port where the server will listen for connections form_settings_password_tooltip=System DB password form_settings_password=Password: form_settings_user_tooltip=System DB user name form_settings_user=User: ERROR=ERROR form_settings_timeout=Timeout: form_settings_timeout_tooltip=Maximum inactivity seconds allowed to connections form_btn_start=Start form_btn_stop=Stop form_btn_exit=Exit form_btn_exit_tooltip=Stop server and shutdown program form_btn_stop_tooltip=Close all connections and stop server form_btn_start_tooltip=Begin listening for clients form_messages_verbose=Verbose form_messages_verbose_tooltip=Display all messages form_messages_copy=Copy to clipboard form_messages_copy_tooltip=Copy the console output to clipboard form_messages_clear=Clear form_messages_clear_tooltip=Clears the console output error_DB=Requested action could not be completed settings_title=JClic reports server settings settings_options_title=Options settings_options_language=Language: settings_options_look=Look & feel: settings_db_title=Database settings_db_driver=Driver: settings_options_tooltips=Tooltips settings_db_url=URL: settings_db_usr=DB user: settings_db_pwd=Password: settings_server_title=Reports server settings_server_timeout=Timeout: settings_server_port=Port: settings_server_autostart=Autostart settings_web_title=Web server settings_server_logFile=Write logs to file: settings_button=Settings... error_writting_settings=Error writting settings file! form_btn_show=launch browser... error_starting_browser=Error launching browser! error_opening_logs=Error opening log files! settings_file=File... settings_tablePrefix=Table names prefix: settings_createTables=Create tables if not exist settings_session_lifetime=Session lifetime (minutes)\: settings_browser=Preferred browser\: settings_browser_tooltip=Command used to launch the browser (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_el.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_el.prope0000644000175000017500000002503311377161311030645 0ustar error_serverCannotStart=\u0391\u03B4\u03C5\u03BD\u03B1\u03BC\u03AF\u03B1 \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7\u03C2 \u03C4\u03BF\u03C5 \u03B4\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE! error_incorrectData=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03B1 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1! column_IP_title=IP column_port_title=\u0398\u03CD\u03C1\u03B1 column_started_title=\u039E\u03B5\u03BA\u03AF\u03BD\u03B7\u03C3\u03B5 column_lastMessage_title=\u03A4\u03B5\u03BB\u03B5\u03C5\u03C4\u03B1\u03AF\u03BF \u03BC\u03AE\u03BD\u03C5\u03BC\u03B1 column_IP_tooltip=\u0394\u03B9\u03B5\u03CD\u03B8\u03C5\u03BD\u03C3\u03B7 IP \u03C0\u03B5\u03BB\u03AC\u03C4\u03B7 column_port_tooltip=\u039C\u03B9\u03B1 \u03C4\u03BF\u03C0\u03B9\u03BA\u03AE \u03B8\u03CD\u03C1\u03B1 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 column_started_tooltip=\u0397\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 \u03BA\u03B1\u03B9 \u03CE\u03C1\u03B1 \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7\u03C2 \u03C4\u03B7\u03C2 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2 column_lastMessage_tooltip=\u0395\u03C0\u03B9\u03BA\u03B5\u03C6\u03B1\u03BB\u03AF\u03B4\u03B1 \u03C4\u03B5\u03BB\u03B5\u03C5\u03C4\u03B1\u03AF\u03BF\u03C5 \u03BC\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03BF\u03C2 error_propertiesFile_beg=\u0391\u03B4\u03C5\u03BD\u03B1\u03BC\u03AF\u03B1 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03B9\u03B4\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD " error_propertiesFile_end=" \u03A7\u03C1\u03AE\u03C3\u03B7 \u03C0\u03C1\u03BF\u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03C9\u03BD \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD form_title=\u0394\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD \u03C4\u03BF\u03C5 JClic form_connections_title=\u03A3\u03C5\u03BD\u03B4\u03AD\u03C3\u03B5\u03B9\u03C2: form_messages_title=\u039C\u03B7\u03BD\u03CD\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C5\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2: form_settings_title=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2: form_connections_close=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2 form_connections_close_tooltip=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03B5\u03C0\u03B9\u03BB\u03B5\u03B3\u03BC\u03AD\u03BD\u03B7\u03C2 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7\u03C2 form_settings_driver=\u039F\u03B4\u03B7\u03B3\u03CC\u03C2: form_settings_driver_tooltip=\u03A7\u03C1\u03AE\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03BF\u03B4\u03B7\u03B3\u03BF\u03CD JDBC \u03B3\u03B9\u03B1 \u03C3\u03CD\u03BD\u03B4\u03B5\u03C3\u03B7 \u03C3\u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD form_settings_database=\u0392\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD: form_settings_database_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03B2\u03AC\u03C3\u03B7\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD form_settings_port=Port: form_settings_port_tooltip=\u0398\u03CD\u03C1\u03B1 \u03B1\u03BA\u03C1\u03CC\u03B1\u03C3\u03B7\u03C2 TCP \u03C4\u03BF\u03C5 \u03B4\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE form_settings_password_tooltip=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03C4\u03BF\u03C5 \u03C3\u03C5\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 form_settings_password=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2: form_settings_user_tooltip=\u038C\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03C4\u03BF\u03C5 \u03C3\u03C5\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 form_settings_user=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2: ERROR=\u03A3\u03A6\u0391\u039B\u039C\u0391 form_settings_timeout=\u03A7\u03C1\u03BF\u03BD\u03B9\u03BA\u03CC \u03C0\u03B5\u03C1\u03B9\u03B8\u03CE\u03C1\u03B9\u03BF: form_settings_timeout_tooltip=\u039C\u03AD\u03B3\u03B9\u03C3\u03C4\u03BF\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2 (\u03C3\u03B5 \u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1) \u03B5\u03C0\u03B9\u03C4\u03C1\u03B5\u03C0\u03CC\u03BC\u03B5\u03BD\u03B7\u03C2 \u03B1\u03B4\u03C1\u03AC\u03BD\u03B5\u03B9\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03C4\u03B9\u03C2 \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03B5\u03B9\u03C2 form_btn_start=\u0388\u03BD\u03B1\u03C1\u03BE\u03B7 form_btn_stop=\u0394\u03B9\u03B1\u03BA\u03BF\u03C0\u03AE form_btn_exit=\u0388\u03BE\u03BF\u03B4\u03BF\u03C2 form_btn_exit_tooltip=\u03A4\u03B5\u03C1\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B4\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE \u03BA\u03B1\u03B9 \u03BA\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03C4\u03BF\u03C5 \u03C0\u03C1\u03BF\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03BF\u03C2 form_btn_stop_tooltip=\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03B5\u03C9\u03BD \u03BA\u03B1\u03B9 \u03C4\u03B5\u03C1\u03BC\u03B1\u03C4\u03B9\u03C3\u03BC\u03CC\u03C2 \u03C4\u03BF\u03C5 \u03B4\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE form_btn_start_tooltip=\u0388\u03BD\u03B1\u03C1\u03BE\u03B7 \u03B1\u03BA\u03C1\u03CC\u03B1\u03C3\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03C0\u03B5\u03BB\u03AC\u03C4\u03B5\u03C2 form_messages_verbose=\u0391\u03BD\u03B1\u03BB\u03C5\u03C4\u03B9\u03BA\u03AC form_messages_verbose_tooltip=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03BC\u03B7\u03BD\u03C5\u03BC\u03AC\u03C4\u03C9\u03BD form_messages_copy=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C3\u03C4\u03BF \u03C0\u03C1\u03CC\u03C7\u03B5\u03B9\u03C1\u03BF form_messages_copy_tooltip=\u0391\u03BD\u03C4\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03C7\u03B5\u03B9\u03C1\u03B9\u03C3\u03C4\u03B7\u03C1\u03AF\u03BF\u03C5 \u03B5\u03BE\u03CC\u03B4\u03BF\u03C5 \u03C3\u03C4\u03BF \u03C0\u03C1\u03CC\u03C7\u03B5\u03B9\u03C1\u03BF form_messages_clear=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 form_messages_clear_tooltip=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03BA\u03BF\u03BD\u03C3\u03CC\u03BB\u03B1\u03C2 \u03B5\u03BE\u03CC\u03B4\u03BF\u03C5 error_DB=\u0397 \u03B1\u03B9\u03C4\u03BF\u03CD\u03BC\u03B5\u03BD\u03B7 \u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B1 \u03B4\u03B5\u03BD \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03BF\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03C9\u03B8\u03B5\u03AF settings_title=\u03A4\u03BF JClic \u03B1\u03BD\u03B1\u03C6\u03AD\u03C1\u03B5\u03B9 \u03C4\u03B9\u03C2 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03C4\u03BF\u03C5 \u03B4\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE settings_options_title=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AD\u03C2 settings_options_language=\u0393\u03BB\u03CE\u03C3\u03C3\u03B1: settings_options_look=\u0395\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 & \u03B1\u03AF\u03C3\u03B8\u03B7\u03C3\u03B7: settings_db_title=\u0392\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD settings_db_driver=\u039F\u03B4\u03B7\u03B3\u03CC\u03C2: settings_options_tooltips=\u03A3\u03C5\u03BC\u03B2\u03BF\u03C5\u03BB\u03AD\u03C2 \u03BF\u03B8\u03CC\u03BD\u03B7\u03C2 settings_db_url=URL: settings_db_usr=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B2\u03AC\u03C3\u03B7\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD: settings_db_pwd=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2: settings_server_title=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03B4\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE settings_server_timeout=\u03A7\u03C1\u03BF\u03BD\u03B9\u03BA\u03CC \u03C0\u03B5\u03C1\u03B9\u03B8\u03CE\u03C1\u03B9\u03BF: settings_server_port=\u0398\u03CD\u03C1\u03B1: settings_server_autostart=\u0391\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7 \u03AD\u03BD\u03B1\u03C1\u03BE\u03B7 settings_web_title=\u0394\u03B9\u03B1\u03BA\u03BF\u03BC\u03B9\u03C3\u03C4\u03AE\u03C2 Web settings_server_logFile=\u0391\u03C0\u03BF\u03B8\u03AE\u03BA\u03B5\u03C5\u03C3\u03B7 \u03C4\u03C9\u03BD \u03BA\u03B1\u03C4\u03B1\u03B3\u03C1\u03B1\u03C6\u03CE\u03BD \u03C3\u03C4\u03BF \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF: settings_button=\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2... error_writting_settings=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03BA\u03B1\u03C4\u03AC \u03C4\u03B7\u03BD \u03B5\u03B3\u03B3\u03C1\u03B1\u03C6\u03AE \u03C4\u03BF\u03C5 \u03B1\u03C1\u03C7\u03B5\u03AF\u03BF\u03C5 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD! form_btn_show=\u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE... error_starting_browser=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7\u03C2 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE! error_opening_logs=\u03A3\u03C6\u03AC\u03BB\u03BC\u03B1 \u03B1\u03BD\u03BF\u03AF\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2 \u03B1\u03C1\u03C7\u03B5\u03AF\u03C9\u03BD \u03BA\u03B1\u03C4\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE\u03C2! settings_file=\u0391\u03C1\u03C7\u03B5\u03AF\u03BF... settings_tablePrefix=\u03A0\u03C1\u03CC\u03B8\u03B7\u03BC\u03B1 \u03BF\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C0\u03B9\u03BD\u03AC\u03BA\u03C9\u03BD: settings_createTables=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03C0\u03B9\u03BD\u03AC\u03BA\u03C9\u03BD \u03B1\u03BD \u03B4\u03B5\u03BD \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03C5\u03BD settings_session_lifetime=\u0394\u03B9\u03AC\u03C1\u03BA\u03B5\u03B9\u03B1 \u03C3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B1\u03C2 (\u03BB\u03B5\u03C0\u03C4\u03AC): settings_browser=\u03A0\u03C1\u03BF\u03C4\u03B9\u03BC\u03CE\u03BC\u03B5\u03BD\u03BF\u03C2 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE\u03C2: settings_browser_tooltip=\u0395\u03BD\u03C4\u03BF\u03BB\u03AE \u03C0\u03BF\u03C5 \u03C7\u03C1\u03B7\u03C3\u03B9\u03BC\u03BF\u03C0\u03BF\u03B9\u03B5\u03AF\u03C4\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03C6\u03CC\u03C1\u03C4\u03C9\u03C3\u03B7 \u03C4\u03BF\u03C5 \u03C6\u03C5\u03BB\u03BB\u03BF\u03BC\u03B5\u03C4\u03C1\u03B7\u03C4\u03AE (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_cs.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_cs.prope0000644000175000017500000000713611377161311030656 0ustar error_serverCannotStart=Nemohu nastartovat server! error_incorrectData=Chybn\u00E1 data! column_IP_title=IP column_port_title=Port column_started_title=Spu\u0161t\u011Bn column_lastMessage_title=posledn\u00ED zpr\u00E1va column_IP_tooltip=IP adresa klienta column_port_tooltip=Lok\u00E1ln\u00ED port pou\u017Eit\u00FD v tomto spojen\u00ED column_started_tooltip=Datum a \u010Das nav\u00E1z\u00E1n\u00ED spojen\u00ED column_lastMessage_tooltip=Hlavi\u010Dka posledn\u00ED obdr\u017Een\u00E9 zpr\u00E1vy error_propertiesFile_beg=Nemohu nahr\u00E1t soubor s vlastnostmi " error_propertiesFile_end=" Pou\u017E\u00EDv\u00E1m standardn\u00ED nastaven\u00ED. form_title=JClic server sestav form_connections_title=Spojen\u00ED: form_messages_title=Syst\u00E9mov\u00E9 zpr\u00E1vy: form_settings_title=Nastaven\u00ED: form_connections_close=Ukon\u010Dit spojen\u00ED form_connections_close_tooltip=Ukon\u010Dit vybran\u00E1 spojen\u00ED form_settings_driver=Ovlada\u010D: form_settings_driver_tooltip=JDBC ovlada\u010D por p\u0159ipojen\u00ED k datab\u00E1zi form_settings_database=Datab\u00E1ze: form_settings_database_tooltip=Jm\u00E9no datab\u00E1ze pro sestavy form_settings_port=Port: form_settings_port_tooltip=TCP port pro spojen\u00ED form_settings_password_tooltip=Heslo pro syst\u00E9movou datab\u00E1zi form_settings_password=Heslo: form_settings_user_tooltip=U\u017Eivatelsk\u00E9 jm\u00E9no pro syst\u00E9movou datab\u00E1zi form_settings_user=U\u017Eivatel: ERROR=CHYBA form_settings_timeout=\u010Casov\u00FD limit form_settings_timeout_tooltip=Maxim\u00E1ln\u00ED ne\u010Dinnost v sekund\u00E1ch povolen\u00E1 pro relaci form_btn_start=Za\u010D\u00E1tek form_btn_stop=Stop form_btn_exit=Ukon\u010Dit form_btn_exit_tooltip=Zastavit server a vypnout program form_btn_stop_tooltip=Zav\u0159\u00EDt v\u0161echna spojen\u00ED a zastavoit server form_btn_start_tooltip=Za\u010D\u00EDn\u00E1m naslouchat klient\u016Fm form_messages_verbose=Podrobn\u00E9 form_messages_verbose_tooltip=Zobraz v\u0161echny zpr\u00E1vy form_messages_copy=Kop\u00EDrovat do schr\u00E1nky form_messages_copy_tooltip=Kop\u00EDrovat v\u00FDstup konzole do schr\u00E1nky form_messages_clear=Vymazat form_messages_clear_tooltip=Vy\u010Distit v\u00FDstup konzole error_DB=Po\u017Eadovan\u00E1 akce nem\u016F\u017Ee b\u00FDt dokon\u010Dena settings_title=Nastaven\u00ED JClic serveru sestav settings_options_title=Mo\u017Enosti settings_options_language=Jazyk: settings_options_look=Vzhled: settings_db_title=Datab\u00E1ze settings_db_driver=Ovlada\u010D: settings_options_tooltips=Bublinov\u00E1 n\u00E1pov\u011Bda settings_db_url=URL : settings_db_usr=DB u\u017Eivatel: settings_db_pwd=Heslo: settings_server_title=Server sestav settings_server_timeout=\u010Casov\u00FD limit settings_server_port=Port: settings_server_autostart=Automatick\u00E9 spu\u0161t\u011Bn\u00ED settings_web_title=Webov\u00FD server settings_server_logFile=Zapsat sestavy do souboru: settings_button=Nastaven\u00ED... error_writting_settings=Chyba p\u0159i z\u00E1pisu do souboru s nastaven\u00EDm. form_btn_show=spus\u0165 prohl\u00ED\u017Ee\u010D... error_starting_browser=Chyba p\u0159i spou\u0161t\u011Bn\u00ED prohl\u00ED\u017Ee\u010De! error_opening_logs=Chyba p\u0159i otev\u00EDr\u00E1n\u00ED soubor\u016F se sestavami! settings_file=Soubor... settings_tablePrefix=Prefix jmen tabulek: settings_createTables=Vytvo\u0159it tabulky pokud neexistuj\u00ED settings_session_lifetime=\u017Divotnost relace (minutes): settings_browser=Up\u0159ednost\u0148ovan\u00FD prohl\u00ED\u017Ee\u010D: settings_browser_tooltip=P\u0159\u00EDkaz pro spu\u0161t\u011Bn\u00ED prohl\u00ED\u017Ee\u010De (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ru.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ru.prope0000644000175000017500000002163311377161311030675 0ustar error_serverCannotStart=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C \u0441\u0435\u0440\u0432\u0435\u0440! error_incorrectData=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435! column_IP_title=IP column_port_title=\u041F\u043E\u0440\u0442 column_started_title=\u0417\u0430\u043F\u0443\u0449\u0435\u043D column_lastMessage_title=\u041F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u0435 column_IP_tooltip=IP \u0430\u0434\u0440\u0435\u0441 \u043A\u043B\u0438\u0435\u043D\u0442\u0430 column_port_tooltip=\u041B\u043E\u043A\u0430\u043B\u044C\u043D\u044B\u0439 \u043F\u043E\u0440\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u044D\u0442\u043E\u0433\u043E \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F column_started_tooltip=\u0414\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F \u043D\u0430\u0447\u0430\u043B\u0430 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F column_lastMessage_tooltip=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A \u043F\u043E\u0441\u043B\u0435\u0434\u043D\u0435\u0433\u043E \u043F\u0440\u0438\u043D\u044F\u0442\u043E\u0433\u043E \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F error_propertiesFile_beg=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0444\u0430\u0439\u043B \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A " error_propertiesFile_end=" \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E. form_title=\u0421\u0435\u0440\u0432\u0435\u0440 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 JClic form_connections_title=\u0421\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F: form_messages_title=\u0421\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F: form_settings_title=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438: form_connections_close=\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 form_connections_close_tooltip=\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 form_settings_driver=\u0414\u0440\u0430\u0439\u0432\u0435\u0440: form_settings_driver_tooltip=\u0414\u0440\u0430\u0439\u0432\u0435\u0440 JDBC \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u044B\u0439 \u0434\u043B\u044F \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F \u043A \u0431\u0430\u0437\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 form_settings_database=\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\u0445: form_settings_database_tooltip=\u0418\u043C\u044F \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 form_settings_port=\u041F\u043E\u0440\u0442: form_settings_port_tooltip=TCP \u043F\u043E\u0440\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 form_settings_password_tooltip=\u041F\u0430\u0440\u043E\u043B\u044C \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u043E\u0439 \u0411\u0414 form_settings_password=\u041F\u0430\u0440\u043E\u043B\u044C: form_settings_user_tooltip=\u0418\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u043E\u0439 \u0411\u0414 form_settings_user=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C: ERROR=\u041E\u0428\u0418\u0411\u041A\u0410 form_settings_timeout=\u0422\u0430\u0439\u043C-\u0430\u0443\u0442: form_settings_timeout_tooltip=\u041C\u0430\u043A\u0441\u0438\u043C\u0430\u043B\u044C\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u0438 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F, \u0441\u0435\u043A\u0443\u043D\u0434 form_btn_start=\u0417\u0430\u043F\u0443\u0441\u0442\u0438\u0442\u044C form_btn_stop=\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C form_btn_exit=\u0412\u044B\u0445\u043E\u0434 form_btn_exit_tooltip=\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0435\u0440\u0432\u0435\u0440 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u043F\u0440\u043E\u0433\u0440\u0430\u043C\u043C\u0443 form_btn_stop_tooltip=\u0417\u0430\u043A\u0440\u044B\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F \u0438 \u043E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0441\u0435\u0440\u0432\u0435\u0440 form_btn_start_tooltip=\u041D\u0430\u0447\u0430\u0442\u044C \u043E\u0431\u0441\u043B\u0443\u0436\u0438\u0432\u0430\u043D\u0438\u0435 \u043A\u043B\u0438\u0435\u043D\u0442\u043E\u0432 form_messages_verbose=\u041F\u043E\u0434\u0440\u043E\u0431\u043D\u043E form_messages_verbose_tooltip=\u041F\u043E\u043A\u0430\u0437\u044B\u0432\u0430\u0442\u044C \u0432\u0441\u0435 \u0441\u043E\u043E\u0431\u0449\u0435\u043D\u0438\u044F form_messages_copy=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430 form_messages_copy_tooltip=\u041A\u043E\u043F\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u043D\u0441\u043E\u043B\u044C\u043D\u044B\u0439 \u0432\u044B\u0432\u043E\u0434 \u0432 \u0431\u0443\u0444\u0435\u0440 \u043E\u0431\u043C\u0435\u043D\u0430 form_messages_clear=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C form_messages_clear_tooltip=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043A\u043E\u043D\u0441\u043E\u043B\u044C\u043D\u044B\u0439 \u0432\u044B\u0432\u043E\u0434 error_DB=\u0417\u0430\u043F\u0440\u043E\u0448\u0435\u043D\u043D\u043E\u0435 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435 \u043D\u0435 \u043C\u043E\u0436\u0435\u0442 \u0431\u044B\u0442\u044C \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043E settings_title=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 JClic settings_options_title=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 settings_options_language=\u042F\u0437\u044B\u043A: settings_options_look=\u0421\u0442\u0438\u043B\u044C \u043E\u0444\u043E\u0440\u043C\u043B\u0435\u043D\u0438\u044F: settings_db_title=\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\u0445 settings_db_driver=\u0414\u0440\u0430\u0439\u0432\u0435\u0440: settings_options_tooltips=\u041F\u043E\u0434\u0441\u043A\u0430\u0437\u043A\u0438 settings_db_url=\u0410\u0434\u0440\u0435\u0441(URL): settings_db_usr=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0411\u0414: settings_db_pwd=\u041F\u0430\u0440\u043E\u043B\u044C: settings_server_title=\u0421\u0435\u0440\u0432\u0435\u0440 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 settings_server_timeout=\u0422\u0430\u0439\u043C-\u0430\u0443\u0442: settings_server_port=\u041F\u043E\u0440\u0442: settings_server_autostart=\u0410\u0432\u0442\u043E\u0437\u0430\u043F\u0443\u0441\u043A settings_web_title=\u0412\u0435\u0431-\u0441\u0435\u0440\u0432\u0435\u0440 settings_server_logFile=\u0417\u0430\u043F\u0438\u0441\u044B\u0432\u0430\u0442\u044C \u043B\u043E\u0433\u0438 \u0432 \u0444\u0430\u0439\u043B: settings_button=\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438... error_writting_settings=\u041E\u0448\u0438\u0431\u043A\u0430 \u043F\u0440\u0438 \u0437\u0430\u043F\u0438\u0441\u0438 \u0444\u0430\u0439\u043B\u0430 \u043D\u0430\u0441\u0442\u0440\u043E\u0435\u043A! form_btn_show=\u0437\u0430\u043F\u0443\u0441\u043A \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430... error_starting_browser=\u041E\u0448\u0438\u0431\u043A\u0430 \u0437\u0430\u043F\u0443\u0441\u043A\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430! error_opening_logs=\u041E\u0448\u0438\u0431\u043A\u0430 \u043E\u0442\u043A\u0440\u044B\u0442\u0438\u044F \u0444\u0430\u0439\u043B\u043E\u0432 \u043B\u043E\u0433\u043E\u0432! settings_file=\u0424\u0430\u0439\u043B... settings_tablePrefix=\u041F\u0440\u0435\u0444\u0438\u043A\u0441 \u0438\u043C\u0451\u043D \u0442\u0430\u0431\u043B\u0438\u0446: settings_createTables=\u0421\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u0442\u0430\u0431\u043B\u0438\u0446\u044B, \u0435\u0441\u043B\u0438 \u043D\u0435 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044E\u0442 settings_session_lifetime=\u0412\u0440\u0435\u043C\u044F \u0436\u0438\u0437\u043D\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 (\u043C\u0438\u043D\u0443\u0442): settings_browser=\u041F\u0440\u0435\u0434\u043F\u043E\u0447\u0438\u0442\u0430\u0435\u043C\u044B\u0439 \u0431\u0440\u0430\u0443\u0437\u0435\u0440: settings_browser_tooltip=\u041A\u043E\u043C\u0430\u043D\u0434\u0430 \u0434\u043B\u044F \u0437\u0430\u043F\u0443\u0441\u043A\u0430 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430 (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ca.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ca.prope0000644000175000017500000000657411377161311030641 0ustar error_serverCannotStart=No s'ha pogut posar en marxa el servidor! error_incorrectData=Dades incorrectes! column_IP_title=IP column_port_title=Port column_started_title=Engegat column_lastMessage_title=Darrer missatge column_IP_tooltip=Adre\u00E7a IP de l'ordinador client column_port_tooltip=Port local emprat per a aquesta connexi\u00F3 column_started_tooltip=Data i hora en qu\u00E8 s'ha iniciat la connexi\u00F3 column_lastMessage_tooltip=Cap\u00E7alera del darrer missatge rebut error_propertiesFile_beg=No es pot obrir el fitxer de configuraci\u00F3 " error_propertiesFile_end=". El programa utilitzar\u00E0 els valors per defecte. form_title=Servidor d'informes JClic form_connections_title=Connexions: form_messages_title=Missatges de sistema: form_settings_title=Configuraci\u00F3: form_connections_close=Tanca la connexi\u00F3 form_connections_close_tooltip=Tanca la connexi\u00F3 seleccionada a la llista form_settings_driver=Controlador: form_settings_driver_tooltip=Controlador JDBC utilitzat per a connectar amb la base de dades form_settings_database=Base de dades: form_settings_database_tooltip=Nom de la base de dades d'informes form_settings_port=Port: form_settings_port_tooltip=Port TCP on el servidor atendr\u00E0 les connexions form_settings_password_tooltip=Contrasenya de l'usuari de sistema form_settings_password=Contrasenya: form_settings_user_tooltip=Nom d'usuari de sistema de la base de dades form_settings_user=Usuari: ERROR=ERROR form_settings_timeout=Timeout: form_settings_timeout_tooltip=M\u00E0xim nombre de segons d'inactivitat perm\u00E8s a les connexions form_btn_start=Engega form_btn_stop=Atura form_btn_exit=Surt form_btn_exit_tooltip=Atura el servidor i tancar el programa form_btn_stop_tooltip=Tancar totes les connexions i atura el servidor form_btn_start_tooltip=Inicia l'atenci\u00F3 als clients form_messages_verbose=Mostra informaci\u00F3 ampliada form_messages_verbose_tooltip=Mostra tots els missatges entrants form_messages_copy=Copia form_messages_copy_tooltip=Copia el contingut de la finestra a la carpeta de sistema form_messages_clear=Esborra form_messages_clear_tooltip=Neteja la finestra de missatges error_DB=L'acci\u00F3 sol.licitada no s'ha pogut completar settings_title=Configuraci\u00F3 de servidor d'informes JClic settings_options_title=Opcions settings_options_language=Idioma: settings_options_look=Aparen\u00E7a: settings_db_title=Base de dades settings_db_driver=Controlador: settings_options_tooltips=Etiquetes d'ajuda settings_db_url=URL: settings_db_usr=Usuari de la base de dades: settings_db_pwd=Contrasenya: settings_server_title=Servidor d'informes settings_server_timeout=Temps m\u00E0xim d'espera: settings_server_port=Port: settings_server_autostart=Engegada autom\u00E0tica settings_web_title=Servidor web settings_server_logFile=Escriure logs al fitxer: settings_button=Configuraci\u00F3... error_writting_settings=Error en escriure el fitxer de configuraci\u00F3! form_btn_show=engega el navegador... error_starting_browser=Error en executar el navegador! error_opening_logs=Error en obrir els fitxers de registre! settings_file=Fitxer... settings_tablePrefix=Prefixe dels noms de les taules: settings_createTables=Crea taules si no existeixen settings_session_lifetime=Durada m\u00E0xima d'una sessi\u00F3 inactiva (minuts): settings_browser=Navegador preferit: settings_browser_tooltip=Ordre emprada per a engegar el navegador (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_nl.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_nl.prope0000644000175000017500000000613711377161311030662 0ustar error_serverCannotStart=Kan de server niet starten! error_incorrectData=Verkeerde gegevens! column_IP_title=IP column_port_title=Poort column_started_title=Gestart column_lastMessage_title=Laatste bericht column_IP_tooltip=Client IP address column_port_tooltip=Local port van deze verbinding column_started_tooltip=Datum en tijd van de start van de verbinding column_lastMessage_tooltip=Begincodes van het laatst ontvangen bericht error_propertiesFile_beg=Het eigenschapbestand kan niet geladen worden " error_propertiesFile_end=" Gebruik standaard waarden. form_title=JClic rapporten server form_connections_title=Verbindingen form_messages_title=Systeem berichten: form_settings_title=Instellingen: form_connections_close=Verbinding sluiten form_connections_close_tooltip=Gekozen verbinding sluiten form_settings_driver=Stuurprogramma: form_settings_driver_tooltip=JDBC stuurprogramma dat gebruikt wordt om verbinding te maken met de database form_settings_database=Database: form_settings_database_tooltip=Naam van de rapporten database form_settings_port=Poort: form_settings_port_tooltip=TCP poort waar de server de verbinding zoekt form_settings_password_tooltip=Systeem DB wachtwoord form_settings_password=Wachtwoord: form_settings_user_tooltip=Systeem DB gebruikersnaam form_settings_user=Gebruiker: ERROR=FOUT form_settings_timeout=Wachttijd: form_settings_timeout_tooltip=Maximum aantal seconden zonder activiteit bij verbinding(Maximum inactivity seconds allowed to connections) form_btn_start=Begin form_btn_stop=Stoppen form_btn_exit=Afsluiten form_btn_exit_tooltip=Server afsluiten en programma afsluiten form_btn_stop_tooltip=Sluit alle verbindingen af en stop de server form_btn_start_tooltip=Begin te luisteren naar clients form_messages_verbose=Met uitleg form_messages_verbose_tooltip=Toon alle berichten form_messages_copy=Kopi\u00EBren naar klembord form_messages_copy_tooltip=Kopieer de console output naar clipboard form_messages_clear=Wissen form_messages_clear_tooltip=Wissen van de console output error_DB=Requested action could not be completed settings_title=JClic rapporten server instellingen settings_options_title=Opties settings_options_language=Taal: settings_options_look=Look & feel: settings_db_title=Database settings_db_driver=Stuurprogramma: settings_options_tooltips=Hulpballonnen settings_db_url=URL: settings_db_usr=DB user: settings_db_pwd=Wachtwoord: settings_server_title=Rapporten server settings_server_timeout=Timeout: settings_server_port=Poort: settings_server_autostart=Automatisch starten settings_web_title=Web-server settings_server_logFile=Schrijf logs naar bestand: settings_button=Instellingen... error_writting_settings=Fout bij schrijven instellingen bestand! form_btn_show=opstarten van browser... error_starting_browser=Fout bij starten browser! error_opening_logs=Fout bij openen log bestanden! settings_file=Bestand... settings_tablePrefix=Table names prefix: settings_createTables=Maak tabellen indien ze niet bestaan settings_session_lifetime=Session lifetime (minutes): settings_browser=Voorkeur browser: settings_browser_tooltip=Commando om browser te starten(firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015200000000000011563 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_eu.prope0000644000175000017500000000607711377161311030665 0ustar error_serverCannotStart=Ezin izan da zerbitzaria abian jarri! error_incorrectData=Datuak ez dira zuzenak! column_IP_title=IP-a column_port_title=Ataka column_started_title=Hasita column_lastMessage_title=Azken mezua column_IP_tooltip=Bezeroaren IP helbidea column_port_tooltip=Konexio honetan erabilitako ataka lokala column_started_tooltip=Konexio hasi zeneko data eta ordua column_lastMessage_tooltip=Jasotako azken mezuaren goiburua error_propertiesFile_beg=Ezin da kargatu ezaugarri-fitxategia " error_propertiesFile_end=" Erabili berezko ezarpenak. form_title=JClic txostenen zerbitzaria form_connections_title=Konexioak: form_messages_title=Sistemaren mezuak: form_settings_title=Ezarpenak: form_connections_close=Itxi konexioa form_connections_close_tooltip=Itxi aukeratutako konexioa form_settings_driver=Kontrolatzailea: form_settings_driver_tooltip=Datu-basearekin konektatzeko JDBC kontrolatzailea form_settings_database=Datu-basea: form_settings_database_tooltip=Txostenen datu-basearen izena form_settings_port=Ataka: form_settings_port_tooltip=Zerbitzariak eskariei erantzuteko TCP portua form_settings_password_tooltip=Sistemaren DB pasahitza form_settings_password=Pasahitza: form_settings_user_tooltip=Sistemaren DB erabiltzaile-izena form_settings_user=Erabiltzailea: ERROR=ERROREA form_settings_timeout=Denbora-muga: form_settings_timeout_tooltip=Konexiorako gehinezko jarduerarik gabeko segundu-kopurua form_btn_start=Hasi form_btn_stop=Gelditu form_btn_exit=Irten form_btn_exit_tooltip=Zerbitzaria geldiarazi eta programa itxi form_btn_stop_tooltip=Itxi konexioak eta zerbitzaria geldiarazi form_btn_start_tooltip=Bezeroei kasu egiten hasi form_messages_verbose=Zehatzago form_messages_verbose_tooltip=Erakutsi mezu guztiak form_messages_copy=Kopiatu arbelean form_messages_copy_tooltip=Kontsolaren edukia memoriara kopiatu form_messages_clear=Garbitu form_messages_clear_tooltip=Garbitu mezuen leihoa error_DB=Eskatutako ekintza ezin izan da osatu settings_title=JClic txostenen zerbitzariaren ezarpenak settings_options_title=Aukerak settings_options_language=Hizkuntza: settings_options_look=Itxura: settings_db_title=Datu-basea settings_db_driver=Kontrolatzailea: settings_options_tooltips=Laguntza-etiketak settings_db_url=URL-a: settings_db_usr=DB erabiltzailea: settings_db_pwd=Pasahitza: settings_server_title=Txostenen zerbitzaria settings_server_timeout=Denbora-muga: settings_server_port=Ataka: settings_server_autostart=Berez hasi settings_web_title=Web zerbitzaria settings_server_logFile=Idatzi log-ak fitxategian: settings_button=Ezarpenak... error_writting_settings=Errorea ezarpenen fitxategia idaztean! form_btn_show=nabigatzailea abiarazi... error_starting_browser=Errorea nabigatzailea abiaraztean! error_opening_logs=Errorea erregistro-fitxategiak irekitzean! settings_file=Fitxategia... settings_tablePrefix=Taulen izenen aurrizkia: settings_createTables=Sortu taulak ez badaude settings_session_lifetime=Saioaren iraupena (minututan): settings_browser=Lehenetsitako nabigatzailea: settings_browser_tooltip=Nabigatzailea abiarazteko erabilitako agindua (firefox, iexplore, mozilla, opera...) ././@LongLink0000000000000000000000000000015500000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt_BR.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_pt_BR.pr0000644000175000017500000000670011377161311030547 0ustar error_serverCannotStart=N\u00E3o foi poss\u00EDvel iniciar o servidor! error_incorrectData=Dados incorretos! column_IP_title=IP column_port_title=Porta column_started_title=Iniciado column_lastMessage_title=\u00DAltima mensagem column_IP_tooltip=Endere\u00E7o IP do cliente column_port_tooltip=Porta local usada nessa conex\u00E3o column_started_tooltip=Date e hora em que a conex\u00E3o iniciou-se column_lastMessage_tooltip=Cabe\u00E7alho da \u00FAltima mensagem recebida error_propertiesFile_beg=N\u00E3o foi poss\u00EDvel abrir o arquivo de propriedades " error_propertiesFile_end=" Usando configura\u00E7\u00F5es padr\u00F5es. form_title=Servidor de relat\u00F3rios do JClic form_connections_title=Conex\u00F5es: form_messages_title=Mensagens do sistema: form_settings_title=Configura\u00E7\u00F5es: form_connections_close=Fechar conex\u00E3o form_connections_close_tooltip=Fechar a conex\u00E3o selecionada form_settings_driver=Controlador (Driver): form_settings_driver_tooltip=Driver JDBC a usar para conectar-se ao banco de dados form_settings_database=Banco de dados: form_settings_database_tooltip=Nome do banco de dados de relat\u00F3rios form_settings_port=Porta: form_settings_port_tooltip=Porta TCP onde o servidor escutar\u00E1 as conex\u00F5es form_settings_password_tooltip=Senha para o Sistema de BD form_settings_password=Senha: form_settings_user_tooltip=Nome de usu\u00E1rio para o Sistema de BD form_settings_user=Usu\u00E1rio: ERROR=ERRO form_settings_timeout=Tempo limite: form_settings_timeout_tooltip=Tempo m\u00E1ximo de inatividade permitido para conex\u00F5es form_btn_start=Iniciar form_btn_stop=Parar form_btn_exit=Sair form_btn_exit_tooltip=Parar o servidor e encerrar o programa form_btn_stop_tooltip=Encerrar todas as conex\u00F5es e parar o servidor form_btn_start_tooltip=Iniciar a escuta de clientes form_messages_verbose=Mostrar informa\u00E7\u00E3o ampliada form_messages_verbose_tooltip=Mostrar todas as mensagens form_messages_copy=Copiar para a \u00E1rea de transfer\u00EAncia form_messages_copy_tooltip=Copiar para a mem\u00F3ria o conte\u00FAdo do console form_messages_clear=Limpar form_messages_clear_tooltip=Limpa a sa\u00EDda do console error_DB=N\u00E3o foi poss\u00EDvel completar a a\u00E7\u00E3o solicitada settings_title=Configura\u00E7\u00F5es do servidor de relat\u00F3rios do JClic settings_options_title=Op\u00E7\u00F5es settings_options_language=Idioma: settings_options_look=Aspecto: settings_db_title=Banco de dados settings_db_driver=Controlador (Driver): settings_options_tooltips=Dicas de ferramenta settings_db_url=URL: settings_db_usr=Usu\u00E1rio do BD settings_db_pwd=Senha: settings_server_title=Servidor de relat\u00F3rios settings_server_timeout=Tempo limite: settings_server_port=Porta: settings_server_autostart=In\u00EDcio autom\u00E1tico settings_web_title=Servidor web settings_server_logFile=Registrar (logs) no arquivo: settings_button=Configura\u00E7\u00F5es... error_writting_settings=Erro ao registrar configura\u00E7\u00F5es no arquivo! form_btn_show=iniciar navegador... error_starting_browser=Erro ao iniciar navegador! error_opening_logs=erro ao abrir arquivos de log! settings_file=Arquivo... settings_tablePrefix=Tabela de prefixo de nomes settings_createTables=Criar tabelas se n\u00E3o houver settings_session_lifetime=Dura\u00E7\u00E3o m\u00E1xima de uma sess\u00E3o inativa (minutos)\\: settings_browser=Navegador preferido: settings_browser_tooltip=Comando usado para iniciar o navegador (firefox, iexplorer, mozilla, opera...) ././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ast.propertiesjclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/messages/ReportServerMessages_ast.prop0000644000175000017500000000666711377161311030703 0ustar error_serverCannotStart=\u00A1Nun se pudo arrancar el sirvidor! error_incorrectData=\u00A1Datos incorreutos! column_IP_title=IP column_port_title=Puertu column_started_title=Anici\u00E1u column_lastMessage_title=Mensax caberu column_IP_tooltip=Direici\u00F3n IP del veceru column_port_tooltip=Puertu llocal utiliz\u00E1u nesta conex\u00F3n column_started_tooltip=Data y hora na que s'anici\u00F3 la conex\u00F3n column_lastMessage_tooltip=Cabecera del mensax caberu recib\u00EDu error_propertiesFile_beg=Nun se pudieron cargar les propiedaes del ficheru " error_propertiesFile_end=". Usando valores por defeutu. form_title=Sirvidor d'informes JClic form_connections_title=Conexones: form_messages_title=Mensaxes de sistema: form_settings_title=Configuraci\u00F3n: form_connections_close=Zarrar conex\u00F3n form_connections_close_tooltip=Zarrar la conex\u00F3n seleicionada form_settings_driver=Controlador: form_settings_driver_tooltip=Controlador JDBC que se va emplegar p'acceder a la base de datos form_settings_database=Base de datos: form_settings_database_tooltip=Nome de la base de datos d'informes form_settings_port=Puertu: form_settings_port_tooltip=Puertu TCP nel que'l sirvidor atiende les peticiones form_settings_password_tooltip=Contrase\u00F1a del usuariu col que s'accede a la base de datos form_settings_password=Contrase\u00F1a: form_settings_user_tooltip=Nome d'usuariu col que se va acceder a la base de datos form_settings_user=Usuariu: ERROR=ERROR form_settings_timeout=Tiempu m\u00E1ximu: form_settings_timeout_tooltip=M\u00E1ximo tiempu d'inactivid\u00E1 permit\u00EDu pa les conexones form_btn_start=Entamar form_btn_stop=Parar form_btn_exit=Colar form_btn_exit_tooltip=Parar el sirvidor y zarrar el programa form_btn_stop_tooltip=Zarrar toles conexones y parar el sirvidor form_btn_start_tooltip=Entamar a atender a los veceros form_messages_verbose=Amosar informaci\u00F3n ampliada form_messages_verbose_tooltip=Amuesa tolos mensaxes form_messages_copy=Copiar al cartafueyu form_messages_copy_tooltip=Copia'l conten\u00EDu de la consola na memoria form_messages_clear=Llimpiar form_messages_clear_tooltip=Llimpia la ventana de mensaxes error_DB=L'aici\u00F3n solicitada nun se pudo completar settings_title=Configuraci\u00F3n del sirvidor d'informes JClic settings_options_title=Opciones settings_options_language=Llingua: settings_options_look=Apariencia: settings_db_title=Base de datos settings_db_driver=Controlador: settings_options_tooltips=Etiquetes d'aida settings_db_url=URL: settings_db_usr=Usuariu de la base de datos settings_db_pwd=Contrase\u00F1a: settings_server_title=Sirvidor d'informes settings_server_timeout=Tiempu m\u00E1ximu d'espera: settings_server_port=Puertu: settings_server_autostart=Arranque autom\u00E1ticu settings_web_title=Sirvidor web settings_server_logFile=Escribir logs nel ficheru: settings_button=Configuraci\u00F3n... error_writting_settings=\u00A1Error al escribir el ficheru de configuraci\u00F3n! form_btn_show=Arrancar el restolador... error_starting_browser=Error al arrancar el restolador\\! error_opening_logs=\u00A1Error al abrir los ficheros de rexistru! settings_file=Ficheru... settings_tablePrefix=Prefixu de los nomes de les tables: settings_createTables=Criar tables si nun esisten settings_session_lifetime=Duraci\u00F3n m\u00E1xima de una sesi\u00F3n inactiva (minutos): settings_browser=Restolador prefer\u00EDu: settings_browser_tooltip=Comandu empleg\u00E1u pa arrancar el restolador (firefox, iexplore, mozilla, opera...) jclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/about/0000755000175000017500000000000011377161311022264 5ustar jclic-0.2.1.0.orig/src/report/reportServer/edu/xtec/resources/about/logo_reports_small.png0000644000175000017500000000771311377161311026710 0ustar PNG  IHDRU] sBIT|d pHYs  ~tEXtCreation Time09/05/04%tEXtSoftwareMacromedia Fireworks MX 2004vIDATxKlGz3Ù2%Y%Q~(E7Vb F. yAe>$WQ@jx5vڲ=Z۲wWP5Ts3=Y?%NuUWu]4h&Zx!!2 x0=:nf(<4Oɔ)0d'\ۧ٧4#QLc+!x<K?OncFd0ah#=`P#JBPqB醳m5x4=ᖷ1,^8a X|L, <):À,`Y%"k+D9'U!x n'SMn@QWxɔΘ&1Lw `./][|BCO] vI#7jYqT`mY«K[+Jwnaށ^^2Mzo a*eX]on;kTJ+Nct &%?ćZ+ukZñ8)U砻Wi!>d z0ź5-+do&qBw",=b"Gu]}QBV RGpx-mN!nw x4i CGpj:N&R܃rY‘Xǐ_ᰌ{ /FDR,CL[ 9[dR_?`^DZlAN!p˩a 0z`Cjz-!-Z2eđ[\ N"6 hH4&çet:Vr5 JPJîG%@2e!Go ieXđ* Ga̮n yO{y {ɔAwxx]^u|,€i}xO RdOkh-oQ7ɔr]r]^ c0K):Lvi1?N]rx8,z;A7ggTЅ+p$;Ȩ0u6}SM|j{@٪M!1*C#g"UlHx^ZzZx$,kps bTb8 -f dn'aY隤mO6?D?zٚ:&*\l LXuEW˅eDv^w5Wˎ&,b۲+v'0$,+m6q`'d²Qe`s]~n#@P!S@bTƶ ^$,k)њ2Tz]2}Ŧn;+<^x>ie#G^',"*ۮ}N5RsQpQbGwI *O<4i >RltiJH+bUtƶ~ۅ^Pnv&y.cMel=Wk^ƶ/ ^tJ8:t͈%;^Ins$,9dW`L]>:6]>GY,0FUn$,*pޓ6N 8?<z;.hi}M5i렦9V :po Ⱥhu?(1aYc :3{ 6:)<+e flrZ\C:MhZؿ$#,֊oTOGȥ_y~?ei;n%H~#>iY3>x~guFAd}jWu_t&sS>i>i*Z$[sguT%6ΥUq3}&0B6D| շQ |M}>ՉE67u"Aa?AVmUV^1 ~ƶӞ} V B >3lruԺC%q2Ipo,L"H6!!T#lUx&*VE(l)!Wਜ਼7\cwB<ǫrvXí= Np J4;2W/.cW ٦7Q[:MYqrƶgk op e÷ Q++yùZ䁢}貀 CPH 9x#g2~ J|i zޢwmm_>cuOelv[ w2&4u.qU?v? eգ22oOG0+ϕjCO~꥿%ei6cw16zf&2nX²1lgpַ^1z7_d"M|Χ1^@*p) ᅐV&<"cZ|9>jْ4e,y@ d}W-$ri+NB5ޫEϱ<ׅe]T\RϹjz |үߨ:.z3Azbo2Kȍw T5=aYKHהui-sFZ-ۛ,zǐuƼ( 'dl{V VKy )P.?h"ۇQ׆m=?7 J_ "{qj}44*^+^mt/ji탄e 8=b?@e,7aYgUYo_²Y`/*X4 ryQ0Ko3t7u?+HDZq0 && args[0]!=null){ cfgFile=new File(args[0]); if(!cfgFile.isAbsolute()) cfgFile=new File(System.getProperty("user.dir"), args[0]); } if(cfgFile==null || !cfgFile.exists()) cfgFile=new File(edu.xtec.util.PersistentSettings.getFilePath(edu.xtec.jclic.Constants.PROGRAM, CFG_FILE, options)); Properties prop=new Properties(); try{ prop.load(ReportServerConstants.class.getResourceAsStream(CFG_FILE)); if(cfgFile.exists()){ FileInputStream is=new FileInputStream(cfgFile); prop.load(is); is.close(); String pwd=prop.getProperty(ConnectionBeanProvider.DB_PASSWORD); if(pwd!=null && pwd.length()>0) prop.setProperty(ConnectionBeanProvider.DB_PASSWORD, Encryption.Decrypt(pwd)); } options.syncProperties(prop, false); loadSettings(); } catch(Exception ex){ System.err.println("Error reading settings!\n"+ex); } dateFormat=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); timeFormat=DateFormat.getTimeInstance(DateFormat.MEDIUM); httpServer=new HTTPReportServer(msg); initComponents(); webServerListener=new rsListener(webMsgTextArea); webServerListener.writer=logWeb; httpServer.addListener(webServerListener); JClicReportService.eventMaker.addListener(webServerListener); pack(); setVisible(true); if(webAutostart) startWebServer(); } protected void loadSettings() throws Exception{ edu.xtec.jclic.report.rp.ReportsRequestProcessor.setProperties(options.toProperties()); msg=edu.xtec.util.PersistentSettings.getMessages(options, MSG_BUNDLE); msg.addBundle(edu.xtec.jclic.Constants.DEFAULT_BUNDLE); msg.addBundle(edu.xtec.jclic.Constants.COMMON_SETTINGS); options.setLookAndFeel(); //driver=options.getString(ConnectionBeanProvider.DB_DRIVER); //url=options.getString(ConnectionBeanProvider.DB_SERVER); //system_user=options.getString(ConnectionBeanProvider.DB_LOGIN); //system_password=options.getString(ConnectionBeanProvider.DB_PASSWORD); httpPort=options.getInt(HTTP_PORT, HTTPReportServer.DEFAULT_PORT); httpTimeOut=options.getInt(HTTP_TIMEOUT, HTTPReportServer.DEFAULT_TIMEOUT); ToolTipManager.sharedInstance().setEnabled(options.getBoolean(TOOLTIPS, true)); webVerbose=options.getBoolean(HTTP_VERBOSE, true); webAutostart=options.getBoolean(HTTP_AUTOSTART, true); String preferredBrowser=options.getString(BrowserLauncher.BROWSER); if(preferredBrowser!=null && preferredBrowser.length()>0) edu.xtec.util.BrowserLauncher.setPreferredBrowser(preferredBrowser); try{ String s=options.getString(HTTP_LOGFILE, null); if(s!=null){ FileOutputStream fos=new FileOutputStream(s, true); logWeb=new java.io.PrintWriter(fos, true); if(webServerListener!=null) webServerListener.writer=logWeb; } } catch(Exception ex){ msg.showErrorWarning(this, "error_opening_logs", ex); } } protected void startWebServer(){ if(httpServer.startServer(httpPort, httpTimeOut)){ startWebServerBtn.setEnabled(false); stopWebServerBtn.setEnabled(true); launchBrowserBtn.setEnabled(true); } else{ msg.showErrorWarning(this, "error_serverCannotStart", null); } } void stopWebServer(){ if(httpServer.serverRunning()) httpServer.stopServer(); startWebServerBtn.setEnabled(true); launchBrowserBtn.setEnabled(false); stopWebServerBtn.setEnabled(false); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the FormEditor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; webServerPane = new javax.swing.JPanel(); btnWebPanel = new javax.swing.JPanel(); startWebServerBtn = new javax.swing.JButton(); stopWebServerBtn = new javax.swing.JButton(); launchBrowserBtn = new javax.swing.JButton(); webMsgPanel = new javax.swing.JPanel(); webMsgScrollPane = new javax.swing.JScrollPane(); webMsgTextArea = new javax.swing.JTextArea(); webVerboseCheckBox = new javax.swing.JCheckBox(); webClearTextBtn = new javax.swing.JButton(); webCopyTextBtn = new javax.swing.JButton(); btnPanel = new javax.swing.JPanel(); settingsButton = new javax.swing.JButton(); aboutBtn = new javax.swing.JButton(); exitBtn = new javax.swing.JButton(); setTitle(msg.get("form_title")); setIconImage(frameIcon); setName(""); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { exitForm(evt); } }); webServerPane.setLayout(new java.awt.GridBagLayout()); btnWebPanel.setLayout(new java.awt.GridBagLayout()); startWebServerBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/run.gif"))); startWebServerBtn.setToolTipText(msg.get("form_btn_start_tooltip")); startWebServerBtn.setText(msg.get("form_btn_start")); startWebServerBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { startWebServerBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2); btnWebPanel.add(startWebServerBtn, gridBagConstraints); stopWebServerBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/cancel.gif"))); stopWebServerBtn.setToolTipText(msg.get("form_btn_stop_tooltip")); stopWebServerBtn.setText(msg.get("form_btn_stop")); stopWebServerBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { stopWebServerBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2); btnWebPanel.add(stopWebServerBtn, gridBagConstraints); launchBrowserBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/browser_small.gif"))); launchBrowserBtn.setText(msg.get("form_btn_show")); launchBrowserBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { launchBrowserBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(8, 2, 2, 2); btnWebPanel.add(launchBrowserBtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webServerPane.add(btnWebPanel, gridBagConstraints); webMsgPanel.setLayout(new java.awt.GridBagLayout()); webMsgPanel.setBorder(new javax.swing.border.TitledBorder(msg.get("form_messages_title"))); webMsgPanel.setMinimumSize(new java.awt.Dimension(300, 200)); webMsgPanel.setPreferredSize(new java.awt.Dimension(400, 200)); webMsgTextArea.setEditable(false); webMsgScrollPane.setViewportView(webMsgTextArea); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); webMsgPanel.add(webMsgScrollPane, gridBagConstraints); webVerboseCheckBox.setToolTipText(msg.get("form_messages_verbose_tooltip")); webVerboseCheckBox.setSelected(webVerbose); webVerboseCheckBox.setText(msg.get("form_messages_verbose")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); webMsgPanel.add(webVerboseCheckBox, gridBagConstraints); webClearTextBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/delete.gif"))); webClearTextBtn.setToolTipText(msg.get("form_messages_clear_tooltip")); webClearTextBtn.setText(msg.get("form_messages_clear")); webClearTextBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { webClearTextBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); webMsgPanel.add(webClearTextBtn, gridBagConstraints); webCopyTextBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/copy.gif"))); webCopyTextBtn.setToolTipText(msg.get("form_messages_copy_tooltip")); webCopyTextBtn.setText(msg.get("form_messages_copy")); webCopyTextBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { webCopyTextBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); webMsgPanel.add(webCopyTextBtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webServerPane.add(webMsgPanel, gridBagConstraints); getContentPane().add(webServerPane, java.awt.BorderLayout.CENTER); btnPanel.setLayout(new java.awt.GridBagLayout()); settingsButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/settings.gif"))); settingsButton.setText(msg.get("settings_button")); settingsButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { settingsButtonActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); btnPanel.add(settingsButton, gridBagConstraints); aboutBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/about_small.gif"))); aboutBtn.setText(msg.get("ABOUT")); aboutBtn.setToolTipText(msg.get("form_btn_exit_tooltip")); aboutBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { aboutBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); btnPanel.add(aboutBtn, gridBagConstraints); exitBtn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/exit_small.gif"))); exitBtn.setText(msg.get("form_btn_exit")); exitBtn.setToolTipText(msg.get("form_btn_exit_tooltip")); exitBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exitBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(10, 10, 10, 10); btnPanel.add(exitBtn, gridBagConstraints); getContentPane().add(btnPanel, java.awt.BorderLayout.SOUTH); }//GEN-END:initComponents private void aboutBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutBtnActionPerformed showAbout(); }//GEN-LAST:event_aboutBtnActionPerformed private void webClearTextBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_webClearTextBtnActionPerformed webMsgTextArea.setText(""); }//GEN-LAST:event_webClearTextBtnActionPerformed private void webCopyTextBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_webCopyTextBtnActionPerformed webMsgTextArea.selectAll(); webMsgTextArea.copy(); webMsgTextArea.select(0,0); // Add your handling code here: }//GEN-LAST:event_webCopyTextBtnActionPerformed private void launchBrowserBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_launchBrowserBtnActionPerformed try{ java.net.URL page=new java.net.URL("http", java.net.InetAddress.getLocalHost().getHostName(), httpPort, "/"); edu.xtec.util.BrowserLauncher.openURL(page.toExternalForm()); } catch(Exception ex){ msg.showErrorWarning(this, "error", ex); } }//GEN-LAST:event_launchBrowserBtnActionPerformed private void stopWebServerBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopWebServerBtnActionPerformed stopWebServer(); }//GEN-LAST:event_stopWebServerBtnActionPerformed private void startWebServerBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_startWebServerBtnActionPerformed startWebServer(); }//GEN-LAST:event_startWebServerBtnActionPerformed private void settingsButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_settingsButtonActionPerformed ReportServerSettingsDlg dlg=new ReportServerSettingsDlg(this, true, options); dlg.setVisible(true); if(dlg.result){ if(cfgFile!=null){ try{ String pwd=null; Properties prop=options.toProperties(); pwd=prop.getProperty(ConnectionBeanProvider.DB_PASSWORD, ""); if(pwd!=null && pwd.length()>0) prop.put(ConnectionBeanProvider.DB_PASSWORD, Encryption.Encrypt(pwd)); FileOutputStream os=new FileOutputStream(cfgFile); prop.store(os, "Jclic report server settings"); os.close(); } catch(Exception ex){ msg.showErrorWarning(this, "error_writting_settings", ex); } stopWebServer(); if(logWeb!=null){ logWeb.flush(); logWeb.close(); logWeb=null; webServerListener.writer=null; } try{ loadSettings(); } catch(Exception ex){ System.err.println("Error loading settings.\n"+ex); } if(webAutostart) startWebServer(); } } }//GEN-LAST:event_settingsButtonActionPerformed private void exitBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exitBtnActionPerformed exitForm(null); }//GEN-LAST:event_exitBtnActionPerformed /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm stopWebServer(); if(logWeb!=null){ logWeb.flush(); logWeb.close(); logWeb=null; webServerListener.writer=null; } System.exit(0); }//GEN-LAST:event_exitForm /** * @param args the command line arguments */ public static void main(String args[]) { //new ReportServer(args).show(); new ReportServer(args).setVisible(true); } class rsListener implements ReportServerEventMaker.Listener{ JTextArea textArea; java.io.PrintWriter writer; rsListener(JTextArea textArea){ this.textArea=textArea; } public void reportEventPerformed(ReportServerEvent ev) { if(webVerbose || ev.type==ReportServerEvent.SYSTEM){ StringBuffer sb=new StringBuffer(100); sb.append(dateFormat.format(new Date())); sb.append(" ").append(ev.toString()); if(writer!=null) writer.println(sb.substring(0)); textArea.append(sb.append("\n").substring(0)); } } } // Interface ResourceBridge // ****************************************** public java.io.InputStream getProgressInputStream(java.io.InputStream is, int expectedLength, String name){ return is; } public void displayUrl(String url, boolean inFrame){ try{ edu.xtec.util.BrowserLauncher.openURL(url); } catch(Exception ex){ System.err.println("Error opening URL: "+url); } } public edu.xtec.util.Options getOptions(){ return options; } public String getMsg(String key){ return msg.get(key); } public javax.swing.JComponent getComponent(){ return getRootPane(); } // ****************************************** protected void showAbout(){ AboutWindow aw=new AboutWindow(getComponent(), this, new java.awt.Dimension(500,400)); try{ aw.buildAboutTab("JClic Reports", getMsg("REPORTS_VERSION"), "logo_reports_small.png", null, null, null, null); aw.buildStandardTab(aw.getHtmlSystemInfo(), "about_window_systemInfo", "about_window_lb_system", "icons/system_small.gif"); aw.setVisible(true); } catch(Exception ex){ System.err.println("Error building about window!\n"+ex); } } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton aboutBtn; private javax.swing.JPanel btnPanel; private javax.swing.JPanel btnWebPanel; private javax.swing.JButton exitBtn; private javax.swing.JButton launchBrowserBtn; private javax.swing.JButton settingsButton; private javax.swing.JButton startWebServerBtn; private javax.swing.JButton stopWebServerBtn; private javax.swing.JButton webClearTextBtn; private javax.swing.JButton webCopyTextBtn; private javax.swing.JPanel webMsgPanel; private javax.swing.JScrollPane webMsgScrollPane; private javax.swing.JTextArea webMsgTextArea; private javax.swing.JPanel webServerPane; private javax.swing.JCheckBox webVerboseCheckBox; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/report/reportServer/ReportServer.form0000644000175000017500000004575611377161311020770 0ustar
jclic-0.2.1.0.orig/src/report/reportServer/ReportServerSettingsDlg.java0000644000175000017500000005521411377161311023104 0ustar /* * File : ReportServerSettingsDlg.java * Created : 21-feb-2003 09:57 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ import edu.xtec.jclic.ReportServerConstants; import edu.xtec.jclic.report.BasicJDBCBridge; import edu.xtec.util.BrowserLauncher; import edu.xtec.util.LFUtil; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.db.ConnectionBeanProvider; import java.awt.Frame; import java.awt.Point; import java.io.File; import javax.swing.JDialog; import javax.swing.JFileChooser; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ReportServerSettingsDlg extends JDialog implements ReportServerConstants{ Options options; Messages msg; public boolean result; /** Creates new form ReportServerSettingsDlg */ public ReportServerSettingsDlg(Frame parent, boolean modal, Options options) { super(parent, modal); this.options=options; msg=options.getMessages(); initComponents(); result=false; Point p=parent.getLocationOnScreen(); setLocation(p.x+80, p.y+30); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel browserLb; javax.swing.JButton btCancel; javax.swing.JButton btOk; javax.swing.JPanel btPanel; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel lookLb; javax.swing.JTabbedPane mainPanel; javax.swing.JPanel optionsPanel; mainPanel = new javax.swing.JTabbedPane(); optionsPanel = new javax.swing.JPanel(); langLb = new javax.swing.JLabel(); langCombo = new javax.swing.JComboBox(Messages.getDescriptiveLanguageCodes(msg.getLocale())); lookLb = new javax.swing.JLabel(); lookCombo = new javax.swing.JComboBox(edu.xtec.util.LFUtil.VALUES); tooltipChk = new javax.swing.JCheckBox(); browserLb = new javax.swing.JLabel(); browserField = new javax.swing.JTextField(); dbPanel = new javax.swing.JPanel(); driverLb = new javax.swing.JLabel(); driverField = new javax.swing.JTextField(); urlLb = new javax.swing.JLabel(); urlField = new javax.swing.JTextField(); usrLb = new javax.swing.JLabel(); usrField = new javax.swing.JTextField(); pwdLb = new javax.swing.JLabel(); pwdField = new javax.swing.JPasswordField(options.getString(ConnectionBeanProvider.DB_PASSWORD, ""), 20); prefixLb = new javax.swing.JLabel(); prefixFld = new javax.swing.JTextField(); createChk = new javax.swing.JCheckBox(); webPanel = new javax.swing.JPanel(); webAutostartChk = new javax.swing.JCheckBox(); webPortLb = new javax.swing.JLabel(); webPortField = new javax.swing.JTextField(); webTimeoutLb = new javax.swing.JLabel(); webTimeoutField = new javax.swing.JTextField(); sessionLifetimeLb = new javax.swing.JLabel(); sessionLifetimeField = new javax.swing.JTextField(); webLogLb = new javax.swing.JLabel(); webLogField = new javax.swing.JTextField(); logFileWebBtn = new javax.swing.JButton(); btPanel = new javax.swing.JPanel(); btOk = new javax.swing.JButton(); btCancel = new javax.swing.JButton(); setTitle(msg.get("settings_title")); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); optionsPanel.setLayout(new java.awt.GridBagLayout()); langLb.setText(msg.get("settings_options_language")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(langLb, gridBagConstraints); langCombo.setSelectedItem(Messages.getDescriptiveLanguageCode(msg.getLocale().getLanguage())); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(langCombo, gridBagConstraints); lookLb.setText(msg.get("settings_options_look")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(lookLb, gridBagConstraints); lookCombo.setSelectedItem(options.getString(LOOK, LFUtil.DEFAULT)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(lookCombo, gridBagConstraints); tooltipChk.setSelected(options.getBoolean(TOOLTIPS, true)); tooltipChk.setText(msg.get("settings_options_tooltips")); tooltipChk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tooltipChkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(tooltipChk, gridBagConstraints); browserLb.setLabelFor(browserField); browserLb.setText(msg.get("settings_browser")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(browserLb, gridBagConstraints); browserField.setText(options.getString(edu.xtec.util.BrowserLauncher.BROWSER, "")); browserField.setToolTipText("msg.get(\"settings_browser_tooltip\")"); browserField.setMinimumSize(new java.awt.Dimension(75, 21)); browserField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); optionsPanel.add(browserField, gridBagConstraints); mainPanel.addTab(msg.get("settings_options_title"), optionsPanel); dbPanel.setLayout(new java.awt.GridBagLayout()); dbPanel.setPreferredSize(new java.awt.Dimension(440, 200)); driverLb.setText(msg.get("settings_db_driver")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(driverLb, gridBagConstraints); driverField.setText(options.getString(ConnectionBeanProvider.DB_DRIVER, "")); driverField.setMinimumSize(new java.awt.Dimension(75, 21)); driverField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(driverField, gridBagConstraints); urlLb.setText(msg.get("settings_db_url")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(urlLb, gridBagConstraints); urlField.setText(options.getString(ConnectionBeanProvider.DB_SERVER, "")); urlField.setMinimumSize(new java.awt.Dimension(75, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(urlField, gridBagConstraints); usrLb.setText(msg.get("settings_db_usr")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(usrLb, gridBagConstraints); usrField.setText(options.getString(ConnectionBeanProvider.DB_LOGIN, "")); usrField.setMinimumSize(new java.awt.Dimension(75, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(usrField, gridBagConstraints); pwdLb.setText(msg.get("settings_db_pwd")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(pwdLb, gridBagConstraints); pwdField.setMinimumSize(new java.awt.Dimension(75, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(pwdField, gridBagConstraints); prefixLb.setText(msg.get("settings_tablePrefix")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(prefixLb, gridBagConstraints); prefixFld.setText(options.getString(BasicJDBCBridge.TABLE_PREFIX_KEY, "")); prefixFld.setMinimumSize(new java.awt.Dimension(75, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(prefixFld, gridBagConstraints); createChk.setSelected(options.getBoolean(BasicJDBCBridge.CREATE_TABLES_KEY, true)); createChk.setText(options.getMsg("settings_createTables")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); dbPanel.add(createChk, gridBagConstraints); mainPanel.addTab(msg.get("settings_db_title"), dbPanel); webPanel.setLayout(new java.awt.GridBagLayout()); webPanel.setPreferredSize(new java.awt.Dimension(300, 112)); webAutostartChk.setSelected(options.getBoolean(HTTP_AUTOSTART, false)); webAutostartChk.setText(msg.get("settings_server_autostart")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridx = 1; gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webAutostartChk, gridBagConstraints); webPortLb.setLabelFor(webPortField); webPortLb.setText(msg.get("settings_server_port")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webPortLb, gridBagConstraints); webPortField.setText(options.getString(HTTP_PORT, "")); webPortField.setMinimumSize(new java.awt.Dimension(70, 21)); webPortField.setPreferredSize(new java.awt.Dimension(80, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webPortField, gridBagConstraints); webTimeoutLb.setLabelFor(webTimeoutField); webTimeoutLb.setText(msg.get("settings_server_timeout")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webTimeoutLb, gridBagConstraints); webTimeoutField.setText(options.getString(HTTP_TIMEOUT, "")); webTimeoutField.setMinimumSize(new java.awt.Dimension(70, 21)); webTimeoutField.setPreferredSize(new java.awt.Dimension(80, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webTimeoutField, gridBagConstraints); sessionLifetimeLb.setLabelFor(sessionLifetimeField); sessionLifetimeLb.setText(msg.get("settings_session_lifetime")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(sessionLifetimeLb, gridBagConstraints); sessionLifetimeField.setText(options.getString(SESSION_LIFETIME, "")); sessionLifetimeField.setMinimumSize(new java.awt.Dimension(70, 21)); sessionLifetimeField.setPreferredSize(new java.awt.Dimension(80, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(sessionLifetimeField, gridBagConstraints); webLogLb.setLabelFor(webLogField); webLogLb.setText(msg.get("settings_server_logFile")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webLogLb, gridBagConstraints); webLogField.setText(options.getString(HTTP_LOGFILE, "")); webLogField.setMinimumSize(new java.awt.Dimension(70, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(webLogField, gridBagConstraints); logFileWebBtn.setText(msg.get("settings_file")); logFileWebBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { logFileWebBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); webPanel.add(logFileWebBtn, gridBagConstraints); mainPanel.addTab(msg.get("settings_web_title"), webPanel); getContentPane().add(mainPanel, java.awt.BorderLayout.CENTER); btOk.setText(msg.get("OK")); btOk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btOkActionPerformed(evt); } }); btPanel.add(btOk); btCancel.setText(msg.get("CANCEL")); btCancel.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btCancelActionPerformed(evt); } }); btPanel.add(btCancel); getContentPane().add(btPanel, java.awt.BorderLayout.SOUTH); pack(); }//GEN-END:initComponents private void logFileWebBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_logFileWebBtnActionPerformed JFileChooser chooser=null; File f=null; String s=webLogField.getText(); if(s!=null && s.length()>0){ f=new File(s); chooser=new JFileChooser(f.getParent()); chooser.setSelectedFile(f); } else{ chooser=new JFileChooser(); chooser.setSelectedFile(new File("jclic_webserver.log")); } int b=chooser.showSaveDialog(this); if(b==JFileChooser.APPROVE_OPTION){ webLogField.setText(chooser.getSelectedFile().getAbsolutePath()); } }//GEN-LAST:event_logFileWebBtnActionPerformed private void tooltipChkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tooltipChkActionPerformed // Add your handling code here: }//GEN-LAST:event_tooltipChkActionPerformed private void btCancelActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btCancelActionPerformed closeDialog(null); }//GEN-LAST:event_btCancelActionPerformed private void btOkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOkActionPerformed readValues(); result=true; closeDialog(null); }//GEN-LAST:event_btOkActionPerformed /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog setVisible(false); dispose(); }//GEN-LAST:event_closeDialog protected void readValues(){ options.put(Messages.LANGUAGE, Messages.getLanguageFromDescriptive(langCombo.getSelectedItem().toString())); options.put(LOOK, lookCombo.getSelectedItem().toString()); options.put(TOOLTIPS, tooltipChk.isSelected() ? TRUE : FALSE); options.put(ConnectionBeanProvider.DB_DRIVER, driverField.getText()); options.put(ConnectionBeanProvider.DB_SERVER, urlField.getText()); options.put(ConnectionBeanProvider.DB_LOGIN, usrField.getText()); options.put(ConnectionBeanProvider.DB_PASSWORD, new String(pwdField.getPassword())); options.put(BasicJDBCBridge.TABLE_PREFIX_KEY, prefixFld.getText()); options.put(BasicJDBCBridge.CREATE_TABLES_KEY, createChk.isSelected() ? "true" : "false"); options.put(HTTP_PORT, webPortField.getText()); options.put(HTTP_TIMEOUT, webTimeoutField.getText()); options.put(SESSION_LIFETIME, sessionLifetimeField.getText()); options.put(HTTP_AUTOSTART, webAutostartChk.isSelected() ? TRUE : FALSE); options.put(HTTP_LOGFILE, webLogField.getText()); options.put(BrowserLauncher.BROWSER, browserField.getText()); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField browserField; private javax.swing.JCheckBox createChk; private javax.swing.JPanel dbPanel; private javax.swing.JTextField driverField; private javax.swing.JLabel driverLb; private javax.swing.JComboBox langCombo; private javax.swing.JLabel langLb; private javax.swing.JButton logFileWebBtn; private javax.swing.JComboBox lookCombo; private javax.swing.JTextField prefixFld; private javax.swing.JLabel prefixLb; private javax.swing.JPasswordField pwdField; private javax.swing.JLabel pwdLb; private javax.swing.JTextField sessionLifetimeField; private javax.swing.JLabel sessionLifetimeLb; private javax.swing.JCheckBox tooltipChk; private javax.swing.JTextField urlField; private javax.swing.JLabel urlLb; private javax.swing.JTextField usrField; private javax.swing.JLabel usrLb; private javax.swing.JCheckBox webAutostartChk; private javax.swing.JTextField webLogField; private javax.swing.JLabel webLogLb; private javax.swing.JPanel webPanel; private javax.swing.JTextField webPortField; private javax.swing.JLabel webPortLb; private javax.swing.JTextField webTimeoutField; private javax.swing.JLabel webTimeoutLb; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/report/reportServer/CmdReportServer.java0000644000175000017500000002116611377161311021357 0ustar /* * File : CmdReportServer.java * Created : 16-jul-2001 20:23 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ import edu.xtec.jclic.report.*; import java.io.*; import java.text.DateFormat; import java.util.Date; import edu.xtec.util.Messages; import edu.xtec.jclic.ReportServerConstants; import edu.xtec.util.Encryption; import edu.xtec.util.db.ConnectionBeanProvider; import edu.xtec.util.db.PooledConnectionBeanProvider; import edu.xtec.util.db.SingleConnectionBeanProvider; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class CmdReportServer implements ReportServerEventMaker.Listener, ReportServerConstants { static String iDriver, iUrl, iUser, iPwd; static int iHttpPort, iHttpTimeout; static boolean iCreateTables; static String iTablePrefix; DateFormat dateFormat=DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM); public CmdReportServer(String driver, String url, String user, String pwd, int httpPort, int httpTimeOut, boolean createTables, String tablePrefix) throws Exception{ showValidCommands(); //ReportServerJDBCBridge bridge=new ReportServerJDBCBridge(driver, url, user, pwd); //ConnectionBeanProvider cbp=new PooledConnectionBeanProvider(driver, url, user, pwd, 2, 5, "JClicConnectionPool.log", 1.0); //ConnectionBeanProvider cbp=new SingleConnectionBeanProvider(driver, url, user, pwd, true); ConnectionBeanProvider cbp=ConnectionBeanProvider.getConnectionBeanProvider(true, driver, url, user, pwd, true); ReportServerJDBCBridge bridge=new ReportServerJDBCBridge(cbp, createTables, tablePrefix); reportEventPerformed(new ReportServerEvent(ReportServerEvent.SYSTEM, url, null, ReportServerEvent.CONNECT)); HTTPReportServer httpServer=new HTTPReportServer(new Messages(ReportServer.MSG_BUNDLE)); httpServer.addListener(this); //httpServer.startServer(bridge, httpPort, timeOut); httpServer.startServer(httpPort, httpTimeOut); BufferedReader in=new BufferedReader(new InputStreamReader(System.in)); boolean loop=true; String s=null; while(loop){ try{ s=in.readLine(); Thread.currentThread().sleep(1000); } catch(Exception ex){ loop=false; } if(s!=null){ if(s.equalsIgnoreCase("stop")){ httpServer.stopServer(); } else if(s.equalsIgnoreCase("start")) { httpServer.startServer(httpPort, httpTimeOut); } else if(s.equalsIgnoreCase("exit")){ if(httpServer.serverRunning()) httpServer.stopServer(); loop=false; } else{ showValidCommands(); } } } bridge.end(); bridge=null; reportEventPerformed(new ReportServerEvent(ReportServerEvent.SYSTEM, url, null, ReportServerEvent.DISCONNECT)); } public static void main(String[] args){ String propFile=CFG_FILE; java.util.Properties prop; int i=0; if(args.length>0){ if(args[1].equals("-help")){ displayHelp(); return; } if(!args[0].startsWith("-")){ propFile=args[0]; i++; } } prop=new java.util.Properties(); try{ prop.load(ReportServerConstants.class.getResourceAsStream(CFG_FILE)); if(!CFG_FILE.equals(propFile)){ prop.load(CmdReportServer.class.getResourceAsStream(propFile)); String pwd=prop.getProperty(ConnectionBeanProvider.DB_PASSWORD); if(pwd!=null && pwd.length()>0) prop.setProperty(ConnectionBeanProvider.DB_PASSWORD, Encryption.Decrypt(pwd)); } } catch(Exception ex){ System.err.println("ERROR: Invalid properties file name\n"+ex); displayHelp(); return; } iDriver=prop.getProperty(ConnectionBeanProvider.DB_DRIVER, edu.xtec.jclic.report.BasicJDBCBridge.DEFAULT_ODBC_BRIDGE); iUrl=prop.getProperty(ConnectionBeanProvider.DB_SERVER, edu.xtec.jclic.report.BasicJDBCBridge.DEFAULT_DB); iUser=prop.getProperty(ConnectionBeanProvider.DB_LOGIN, null); iPwd=prop.getProperty(ConnectionBeanProvider.DB_PASSWORD, null); iHttpPort=Integer.parseInt(prop.getProperty(HTTP_PORT, Integer.toString(HTTPReportServer.DEFAULT_PORT))); iHttpTimeout=Integer.parseInt(prop.getProperty(HTTP_TIMEOUT, Integer.toString(HTTPReportServer.DEFAULT_TIMEOUT))); iTablePrefix=prop.getProperty(BasicJDBCBridge.TABLE_PREFIX_KEY, null); iCreateTables="true".equalsIgnoreCase((prop.getProperty(BasicJDBCBridge.CREATE_TABLES_KEY, "true"))); for(; i
jclic-0.2.1.0.orig/src/report/webApp/0000755000175000017500000000000011377161311014134 5ustar jclic-0.2.1.0.orig/src/report/webApp/menys.gif0000644000175000017500000000007111377161311015754 0ustar GIF89a !, ^Lye|;jclic-0.2.1.0.orig/src/report/webApp/icon_reports.gif0000644000175000017500000000246711377161311017342 0ustar GIF89a<<Tkhƨȳs(ր2vYdӹ㼠`z3=%ۨzKғ~rƧx[Ȫ}β|!áooγĥx27V` ݳ٤߳R}޵t.{͇ϺvC mhk,]˯Ԙֿğްό^c^ ySt;5ȪεXbۥן!{,<<{s4eXXq00SbeJ>\mD2o Q40>Va "[B? DG%@KF9pCȌ?F(ϼ>&(Ddt܊z@G JR]0JЫG80Ç5YA>0ₑB E6"r50!Tt-}Hp4!*M ED.]) dxmɃ&ipn 5QUT[,ҵl&#A\8cWֶ,{Ø6Րo Z\pD>`tɈװ_?y!dĆ:ma= N|8<#|Ƌ"#Nh~7]|$"Dp0B B߿@f:p "DHgO0@}xI@& "b  >DNjP\0ĄWLvi1"X !F%Zbh=Ul A频1$t|qBQ%D!t6Ve&N[ [:F +g)0Ty0(Y0Afog -h-\@V2%g8~Ip¨VX)hd:Vkebױ.6[RmRvI-ήb*eծqRJ. jR^܎k>B*޹.&{g ,nn q#2L1;ok0aHnm 2"W\ _?rĭn>w'$|-$tҢ6,FZIS$1,^Ӷd{`0 n   H 3Pqw)n'8$;jclic-0.2.1.0.orig/src/report/webApp/basic.css0000644000175000017500000000400311377161311015724 0ustar body { background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; } tr, td { font-size: 10pt; } a:link { color: #006699; text-decoration: none; } a:visited { color: #006699; text-decoration: none; } a:hover { color: #dd6900; text-decoration: underline } a:active { color: #ff0000; } h1 { font-weight: bold; font-size: 14pt; color: #235A5A; background-image: url(icon_reports.gif); background-repeat: no-repeat; background-position: left bottom; padding-left: 70px; vertical-align: bottom; padding-top: 15px; padding-bottom: 4px; display: block; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; border-bottom-width: 2px; border-bottom-style: solid; } h2 { font-weight: bold; font-size: 10pt; color: purple } .menu { font-size: 11pt; line-height: 30px; font-weight: bold; } .cap { font-size: 14pt; color: #235A5A; background-color: #EFF7DD; font-weight: bold; font-family: Arial, Helvetica, sans-serif; } .topMenu { font-size: 8pt; font-weight: bold; padding-bottom: 3px; padding-top: 3px; margin-top: 0px; margin-bottom: 30px; } .info { background-color: #FFFFCC; border: 1px solid; padding: 5px; margin-top: 10px; margin-bottom: 10px; float: left; } .tblA { border-collapse: separate; border-spacing: 1px; } .tblA td { font-size: 8pt; background-color:#eeeeee; padding: 3px; } .tblA th { font-size: 8pt; background-color:#add8e6; padding: 3px; } #t2x td{ background-color: #f0f8ff } #t2x th{ background-color: #a6caf0; } #t2x #green{ background-color: #90ee90; text-align:center; } #t2x #red{ background-color: #ff7f50; text-align:center; } .inputForm { text-align: right; float: left; vertical-align: top; margin-right: 10px; } #compact p { margin: 2px 0px; } .inputForm p{ margin: 5px 0px; vertical-align: middle; } jclic-0.2.1.0.orig/src/report/webApp/META-INF/0000755000175000017500000000000011377161311015274 5ustar jclic-0.2.1.0.orig/src/report/webApp/META-INF/context.xml0000644000175000017500000000013511377161311017501 0ustar jclic-0.2.1.0.orig/src/report/webApp/index.html0000644000175000017500000000065311377161311016135 0ustar JClic reports

 
JClic reports

Enter

jclic-0.2.1.0.orig/src/report/webApp/mes.gif0000644000175000017500000000007111377161311015405 0ustar GIF89a !,  "Ks,S;jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/0000755000175000017500000000000011377161311015163 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/0000755000175000017500000000000011377161311016620 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/0000755000175000017500000000000011377161311017375 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/0000755000175000017500000000000011377161311020340 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/0000755000175000017500000000000011377161311021424 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/0000755000175000017500000000000011377161311022737 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/0000755000175000017500000000000011377161311024423 5ustar jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/GroupReport.java0000644000175000017500000000216111377161311027556 0ustar /* * File : GroupReport.java * Created : 11-feb-2003 15:32 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class GroupReport extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.GroupReport(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/UserAdmin.java0000644000175000017500000000215111377161311027154 0ustar /* * File : UserAdmin.java * Created : 19-feb-2003 19:00 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class UserAdmin extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.UserAdmin(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/Login.java0000644000175000017500000000213211377161311026334 0ustar /* * File : Login.java * Created : 12-jan-2003 12:34 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Login extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.Login(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/Resource.java0000644000175000017500000000210711377161311027055 0ustar /* * File : Resource.java * Created : 23-jan-2003 13:13 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Resource extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new ResourceRP(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/GroupAdmin.java0000644000175000017500000000215511377161311027336 0ustar /* * File : GroupAdmin.java * Created : 18-feb-2003 13:31 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class GroupAdmin extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.GroupAdmin(); } } ././@LongLink0000000000000000000000000000015400000000000011565 Lustar rootrootjclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/ContextParamsReader.javajclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/ContextParamsRead0000644000175000017500000000563111377161311027737 0ustar /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package edu.xtec.jclic.report.servlet; import edu.xtec.jclic.report.rp.ReportsRequestProcessor; import java.util.Enumeration; import java.util.Properties; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; /** * Web application lifecycle listener. * @author fbusquet */ public class ContextParamsReader implements ServletContextListener { public static final String PREFIX_ENV_KEY="PREFIX_ENV_KEY"; public static final String PREFIX_KEY="PREFIX_KEY"; public static final String PREFIX_SEP="_"; public void contextInitialized(ServletContextEvent sce) { javax.servlet.ServletContext sc=sce.getServletContext(); try{ // Read defaut values ReportsRequestProcessor.loadProperties(null); Properties prop=ReportsRequestProcessor.getProperties(); String prefixKey=null; // Try to find the name of the environment variable containing // the prefix key String prefixEnvKey=sc.getInitParameter(PREFIX_ENV_KEY); if(prefixEnvKey==null) prefixEnvKey=prop.getProperty(PREFIX_ENV_KEY); if(prefixEnvKey!=null) prefixKey=System.getenv(prefixEnvKey); // No environment variable set, then try to find the prefix key // directly if(prefixKey==null){ prefixKey=sc.getInitParameter(PREFIX_KEY); if(prefixKey==null) prefixKey=prop.getProperty(PREFIX_KEY); } if(prefixKey!=null && !prefixKey.endsWith(PREFIX_SEP)) prefixKey=prefixKey+PREFIX_SEP; // Read properties stored in web.xml Enumeration en=sc.getInitParameterNames(); while(en.hasMoreElements()){ String key=(String)en.nextElement(); if(prefixKey==null || key.startsWith(prefixKey) || key.indexOf(PREFIX_SEP)<0){ String value=sc.getInitParameter(key); if(value!=null && value.length()>0){ String realKey = prefixKey==null || key.indexOf(PREFIX_SEP)<0 ? key : key.substring(prefixKey.length()); prop.put(realKey, value); //System.out.println("Clau: "+realKey+" - Valor: "+value); } } } // Values stored in local properties file have always preference ReportsRequestProcessor.loadLocalProperties(null); } catch(Exception ex){ System.err.println("Error reading initial parameters: "+ex); } } public void contextDestroyed(ServletContextEvent sce) { } }././@LongLink0000000000000000000000000000015300000000000011564 Lustar rootrootjclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/JClicReportService.javajclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/JClicReportServic0000644000175000017500000000220111377161311027675 0ustar /* * File : JClicReportService.java * Created : 27-mar-2003 12:45 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JClicReportService extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.JClicReportService(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/DbAdmin.java0000644000175000017500000000214411377161311026565 0ustar /* * File : DbAdmin.java * Created : 12-feb-2003 12:50 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class DbAdmin extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.DbAdmin(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/ActReport.java0000644000175000017500000000215011377161311027167 0ustar /* * File : ActReport.java * Created : 12-feb-2003 12:55 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ActReport extends AbstractServlet { protected RequestProcessor createRP() throws Exception{ return new edu.xtec.jclic.report.rp.ActReport(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/Img.java0000644000175000017500000000212311377161311026000 0ustar /* * File : Img.java * Created : 03-feb-2003 16:49 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Img extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.Img(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/UserReport.java0000644000175000017500000000215611377161311027404 0ustar /* * File : UserReport.java * Created : 25-jan-2003 18:58 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class UserReport extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.UserReport(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/classes/edu/xtec/jclic/report/servlet/Main.java0000644000175000017500000000212711377161311026154 0ustar /* * File : Main.java * Created : 23-jan-2003 12:23 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.servlet; import edu.xtec.servlet.*; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Main extends AbstractServlet { protected RequestProcessor createRP() throws Exception { return new edu.xtec.jclic.report.rp.Main(); } } jclic-0.2.1.0.orig/src/report/webApp/WEB-INF/web.xml0000644000175000017500000001216011377161311016462 0ustar dbDriver JNDI dbServer jdbc/pool/ClicConnectionPoolDS dbMapStatements false dbLogFile jclicReportsDBConnection.log dbDebugLevel 2 dbLogAppend true tablePrefix JCLIC_ edu.xtec.jclic.report.servlet.ContextParamsReader login login edu.xtec.jclic.report.servlet.Login main main edu.xtec.jclic.report.servlet.Main resource resource edu.xtec.jclic.report.servlet.Resource dbAdmin dbAdmin edu.xtec.jclic.report.servlet.DbAdmin userReport userReport edu.xtec.jclic.report.servlet.UserReport img img img edu.xtec.jclic.report.servlet.Img groupReport edu.xtec.jclic.report.servlet.GroupReport actReport edu.xtec.jclic.report.servlet.ActReport groupAdmin edu.xtec.jclic.report.servlet.GroupAdmin userAdmin edu.xtec.jclic.report.servlet.UserAdmin JClicReportService JClicReportService edu.xtec.jclic.report.servlet.JClicReportService main /main login /login resource /resource dbAdmin /dbAdmin userReport /userReport img /img groupReport /groupReport actReport /actReport groupAdmin /groupAdmin userAdmin /userAdmin JClicReportService /JClicReportService 30 index.jsp index.html index.htm login jclic-0.2.1.0.orig/src/report/webApp/basic_print.css0000644000175000017500000000331711377161311017147 0ustar body { background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; } tr, td { font-size: 10pt; } a:link { color: black; text-decoration: none; } a:active { color: black; text-decoration: none; } a:visited { color: black; text-decoration: none; } h1 { font-weight: bold; font-size: 14pt; color: #235A5A; background-image: url(icon_reports.gif); background-repeat: no-repeat; background-position: left bottom; padding-left: 70px; vertical-align: bottom; padding-top: 15px; padding-bottom: 4px; display: block; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; border-bottom-width: 2px; border-bottom-style: solid; } h2 { font-weight: bold; font-size: 10pt; } .menu { font-size: 11pt; line-height: 30px; font-weight: bold; } .cap { font-size: 14pt; color: #235A5A; background-color: #EFF7DD; font-weight: bold; font-family: Arial, Helvetica, sans-serif; } .topMenu { display: none; } .info { background-color: #FFFFCC; border: 1px solid; padding: 5px; margin-top: 10px; margin-bottom: 10px; float: left; } .tblA { border-collapse: collapse; } .tblA td { border: 1px solid; font-size: 8pt; padding: 3px; } .tblA th { border: 1px solid; font-size: 8pt; padding: 3px; } #t2x td{ background-color: #f0f8ff } #t2x th{ background-color: #a6caf0; } #t2x #green{ background-color: #90ee90; text-align:center; } #t2x #red{ background-color: #ff7f50; text-align:center; } .inputForm { text-align: right; float: left; vertical-align: top; margin-right: 10px; margin-bottom: 10px; } #compact p { margin: 2px 0px; } .inputForm p{ margin: 5px 0px; vertical-align: middle; } #noPrint{ display: none; }jclic-0.2.1.0.orig/src/report/reportServlets/0000755000175000017500000000000011377161311015761 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/0000755000175000017500000000000011377161311016536 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/0000755000175000017500000000000011377161311017501 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/0000755000175000017500000000000011377161311020565 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/ReportServerConstants.java0000644000175000017500000000462011377161311025771 0ustar /* * File : ReportServerConstants.java * Created : 21-feb-2003 10:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public interface ReportServerConstants { public static final String TRUE="true", FALSE="false"; public static final String CFG_FILE="jclicReports.properties"; public static final String LANGUAGE="language", LOOK="lookAndFeel", TOOLTIPS="tooltips", HTTP_VERBOSE="http_verbose"; public static final String SESSION_LIFETIME="session_lifetime"; public static final String HTTP_PORT="http_port", HTTP_TIMEOUT="http_timeout", HTTP_AUTOSTART="http_autostart", HTTP_LOGFILE="http_logFile"; public static final String GRAPH_WIDTH="graph_width", GRAPH_DIST_WIDTH="graph_dist_width", GRAPH_HEIGHT="graph_height", GRAPH_HEADER_HEIGHT="graph_header_height", GRAPH_MARGIN="graph_margin", GRAPH_COLOR_BG="graph_color_bg", GRAPH_COLOR_TEXT="graph_color_text", GRAPH_COLOR_HEADER_BG="graph_color_header_bg", GRAPH_COLOR_HEADER_TEXT="graph_color_header_text", GRAPH_COLOR_BORDER="graph_color_border", GRAPH_COLOR_V1="graph_color_v1", GRAPH_COLOR_V2="graph_color_v2", GRAPH_COLOR_DIST="graph_color_dist", GRAPH_COLOR_ALERT="graph_color_alert", GRAPH_STROKE_WIDTH="graph_stroke_width"; public static final String GRAPH_FONT_FAMILY="graph_font_family", GRAPH_FONT_SIZE="graph_font_size"; public static final String GRAPH_MARGIN_X="graph_margin_x", GRAPH_MARGIN_Y="graph_margin_y", GRAPH_DIV_Y="graph_div_y", GRAPH_MAX_COLS="graph_max_cols", GRAPH_MARGIN_DIST_X="graph_margin_dist_x", GRAPH_MARGIN_DIST_Y="graph_margin_dist_y"; } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/0000755000175000017500000000000011377161311022100 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/ActivityData.java0000644000175000017500000000341111377161311025330 0ustar /* * File : ActivityData.java * Created : 07-feb-2003 17:01 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import java.io.IOException; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ActivityData implements java.io.Serializable{ public String project, activityName, id; public int time, actions, score, qualification; public boolean solved; /** Creates a new instance of ActivityData */ public ActivityData(String project, String activityName, String id, int time, int actions, int score, boolean solved, int qualification){ this.project = project!=null ? project.trim() : null; this.activityName = activityName!=null ? activityName.trim() : null; this.id = id!=null ? id.trim() : null; this.time=time; this.actions=actions; this.score=score; this.solved=solved; this.qualification=qualification; } public int percentSolved(){ int result=0; if(actions>0) result=(score*100)/actions; return result; } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/SessionData.java0000644000175000017500000000601311377161311025160 0ustar /* * File : SessionData.java * Created : 05-feb-2003 13:09 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import java.util.Date; import java.util.StringTokenizer; import java.util.GregorianCalendar; import java.util.HashSet; import java.util.Iterator; import java.util.Vector; import java.io.IOException; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class SessionData extends Object implements java.io.Serializable{ public String id; public Date date; public String project; public int numActs; public int actsSolved; public int totalPrec; public int totalTime; public int sessionCount; public HashSet users; public Vector actData; /** Creates a new instance of SessionData */ public SessionData(String id, String usr, String project, Date date, int numActs, int actsSolved, int totalPrec, int totalTime){ this.id= id!=null ? id.trim() : null; users=new HashSet(1); users.add(usr!=null ? usr.trim() : null); this.project = project!=null ? project.trim() : null; this.date = date; this.numActs = numActs; this.actsSolved = actsSolved; this.totalPrec = totalPrec; this.totalTime = Math.max(0, totalTime); sessionCount=1; } public void acumula(SessionData d){ actsSolved+=d.actsSolved; totalPrec+=d.totalPrec; numActs+=d.numActs; totalTime+=d.totalTime; users.addAll(d.users); if(project!=null && !project.equals(d.project)) project=""; id=""; sessionCount+=d.sessionCount; if(actData==null) actData=d.actData; else if(d.actData!=null) actData.addAll(d.actData); } public boolean sameDate(SessionData d){ return date!=null && d!=null && date.equals(d.date); } public int percentSolved(){ return numActs>0 ? (100*actsSolved)/numActs : 0; } public int percentPrec(){ return numActs>0 ? totalPrec/numActs : 0; } public String getUsr(){ String result=""; if(users.size()>1) result="*"; else{ Iterator it=users.iterator(); if(it.hasNext()) result=(String)it.next(); } return result; } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/0000755000175000017500000000000011377161311022521 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/GroupReport.java0000644000175000017500000000615611377161311025664 0ustar /* * File : GroupReport.java * Created : 11-feb-2003 15:33 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import java.util.Vector; import java.util.ResourceBundle; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class GroupReport extends Report{ public static String TITLE="group_report_title"; public static String URL="groupReport"; Vector sessionList; public String getTitle(ResourceBundle bundle){ return bundle.getString(TITLE); } public String getUrl(){ return URL; } public boolean init() throws Exception{ type=GRP; if(!super.init()) return false; projects=bridge.getProjListGrup(groupId, dm.dFrom, dm.dTo, kcc); sessionList=getSessionList(); /* if(session==null && sessionList!=null && sessionList.size()>0){ session=new Object[sessionList.size()]; for(int i=0; i\n"); zona(sb, "report_group", GROUP, true, opcioDefecte, vectorToArray(groups, true), groupId, isEditable, 180); zona(sb, "report_project", PROJECT, true, opcioDefecte, vectorToArray(projects, false, WILDCARD, "report_all_projects"), projectName, isEditable, 180); sb.append("\n"); zonaParams(sb); sb.append("
\n"); zonaData(sb); sb.append("
\n"); sb.append("\n"); sb.append("
\n"); sb.append("

\n"); if(sessionList.isEmpty()){ sb.append(getMsg("report_no_data")).append("\n

\n"); } else{ grafic(sb, Img.GROUP_GRAPH, false, true); sb.append("\n"); grafic(sb, Img.GROUP_GRAPH, true, true); sb.append("\n

\n"); resumGlobal(sb, sessionList, "tblA", "float: left; margin-right: 10px;"); llistaSessions(sb, sessionList, false, "tblA", null); } out.println(sb.substring(0)); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/ReportsRequestProcessor.java0000644000175000017500000000663111377161311030301 0ustar /* * File : ReportsRequestProcessor.java * Created : 27-mar-2003 17:11 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import edu.xtec.jclic.Constants; import edu.xtec.servlet.RequestProcessor; import edu.xtec.jclic.ReportServerConstants; import edu.xtec.jclic.report.BasicJDBCBridge; import edu.xtec.jclic.report.ReportServerJDBCBridge; import edu.xtec.util.db.*; import java.util.Properties; import java.io.File; import java.io.FileInputStream; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public abstract class ReportsRequestProcessor extends RequestProcessor implements ReportServerConstants{ protected static ReportServerJDBCBridge bridge; protected static Properties prop; public synchronized static void setProperties(Properties prop) { if(prop!=null){ if(bridge!=null){ bridge.end(); bridge=null; } } ReportsRequestProcessor.prop=prop; } public synchronized static Properties getProperties() { if(prop==null) prop=new Properties(); return prop; } public synchronized static void loadProperties(String file) throws Exception{ if(prop==null){ prop=new Properties(); prop.load(ReportServerConstants.class.getResourceAsStream(CFG_FILE)); loadLocalProperties(file); } } public synchronized static void loadLocalProperties(String file) throws Exception{ if(prop==null) prop=new Properties(); if(file==null) file=CFG_FILE; if(file!=null){ File f=new File(file); if(!f.isAbsolute()) f=new File(System.getProperty("user.home"), file); if(f.exists()){ FileInputStream is=new FileInputStream(f); prop.load(is); is.close(); } } } public synchronized static void initJDBCBridge(String propFile) throws Exception{ if(prop==null) loadProperties(propFile); if(bridge==null){ ConnectionBeanProvider cbp=ConnectionBeanProvider.getConnectionBeanProvider(true, prop); boolean createTables=!"false".equalsIgnoreCase((String)prop.get(BasicJDBCBridge.CREATE_TABLES_KEY)); String tablePrefix=(String)prop.get(BasicJDBCBridge.TABLE_PREFIX_KEY); bridge=new ReportServerJDBCBridge(cbp, createTables, tablePrefix); } } public boolean init() throws Exception{ if(!super.init()) return false; if(bridge==null) initJDBCBridge(null); return true; } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/DateManager.java0000644000175000017500000001336211377161311025541 0ustar /* * File : DateManager.java * Created : 14-feb-2003 16:38 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import edu.xtec.jclic.report.ReportUtils; import java.util.Date; import java.util.GregorianCalendar; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class DateManager { public static final String FROM="from", TO="to"; //public static final String FROM_FORM="fromForm", TO_FORM="toForm"; protected Date dFrom, dTo, firstDate, today; private GregorianCalendar calendar; protected Basic rp; /** Creates a new instance of DateManager */ public DateManager(Basic rp) { this.rp=rp; } public boolean init() throws Exception{ firstDate=rp.bridge.getMinSessionDate(); today=new Date(); if(firstDate==null || firstDate.compareTo(today)>0) firstDate=today; dFrom=rp.getDateParam(FROM, firstDate, false); dTo=rp.getDateParam(TO, today, true); if(dFrom.compareTo(dTo)>0) dFrom=dTo; System.out.println("From: "+dFrom+" To: "+dTo); return true; } public GregorianCalendar getCalendar(){ if(calendar==null) calendar=new GregorianCalendar(); return calendar; } public void writeHiddenFields(StringBuffer sb) throws Exception{ sb.append("\n"); sb.append("\n"); } public void writeDateScript(StringBuffer sb){ sb.append("\n"); } protected void zonaData(StringBuffer sb, String button){ liniaData(sb, true); liniaData(sb, false); if(button!=null){ sb.append("

").append(button).append("

"); } } protected void liniaData(StringBuffer sb, boolean bFrom){ String[] n=rp.getFormattedNumbers(); String msgKey = bFrom ? "report_from" : "report_to"; //String formName = bFrom ? FROM_FORM : TO_FORM; //String type = bFrom ? FROM : TO; String type = bFrom ? "From" : "To"; String ctrlName = rp.MAIN_FORM+"."+type; //String actionStr=" onChange=updateDate"+formName+"()"; String actionStr="\" onChange=updateDate"+type+"()"; GregorianCalendar c=getCalendar(); c.setTime(firstDate); int firstYear=c.get(GregorianCalendar.YEAR); c.setTime(today); int currentYear=c.get(GregorianCalendar.YEAR); c.setTime(bFrom ? dFrom : dTo); sb.append("

").append(rp.toNbsp(rp.getMsg(msgKey))).append(" "); sb.append("

\n"); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/UserAdmin.java0000644000175000017500000003551111377161311025260 0ustar /* * File : UserAdmin.java * Created : 19-feb-2003 16:06 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import edu.xtec.jclic.report.GroupData; import edu.xtec.jclic.report.UserData; import edu.xtec.util.StrUtils; import java.util.ResourceBundle; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class UserAdmin extends Basic{ public static String TITLE="user_admin_title"; public static String URL="userAdmin"; public static final String GROUP="group", ID="id", NAME="name", ICON="icon", USER="user"; // 22-mai-06: Added password fields public static final String PASS="pass", PASSC="passc"; // --- public static final int USER_MENU=0, EDIT=1, EDIT_UPDATE=2, CREATE=3, CREATE_UPDATE=4, DELETE=5, DELETE_UPDATE=6, CLEAR=7, CLEAR_UPDATE=8, ERROR=9; public static final String[] ACTIONS={"", "edit", "editUpd", "create", "createUpd", "del", "delUpd", "clear", "clearUpd"}; protected int page; protected DateManager dm; protected GroupData gd; protected UserData ud; protected String errMsg; protected boolean err=true; protected String returnUrl; public String getTitle(ResourceBundle bundle) { /* StringBuffer sb=new StringBuffer(bundle.getString(TITLE)); if(ud!=null && ud.text!=null && ud.text.length()>0) sb.append(": ").append(filter(ud.text)); return sb.toString(); */ return bundle.getString(TITLE); } public String getUrl() { return urlParam(URL, LANG, lang); } public String getUrl(int action){ StringBuffer sb=new StringBuffer(200); sb.append(URL); urlParamSb(sb, LANG, lang, true); urlParamSb(sb, ACTION, ACTIONS[action], false); if(ud!=null) urlParamSb(sb, USER, ud.getId(), false); else if(gd!=null) urlParamSb(sb, GROUP, gd.getId(), false); return sb.substring(0); } public boolean init() throws Exception{ if(!super.init()) return false; String uId=getParamNotNull(USER); if(uId.length()>0) ud=bridge.getUserData(uId); String gId=getParamNotNull(GROUP); if(ud!=null) gId=ud.groupId; if(gId.length()>0) gd=bridge.getGroupData(gId); page=getAction(ACTIONS, USER_MENU); if(page==CLEAR || page==CLEAR_UPDATE){ dm=new DateManager(this); if(!dm.init()) return false; } switch(page){ case EDIT_UPDATE: edit(); break; case CREATE_UPDATE: create(); break; case DELETE_UPDATE: delete(); break; case CLEAR_UPDATE: clear(); break; } return true; } protected void edit() throws Exception{ returnUrl=getUrl(USER_MENU); errMsg=getMsg("db_error")+"
"; String name=getParamNotNull(NAME).trim(); // 22-mai-06: Added password fields String pass=StrUtils.nullableString(getParam(PASS)); String passc=StrUtils.nullableString(getParam(PASSC)); // --- if(name.length()==0) errMsg=errMsg+getMsg("user_admin_invalid_name"); // 22-mai-06: Added password fields else if(!StrUtils.compareObjects(pass, passc)) errMsg=errMsg+getMsg("user_admin_err_bad_pw"); // --- else{ ud.setText(name); // 22-mai-06: Added password fields ud.pwd=(pass==null ? null : edu.xtec.util.Encryption.Encrypt(pass)); // --- ud.setIconUrl(getParamNotNull(ICON).trim()); try{ bridge.updateUser(ud, false); page=USER_MENU; } catch(Exception ex){ errMsg=errMsg+ex.getLocalizedMessage(); } } } protected String getGroupUrl(){ StringBuffer sb=new StringBuffer(300); sb.append(GroupAdmin.URL); urlParamSb(sb, LANG, lang, true); urlParamSb(sb, ACTION, GroupAdmin.ACTIONS[GroupAdmin.GROUP_MENU], false); urlParamSb(sb, GroupAdmin.GROUP, gd.getId(), false); return sb.substring(0); } protected void create() throws Exception{ returnUrl=getGroupUrl(); errMsg=getMsg("db_error")+"
"; String name=getParamNotNull(NAME).trim(); String id=getParamNotNull(ID).trim(); String icon=getParamNotNull(ICON).trim(); // 22-mai-06: Added password fields String pass=StrUtils.nullableString(getParam(PASS)); String passc=StrUtils.nullableString(getParam(PASSC)); // --- if(name.length()==0) errMsg=errMsg+getMsg("user_admin_invalid_name"); else if(id.length()==0) errMsg=errMsg+getMsg("user_admin_invalid_id"); // 22-mai-06: Added password fields else if(!StrUtils.compareObjects(pass, passc)) errMsg=errMsg+getMsg("user_admin_err_bad_pw"); // --- else{ ud=bridge.getUserData(id); if(ud!=null){ returnUrl=urlParam(urlParam(getUrl(CREATE), NAME, name), ICON, icon); errMsg=errMsg+getMsg("user_admin_id_already_exists"); } else{ try{ ud=new UserData(id, name, icon, null, gd.getId()); // 22-mai-06: Added password fields ud.pwd=(pass==null ? null : edu.xtec.util.Encryption.Encrypt(pass)); // --- bridge.updateUser(ud, true); page=USER_MENU; } catch(Exception ex){ ud=null; errMsg=errMsg+ex.getLocalizedMessage(); } } } } protected void delete() throws Exception{ returnUrl=getUrl(USER_MENU); try{ bridge.deleteUser(ud.getId()); ud=null; errMsg=getMsg("user_admin_user_deleted"); err=false; returnUrl=getGroupUrl(); } catch(Exception ex){ returnUrl=getUrl(USER_MENU); errMsg=getMsg("db_error")+"
"+ex.getLocalizedMessage(); } } protected void clear() throws Exception{ returnUrl=getUrl(USER_MENU); try{ bridge.clearUserReportData(ud.getId(), dm.dFrom, dm.dTo); page=USER_MENU; } catch(Exception ex){ errMsg=getMsg("db_error")+"
"+ex.getLocalizedMessage(); } } public void head(java.io.PrintWriter out) throws Exception{ super.head(out); if(page==CLEAR){ StringBuffer sb=new StringBuffer(300); dm.writeDateScript(sb); out.println(sb.substring(0)); } } public void body(java.io.PrintWriter out) throws Exception{ super.body(out); StringBuffer sb=new StringBuffer(3000); StringBuffer sb2=new StringBuffer(500); boolean flag=false; sb.append(linkTo(urlParam(Main.URL, LANG, lang), bundle.getString(Main.TITLE), null)); sb.append(" | "); sb.append(linkTo(urlParam(GroupAdmin.URL, LANG, lang), bundle.getString(GroupAdmin.TITLE), null)); if(gd!=null){ sb.append(" | "); sb.append(linkTo(getGroupUrl(), gd.getText(), null)); } if(page!=USER_MENU && ud!=null) sb.append(" | ").append(linkTo(getUrl(USER_MENU), ud.getText(), null)); standardHeader(out, filter(getTitle(bundle)), sb.substring(0)); sb.setLength(0); if(ud==null && page!=CREATE && page!=DELETE_UPDATE){ page=ERROR; if(errMsg==null) errMsg=getMsg("bad_data"); err=true; } switch(page){ case USER_MENU: sb.append("
\n"); sb.append("

").append(getMsg("user_admin_id")).append(" ").append(filter(ud.getId())).append("

\n"); sb.append("

").append(getMsg("user_admin_name")).append(" ").append(filter(ud.getText())).append("

\n"); // 22-mai-06: Added password fields sb.append("

").append(getMsg("user_admin_pw_prompt")).append(" ").append(ud.pwd==null ? "" : "***").append("

\n"); // --- sb.append("

").append(getMsg("user_admin_icon")).append(" "); if(ud.getIconUrl()!=null && ud.getIconUrl().length()>0){ sb.append(""); } else sb.append("---\n"); sb.append("

\n"); sb.append("

"); sb.append(buttonTo(getUrl(EDIT), getMsg("user_admin_edit_button"), null)); sb.append(buttonTo(getUrl(DELETE), getMsg("user_admin_delete_button"), null)); sb.append(buttonTo(getUrl(CLEAR), getMsg("user_admin_clear_button"), null)); sb.append("

\n"); sb.append("
\n"); sb.append("
\n"); break; case EDIT: flag=true; case CREATE: String id=(ud!=null ? ud.getId() : getParamNotNull(ID).trim()); String name=(ud!=null ? ud.getText() : getParamNotNull(NAME).trim()); String icon=(ud!=null ? ud.getIconUrl() : getParamNotNull(ICON).trim()); // 22-mai-06: Added password fields String pass=(ud!=null ? edu.xtec.util.Encryption.Decrypt(ud.pwd) : getParam(PASS)); // --- sb.append("
\n"); sb.append("

").append(getMsg("user_admin_id")).append(" "); sb.append("\n"); sb.append("

").append(getMsg("user_admin_name")).append(" "); sb.append("

\n"); // 22-mai-06: Added password fields sb.append("

").append(getMsg("user_admin_pw_prompt")).append(" "); sb.append("
\n"); sb.append("").append(getMsg("user_admin_pw_prompt_confirm")).append(" "); sb.append("

\n"); // --- sb.append("

").append(getMsg("user_admin_icon")).append(" "); sb.append("

\n"); sb.append("

"); sb.append(buttonTo(flag ? getUrl(USER_MENU) : getGroupUrl(), getMsg("cancel"), null)).append("

\n"); sb.append("
\n"); sb.append("
\n"); break; case DELETE: sb.append("

").append(getMsg("user_admin_delete_user")).append(" \"").append(filter(ud.getText())).append("\"

\n"); sb.append("

").append(getMsg("user_admin_delete_user_explain")).append("

\n"); sb.append("

").append(getMsg("report_areyousure")).append("

\n"); sb.append("
\n"); sb.append("

"); sb.append(buttonTo(getUrl(USER_MENU), getMsg("NOT"), "width=50")); sb.append("

\n"); sb.append("
\n"); break; case CLEAR: sb.append("

").append(getMsg("user_admin_clear_user")).append(" \"").append(filter(ud.getText())).append("\"

\n"); sb.append("

").append(getMsg("user_admin_clear_user_explain")).append("

\n"); sb.append("
\n"); dm.writeHiddenFields(sb); sb2.setLength(0); sb2.append("document.").append(MAIN_FORM).append(".submit()"); dm.zonaData(sb, buttonAction(sb2.substring(0), getMsg("db_clear_reports_date"), null)); sb.append("
\n"); sb.append("
\n"); break; default: sb.append("

").append(getMsg(err ? "error" : "success")).append("

\n"); if(errMsg!=null) sb.append("

").append(errMsg).append("

\n"); if(returnUrl!=null) sb.append("

").append(getMsg("return")).append("

\n"); } out.println(sb.substring(0)); }; } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/Login.java0000644000175000017500000000440611377161311024440 0ustar /* * File : Login.java * Created : 23-jan-2003 12:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import edu.xtec.servlet.*; import java.util.ResourceBundle; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class Login extends Basic{ public static String TITLE="login_title"; public static String URL="login"; public Login(){ super(); //auth=true; } public String getTitle(ResourceBundle bundle){ return bundle.getString(TITLE); } public String getUrl(){ return URL; } protected boolean checkAuth(){ return true; } public void body(java.io.PrintWriter out) throws Exception{ super.body(out); standardHeader(out, getMsg("login_title"), ""); StringBuffer sb=new StringBuffer(2000); if(TRUE.equals(getParam(RETRY))) sb.append("

").append(getMsg("login_incorrect")).append("

\n"); sb.append("

").append(getMsg("login_desc")).append("

\n"); sb.append("
\n"); sb.append("\n"); sb.append("

").append(getMsg("login_pwd")).append("

\n"); sb.append("

\n"); sb.append("
"); out.println(sb.substring(0)); }; } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/GroupAdmin.java0000644000175000017500000003470311377161311025440 0ustar /* * File : GroupAdmin.java * Created : 14-feb-2003 15:53 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import java.util.Date; import java.util.ResourceBundle; import edu.xtec.jclic.report.GroupData; import java.util.Vector; import java.util.Iterator; import edu.xtec.jclic.report.UserData; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class GroupAdmin extends Basic{ public static String TITLE="group_admin_title"; public static String URL="groupAdmin"; public static final String GROUP="group", ID="id", NAME="name", ICON="icon"; public static final int MENU=0, GROUP_MENU=1, EDIT=2, EDIT_UPDATE=3, CREATE=4, CREATE_UPDATE=5, DELETE=6, DELETE_UPDATE=7, CLEAR=8, CLEAR_UPDATE=9, ERROR=10; public static final String[] ACTIONS={"", "group", "edit", "editUpd", "create", "createUpd", "del", "delUpd", "clear", "clearUpd"}; protected int page; protected DateManager dm; protected Vector groups, users; protected GroupData gd; protected String errMsg; protected String returnUrl; public String getTitle(ResourceBundle bundle) { StringBuffer sb=new StringBuffer(200); sb.append(bundle.getString(TITLE)); if(gd!=null && gd.getText()!=null && gd.getText().length()>0) sb.append(": ").append(filter(gd.getText())); return sb.substring(0); } public String getUrl() { return urlParam(URL, LANG, lang); } public String getUrl(int action){ StringBuffer sb=new StringBuffer(300); sb.append(URL); urlParamSb(sb, LANG, lang, true); urlParamSb(sb, ACTION, ACTIONS[action], false); if(gd!=null) urlParamSb(sb, GROUP, gd.getId(), false); return sb.substring(0); } public boolean init() throws Exception{ if(!super.init()) return false; String gId=getParamNotNull(GROUP); if(gId.length()>0) gd=bridge.getGroupData(gId); page=getAction(ACTIONS, MENU); if(page==CLEAR || page==CLEAR_UPDATE){ dm=new DateManager(this); if(!dm.init()) return false; } switch(page){ case EDIT_UPDATE: edit(); break; case CREATE_UPDATE: create(); break; case DELETE_UPDATE: delete(); break; case CLEAR_UPDATE: clear(); break; } if(page==MENU) groups=bridge.getGroups(); else if(page==GROUP_MENU && gd!=null) users=bridge.getUsers(gd.getId()); return true; } protected void edit() throws Exception{ returnUrl=getUrl(GROUP_MENU); errMsg=getMsg("db_error")+"
"; String name=getParamNotNull(NAME).trim(); if(name.length()==0) errMsg=errMsg+getMsg("group_admin_invalid_name"); else{ gd.setText(name); gd.setIconUrl(getParamNotNull(ICON).trim()); try{ bridge.updateGroup(gd, false); page=GROUP_MENU; } catch(Exception ex){ errMsg=errMsg+ex.getLocalizedMessage(); } } } protected void create() throws Exception{ returnUrl=getUrl(MENU); errMsg=getMsg("db_error")+"
"; String name=getParamNotNull(NAME).trim(); String id=getParamNotNull(ID).trim(); String icon=getParamNotNull(ICON).trim(); if(name.length()==0) errMsg=errMsg+getMsg("group_admin_invalid_name"); else if(id.length()==0) errMsg=errMsg+getMsg("group_admin_invalid_id"); else{ gd=bridge.getGroupData(id); if(gd!=null){ returnUrl=urlParam(urlParam(getUrl(CREATE), NAME, name), ICON, icon); errMsg=errMsg+getMsg("group_admin_id_already_exists"); } else{ try{ gd=new GroupData(id, name, icon, null); bridge.updateGroup(gd, true); page=GROUP_MENU; } catch(Exception ex){ gd=null; errMsg=errMsg+ex.getLocalizedMessage(); } } } } protected void delete() throws Exception{ returnUrl=getUrl(GROUP_MENU); try{ bridge.deleteGroup(gd.getId()); gd=null; page=MENU; } catch(Exception ex){ returnUrl=getUrl(GROUP_MENU); errMsg=getMsg("db_error")+"
"+ex.getLocalizedMessage(); } } protected void clear() throws Exception{ returnUrl=getUrl(GROUP_MENU); try{ bridge.clearGroupReportData(gd.getId(), dm.dFrom, dm.dTo); page=GROUP_MENU; } catch(Exception ex){ errMsg=getMsg("db_error")+"
"+ex.getLocalizedMessage(); } } public void head(java.io.PrintWriter out) throws Exception{ super.head(out); if(page==CLEAR){ StringBuffer sb=new StringBuffer(200); dm.writeDateScript(sb); out.println(sb.substring(0)); } } public void body(java.io.PrintWriter out) throws Exception{ super.body(out); StringBuffer sb=new StringBuffer(2000); StringBuffer sb2=new StringBuffer(500); Iterator it; boolean flag=false; // decidir titol segons pagina sb.append(linkTo(urlParam(Main.URL, LANG, lang), bundle.getString(Main.TITLE), null)); if(page!=MENU) sb.append(" | ").append(linkTo(getUrl(), getMsg(TITLE), null)); standardHeader(out, filter(getTitle(bundle)), sb.substring(0)); sb.setLength(0); if(gd==null && page!=CREATE && page!=MENU){ page=ERROR; if(errMsg==null) errMsg=getMsg("bad_data"); } switch(page){ case MENU: sb.append("\n"); sb.append("\n"); it=groups.iterator(); while(it.hasNext()){ GroupData gd=(GroupData)it.next(); String url=urlParam(getUrl(GROUP_MENU), GROUP, gd.getId()); sb.append("\n"); } sb.append("
").append(getMsg("group_admin_groups")).append("
").append(filter(gd.getText())); sb.append("
\n"); sb.append("
\n"); sb.append("
"); sb.append(buttonTo(getUrl(CREATE), getMsg("group_admin_new_button"), null)); sb.append("
"); break; case GROUP_MENU: sb.append("
\n"); sb.append("

").append(getMsg("group_admin_id")).append(" ").append(filter(gd.getId())).append("

\n"); sb.append("

").append(getMsg("group_admin_name")).append(" ").append(filter(gd.getText())).append("

\n"); sb.append("

").append(getMsg("group_admin_icon")).append(" "); if(gd.getIconUrl()!=null && gd.getIconUrl().length()>0){ sb.append(""); } else sb.append("---"); sb.append("

\n"); sb.append("

"); sb.append(buttonTo(getUrl(EDIT), getMsg("group_admin_edit_button"), null)); sb.append(buttonTo(getUrl(DELETE), getMsg("group_admin_delete_button"), null)); sb.append(buttonTo(getUrl(CLEAR), getMsg("group_admin_clear_button"), null)); sb.append("

\n"); sb.append("\n
\n"); if(users!=null && users.size()>0){ sb.append("\n"); sb.append("\n"); it=users.iterator(); while(it.hasNext()){ UserData ud=(UserData)it.next(); sb2.setLength(0); sb2.append(UserAdmin.URL); urlParamSb(sb2, LANG, lang, true); urlParamSb(sb2, GROUP, gd.getId(), false); urlParamSb(sb2, UserAdmin.USER, ud.getId(), false); sb.append("\n"); } sb.append("
").append(getMsg("group_admin_users")).append("
").append(filter(ud.getText())); sb.append("
\n"); sb.append("
"); } else{ sb.append("

").append(getMsg("group_admin_no_users")).append("

\n"); } sb.append("
"); sb2.setLength(0); sb2.append(UserAdmin.URL); urlParamSb(sb2, LANG, lang, true); urlParamSb(sb2, ACTION, UserAdmin.ACTIONS[UserAdmin.CREATE], false); urlParamSb(sb2, GROUP, gd.getId(), false); sb.append(buttonTo(sb2.substring(0), getMsg("group_admin_create_user_button"), null)); sb.append("
\n"); break; case EDIT: flag=true; case CREATE: String id=(gd!=null ? gd.getId() : getParamNotNull(ID).trim()); String name=(gd!=null ? gd.getText() : getParamNotNull(NAME).trim()); String icon=(gd!=null ? gd.getIconUrl() : getParamNotNull(ICON).trim()); sb.append("
\n"); sb.append("

").append(getMsg("group_admin_id")).append(" "); sb.append("

\n"); //if(!flag) // sb.append(""); //else // sb.append(filter(id==null ? "" : id)); //sb.append("

\n"); sb.append("

").append(getMsg("group_admin_name")).append(" "); sb.append("

\n"); sb.append("

").append(getMsg("group_admin_icon")).append(" "); sb.append("

\n"); sb.append("

"); sb.append(buttonTo(getUrl(flag ? GROUP_MENU : MENU), getMsg("cancel"), null)); sb.append("

\n"); sb.append("
\n"); sb.append("
\n"); break; case DELETE: sb.append("

").append(getMsg("group_admin_delete_group")).append(" \"").append(filter(gd.getText())).append("\"

\n"); sb.append("

").append(getMsg("group_admin_delete_group_explain")).append("

\n"); sb.append("

").append(getMsg("report_areyousure")).append("

\n"); sb.append("
\n"); sb.append("

\n"); sb.append(buttonTo(getUrl(GROUP_MENU), getMsg("NOT"), " width=50")); sb.append("

\n"); sb.append("
\n"); break; case CLEAR: sb.append("

").append(getMsg("group_admin_clear_group")).append(" \"").append(filter(gd.getText())).append("\"

\n"); sb.append("

").append(getMsg("group_admin_clear_group_explain")).append("

\n"); sb.append("
\n"); dm.writeHiddenFields(sb); sb2.setLength(0); sb2.append("document.").append(MAIN_FORM).append(".submit()"); dm.zonaData(sb, buttonAction(sb2.substring(0), getMsg("db_clear_reports_date"), null)); sb.append("
\n"); sb.append("
\n"); break; default: sb.append("

").append(getMsg("error")).append("

\n"); if(errMsg!=null){ sb.append("

").append(errMsg).append("

\n"); } if(returnUrl!=null){ sb.append("

").append(getMsg("return")).append("

\n"); } } out.println(sb.substring(0)); }; } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/BasicReport.java0000644000175000017500000001266611377161311025614 0ustar /* * File : BasicReport.java * Created : 04-feb-2003 15:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import java.util.Vector; import java.io.File; import java.io.FileInputStream; import java.io.ObjectInputStream; import java.io.FileOutputStream; import java.io.ObjectOutputStream; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public abstract class BasicReport extends Basic{ public static final int USR=0, GRP=1, PRJ=2, UNKNOWN=-1; public static final String EDIT="edit", CHANGE="change", NEW="new", GROUP="group", USER="user", PROJECT="project", ACTIVITY="activity", DATE="date", PID="pid"; public static final String WILDCARD="-1"; //public static final String FROM="from", TO="to"; public static final String[] KCC={"sessionKey", "sessionCode", "sessionContext"}; public static final File SDIR=new File(System.getProperty("java.io.tmpdir")); //protected Date dFrom, dTo, firstDate, today; protected String groupId; protected String userId; protected String projectName; protected String activityName; protected String[] kcc; protected int type=UNKNOWN; //private GregorianCalendar calendar; protected String pageId; protected DateManager dm; public boolean init() throws Exception{ if(!super.init()) return false; dm=new DateManager(this); userId=getParamNotNull(USER); if(userId.length()>0 && (int)userId.charAt(0)==160) userId=userId.replace((char)160,' '); groupId = getParamNotNull(GROUP); projectName=getParamNotNull(PROJECT); activityName=getParamNotNull(ACTIVITY); kcc=new String[3]; for(int i=0; i0) firstDate=today; dFrom=getDateParam(FROM, firstDate, false); dTo=getDateParam(TO, today, true); if(dFrom.compareTo(dTo)>0) dFrom=dTo; */ return dm.init(); } protected Vector getSessionList() throws Exception{ Vector v=null; File f=new File(SDIR, "report_"+pageId+".ser"); if(f.exists()){ FileInputStream in = new FileInputStream(f); ObjectInputStream s = new ObjectInputStream(in); v=(Vector)s.readObject(); } else{ switch(type){ case USR: v=bridge.getInfoSessionUser(userId, projectName, dm.dFrom, dm.dTo, kcc, false); break; case GRP: v=bridge.getInfoSessionGroup(groupId, projectName, dm.dFrom, dm.dTo, kcc, true); break; case PRJ: v=bridge.getInfoSessionAct(projectName, activityName, dm.dFrom, dm.dTo, kcc, true); break; default: v=new Vector(); } FileOutputStream out = new FileOutputStream(f); ObjectOutputStream s = new ObjectOutputStream(out); s.writeObject(v); f.deleteOnExit(); } return v; } public String[][] vToArray(Vector v, String wildCardKey, String wildCardMsg){ String[][] result=null; if(wildCardKey!=null || (v!=null && v.size()>0)){ int l=(v!=null ? v.size() : 0); result=new String[l+(wildCardKey!=null ? 1 : 0)][]; int k=0; if(wildCardKey!=null){ String s=wildCardKey; if(wildCardMsg!=null) s=getMsg(wildCardMsg); result[k++]=new String[]{wildCardKey, s}; } if(v!=null){ for(int i=0; i0){ int l=v.size(); result=new String[l][]; for(int i=0; i0){ //PASSWORD field exists, Maybe null String sTypedPwd=getParam(PWD); if(sTypedPwd!=null && sPwd.equals(edu.xtec.util.Encryption.Encrypt(sTypedPwd))) ok=true; else retry=true; } else ok=true; } catch(Exception ex){ ok=false; } if(ok){ char[] key=new char[12]; for(int i=0; i<12; i++){ char k=(char)(Math.random()*36); if(k<10) key[i]=(char)('0'+k); else key[i]=(char)('A'+k-10); } auth=new String(key); sessions.put(auth, new Long(System.currentTimeMillis())); } } return auth!=null; } public void header(java.util.Vector v){ super.header(v); if(!checkAuth()){ v.add(new String[]{REDIRECT, urlParam(Login.URL, RETRY, retry ? TRUE:FALSE)}); } } public void head(java.io.PrintWriter out) throws Exception{ super.head(out); title(bundle.getString("jclic_reports"), getTitle(bundle), out); linkStyle(resourceUrl("basic.css"), resourceUrl("basic_print.css"), out); }; public void standardHeader(java.io.PrintWriter out, String title, String menu) throws Exception{ StringBuffer sb=new StringBuffer(300); sb.append("

").append(getMsg("jclic_reports")).append("
").append(title).append("

\n"); sb.append("

").append(menu).append("

"); out.println(sb.substring(0)); } protected boolean getBoolParam(String paramStr, String expectedValue){ boolean result=false; String s=getParam(paramStr); if(s!=null && s.length()>0){ if(expectedValue==null) result=true; else result=expectedValue.toLowerCase().equals(s.trim().toLowerCase()); } return result; } public static String linkTo(String url, String text, String style){ StringBuffer sb=new StringBuffer(url.length()+text.length()+200); sb.append(""); sb.append(filter(text)); sb.append(""); return sb.substring(0); } public static String buttonAction(String action, String text, String extra){ StringBuffer sb=new StringBuffer(text.length()+200); sb.append(""); return sb.substring(0); } public static String buttonTo(String url, String text, String extra){ return buttonAction("window.location.href='"+escape(url)+"'", text, extra); } protected static String urlParam(String url, String key, String value){ return urlParamSb(new StringBuffer(url.length()+100).append(url), key, value, url.indexOf('?')<0).substring(0); } protected static StringBuffer urlParamSb(StringBuffer sb, String key, String value, boolean first){ if(value!=null && value.length()>0){ sb.append(first ? "?" : "&"); sb.append(key).append("=").append(ReportUtils.urlEncode(value, false, false)); } return sb; } protected int getAction(String[] actions, int defaultAction){ String action=getParam(ACTION); int result=defaultAction; if(action!=null){ action=action.trim(); for(int i=0; i0)){ int l=(v!=null ? v.size() : 0); result=new String[l+(wildCardKey!=null ? 1 : 0)][]; int k=0; if(wildCardKey!=null){ String s=wildCardKey; if(wildCardMsg!=null) s=getMsg(wildCardMsg); result[k++]=new String[]{wildCardKey, s}; } if(v!=null){ for(int i=0; i\n"); sb.append("
\n"); writeAdminFields(sb, true); sb.append("

\n"); sb.append("
\n"); sb.append("\n"); break; case EDIT_PWD: writeEditPwd(sb); break; default: sb.append("
\n"); sb.append("
\n"); writeAdminFields(sb, false); sb.append("

").append(buttonTo(getUrl(EDIT_SETTINGS), bundle.getString("db_admin_edit_btn"), null)); sb.append(" "); sb.append(buttonTo(getUrl(EDIT_PWD), bundle.getString("db_admin_pw_edit_btn"), null)).append("

"); sb.append("
\n"); sb.append("
\n"); } out.println(sb.substring(0)); }; private void writeEditPwdScript(StringBuffer sb) throws Exception{ sb.append("\n"); } private void writeEditPwd(StringBuffer sb) throws Exception{ sb.append("
\n"); sb.append("
\n"); sb.append("

").append(getMsg("db_admin_pw_newPwd")).append(": "); sb.append("

\n"); sb.append("

").append(getMsg("db_admin_pw_verifyPwd")).append(": "); sb.append("

\n"); sb.append("

\n"); sb.append("

\n"); sb.append("
\n"); } private void writeAdminFields(StringBuffer sb, boolean edit) throws Exception{ java.util.HashMap settings=bridge.getProperties(); for(int i=0; i").append(filter(getMsg("db_admin_param_"+DB_BOOL_PARAMS[i]))); sb.append("

\n"); } for(int i=0; i"); sb.append(filter(getMsg("db_admin_param_"+DB_LITERAL_PARAMS[i]))); sb.append(" "); sb.append("

\n"); } } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/ActReport.java0000644000175000017500000000677611377161311025307 0ustar /* * File : ActReport.java * Created : 12-feb-2003 12:56 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import java.util.Vector; import java.util.ResourceBundle; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ActReport extends Report{ public static String TITLE="act_report_title"; public static String URL="actReport"; Vector activities, sessionList; public String getTitle(ResourceBundle bundle){ return bundle.getString(TITLE); } public String getUrl(){ return URL; } public boolean init() throws Exception{ type=PRJ; if(!super.init()) return false; projects=bridge.getProjList(null, dm.dFrom, dm.dTo, kcc); //projectList=vToArray( //bridge.getProjList(null, dm.dFrom, dm.dTo, kcc), //null, null); if((projectName==null || projectName.length()==0 || projectName.equals(WILDCARD)) && projects!=null && projects.size()>0){ projectName=(String)projects.get(0); activityName=WILDCARD; } activities=bridge.getActList(projectName, dm.dFrom, dm.dTo, kcc); /* activityList=vToArray( bridge.getActList(projectName, dm.dFrom, dm.dTo, kcc), WILDCARD, "report_all_activities"); */ sessionList=getSessionList(); return true; } public void body(java.io.PrintWriter out) throws Exception{ super.body(out); StringBuffer sb=new StringBuffer(3000); sb.append("
\n"); zona(sb, "report_project", PROJECT, true, opcioDefecte, vectorToArray(projects, false), projectName, isEditable, 180); zona(sb, "report_activity", ACTIVITY, true, opcioDefecte, vectorToArray(activities, false, WILDCARD, "report_all_activities"), activityName, isEditable, 180); sb.append("
\n"); zonaParams(sb); sb.append("
\n"); zonaData(sb); sb.append("
\n"); sb.append("\n"); sb.append("
\n"); sb.append("

\n"); if(sessionList.isEmpty()){ sb.append(getMsg("report_no_data")).append("\n

\n"); } else{ grafic(sb, Img.PROJECT_GRAPH, false, true); sb.append("\n"); grafic(sb, Img.PROJECT_GRAPH, true, true); sb.append("\n

\n"); resumGlobal(sb, sessionList, "tblA", "float: left; margin-right: 10px;"); llistaSessions(sb, sessionList, false, "tblA", null); } out.println(sb.substring(0)); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/Img.java0000644000175000017500000004506011377161311024105 0ustar /* * File : Img.java * Created : 03-feb-2003 16:46 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import java.awt.*; import java.awt.image.BufferedImage; import java.util.ResourceBundle; import java.util.Vector; import java.util.Enumeration; import java.awt.font.LineMetrics; import edu.xtec.jclic.report.SessionData; import java.util.Iterator; import java.util.Date; import java.text.DecimalFormat; import edu.xtec.jclic.report.ActivityData; import javax.imageio.ImageIO; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class Img extends BasicReport { public static final String URL="img"; public static final String TYPE="type", HEADER="header", GRAPH="graph", TEXT="text", DIST="dist", WIDTH="w", HEIGHT="h"; public static final String USER_GRAPH="userGraph", GROUP_GRAPH="groupGraph", PROJECT_GRAPH="projectGraph"; public static int DEFAULT_WIDTH, DIST_WIDTH, DEFAULT_HEIGHT, DEFAULT_HEADER_HEIGHT, MRG; public static Color BG_COLOR, TEXT_COLOR, BORDER_COLOR, HEADER_BG_COLOR, HEADER_TEXT_COLOR, V1_COLOR, V2_COLOR, DIST_COLOR, ALERT_COLOR; public static Stroke THIN_STROKE, BOLD_STROKE; public static Font STD_FONT, BOLD_FONT, ALERT_FONT; public static int MARGE_X, MARGE_Y, NUM_DIVISIONS_Y, MAX_COLS; public static int M_X_DIST, M_Y_DIST; boolean withHeader, isDist; int width, height; String titleKey; static{ if(DEFAULT_WIDTH==0){ try{ loadSettings(null); } catch(Exception ex){ } } } public Img() throws Exception{ super(); } public String getTitle(ResourceBundle bundle) { return ""; } public String getUrl() { return URL; } public boolean noCache(){ return false; } public static void loadSettings(String file) throws Exception{ loadProperties(file); DEFAULT_WIDTH=Integer.parseInt(prop.getProperty(GRAPH_WIDTH, "440")); DIST_WIDTH=Integer.parseInt(prop.getProperty(GRAPH_DIST_WIDTH, "192")); DEFAULT_HEIGHT=Integer.parseInt(prop.getProperty(GRAPH_HEIGHT, "155")); DEFAULT_HEADER_HEIGHT=Integer.parseInt(prop.getProperty(GRAPH_HEADER_HEIGHT, "25")); MRG=Integer.parseInt(prop.getProperty(GRAPH_MARGIN, "8")); BG_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_BG, "008080"), 16)); TEXT_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_TEXT, "FFFFFF"), 16)); HEADER_BG_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_HEADER_BG, "008080"), 16)); HEADER_TEXT_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_HEADER_TEXT, "FFFFFF"), 16)); BORDER_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_BORDER, "000000"), 16)); V1_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_V1, "00FF00"), 16)); V2_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_V2, "0000FF"), 16)); DIST_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_DIST, "0000FF"), 16)); ALERT_COLOR=new Color(Integer.parseInt(prop.getProperty(GRAPH_COLOR_ALERT, "FF0000"), 16)); BOLD_STROKE=new BasicStroke(Float.parseFloat(prop.getProperty(GRAPH_STROKE_WIDTH, "3.0"))); THIN_STROKE=new BasicStroke(1.0f); try{ String fontFamily=prop.getProperty(GRAPH_FONT_FAMILY, "Dialog"); int fontSize=Integer.parseInt(prop.getProperty(GRAPH_FONT_SIZE, "11")); STD_FONT=new Font(fontFamily, Font.PLAIN, fontSize); BOLD_FONT=new Font(fontFamily, Font.BOLD, fontSize); ALERT_FONT=new Font(fontFamily, Font.BOLD, 24); } catch(Exception ex){ // Sense fonts!!! } MARGE_X=Integer.parseInt(prop.getProperty(GRAPH_MARGIN_X, "50")); MARGE_Y=Integer.parseInt(prop.getProperty(GRAPH_MARGIN_Y, "20")); NUM_DIVISIONS_Y=Integer.parseInt(prop.getProperty(GRAPH_DIV_Y, "4")); MAX_COLS=Integer.parseInt(prop.getProperty(GRAPH_MAX_COLS, "10")); M_X_DIST=Integer.parseInt(prop.getProperty(GRAPH_MARGIN_DIST_X, "15")); M_Y_DIST=Integer.parseInt(prop.getProperty(GRAPH_MARGIN_DIST_Y, "20")); } public boolean init() throws Exception{ if(!super.init()) return false; withHeader=getBoolParam(HEADER, TRUE); isDist=getBoolParam(DIST, TRUE); type=UNKNOWN; String s=getParam(TYPE); if(USER_GRAPH.equals(s)){ type=USR; titleKey="report_user_evolution"; } else if(GROUP_GRAPH.equals(s)){ type=GRP; titleKey="report_group_evolution"; } else if(PROJECT_GRAPH.equals(s)){ type=PRJ; titleKey="report_project_evolution"; } else{ type=UNKNOWN; errCode=HTTP_BAD_REQUEST; throw new Exception(); } if(isDist) titleKey="report_result_distribution"; width = getIntParam(WIDTH, isDist ? DIST_WIDTH : DEFAULT_WIDTH); height = getIntParam(HEIGHT, DEFAULT_HEIGHT); if(width<=0 || height<=0){ System.err.println("EP!!"); } return true; }; public void header(java.util.Vector v){ //super.header(v); //v.add(new String[]{CONTENT_TYPE, "image/gif"}); v.add(new String[]{CONTENT_TYPE, "image/png"}); } public boolean usesWriter(){ return false; } public void process(java.io.OutputStream out) throws Exception { BufferedImage bi=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D g2=(Graphics2D)bi.getGraphics(); int h = withHeader ? DEFAULT_HEADER_HEIGHT : 0; Rectangle allRect=new Rectangle(0, 0, width, height); Rectangle hr=new Rectangle(0, 0, width, h); Rectangle gr=new Rectangle(0, h, width, height-h); g2.setColor(BG_COLOR); g2.fill(allRect); if(withHeader){ g2.setColor(HEADER_BG_COLOR); g2.fill(hr); } g2.setColor(BORDER_COLOR); g2.draw(new Rectangle(0, 0, width-1, height-1)); if(withHeader){ drawHeader(g2, hr); g2.setColor(BORDER_COLOR); g2.drawLine(0, h, width, h); } if(isDist) dibuixaDistribucio(g2, getSessionList(), gr); else dibuixaImatge(g2, getSessionList(), gr); g2.dispose(); ImageIO.write(bi, "png", out); } protected void drawHeader(Graphics2D g2, Rectangle box) throws Exception{ FontMetrics fm=g2.getFontMetrics(STD_FONT); int fh=fm.getHeight(); int rs=fh/2; int dy=(box.height-fh)/2; int dyr=(box.height-rs)/2; if(!isDist){ String var1=bundle.getString("report_global_precision"); String var2=bundle.getString("report_solved_activities"); int lvar1=fm.stringWidth(var1); int lvar2=fm.stringWidth(var2); Rectangle r1=new Rectangle(box.x+box.width-MRG-lvar2-6-rs-2*MRG-lvar1-6-fh, box.y+dyr, rs, rs); Rectangle r2=new Rectangle(box.x+box.width-MRG-lvar2-6-rs, box.y+dyr, rs, rs); g2.setColor(V1_COLOR); g2.fill(r1); g2.setColor(V2_COLOR); g2.fill(r2); g2.setColor(BORDER_COLOR); g2.draw(r1); g2.draw(r2); g2.setFont(STD_FONT); g2.setColor(HEADER_TEXT_COLOR); g2.drawString(var1, box.x+r1.x+rs+6, box.y+dy+fm.getAscent()); g2.drawString(var2, box.x+r2.x+rs+6, box.y+dy+fm.getAscent()); } g2.setColor(HEADER_TEXT_COLOR); g2.setFont(BOLD_FONT); g2.drawString(bundle.getString(titleKey), box.x+MRG, box.y+dy+fm.getAscent()); } public void dibuixaImatge(Graphics2D g2, Vector v, Rectangle box) throws Exception{ g2.setColor(TEXT_COLOR); g2.setStroke(THIN_STROKE); int gWidth=box.width-(2 * MARGE_X); int gHeight=box.height-(2 * MARGE_Y); g2.drawRect(box.x+MARGE_X, box.y+MARGE_Y, gWidth, gHeight); if(v.size()>0){ float lDivY=gHeight/NUM_DIVISIONS_Y; for(int i=1; i0){ Iterator it2=sd.actData.iterator(); while(it.hasNext()){ ActivityData ad=(ActivityData)it.next(); dist[Math.min(99, ad.qualification)/vc]++; } } else{ dist[Math.min(99, sd.percentPrec())/vc]+=sd.numActs; } } int leftMargin=M_X_DIST; int topMargin=M_Y_DIST; g2.setColor(TEXT_COLOR); g2.setStroke(THIN_STROKE); g2.setFont(STD_FONT); float max=0.0f, maxOrdenades=0.0f, maxDivisio=0.0f; boolean data=false; for(int i=0; i0); if(data){ max=dist[0]; for (int i=1; i0.01; f-=maxDivisio) numDivisionsY++; if (numDivisionsY>0){ float longdivisioY=gHeight/numDivisionsY; for (int i=1; i9){ i=(int)f; f=f/10; xifresTretes++; } if (i==1) i=2; else if (i>1 && i<5) i=5; else i=10; //i>=5 || i==0 for(int k=1; k0){ session=new Object[sessionList.size()]; for(int i=0; i0){ //actList=new Vector[session.length]; for(int i=0; i0) sd.actData=bridge.getPacSessionList(null, null, sd.id, dm.dFrom, dm.dTo, kcc); //String id=((SessionData)sessionList.get(i)).id; //if(id!=null) //actList[i]=bridge.getPacSessionList(null, null, id, dFrom, dTo, kcc); } } } return true; } public void head(java.io.PrintWriter out) throws Exception{ super.head(out); StringBuffer sb=new StringBuffer(200); writeSessionScript(sb); out.println(sb.substring(0)); } public void body(java.io.PrintWriter out) throws Exception{ super.body(out); StringBuffer sb=new StringBuffer(3000); sb.append("
\n"); zona(sb, "report_group", GROUP, true, opcioDefecte, vectorToArray(groups, true), groupId, isEditable, 180); zona(sb, "report_user", USER, true, opcioDefecte, vectorToArray(users, true), userId, isEditable, 180); zona(sb, "report_project", PROJECT, true, opcioDefecte, vectorToArray(projects, false, WILDCARD, "report_all_projects"), projectName, isEditable, 180); sb.append("
\n"); zonaParams(sb); sb.append("
\n"); zonaData(sb); sb.append("
\n"); sb.append("\n"); sb.append("
\n"); sb.append("

\n"); if(sessionList.isEmpty()){ sb.append(getMsg("report_no_data")).append("\n

\n"); } else{ grafic(sb, Img.USER_GRAPH, false, true); sb.append("\n"); grafic(sb, Img.USER_GRAPH, true, true); sb.append("\n

\n"); resumGlobal(sb, sessionList, "tblA", "float: left; margin-right: 10px;"); llistaSessions(sb, sessionList, true, "tblA", null); } out.println(sb.substring(0)); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/Main.java0000644000175000017500000000475311377161311024261 0ustar /* * File : Main.java * Created : 23-jan-2003 11:43 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import edu.xtec.servlet.*; import java.util.ResourceBundle; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class Main extends Basic{ public static String TITLE="main_title"; public static String URL="main"; public String getTitle(ResourceBundle bundle){ return bundle.getString(TITLE); } public String getUrl(){ return URL; } //private static final String PRE_MENU="

"; //private static final String POST_MENU="

\n"; //private static final String MENU_STYLE="menu"; public void body(java.io.PrintWriter out) throws Exception{ super.body(out); standardHeader(out, getMsg("main_title"), ""); StringBuffer sb=new StringBuffer(3000); sb.append("
    \n"); if(bridge.hasUserTables()){ sb.append("
  • ").append(linkTo(urlParam(GroupAdmin.URL, LANG, lang), bundle.getString(GroupAdmin.TITLE), null)).append("
  • \n"); sb.append("
  • ").append(linkTo(urlParam(GroupReport.URL, LANG, lang), bundle.getString(GroupReport.TITLE), null)).append("
  • \n"); sb.append("
  • ").append(linkTo(urlParam(UserReport.URL, LANG, lang), bundle.getString(UserReport.TITLE), null)).append("
  • \n"); } sb.append("
  • ").append(linkTo(urlParam(ActReport.URL, LANG, lang), bundle.getString(ActReport.TITLE), null)).append("
  • \n"); sb.append("
  • ").append(linkTo(urlParam(DbAdmin.URL, LANG, lang), bundle.getString(DbAdmin.TITLE), null)).append("
  • \n"); sb.append("
"); out.println(sb.substring(0)); }; } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/rp/Report.java0000644000175000017500000005363611377161311024654 0ustar /* * File : Report.java * Created : 25-jan-2003 18:52 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report.rp; import java.util.Vector; import edu.xtec.jclic.report.ReportUtils; import java.util.HashSet; import java.util.Iterator; import edu.xtec.jclic.report.SessionData; import edu.xtec.util.Html; import edu.xtec.jclic.report.ActivityData; import edu.xtec.jclic.report.UserData; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public abstract class Report extends BasicReport { public static final int DEFAULT_SELECT_WIDTH=180; public static final String SESSION="session"; protected boolean isEditable=true; protected boolean userTables=true; protected String change; protected String opcioDefecte; protected Object[] session; protected Vector groups, users, projects; public boolean init() throws Exception{ if(!super.init()) return false; isEditable=!(FALSE.equalsIgnoreCase(getParamNotNull(EDIT))); userTables=bridge.hasUserTables(); if(userTables){ groups=bridge.getGroups(); //groupList=vToArray(bridge.getGroups(), 2, 0); if(groupId.length()>0) users=bridge.getUsers(groupId); //userList=vToArray(bridge.getUsers(groupId), 2, 0); } session=getParams(SESSION); change=getParam(CHANGE); switch( GROUP.equals(change) ? 0 : USER.equals(change) ? 1 : DATE.equals(change) ? 2 : PROJECT.equals(change) ? 3 : ACTIVITY.equals(change) ? 4 : 5){ case 0: if(users!=null && users.size()>0) userId=((UserData)users.get(0)).getId(); else userId=""; case 1: projectName=WILDCARD; case 2: case 3: session=null; activityName=WILDCARD; case 4: default: break; } return true; } public void head(java.io.PrintWriter out) throws Exception{ super.head(out); StringBuffer sb=new StringBuffer(300); writeGoScript(sb); dm.writeDateScript(sb); out.println(sb.substring(0)); } public void body(java.io.PrintWriter out) throws Exception{ super.body(out); StringBuffer sb=new StringBuffer(2000); if(isEditable) sb.append(linkTo(urlParam(Main.URL, LANG, lang), bundle.getString(Main.TITLE), null)); standardHeader(out, filter(getTitle(bundle)), sb.substring(0)); sb.setLength(0); sb.append("
\n"); sb.append("\n"); sb.append("\n"); dm.writeHiddenFields(sb); if(session!=null){ for(int i=0; i<=session.length; i++){ sb.append("\n"); } } if(!isEditable) sb.append("\n"); out.println(sb.substring(0)); } protected void writeGoScript(StringBuffer sb){ sb.append("\n"); } protected void writeSessionScript(StringBuffer sb){ sb.append("\n"); } protected void llista(StringBuffer sb, String selectName, boolean submitOnChange, String defaultOption, String[][] values, String selectedValue, int width){ /* Mostra una llista desplegable (objecte SELECT) amb opcions */ sb.append("\n"); } protected void zona(StringBuffer sb, String descKey, String selectName, boolean submitOnChange, String defaultOption, String[][] values, String selectedValue, boolean showList, int width){ sb.append("

").append(filter(getMsg(descKey))).append(" "); if(showList && values!=null) llista(sb, selectName, submitOnChange, defaultOption, values, selectedValue, width); else{ sb.append("\n"); if(selectedValue!=null && values!=null){ for(int i=0; i\n"); } protected void zonaData(StringBuffer sb){ StringBuffer sb2=new StringBuffer(100); sb2.append("go('").append(DATE).append("')"); dm.zonaData(sb, buttonAction(sb2.substring(0), getMsg("submit"), null)); } public static final String[] KCC_LABELS={"report_key", "report_code", "report_context"}; protected void zonaParams(StringBuffer sb){ sb.append("

\n"); for(int i=0; i"); //zonaParam(sb, KCC[i], kcc[i], KCC_LABELS[i], !isEditable); if(isEditable) sb.append(filter(getMsg(KCC_LABELS[i]))).append(" "); sb.append("

\n"); } sb.append("
\n"); } /* protected void zonaParam(StringBuffer sb, String key, String value, String descKey, boolean hidden){ //sb.append(""); if(!hidden) sb.append(filter(getMsg(descKey))).append(" "); sb.append("\n"); } */ protected void grafic(StringBuffer sb, String type, boolean dist, boolean withHeader) throws Exception{ int w=dist ? Img.DIST_WIDTH : Img.DEFAULT_WIDTH; int h=Img.DEFAULT_HEIGHT+Img.DEFAULT_HEADER_HEIGHT; StringBuffer urlG=new StringBuffer(300); urlG.append(Img.URL); urlParamSb(urlG, Img.TYPE, type, true); if(dist) urlParamSb(urlG, Img.DIST, TRUE, false); if(withHeader) urlParamSb(urlG, Img.HEADER, TRUE, false); urlParamSb(urlG, Img.WIDTH, Integer.toString(w), false); urlParamSb(urlG, Img.HEIGHT, Integer.toString(h), false); urlParamSb(urlG, PID, pageId, false); urlParamSb(urlG, USER, userId, false); urlParamSb(urlG, GROUP, groupId, false); if(projectName.length()>0 && !projectName.equals(WILDCARD)) urlParamSb(urlG, PROJECT, projectName, false); if(activityName.length()>0 && !activityName.equals(WILDCARD)) urlParamSb(urlG, ACTIVITY, activityName, false); for(int i=0; i"); } protected void llistaSessions(StringBuffer sb, Vector v, boolean expandable, String className, String style) throws Exception{ //String cl=" CLASS=\"T1\""; //String clh=" CLASS=\"T1header\""; //Html html=new Html(sb); int n=0; sb.append("\n"); sb.append(""); sb.append("\n"); n++; if(type==PRJ || type==GRP){ sb.append("\n"); sb.append("\n"); n+=2; } if(type==USR){ sb.append("\n"); n+=2; } sb.append("\n"); sb.append("\n"); sb.append("\n"); sb.append("\n"); n+=4; sb.append("\n"); //html.tr(false); StringBuffer sb2=new StringBuffer(500); StringBuffer sb3=new StringBuffer(100); for(int i=0; i\n"); sb2.setLength(0); boolean link = expandable && sd.id!=null && sd.id.length()>0; boolean status = link && sd.actData!=null; if(expandable){ if(link){ sb2.append(""); sb2.append("\"");"); sb2.append(" "); } else sb2.append("  "); } sb2.append(shortDateFormat.format(sd.date)); sb3.setLength(0); //sb3.append(cl); if(status) sb3.append(" valign=\"top\" rowspan=\"").append(sd.actData.size()+2).append("\""); sb.append("\n"); //html.td(sb2.substring(0), Html.LEFT, false, sb3.substring(0)); if(type==GRP || type==PRJ){ String s=sd.getUsr(); if("*".equals(s)){ sb2.setLength(0); sb2.append("(").append(numberFormat.format(sd.users.size())).append(" ").append(bundle.getString("report_n_users")).append(")"); s=sb2.substring(0); } sb.append("\n"); //html.td(filter(s), Html.RIGHT, false, cl); sb.append("\n"); //html.td(Integer.toString(sd.sessionCount), Html.RIGHT, false, cl); } if(type==USR){ sb.append("\n"); //html.td(filter(sd.project), Html.LEFT, false, "COLSPAN=\"2\" "+cl); } sb.append("\n"); //html.td(Integer.toString(sd.numActs), Html.RIGHT, false, cl); sb.append("\n"); //html.td(Integer.toString(sd.actsSolved)+" ("+sd.percentSolved()+"%)", Html.RIGHT, false, cl); sb.append("\n"); //html.td(formatTime(sd.totalTime), Html.RIGHT, false, cl); sb.append("\n"); //html.td(Integer.toString(sd.percentPrec())+"%", Html.RIGHT, false, cl); sb.append("\n"); //html.tr(false); if(status){ llistaActivitats(sb, sd.actData); } } sb.append("
").append(toNbsp(getMsg("report_header_date"))).append("").append(toNbsp(getMsg("report_header_user"))).append("").append(toNbsp(getMsg("report_header_sessions"))).append("").append(toNbsp(getMsg("report_header_project"))).append("").append(toNbsp(getMsg("report_header_numActs"))).append("").append(toNbsp(getMsg("report_header_actsSolved"))).append("").append(toNbsp(getMsg("report_header_time"))).append("").append(toNbsp(getMsg("report_header_prec"))).append("
").append(sb2.substring(0)).append("").append(filter(s)).append("").append(numberFormat.format(sd.sessionCount)).append("").append(filter(sd.project)).append("").append(numberFormat.format(sd.numActs)).append("").append(numberFormat.format(sd.actsSolved)).append(" (").append(numberFormat.format(sd.percentSolved())).append("%)").append(formatTime(sd.totalTime)).append("").append(numberFormat.format(sd.percentPrec())).append("%
"); } protected void llistaActivitats(StringBuffer sb, Vector v) throws Exception{ //String cl=" CLASS=\"T2\""; //String clh=" CLASS=\"T2header\""; //String clGreen=" CLASS=\"Tgreen\""; //String clRed=" CLASS=\"Tred\""; //Html html=new Html(sb); sb.append("\n"); //html.tr(true); sb.append("").append(toNbsp(getMsg("report_header_activity"))).append("\n"); //html.td(toNbsp(getMsg("report_header_activity")), Html.LEFT, true, clh); if(type==PRJ || type==GRP){ sb.append("").append(toNbsp(getMsg("report_header_user"))).append("\n"); //html.td(toNbsp(getMsg("report_header_user")), Html.LEFT, true, clh); } if(type==GRP){ sb.append("").append(toNbsp(getMsg("report_header_project"))).append("\n"); //html.td(toNbsp(getMsg("report_header_project")), Html.LEFT, true, clh); } sb.append("").append(toNbsp(getMsg("report_header_solved"))).append("\n"); //html.td(toNbsp(getMsg("report_header_solved")), Html.RIGHT, true, clh); sb.append("").append(toNbsp(getMsg("report_header_actions"))).append("\n"); //html.td(toNbsp(getMsg("report_header_actions")), Html.RIGHT, true, clh); sb.append("").append(toNbsp(getMsg("report_header_score"))).append("\n"); //html.td(toNbsp(getMsg("report_header_score")), Html.RIGHT, true, clh); sb.append("").append(toNbsp(getMsg("report_header_time"))).append("\n"); //html.td(toNbsp(getMsg("report_header_time")), Html.RIGHT, true, clh); sb.append("").append(toNbsp(getMsg("report_header_prec"))).append("\n"); //html.td(toNbsp(getMsg("report_header_prec")), Html.RIGHT, true, clh); sb.append("\n"); //html.tr(false); for(int i=0; i\n"); //html.tr(true); sb.append("").append(filter(ad.activityName)).append("\n"); //html.td(filter(ad.activityName), Html.LEFT, false, cl); if(type==PRJ || type==GRP){ sb.append("\n"); //html.td("", Html.LEFT, false, cl); } if(type==GRP){ sb.append("").append(filter(ad.project)).append("\n"); //html.td(filter(ad.project), Html.LEFT, false, cl); } sb.append(""); sb.append(getMsg(ad.solved ? "YES_SHORT" : "NOT_SHORT")).append("\n"); //html.td(getMsg(ad.solved ? "Y" : "N"), Html.CENTER, false, ad.solved ? clGreen : clRed); sb.append("").append(numberFormat.format(ad.actions)).append("\n"); //html.td(Integer.toString(ad.actions), Html.RIGHT, false, cl); sb.append("").append(numberFormat.format(ad.score)).append(" (").append(numberFormat.format(ad.percentSolved())).append("%)\n"); //html.td(Integer.toString(ad.score)+" ("+ad.percentSolved()+"%)", Html.RIGHT, false, cl); sb.append("").append(formatTime(ad.time)).append("\n"); //html.td(formatTime(ad.time), Html.RIGHT, false, cl); sb.append("").append(numberFormat.format(ad.qualification)).append("%\n"); //html.td(Integer.toString(ad.qualification)+"%", Html.RIGHT, false, cl); sb.append("\n"); //html.tr(false); } } protected void resumGlobal(StringBuffer sb, Vector v, String className, String style) throws Exception{ int sessions=0, users=0, numProjects=0, act_fetes=0, act_res=0, temps=0, precisio=0; if(!projectName.equals(WILDCARD)) numProjects=1; else if(projects!=null){ numProjects=projects.size(); if(projects.size()>0 && WILDCARD.equals(projects.get(0))) numProjects--; } HashSet hs=new HashSet(); Iterator it=v.iterator(); while(it.hasNext()){ SessionData sd=(SessionData)it.next(); act_fetes+=sd.numActs; act_res+=sd.actsSolved; temps+=sd.totalTime; precisio+=sd.totalPrec; sessions+=sd.sessionCount; hs.addAll(sd.users); } users=hs.size(); sb.append("\n"); sb.append("\n"); if(users>1) resumTD(sb, getMsg("report_users"), numberFormat.format(users)); resumTD(sb, getMsg("report_sessions"), numberFormat.format(sessions)); if(type!=PRJ) resumTD(sb, getMsg("report_projects"), numberFormat.format(numProjects)); resumTD(sb, getMsg("report_actDone"), numberFormat.format(act_fetes)); StringBuffer sb2=new StringBuffer(200); sb2.append(numberFormat.format(act_res)).append(" (").append(numberFormat.format(act_fetes==0 ? 0 : 100*act_res/act_fetes)).append("%)"); resumTD(sb, getMsg("report_actSolved"), sb2.substring(0)); resumTD(sb, getMsg("report_totalTime"), formatTime(temps)); sb2.setLength(0); sb2.append(numberFormat.format(act_fetes==0 ? 0 : precisio/act_fetes)).append("%"); resumTD(sb, getMsg("report_globalPrec"), sb2.substring(0)); sb.append("
").append(filter(getMsg("report_globalSummary"))).append("
\n"); } protected void resumTD(StringBuffer sb, String td1, String td2){ sb.append("").append(toNbsp(td1)); sb.append("").append(toNbsp(td2)).append("\n"); } public String formatTime(int secs){ secs=Math.max(0, secs); String[] n=getFormattedNumbers(); int h=secs/(60*60); int m=(secs-(h*60*60))/60; int s=secs%60; StringBuffer sb=new StringBuffer(8); if(h>0) sb.append(h).append(":"); sb.append(n[m]).append(":").append(n[s]); return sb.substring(0); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/ReportUtils.java0000644000175000017500000000646511377161311025252 0ustar /* * File : ReportUtils.java * Created : 05-feb-2003 17:17 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import java.util.Date; import java.util.StringTokenizer; import java.util.GregorianCalendar; import java.text.SimpleDateFormat; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public abstract class ReportUtils { public static final SimpleDateFormat SDF=new SimpleDateFormat("yyyy-MM-dd"); // Converteix dates en format "yyyy/MM/dd" a objectes Date public static Date strToDate(String s) throws Exception{ return strToDate(s, false); } public static Date strToDate(String s, boolean atMidnight) throws Exception{ GregorianCalendar gc=null; if(s.indexOf('/')>0 || s.indexOf('-')>0){ StringTokenizer st=new StringTokenizer(s, "/- "); gc=new GregorianCalendar( Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())-1, Integer.parseInt(st.nextToken()), atMidnight ? 23 : 0, atMidnight ? 59 : 0, atMidnight ? 59 : 0); } else if(s.length()>=8){ gc=new GregorianCalendar( Integer.parseInt(s.substring(0, 4)), Integer.parseInt(s.substring(4, 6))-1, Integer.parseInt(s.substring(6, 8)), atMidnight ? 23 : 0, atMidnight ? 59 : 0, atMidnight ? 59 : 0); } return gc.getTime(); } public static String dateToStr(Date d) throws Exception{ return SDF.format(d); } public static final String ALPHANUM_CHARS="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; public static final String VALID_URL_CHARS="-_.!~*'()"; public static String urlEncode(String src, boolean strict, boolean spaces){ if(src==null || src.length()<1) return src; int len=src.length(); StringBuffer sb=new StringBuffer(src.length()*2); for(int i=0; i=0 || (!strict && VALID_URL_CHARS.indexOf(ch)>=0) || (spaces && ch==' ')) sb.append(ch); else{ String s=Integer.toHexString(ch); if(ch<16) sb.append("%0").append(s); else if(ch>255) sb.append("%26%23").append(s).append("%3B"); else sb.append("%").append(s); } } return sb.substring(0); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/report/ReportServerJDBCBridge.java0000644000175000017500000007144711377161311027162 0ustar /* * File : ReportServerJDBCBridge.java * Created : 11-feb-2003 15:52 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.util.db.ConnectionBean; import edu.xtec.util.db.ConnectionBeanProvider; import java.sql.*; import java.util.Calendar; import java.util.Vector; import java.util.HashMap; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ReportServerJDBCBridge extends BasicJDBCBridge{ public static final String[] KCC={"SESSION_KEY", "SESSION_CODE", "SESSION_CONTEXT"}; public String GROUP_SESSION_DATE_STRING=null; public String ORDER_QUALIFICATION_1_STRING=null; public String ORDER_QUALIFICATION_2_STRING=null; public ReportServerJDBCBridge(ConnectionBeanProvider cbp, boolean createTables, String tablePrefix) throws Exception{ super(cbp, createTables, tablePrefix); ConnectionBean cb=cbp.getConnectionBean(); switch (DBMSType){ case MYSQL: GROUP_SESSION_DATE_STRING="s.SESSION_DATETIME"; ORDER_QUALIFICATION_1_STRING="sum(QUALIFICATION)/count(*) AS qf"; //std as in Oracle ORDER_QUALIFICATION_2_STRING="qf"; break; case ORACLE: GROUP_SESSION_DATE_STRING="trunc(s.SESSION_DATETIME)"; ORDER_QUALIFICATION_1_STRING="sum(QUALIFICATION)/count(*) AS qf"; ORDER_QUALIFICATION_2_STRING="qf"; break; default: //MS-Access & Other GROUP_SESSION_DATE_STRING="Format(s.SESSION_DATETIME,'yyyy/mm/dd')"; ORDER_QUALIFICATION_1_STRING="sum(QUALIFICATION)/count(*)"; ORDER_QUALIFICATION_2_STRING=ORDER_QUALIFICATION_1_STRING; break; } } private static java.util.Date FIRST_DATE=null; public static java.util.Date getFirstDate(){ if(FIRST_DATE==null){ Calendar c=Calendar.getInstance(); c.set(1992, 0, 1); FIRST_DATE=c.getTime(); } return FIRST_DATE; } public java.util.Date getMinSessionDate() throws Exception{ Exception ex=null; java.util.Date d=getFirstDate(); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement pstmt=null; try{ pstmt=cb.getPreparedStatement( "SELECT min(SESSION_DATETIME)"+ " FROM "+getTableName("SESSIONS")); ResultSet result=pstmt.executeQuery(); if (result.next()) d=result.getDate(1); result.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(pstmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return d; } private String getFilteringStringQuery(String[] kcc, boolean and){ StringBuffer sb=new StringBuffer(200); if(kcc!=null){ for(int i=0; i0){ sb.append(and ? " AND s." : " s.").append(KCC[i]).append("=?"); and=true; } } } return sb.substring(0); } private int updateFiltering(PreparedStatement pstmt, String[] kcc, int n) throws SQLException{ if(kcc!=null) for(int i=0; i0) pstmt.setString(n++, kcc[i]); return n; } public Vector getInfoSessionUser(String userId, String projectName, java.util.Date dateFrom, java.util.Date dateTo, String[] kcc, boolean groupByDate) throws Exception{ Exception ex=null; Vector vInfoSessions=new Vector(); String proj=null; if(projectName!=null && projectName.length()>0 && !projectName.equals("-1")) proj=projectName; StringBuffer sb=new StringBuffer(300); sb.append("SELECT ").append(GROUP_SESSION_DATE_STRING) .append(", s.SESSION_ID, s.PROJECT_NAME, count(*)") .append(", sum(QUALIFICATION), sum(a.ACTIVITY_SOLVED), sum(a.TOTAL_TIME)") .append(" FROM ") .append(getTableName("SESSIONS", "s")) .append(", ").append(getTableName("ACTIVITIES", "a")) .append(",").append(getTableName("USERS", "u")) .append(" WHERE u.USER_ID=? AND s.USER_ID=u.USER_ID") .append(getFilteringStringQuery(kcc, true)) .append(" AND s.SESSION_DATETIME>=? AND s.SESSION_DATETIME<=?") .append(" AND s.SESSION_ID=a.SESSION_ID"); if (proj!=null) sb.append(" AND s.PROJECT_NAME=?"); sb.append(" GROUP BY s.SESSION_ID, s.PROJECT_NAME, ").append(GROUP_SESSION_DATE_STRING) .append(" ORDER BY ").append(GROUP_SESSION_DATE_STRING); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement pstmt=null; try{ pstmt=cb.getPreparedStatement(sb.substring(0)); int n=1; pstmt.setString(n++, userId); n=updateFiltering(pstmt, kcc, n); pstmt.setTimestamp(n++, new Timestamp(dateFrom.getTime())); pstmt.setTimestamp(n++, new Timestamp(dateTo.getTime())); if(proj!=null) pstmt.setString(n++, proj); ResultSet rs=pstmt.executeQuery(); SessionData sdx=null; while(rs.next()){ SessionData sd=new SessionData( rs.getString(2), // id userId, // user rs.getString(3), // projectName ReportUtils.strToDate(rs.getString(1)), // date rs.getInt(4), // numActs rs.getInt(6), // actsSolved rs.getInt(5), // totalPrec Math.max(0, rs.getInt(7))); // totalTime if(groupByDate){ if(sd.sameDate(sdx)) sdx.acumula(sd); else{ if(sdx!=null) vInfoSessions.add(sdx); sdx=sd; } } else vInfoSessions.add(sd); } if(sdx!=null) vInfoSessions.add(sdx); rs.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(pstmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return vInfoSessions; } public Vector getInfoSessionGroup(String groupId, String projectName, java.util.Date dateFrom, java.util.Date dateTo, String[] kcc, boolean groupByDate) throws Exception{ Exception ex=null; Vector vInfoSessions=new Vector(); String proj=null; if(projectName!=null && projectName.length()>0 && !projectName.equals("-1")) proj=projectName; StringBuffer sb=new StringBuffer(300); sb.append("SELECT ").append(GROUP_SESSION_DATE_STRING) .append(", s.SESSION_ID, s.PROJECT_NAME, count(*), sum(QUALIFICATION), sum(a.ACTIVITY_SOLVED), sum(a.TOTAL_TIME), s.USER_ID") .append(" FROM ") .append(getTableName("SESSIONS", "s")) .append(", ").append(getTableName("ACTIVITIES", "a")) .append(", ").append(getTableName("USERS", "u")) .append(" WHERE u.GROUP_ID=? AND s.USER_ID=u.USER_ID") .append(getFilteringStringQuery(kcc, true)) .append(" AND s.SESSION_DATETIME>=? AND s.SESSION_DATETIME<=?") .append(" AND s.SESSION_ID=a.SESSION_ID"); if (proj!=null) sb.append(" AND s.PROJECT_NAME=?"); sb.append(" GROUP BY s.SESSION_ID, s.USER_ID, s.PROJECT_NAME, ").append(GROUP_SESSION_DATE_STRING) .append(" ORDER BY ").append(GROUP_SESSION_DATE_STRING); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement pstmt=null; try{ pstmt=cb.getPreparedStatement(sb.substring(0)); int n=1; pstmt.setString(n++, groupId); n=updateFiltering(pstmt, kcc, n); pstmt.setTimestamp(n++, new Timestamp(dateFrom.getTime())); pstmt.setTimestamp(n++, new Timestamp(dateTo.getTime())); if(proj!=null) pstmt.setString(n++, proj); ResultSet rs=pstmt.executeQuery(); SessionData sdx=null; while(rs.next()){ SessionData sd=new SessionData( rs.getString(2), // id rs.getString(8), // user rs.getString(3), // projectName ReportUtils.strToDate(rs.getString(1)), // date rs.getInt(4), // numActs rs.getInt(6), // actsSolved rs.getInt(5), // totalPrec Math.max(0, rs.getInt(7))); // totalTime if(groupByDate){ if(sd.sameDate(sdx)) sdx.acumula(sd); else{ if(sdx!=null) vInfoSessions.add(sdx); sdx=sd; } } else vInfoSessions.add(sd); } if(sdx!=null) vInfoSessions.add(sdx); rs.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(pstmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return vInfoSessions; } public Vector getInfoSessionAct(String projectName, String activityName, java.util.Date dateFrom, java.util.Date dateTo, String[] kcc, boolean groupByDate) throws Exception{ Exception ex=null; Vector vInfoSessions=new Vector(); String act=null; if(activityName!=null && activityName.length()>0 && !activityName.equals("-1")) act=activityName; StringBuffer sb=new StringBuffer(300); sb.append("SELECT ").append(GROUP_SESSION_DATE_STRING) .append(", s.SESSION_ID, s.PROJECT_NAME, count(*), sum(QUALIFICATION), sum(a.ACTIVITY_SOLVED), sum(a.TOTAL_TIME), s.USER_ID") .append(" FROM ").append(getTableName("SESSIONS", "s")) .append(", ").append(getTableName("ACTIVITIES", "a")) .append(" WHERE s.PROJECT_NAME=?") .append(getFilteringStringQuery(kcc, true)) .append(" AND s.SESSION_DATETIME>=? AND s.SESSION_DATETIME<=?") .append(" AND s.SESSION_ID=a.SESSION_ID"); if (act!=null) sb.append(" AND a.ACTIVITY_NAME=?"); sb.append(" GROUP BY s.SESSION_ID, s.USER_ID, s.PROJECT_NAME, ").append(GROUP_SESSION_DATE_STRING) .append(" ORDER BY ").append(GROUP_SESSION_DATE_STRING); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement pstmt=null; try{ pstmt=cb.getPreparedStatement(sb.substring(0)); int n=1; pstmt.setString(n++, projectName); n=updateFiltering(pstmt, kcc, n); pstmt.setTimestamp(n++, new Timestamp(dateFrom.getTime())); pstmt.setTimestamp(n++, new Timestamp(dateTo.getTime())); if(act!=null) pstmt.setString(n++, act); ResultSet rs=pstmt.executeQuery(); SessionData sdx=null; while(rs.next()){ SessionData sd=new SessionData( rs.getString(2), // id rs.getString(8), // user rs.getString(3), // projectName ReportUtils.strToDate(rs.getString(1)), // date rs.getInt(4), // numActs rs.getInt(6), // actsSolved rs.getInt(5), // totalPrec Math.max(0, rs.getInt(7))); // totalTime if(groupByDate){ if(sd.sameDate(sdx)) sdx.acumula(sd); else{ if(sdx!=null) vInfoSessions.add(sdx); sdx=sd; } } else vInfoSessions.add(sd); } if(sdx!=null) vInfoSessions.add(sdx); rs.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(pstmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return vInfoSessions; } public boolean hasUserTables() throws Exception{ boolean result=true; String s = getProperty("USER_TABLES", null); result = s==null || !s.trim().toLowerCase().equals("false"); return result; } public Vector getProjList(String userId, java.util.Date dateFrom, java.util.Date dateTo, String[] kcc) throws Exception{ Exception ex=null; Vector pl=new Vector(); StringBuffer sb=new StringBuffer(300); sb.append("SELECT distinct(PROJECT_NAME)") .append(" FROM ").append(getTableName("SESSIONS", "s")) .append(" WHERE s.SESSION_DATETIME>=? AND s.SESSION_DATETIME<=?"); if(userId!=null) sb.append(" AND s.USER_ID=?"); //When userID==null, get data from all users sb.append(getFilteringStringQuery(kcc, true)) .append(" ORDER BY PROJECT_NAME"); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement(sb.substring(0)); int n=1; stmt.setTimestamp(n++, new Timestamp(dateFrom.getTime())); stmt.setTimestamp(n++, new Timestamp(dateTo.getTime())); if(userId!=null) stmt.setString(n++, userId); n=updateFiltering(stmt, kcc, n); ResultSet result=stmt.executeQuery(); while (result.next()) pl.add(result.getString("PROJECT_NAME")); result.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return pl; } public Vector getProjListGrup(String groupId, java.util.Date dateFrom, java.util.Date dateTo, String[] kcc) throws Exception{ /* Returns a ProjList containing the list of the names of all projects made by the users of the group 'groupName' in the time interval indicated. Information is only returned if validated==true or if the projects wher made in sessions where sessionKey==pass. */ Exception ex=null; Vector pl=new Vector(); StringBuffer sb=new StringBuffer(300); sb.append("SELECT distinct(PROJECT_NAME)") .append(" FROM ").append(getTableName("SESSIONS", "s")) .append(", ").append(getTableName("GROUPS", "g")) .append(", ").append(getTableName("USERS", "u")) .append(" WHERE SESSION_DATETIME>=? AND SESSION_DATETIME<=?") .append(" AND u.GROUP_ID=g.GROUP_ID AND s.USER_ID=u.USER_ID"); if(groupId!=null) sb.append(" AND g.GROUP_ID=?"); //When groupId==null get data from all groups sb.append(getFilteringStringQuery(kcc, true)) .append(" ORDER BY PROJECT_NAME"); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement(sb.substring(0)); int n=1; stmt.setTimestamp(n++, new Timestamp(dateFrom.getTime())); stmt.setTimestamp(n++, new Timestamp(dateTo.getTime())); if(groupId!=null) stmt.setString(n++, groupId); n=updateFiltering(stmt, kcc, n); ResultSet result=stmt.executeQuery(); while (result.next()) pl.add(result.getString("PROJECT_NAME")); result.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return pl; } public Vector getActList(String prj, java.util.Date dateFrom, java.util.Date dateTo, String[] kcc) throws Exception{ Exception ex=null; Vector pl=new Vector(); StringBuffer sb=new StringBuffer(300); sb.append("SELECT distinct(ACTIVITY_NAME)") .append(" FROM ").append(getTableName("ACTIVITIES", "a")) .append(", ").append(getTableName("SESSIONS", "s")) .append(" WHERE s.SESSION_DATETIME>=? AND s.SESSION_DATETIME<=?") .append(" AND a.SESSION_ID=s.SESSION_ID"); if(prj!=null) sb.append(" AND s.PROJECT_NAME=?"); sb.append(getFilteringStringQuery(kcc, true)) .append(" ORDER BY ACTIVITY_NAME"); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement(sb.substring(0)); int n=1; stmt.setTimestamp(n++, new Timestamp(dateFrom.getTime())); stmt.setTimestamp(n++, new Timestamp(dateTo.getTime())); if(prj!=null) stmt.setString(n++, prj); n=updateFiltering(stmt, kcc, n); ResultSet result=stmt.executeQuery(); while (result.next()) pl.add(result.getString("ACTIVITY_NAME")); result.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return pl; } public Vector getPacSessionList(String userId, String proj, String sessionId, java.util.Date dFrom, java.util.Date dTo, String[] kcc) throws Exception{ /* Returns a PacSessionList with all the info needed to show the table with information about the activities made in the session 'sessionId' corresponding to the user 'userId' in the indicated date interval . Data ara only returned when validated==true or when the invloucrated sessions where created with sessionKey==pass. */ Exception ex=null; Vector v=new Vector(); StringBuffer sb=new StringBuffer(300); sb.append("SELECT s.PROJECT_NAME, a.ACTIVITY_ID, a.ACTIVITY_NAME, a.NUM_ACTIONS") .append(" ,a.SCORE, a.ACTIVITY_SOLVED, a.QUALIFICATION, a.TOTAL_TIME") .append(" FROM ").append(getTableName("ACTIVITIES", "a")) .append(", ").append(getTableName("SESSIONS", "s")) .append(" WHERE a.SESSION_ID=s.SESSION_ID"); if(dFrom!=null && dTo!=null) sb.append(" AND SESSION_DATETIME>=? AND SESSION_DATETIME<=?"); if(userId!=null) sb.append(" AND s.USER_ID=?"); sb.append(getFilteringStringQuery(kcc, true)); if(sessionId!=null) sb.append(" AND a.SESSION_ID=?"); if(proj!=null && !proj.equals("-1")) sb.append(" AND s.PROJECT_NAME=?"); sb.append(" ORDER BY s.SESSION_DATETIME, a.ACTIVITY_ID"); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement(sb.substring(0)); int n=1; if(dFrom!=null && dTo!=null){ stmt.setTimestamp(n++, new Timestamp(dFrom.getTime())); stmt.setTimestamp(n++, new Timestamp(dTo.getTime())); } if(userId!=null) stmt.setString(n++, userId); n=updateFiltering(stmt, kcc, n); if(sessionId!=null) stmt.setString(n++, sessionId); if(proj!=null && !proj.equals("-1")) stmt.setString(n++, proj); ResultSet result=stmt.executeQuery(); while (result.next()){ ActivityData ad=new ActivityData( result.getString("PROJECT_NAME"), result.getString("ACTIVITY_NAME"), result.getString("ACTIVITY_ID"), Math.max(0, result.getInt("TOTAL_TIME")), result.getInt("NUM_ACTIONS"), result.getInt("SCORE"), result.getInt("ACTIVITY_SOLVED")!=0, result.getInt("QUALIFICATION")); v.add(ad); } result.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return v; } public void updateUser(UserData ud, boolean create) throws Exception{ Exception ex=null; boolean result=false; ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ String tn=getTableName("USERS"); stmt=cb.getPreparedStatement( create ? "INSERT INTO "+tn+" (USER_NAME,USER_ICON,USER_PWD,USER_ID,GROUP_ID) VALUES (?,?,?,?,?)" : "UPDATE "+tn+" SET USER_NAME=?, USER_ICON=?, USER_PWD=? WHERE USER_ID=?"); stmt.setString(1, ud.getText()); if(ud.getIconUrl()!=null && ud.getIconUrl().length()==0) ud.setIconUrl(null); stmt.setString(2, ud.getIconUrl()); stmt.setString(3, ud.pwd); stmt.setString(4, ud.getId()); if(create) stmt.setString(5, ud.groupId); result=stmt.executeUpdate()>0; } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } if(!result) throw new Exception("SQL \"UPDATE\" statement returns 0"); } public void updateGroup(GroupData gd, boolean create) throws Exception{ Exception ex=null; boolean result=false; ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ String tn=getTableName("GROUPS"); stmt=cb.getPreparedStatement( create ? "INSERT INTO "+tn+" (GROUP_NAME,GROUP_ICON,GROUP_ID) VALUES (?,?,?)" : "UPDATE "+tn+" SET GROUP_NAME=?, GROUP_ICON=? WHERE GROUP_ID=?"); stmt.setString(1, gd.getText()); if(gd.getIconUrl()!=null && gd.getIconUrl().length()==0) gd.setIconUrl(null); stmt.setString(2, gd.getIconUrl()); stmt.setString(3, gd.getId()); result=stmt.executeUpdate()>0; } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } if(!result) throw new Exception("SQL \"UPDATE\" statement returns 0"); } public void clearUserReportData(String userId, java.util.Date dFrom, java.util.Date dTo) throws Exception{ Exception ex=null; StringBuffer sb=new StringBuffer(300); sb.append("SELECT SESSION_ID") .append(" FROM ").append(getTableName("SESSIONS")) .append(" WHERE USER_ID=?"); //Index for GROUP_ID into users. It will be faster with groups, but MySQL doesn't have foreign keys... if(dFrom!=null && dTo!=null) sb.append(" AND SESSION_DATETIME>=? AND SESSION_DATETIME<=?"); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement(sb.substring(0)); stmt.setString(1, userId); if(dFrom!=null && dTo!=null){ stmt.setTimestamp(2, new Timestamp(dFrom.getTime())); stmt.setTimestamp(3, new Timestamp(dTo.getTime())); } ResultSet rs=stmt.executeQuery(); while(rs.next()) deleteSession(rs.getString(1)); // Recordset is closed //rs.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } } public void clearGroupReportData(String groupId, java.util.Date dFrom, java.util.Date dTo) throws Exception{ Exception ex=null; StringBuffer sb=new StringBuffer(300); sb.append("SELECT SESSION_ID") .append(" FROM ").append(getTableName("SESSIONS", "s")) .append(", ").append(getTableName("USERS", "u")) .append(" WHERE u.GROUP_ID=?") .append(" AND u.USER_ID=s.USER_ID"); if(dFrom!=null && dTo!=null) sb.append(" AND s.SESSION_DATETIME>=? AND s.SESSION_DATETIME<=?"); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement(sb.substring(0)); stmt.setString(1, groupId); if(dFrom!=null && dTo!=null){ stmt.setTimestamp(2, new Timestamp(dFrom.getTime())); stmt.setTimestamp(3, new Timestamp(dTo.getTime())); } ResultSet rs=stmt.executeQuery(); while(rs.next()) deleteSession(rs.getString(1)); // Recordset is closed //rs.close(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } } protected void deleteSession(String sessionId) throws Exception{ Exception ex=null; ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ stmt=cb.getPreparedStatement( "DELETE FROM "+getTableName("ACTIONS")+" WHERE SESSION_ID=?"); stmt.setString(1,sessionId); stmt.executeUpdate(); cb.closeStatement(stmt); stmt=cb.getPreparedStatement( "DELETE FROM "+getTableName("ACTIVITIES")+" WHERE SESSION_ID=?"); stmt.setString(1,sessionId); stmt.executeUpdate(); cb.closeStatement(stmt); stmt=cb.getPreparedStatement( "DELETE FROM "+getTableName("SESSIONS")+" WHERE SESSION_ID=?"); stmt.setString(1,sessionId); stmt.executeUpdate(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } } public void deleteUser(String userId) throws Exception{ Exception ex=null; clearUserReportData(userId, null, null); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ cb.getConnection().commit(); stmt=cb.getPreparedStatement( "DELETE FROM "+getTableName("USERS")+" WHERE USER_ID=?"); stmt.setString(1, userId); stmt.executeUpdate(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } } public void deleteGroup(String groupId) throws Exception{ Exception ex=null; clearGroupReportData(groupId, null, null); ConnectionBean cb=cbp.getConnectionBean(); PreparedStatement stmt=null; try{ cb.getConnection().commit(); stmt=cb.getPreparedStatement( "DELETE FROM "+getTableName("USERS")+" WHERE GROUP_ID=?"); stmt.setString(1, groupId); stmt.executeUpdate(); cb.closeStatement(stmt); cb.getConnection().commit(); stmt=cb.getPreparedStatement( "DELETE FROM "+getTableName("GROUPS")+" WHERE GROUP_ID=?"); stmt.setString(1, groupId); stmt.executeUpdate(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/jclic/jclicReports.properties0000644000175000017500000001177711377161311025363 0ustar #-------------------------------------------------------------------------- # JCLIC REPORTS SERVER SETTINGS #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # Name of the JDBC driver #-------------------------------------------------------------------------- # Examples: ODBC: sun.jdbc.odbc.JdbcOdbcDriver # MySQL: com.mysql.jdbc.Driver # PointBase: com.pointbase.jdbc.jdbcUniversalDriver # Oracle: oracle.jdbc.driver.OracleDriver #-------------------------------------------------------------------------- dbDriver=sun.jdbc.odbc.JdbcOdbcDriver #-------------------------------------------------------------------------- # URL of the the database #-------------------------------------------------------------------------- # Examples: ODBC: jdbc:odbc:JClic # MySQL: jdbc:mysql://localhost/JClicReports # PointBase: jdbc:pointbase:jclic # Oracle: jdbc:oracle:thin:@server.domain.com:1521:database #-------------------------------------------------------------------------- dbServer=jdbc:odbc:JClic #-------------------------------------------------------------------------- # DB system username and password (not mandatory in some DBMS) #-------------------------------------------------------------------------- dbLogin=clic_user dbPassword=clic_pwd #-------------------------------------------------------------------------- # If not exist, automatically create tables on first run #-------------------------------------------------------------------------- createTables=true #-------------------------------------------------------------------------- # String that will be used as prefix for table names #-------------------------------------------------------------------------- tablePrefix=JCLIC_ #-------------------------------------------------------------------------- # Use client time or system time for session records. Default is to always # use server date and time #-------------------------------------------------------------------------- trustClientDateTime=false #-------------------------------------------------------------------------- # Automatically start services #-------------------------------------------------------------------------- autostart=true http_autostart=true #-------------------------------------------------------------------------- # Provide console/log info on each transaction #-------------------------------------------------------------------------- verbose=true #-------------------------------------------------------------------------- # Language to be used (ISO-639 two-letter language codes) #-------------------------------------------------------------------------- #language=ca #-------------------------------------------------------------------------- # If set, write logs to file #-------------------------------------------------------------------------- http_logFile= #-------------------------------------------------------------------------- # Maximum time to wait for idle connections (in milliseconds) #-------------------------------------------------------------------------- http_timeout=1200 timeout=1200 #-------------------------------------------------------------------------- # Parameters related to the pool of database connections #-------------------------------------------------------------------------- # Reuse preparedStatements dbMapStatements=true # Absolute path name for log file. e.g. 'c:/temp/mylog.log'. # Default is 'jclicReportsDBConnection.log' in user's home dir. dbLogFile=jclicReportsDBConnection.log # Append to logfile. Default is true. dbLogAppend=true # Minimum number of connections to start with. default is 1 dbMinConns=1 # Maximum number of connections in dynamic pool. Default is 3 dbMaxConns=3 # Time in days between connection resets. (Reset does a basic cleanup). Default is 1.0 dbMaxConnDays=1.0 # Level of debug messages output to the log file. # 0 -> no messages, 1 -> Errors, 2 -> Warnings, 3 -> Information. # Default is 2. dbDebugLevel=2 # Max time a connection can be checked out before being recycled. # Zero value turns option off. Default is 60. dbMaxCheckoutSeconds=60 #-------------------------------------------------------------------------- # Parameters related to the drawing of graphics #-------------------------------------------------------------------------- graph_width=440 graph_dist_width=192 graph_height=155 graph_header_height=25 graph_margin=8 graph_color_bg=F0F8FF graph_color_text=000000 graph_color_border=FFFFFF graph_color_v1=D00000 graph_color_v2=00D000 graph_color_dist=0000D0 graph_color_alert=FF0000 graph_stroke_width=3.0 graph_font_family=Dialog graph_font_size=11 graph_margin_x=50 graph_margin_y=20 graph_div_y=4 graph_max_cols=10 graph_margin_dist_x=15 graph_margin_dist_y=20 graph_color_header_bg=ADD8E6 graph_color_header_text=000000 jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/0000755000175000017500000000000011377161311021513 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/0000755000175000017500000000000011377161311023322 5ustar ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ru.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ru.propertie0000644000175000017500000003653611377161311031003 0ustar login_pwd=\u041F\u0430\u0440\u043E\u043B\u044C: login_desc=\u0412\u044B \u0434\u043E\u043B\u0436\u043D\u044B \u0432\u0432\u0435\u0441\u0442\u0438 \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C \u0434\u043B\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u0430 \u043A \u0431\u0430\u0437\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u043E\u0442\u0447\u0451\u0442\u043E\u0432. login_title=\u0412\u0445\u043E\u0434 submit=\u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C... login_incorrect=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C! main_title=\u0413\u043B\u0430\u0432\u043D\u043E\u0435 \u043C\u0435\u043D\u044E users_admin_title=\u0410\u0434\u043C. \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0438 \u0433\u0440\u0443\u043F\u043F group_report_title=\u0413\u0440\u0443\u043F\u043F\u043E\u0432\u044B\u0435 \u043E\u0442\u0447\u0451\u0442\u044B user_report_title=\u041E\u0442\u0447\u0451\u0442\u044B \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F act_report_title=\u041E\u0442\u0447\u0451\u0442\u044B \u043E \u0437\u0430\u0434\u0430\u043D\u0438\u044F\u0445 db_admin_title=\u0410\u0434\u043C\u0438\u043D\u0438\u0441\u0442\u0440\u0430\u0442\u043E\u0440 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445 db_admin_settings_error=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0430\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445! db_admin_param_agc=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0435 \u0433\u0440\u0443\u043F\u043F\u044B db_admin_param_auc=\u0420\u0430\u0437\u0440\u0435\u0448\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u043C \u0441\u043E\u0437\u0434\u0430\u0432\u0430\u0442\u044C \u043D\u043E\u0432\u044B\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 db_admin_param_shgl=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0433\u0440\u0443\u043F\u043F\u0443 \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430 db_admin_param_shul=\u0412\u044B\u0431\u0435\u0440\u0438\u0442\u0435 \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438\u0437 \u0441\u043F\u0438\u0441\u043A\u0430 db_admin_param_ut=\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\u0445 \u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u0442\u0430\u0431\u043B\u0438\u0446\u044B \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u0438 \u0433\u0440\u0443\u043F\u043F db_admin_edit_btn=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438... db_admin_pw_edit_btn=\u0423\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u043F\u0430\u0440\u043E\u043B\u044C... title=\u0417\u0430\u0433\u043E\u043B\u043E\u0432\u043E\u043A db_admin_edit_title=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445 db_admin_pw_edit_title=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C \u0441\u0438\u0441\u0442\u0435\u043C\u043D\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C db_admin_pw_newPwd=\u041D\u043E\u0432\u044B\u0439 \u043F\u0430\u0440\u043E\u043B\u044C db_admin_pw_verifyPwd=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u0430\u0440\u043E\u043B\u044C db_admin_pw_noFit=\u041F\u043E\u043B\u044F \u043F\u0430\u0440\u043E\u043B\u0435\u0439 \u043D\u0435 \u0437\u0430\u043F\u043E\u043B\u043D\u0435\u043D\u044B! report_group=\u0413\u0440\u0443\u043F\u043F\u0430: report_user=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C: report_project=\u041F\u0440\u043E\u0435\u043A\u0442: report_all_projects=\u0412\u0441\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u044B report_key=\u041A\u043B\u044E\u0447: report_code=\u041A\u043E\u0434: report_context=\u041A\u043E\u043D\u0442\u0435\u043A\u0441\u0442: report_from=\u041E\u0442: month_1=\u044F\u043D\u0432\u0430\u0440\u044C month_2=\u0444\u0435\u0432\u0440\u0430\u043B\u044C month_3=\u043C\u0430\u0440\u0442 month_4=\u0430\u043F\u0440\u0435\u043B\u044C month_5=\u043C\u0430\u0439 month_6=\u0438\u044E\u043D\u044C month_7=\u0438\u044E\u043B\u044C month_8=\u0430\u0432\u0433\u0443\u0441\u0442 month_9=\u0441\u0435\u043D\u0442\u044F\u0431\u0440\u044C month_10=\u043E\u043A\u0442\u044F\u0431\u0440\u044C month_11=\u043D\u043E\u044F\u0431\u0440\u044C month_12=\u0434\u0435\u043A\u0430\u0431\u0440\u044C report_to=\u041A\u043E\u043C\u0443: report_global_precision=\u041E\u0431\u0449\u0430\u044F \u0442\u043E\u0447\u043D\u043E\u0441\u0442\u044C report_solved_activities=\u0420\u0435\u0448\u0451\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u043D\u0438\u044F report_user_evolution=\u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F report_group_evolution=\u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u044B report_project_evolution=\u0420\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043F\u0440\u043E\u0435\u043A\u0442\u0430 report_result_distribution=\u0420\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u0435\u043D\u0438\u0435 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432 report_no_data=\u041D\u0415\u0422 \u0414\u0410\u041D\u041D\u042B\u0425 report_users=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 report_sessions=\u0421\u0435\u0441\u0441\u0438\u0438: report_projects=\u041F\u0440\u043E\u0435\u043A\u0442\u044B: report_actDone=\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u043D\u0438\u0439: report_actSolved=\u0420\u0435\u0448\u0451\u043D\u043D\u044B\u0445 \u0437\u0430\u0434\u0430\u043D\u0438\u0439: report_totalTime=\u041E\u0431\u0449\u0435\u0435 \u0432\u0440\u0435\u043C\u044F: report_globalPrec=\u041E\u0431\u0449\u0438\u0439 \u0441\u0447\u0451\u0442 report_globalSummary=\u041E\u0431\u0449\u0438\u0435 \u0438\u0442\u043E\u0433\u0438 report_header_date=\u0434\u0430\u0442\u0430 report_session_list=\u0421\u0435\u0441\u0441\u0438\u0438: report_header_user=\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C report_header_project=\u043F\u0440\u043E\u0435\u043A\u0442 report_header_numActs=\u0437\u0430\u0434\u0430\u043D\u0438\u044F report_header_actsSolved=\u0440\u0435\u0448. \u0437\u0430\u0434\u0430\u043D\u0438\u0439 report_header_time=\u0432\u0440\u0435\u043C\u044F report_header_prec=\u0441\u0447\u0451\u0442 report_session_detail_show=\u043F\u043E\u043A\u0430\u0437\u0430\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 report_session_detail_title=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u043D\u044B\u0435 \u0432 \u0441\u0435\u0441\u0441\u0438\u0438 report_header_activity=\u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C report_header_actions=\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u044F report_header_score=\u043F\u043E\u043F\u0440\u0430\u0432\u043A\u0438 report_header_solved=ok Y=Y N=N report_session_detail_hide=\u0441\u043A\u0440\u044B\u0442\u044C \u043F\u043E\u0434\u0440\u043E\u0431\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0441\u0441\u0438\u0438 report_header_sessions=\u0441\u0435\u0441\u0441\u0438\u0438 report_all_activities=\u0412\u0441\u044F \u0430\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C report_activity=\u0410\u043A\u0442\u0438\u0432\u043D\u043E\u0441\u0442\u044C: report_many=\u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u043E report_n_users=\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 group_admin_title=\u0423\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u0430\u043C\u0438 group_admin_new_button=\u041D\u043E\u0432\u0430\u044F \u0433\u0440\u0443\u043F\u043F\u0430... group_admin_groups=\u0413\u0440\u0443\u043F\u043F\u044B report_actions=\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F group_admin_edit_button=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C... user_admin_title=\u0410\u0434\u043C. \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 group_admin_delete_button=\u0423\u0434\u0430\u043B\u0438\u0442\u044C... group_admin_clear_button=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043E\u0442\u0447\u0451\u0442\u044B... group_admin_properties=\u0421\u0432\u043E\u0439\u0441\u0442\u0432\u0430 \u0433\u0440\u0443\u043F\u043F\u044B: group_admin_name=\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435: group_admin_id=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440: group_admin_icon=\u0417\u043D\u0430\u0447\u043E\u043A: error=\u041E\u0428\u0418\u0411\u041A\u0410 return=\u0432\u043E\u0437\u0432\u0440\u0430\u0442... group_admin_users=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0438 group_admin_no_users=\u0412 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u0435 \u043D\u0435\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439. group_admin_create_user_button=\u0421\u043E\u0437\u0434\u0430\u0442\u044C \u043D\u043E\u0432\u043E\u0433\u043E \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F... cancel=\u041E\u0442\u043C\u0435\u043D\u0430 group_admin_invalid_name=\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0433\u0440\u0443\u043F\u043F\u044B! group_admin_invalid_id=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u0433\u0440\u0443\u043F\u043F\u044B! group_admin_id_already_exists=\u0412 \u0431\u0430\u0437\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u0438\u043C\u0435\u0435\u0442\u0441\u044F \u0433\u0440\u0443\u043F\u043F\u0430 \u0441 \u0442\u0430\u043A\u0438\u043C \u0436\u0435 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u043E\u043C. group_admin_delete_group=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0433\u0440\u0443\u043F\u043F\u0443 report_areyousure=\u0412\u044B \u0443\u0432\u0435\u0440\u0435\u043D\u044B? YES=\u0414\u0430 NOT=\u041D\u0435\u0442 group_admin_delete_group_explain=\u042D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0442\u0430\u043A\u0436\u0435 \u0443\u0434\u0430\u043B\u0438\u0442 \u0432\u0441\u0435\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u0435\u0439 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u044B, \u0412\u0441\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043E\u0431 \u044D\u0442\u0438\u0445 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F\u0445 \u0431\u0443\u0434\u0443\u0442 \u043F\u043E\u0442\u0435\u0440\u044F\u043D\u044B. db_error=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0437\u0432\u0435\u0440\u0448\u0438\u0442\u044C \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0435. group_admin_clear_group=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 \u0433\u0440\u0443\u043F\u043F\u044B group_admin_clear_group_explain=\u042D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0443\u0434\u0430\u043B\u0438\u0442 \u0432\u0441\u0435 \u043E\u0442\u0447\u0451\u0442\u044B \u0447\u043B\u0435\u043D\u043E\u0432 \u044D\u0442\u043E\u0439 \u0433\u0440\u0443\u043F\u043F\u044B \u043C\u0435\u0436\u0434\u0443 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C\u0438 \u0434\u0430\u0442\u0430\u043C\u0438. db_clear_reports_date=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 user_admin_invalid_name=\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0438\u043C\u044F \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F. user_admin_invalid_id=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F. user_admin_id_already_exists=\u0412 \u0431\u0430\u0437\u0435 \u0434\u0430\u043D\u043D\u044B\u0445 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0441 \u0442\u0430\u043A\u0438\u043C \u0436\u0435 \u0438\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440\u043E\u043C! user_admin_user_deleted=\u041F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044C \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0443\u0434\u0430\u043B\u0451\u043D \u0438\u0437 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445. user_admin_id=\u0418\u0434\u0435\u043D\u0442\u0438\u0444\u0438\u043A\u0430\u0442\u043E\u0440: user_admin_name=\u0418\u043C\u044F: user_admin_icon=\u0417\u043D\u0430\u0447\u043E\u043A: user_admin_edit_button=\u0418\u0437\u043C\u0435\u043D\u0438\u0442\u044C... user_admin_delete_button=\u0423\u0434\u0430\u043B\u0438\u0442\u044C... user_admin_clear_button=\u041E\u0447\u0438\u0441\u0442\u0438\u0442\u044C \u043E\u0442\u0447\u0451\u0442\u044B... user_admin_delete_user=\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F user_admin_delete_user_explain=\u042D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0443\u0434\u0430\u043B\u0438\u0442 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u0438 \u0435\u0433\u043E \u043E\u0442\u0447\u0451\u0442\u044B \u0438\u0437 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445. user_admin_clear_user=\u041E\u0447\u0438\u0441\u0442\u043A\u0430 \u0434\u0430\u043D\u043D\u044B\u0445 \u043E\u0442\u0447\u0451\u0442\u043E\u0432 \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F user_admin_clear_user_explain=\u042D\u0442\u0430 \u043E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0443\u0434\u0430\u043B\u0438\u0442 \u0432\u0441\u0435 \u043E\u0442\u0447\u0451\u0442\u044B \u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u0435\u043B\u044F \u043C\u0435\u0436\u0434\u0443 \u0443\u043A\u0430\u0437\u0430\u043D\u043D\u044B\u043C\u0438 \u0434\u0430\u0442\u0430\u043C\u0438. success=\u041E\u043F\u0435\u0440\u0430\u0446\u0438\u044F \u0443\u0441\u043F\u0435\u0448\u043D\u043E \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043D\u0430 bad_data=\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435! db_admin_param_lap=\u0412\u0440\u0435\u043C\u044F \u043C\u0435\u0436\u0434\u0443 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F\u043C\u0438 (\u0441\u0435\u043A\u0443\u043D\u0434): jclic_reports=\u041E\u0442\u0447\u0451\u0442\u044B JClic YES_SHORT=Y NOT_SHORT=N user_admin_pw_prompt=\u041F\u0430\u0440\u043E\u043B\u044C: user_admin_pw_prompt_confirm=\u041F\u043E\u0432\u0442\u043E\u0440\u0438\u0442\u0435 \u043F\u0430\u0440\u043E\u043B\u044C: user_admin_err_bad_pw=\u041F\u0430\u0440\u043E\u043B\u0438 \u043D\u0435 \u0441\u043E\u0432\u043F\u0430\u0434\u0430\u044E\u0442\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_eu.propertie0000644000175000017500000001237611377161311030762 0ustar login_pwd=Pasahitza: login_desc=Txostenen datu-basera sartzeko balio duen pasahitza lortu behar duzu. login_title=Saioa hasi submit=Bildatzen... login_incorrect=Pasahitza ez da zuzena! main_title=Menu nagusia users_admin_title=Erabiltzaile eta taldeen kudeaketa group_report_title=Talde-txostenak user_report_title=Erabiltzailearen txostenak act_report_title=Jarduera-txostenak db_admin_title=Datu-basearen kudeatzailea db_admin_settings_error=Datu-basearen baloreak ezin dira aldatu! db_admin_param_agc=Utzi erabiltzaileei talde berriak sortzen db_admin_param_auc=Utzi erabiltzaileei erabiltzaile berriak sortzen db_admin_param_shgl=Aukeratu taldea zerrendatik db_admin_param_shul=Aukeratu erabiltzaile-izena zerrendatik db_admin_param_ut=Datu-baseak erabiltzaile eta taldeen taulak ditu db_admin_edit_btn=Editatu ezarpenak... db_admin_pw_edit_btn=Ezarri pasahitza... title=Izenburua db_admin_edit_title=Editatu datu-basearen ezarpenak db_admin_pw_edit_title=Aldatu sistemaren pasahitza db_admin_pw_newPwd=Pasahitz berria db_admin_pw_verifyPwd=Idatzi berriz pasahitza db_admin_pw_noFit=Bi testuak ez datoz bat! report_group=Taldea: report_user=Erabiltzailea: report_project=Proiektua: report_all_projects=Proiektu guztiak report_key=Giltza: report_code=Kodea: report_context=Testuingurua: report_from=Hemendik: month_1=urtarrila month_2=otsaila month_3=martxoa month_4=apirila month_5=maiatza month_6=ekaina month_7=uztaila month_8=abuztua month_9=iraila month_10=urria month_11=azaroa month_12=abendua report_to=Hona: report_global_precision=Zehaztapen orokorra report_solved_activities=Egindako jarduerak report_user_evolution=Erabiltzailearen garapena report_group_evolution=Taldearen garapena report_project_evolution=Proiektuaren garapena report_result_distribution=Emaitzen banaketa report_no_data=DATURIK EZ report_users=Erabiltzaileak: report_sessions=Saioak: report_projects=Proiektuak: report_actDone=Burututako jarduerak: report_actSolved=Egindako jarduerak: report_totalTime=Denbora guztira: report_globalPrec=Puntuazio orokorra: report_globalSummary=Laburpen orokorra report_header_date=data report_session_list=Saioak: report_header_user=erabiltzailea report_header_project=proiektua report_header_numActs=jarduerak report_header_actsSolved=egindako jarduerak report_header_time=denbora report_header_prec=puntuazioa report_session_detail_show=erakutsi saioaren zehaztasunak report_session_detail_title=Saioan egindako jarduerak report_header_activity=jarduera report_header_actions=ekintzak report_header_score=zuzenak report_header_solved=ados Y=B N=E report_session_detail_hide=ezkutatu saioaren zehaztasunak report_header_sessions=saioak report_all_activities=Jarduera guztiak report_activity=Jarduera: report_many=gehiegi report_n_users=erabiltzaileak group_admin_title=Taldeen kudeaketa group_admin_new_button=Talde berria... group_admin_groups=Taldeak report_actions=Ekintzak group_admin_edit_button=Editatu... user_admin_title=Erabiltzaileen kudeatzailea group_admin_delete_button=Ezabatu... group_admin_clear_button=Garbitu txostenak... group_admin_properties=Taldearen propietateak group_admin_name=Izena: group_admin_id=Identifikatzailea: group_admin_icon=Ikonoa: error=ERROREA return=itzuli... group_admin_users=Erabiltzaileak group_admin_no_users=Taldeak ez du erabiltzailerik. group_admin_create_user_button=Sortu erabiltzaile berria... cancel=Utzi group_admin_invalid_name=Okerreko talde-izena! group_admin_invalid_id=Okerreko talde-identifikatzailea! group_admin_id_already_exists=Bada beste talde bat identifikatzaile bera duena datu-basean! group_admin_delete_group=Ezabatu taldea report_areyousure=Ziur al zaude? YES=Bai NOT=Ez group_admin_delete_group_explain=Eragiketa honek talde honetako erabiltzaile guztiak ere ezabatuko ditu datu-basetik . Horien datu guztiak galdu egingo dira. db_error=Ezin izan da eragiketa burutu. group_admin_clear_group=Ezabatu taldearen txostenak group_admin_clear_group_explain=Adierazitako daten artean talde honetako erabiltzaileek egindako jardueren txostenak ezabatuko ditu eragiketa honek. db_clear_reports_date=Ezabatu txostenak user_admin_invalid_name=Okerreko erabiltzaile-izena user_admin_invalid_id=Okerreko erabiltzaile-identifikatzailea user_admin_id_already_exists=Bada datu-basean identifikatzaile bera duen beste erabiltzaile bat! user_admin_user_deleted=Erabiltzailea egoki ezabatu da datu-basetik. user_admin_id=Identifikatzailea: user_admin_name=Izena: user_admin_icon=Ikonoa: user_admin_edit_button=Editatu... user_admin_delete_button=Ezabatu... user_admin_clear_button=Garbitu txostenak... user_admin_delete_user=Ezabatu erabiltzailea user_admin_delete_user_explain=Eragiketa honek erabiltzaile hau eta bere txostenak datu-basetik ezabatuko ditu. user_admin_clear_user=Ezabatu erabiltzaile-txostena user_admin_clear_user_explain=Eragiketa honek adierazitako denbora-tartean erabiltzaile honek egindako jardueren txostenak ezabatuko ditu. success=Eragiketa ondo burutu da bad_data=Datuak ez dira zuzenak! db_admin_param_lap=Konexio arteko denbora-tartea (segundutan): jclic_reports=JClic txostenak YES_SHORT=B NOT_SHORT=E user_admin_pw_prompt=Pasahitza: user_admin_pw_prompt_confirm=Konfirmatu pasahitza: user_admin_err_bad_pw=Pasahitzak ez datoz bat\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_es.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_es.propertie0000644000175000017500000001353711377161311030760 0ustar login_pwd=Contrase\u00F1a: login_desc=Debe escribir una contrase\u00F1a correcta para acceder a la base de datos de informes. login_title=Conexi\u00F3n a la base de datos submit=Enviar datos... login_incorrect=Contrase\u00F1a incorrecta! main_title=Men\u00FA principal users_admin_title=Administraci\u00F3n de grupos y usuarios group_report_title=Informes de grupo user_report_title=Informes de usuario/a act_report_title=Informes de actividad db_admin_title=Administraci\u00F3n de la base de datos db_admin_settings_error=\u00A1No se han podido cambiar los valores de la base de datos! db_admin_param_agc=Permitir a los usuarios crear nuevos grupos db_admin_param_auc=Permitir a los usuarios la creaci\u00F3n de nuevos usuarios db_admin_param_shgl=Seleccionar grupo en una lista db_admin_param_shul=Seleccionar el nombre de usuario/a en una lista db_admin_param_ut=La base de datos tiene tablas de usuarios y grupos db_admin_edit_btn=Editar propiedades... db_admin_pw_edit_btn=Establecer contrase\u00F1a... title=T\u00EDtulo db_admin_edit_title=Editar propiedades de la base de datos db_admin_pw_edit_title=Cambiar la contrase\u00F1a del sistema db_admin_pw_newPwd=Nueva contrase\u00F1a db_admin_pw_verifyPwd=Volver a escribir la contrase\u00F1a db_admin_pw_noFit=Los dos textos no coinciden! report_group=Grupo: report_user=Usuario: report_project=Proyecto: report_all_projects=Todos los proyectos report_key=Clave: report_code=C\u00F3digo: report_context=Contexto: report_from=Desde: month_1=enero month_2=febrero month_3=marzo month_4=abril month_5=mayo month_6=junio month_7=julio month_8=agosto month_9=septiembre month_10=octubre month_11=noviembre month_12=diciembre report_to=Hasta: report_global_precision=Precisi\u00F3n global report_solved_activities=Actividades resueltas report_user_evolution=Evoluci\u00F3n del usuario/a report_group_evolution=Evoluci\u00F3n del grupo report_project_evolution=Evoluci\u00F3n del proyecto report_result_distribution=Distribuci\u00F3n de resultados report_no_data=SIN DATOS report_users=Usuarios: report_sessions=Sessiones: report_projects=Proyectos: report_actDone=Actividades realizadas: report_actSolved=Actividades resueltas: report_totalTime=Tiempo total: report_globalPrec=Precisi\u00F3n global: report_globalSummary=Resumen global report_header_date=fecha report_session_list=Sesiones realizadas: report_header_user=usuario/a report_header_project=proyecto report_header_numActs=actividades report_header_actsSolved=act. resueltas report_header_time=tiempo report_header_prec=precisi\u00F3n report_session_detail_show=mostrar detalles de la sesi\u00F3n... report_session_detail_title=Actividades realizadas en la sesi\u00F3n report_header_activity=actividad report_header_actions=acciones report_header_score=aciertos report_header_solved=bien Y=S N=N report_session_detail_hide=esconder detalles de la sesi\u00F3n report_header_sessions=sesiones report_all_activities=Todas las actividades report_activity=Actividad: report_many=diversos report_n_users=usuarios group_admin_title=Administraci\u00F3n de grupos group_admin_new_button=Nuevo grupo... group_admin_groups=Grupos report_actions=Acciones group_admin_edit_button=Modificar... user_admin_title=Administraci\u00F3n de usuarios group_admin_delete_button=Eliminar... group_admin_clear_button=Eliminar informes... group_admin_properties=Propiedades del grupo group_admin_name=Nombre: group_admin_id=Identificador: group_admin_icon=Icono: error=ERROR return=regresar... group_admin_users=Usuarios group_admin_no_users=Este grupo no tiene ning\u00FAn usuario/a. group_admin_create_user_button=Crear un nuevo usuario/a... cancel=Cancelar group_admin_invalid_name=El nombre del grupo es incorrecto! group_admin_invalid_id=El identificador de grupo es incorrecto. group_admin_id_already_exists=\u00A1Ya existe un grupo con este identificador en la base de datos! group_admin_delete_group=Eliminar el grupo report_areyousure=\u00BFEst\u00E1 seguro de querer realizar esta operaci\u00F3n? YES=S\u00ED NOT=No group_admin_delete_group_explain=Esta operaci\u00F3n eliminar\u00E1 tambi\u00E9n de la base de datos a todos los usuarios de este grupo. Todos sus datos se perder\u00E1n. db_error=No se ha podido realizar la operaci\u00F3n. group_admin_clear_group=Eliminar los informes del grupo group_admin_clear_group_explain=Esta operaci\u00F3n borrar\u00E1 todos los informes de las actividades realizadas por los miembros de este grupo entre las fechas indicadas. db_clear_reports_date=Eliminar los informes user_admin_invalid_name=El nombre de usuario/a es incorrecto. user_admin_invalid_id=El identificador de usuario/a es incorrecto! user_admin_id_already_exists=Ya existe otro usuario/a con este identificador en la base de datos. Los nombres se pueden repetir (en distintos grupos) pero los identificadores han de ser \u00FAnicos. user_admin_user_deleted=El usuario/a ha sido eliminado satisfactoriamente de la base de datos. user_admin_id=Identificador: user_admin_name=Nombre: user_admin_icon=Icono: user_admin_edit_button=Modificar... user_admin_delete_button=Eliminar... user_admin_clear_button=Eliminar informes... user_admin_delete_user=Eliminar el usuario/a user_admin_delete_user_explain=Esta operaci\u00F3n eliminar\u00E1 al usuario/a y sus informes de la base de datos. user_admin_clear_user=Eliminar los informes del usuario/a user_admin_clear_user_explain=Esta operaci\u00F3n eliminar\u00E1 los informes de las actividades realizadas por este/a usuario(a en el periodo especificado. success=Operaci\u00F3n realizada con \u00E9xito bad_data=\u00A1Datos incorrectos! db_admin_param_lap=Tiempo entre conexiones (segundos): jclic_reports=Informes JClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Contrase\u00F1a: user_admin_pw_prompt_confirm=Confirmar contrase\u00F1a: user_admin_err_bad_pw=\u00A1Las contrase\u00F1as no coinciden\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_it.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_it.propertie0000644000175000017500000001233311377161311030756 0ustar login_pwd=Password: login_desc=Devi inserire una password valida per accedere al database dei rapporti. login_title=Login submit=Presenta... login_incorrect=Password errata! main_title=Menu principale users_admin_title=Amministratore degli utenti e dei gruppi group_report_title=Rapporti del gruppo user_report_title=Rapporti utente act_report_title=Rapporti d'attivit\u00E0 db_admin_title=Amministratore del database db_admin_settings_error=Impossibile definire i valori del nuovo database! db_admin_param_agc=Permetti agli utenti di creare nuovi gruppi db_admin_param_auc=Permetti agli utenti di creare nuovi utenti db_admin_param_shgl=Seleziona un gruppo in una lista db_admin_param_shul=Seleziona un nome utente in una lista db_admin_param_ut=Il database contiene tabelle di utenti e gruppi db_admin_edit_btn=Modifica i parametri... db_admin_pw_edit_btn=Imposta la password... title=Titolo db_admin_edit_title=Modifica la configurazione del database db_admin_pw_edit_title=Cambia la password di sistema db_admin_pw_newPwd=Nuova password db_admin_pw_verifyPwd=Riscrivi la password db_admin_pw_noFit=Le password non coincidono report_group=Gruppo: report_user=Utente: report_project=Progetto: report_all_projects=Tutti i progetti report_key=Chiave: report_code=Codice: report_context=Contesto: report_from=Da: month_1=gennaio month_2=febbraio month_3=marzo month_4=aprile month_5=maggio month_6=giugno month_7=luglio month_8=agosto month_9=settembre month_10=ottobre month_11=novembre month_12=dicembre report_to=A: report_global_precision=Precisione globale report_solved_activities=Attivit\u00E0 risolte report_user_evolution=Progressi dell'utente report_group_evolution=Progressi del gruppo report_project_evolution=Evoluzione del progetto report_result_distribution=Distribuzione dei risultati report_no_data=NESSUN DATO report_users=Utenti: report_sessions=Sessioni: report_projects=Progetti: report_actDone=Attivit\u00E0 eseguite: report_actSolved=Attivit\u00E0 risolte: report_totalTime=Tempo totale: report_globalPrec=Punteggio globale: report_globalSummary=Riassunto globale report_header_date=data report_session_list=Sessioni: report_header_user=utente report_header_project=progetto report_header_numActs=attivit\u00E0 report_header_actsSolved=att. risolte report_header_time=tempo report_header_prec=punteggio report_session_detail_show=mostra i dettagli della sessione report_session_detail_title=Attivit\u00E0 eseguite nella sessione report_header_activity=attivit\u00E0 report_header_actions=azioni report_header_score=corretti report_header_solved=ok Y=S N=N report_session_detail_hide=nascondi dettagli sessione report_header_sessions=sessioni report_all_activities=Tutte le attivit\u00E0 report_activity=Attivit\u00E0: report_many=diversi report_n_users=utenti group_admin_title=Amministrazione gruppi group_admin_new_button=Nuovo gruppo... group_admin_groups=Gruppi report_actions=Azioni group_admin_edit_button=Modifica... user_admin_title=Amministratore degli utenti group_admin_delete_button=Elimina... group_admin_clear_button=Elimina rapporti group_admin_properties=Propriet\u00E0 del gruppo group_admin_name=Nome: group_admin_id=Id. group_admin_icon=Icona: error=ERRORE return=indietro... group_admin_users=Utenti group_admin_no_users=Questo gruppo non ha utenti. group_admin_create_user_button=Crea un nuovo utente... cancel=Annulla group_admin_invalid_name=Nome del gruppo errato! group_admin_invalid_id=L'id del gruppo \u00E8 errato! group_admin_id_already_exists=Nel database c'\u00E8 un altro gruppo con lo stesso id! group_admin_delete_group=Elimina gruppo report_areyousure=Sei sicuro? YES=S\u00EC NOT=No group_admin_delete_group_explain=Questa operazione eliminer\u00E0 anche tutti gli utenti del gruppo nel database. Andranno persi tutti i dati di questi utenti. db_error=Impossibile completare l'operazione. group_admin_clear_group=Elimina i rapporti del gruppo group_admin_clear_group_explain=Questa operazione canceller\u00E0 tutti i rapporti sule attivit\u00E0 eseguite dagli utenti di questo gruppo tra le date specificate. db_clear_reports_date=Elimina i rapporti user_admin_invalid_name=Nome utente non valido. user_admin_invalid_id=User id non valido user_admin_id_already_exists=Nel database c'\u00E8 gi\u00E0 un altro utente con lo stesso id! user_admin_user_deleted=L'utente \u00E8 stato cancellato con successo dal database. user_admin_id=Id. user_admin_name=Nome: user_admin_icon=Icona: user_admin_edit_button=Modifica... user_admin_delete_button=Elimina... user_admin_clear_button=Elimina rapporti... user_admin_delete_user=Elimina l'utente user_admin_delete_user_explain=Questa operazione canceller\u00E0 l'utente e i suoi rapporti dal database. user_admin_clear_user=Elimina i rapporti dell'utente user_admin_clear_user_explain=Questa operazione canceller\u00E0 tutti i rapporti sule attivit\u00E0 eseguite dall'utente tra le date specificate. success=L'operazione ha avuto successo bad_data=Dati non corretti! db_admin_param_lap=Tempo tra le connessioni (secondi): jclic_reports=Rapporti JClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Password: user_admin_pw_prompt_confirm=Conferma password: user_admin_err_bad_pw=Le password non coincidono\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_el.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_el.propertie0000644000175000017500000004533111377161311030746 0ustar login_pwd=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2: login_desc=\u03A0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03CE\u03C3\u03B5\u03C4\u03B5 \u03AD\u03BD\u03B1\u03BD \u03AD\u03B3\u03BA\u03C5\u03C1\u03BF \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03B3\u03B9\u03B1 \u03BD\u03B1 \u03B1\u03C0\u03BF\u03BA\u03C4\u03AE\u03C3\u03B5\u03C4\u03B5 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7 \u03C3\u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03C4\u03C9\u03BD \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD. login_title=\u0395\u03AF\u03C3\u03BF\u03B4\u03BF\u03C2 submit=\u03A5\u03C0\u03BF\u03B2\u03BF\u03BB\u03AE... login_incorrect=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF\u03C2 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 main_title=\u039A\u03CD\u03C1\u03B9\u03BF \u039C\u03B5\u03BD\u03BF\u03CD users_admin_title=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD \u03BA\u03B1\u03B9 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD group_report_title=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 user_report_title=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 act_report_title=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 db_admin_title=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03B2\u03AC\u03C3\u03B7\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD db_admin_settings_error=\u0391\u03B4\u03C5\u03BD\u03B1\u03BC\u03AF\u03B1 \u03BF\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD \u03BD\u03AD\u03C9\u03BD \u03C4\u03B9\u03BC\u03CE\u03BD \u03B3\u03B9\u03B1 \u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD! db_admin_param_agc=\u0395\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03B5\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03BF\u03CD\u03BD \u03BD\u03AD\u03B5\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 db_admin_param_auc=\u0395\u03C0\u03B9\u03C4\u03C1\u03AD\u03C0\u03B5\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03BD\u03B1 \u03B4\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03BF\u03CD\u03BD \u03BD\u03AD\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 db_admin_param_shgl=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1\u03BD \u03BA\u03B1\u03C4\u03AC\u03BB\u03BF\u03B3\u03BF db_admin_param_shul=\u0395\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03BF\u03BD\u03CC\u03BC\u03B1\u03C4\u03BF\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03B1\u03C0\u03CC \u03AD\u03BD\u03B1\u03BD \u03BA\u03B1\u03C4\u03AC\u03BB\u03BF\u03B3\u03BF db_admin_param_ut=\u0397 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03B4\u03B9\u03B1\u03B8\u03AD\u03C4\u03B5\u03B9 \u03C0\u03AF\u03BD\u03B1\u03BA\u03B5\u03C2 \u03BC\u03B5 \u03C4\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03BA\u03B1\u03B9 \u03C4\u03B9\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B5\u03C2 db_admin_edit_btn=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD db_admin_pw_edit_btn=\u039F\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2... title=\u03A4\u03AF\u03C4\u03BB\u03BF\u03C2 db_admin_edit_title=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD \u03C4\u03B7\u03C2 \u03B2\u03AC\u03C3\u03B7\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD db_admin_pw_edit_title=\u0391\u03BB\u03BB\u03B1\u03B3\u03AE \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03C3\u03C5\u03C3\u03C4\u03AE\u03BC\u03B1\u03C4\u03BF\u03C2 db_admin_pw_newPwd=\u039D\u03AD\u03BF\u03C2 \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 db_admin_pw_verifyPwd=\u03A0\u03BB\u03B7\u03BA\u03C4\u03C1\u03BF\u03BB\u03BF\u03B3\u03AE\u03C3\u03C4\u03B5 \u03BE\u03B1\u03BD\u03AC \u03C4\u03BF\u03BD \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 db_admin_pw_noFit=\u039F \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03B4\u03B5\u03BD \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9! report_group=\u039F\u03BC\u03AC\u03B4\u03B1: report_user=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2: report_project=\u0388\u03C1\u03B3\u03BF: report_all_projects=\u038C\u03BB\u03B1 \u03C4\u03B1 \u03AD\u03C1\u03B3\u03B1 report_key=\u039A\u03BB\u03B5\u03B9\u03B4\u03AF: report_code=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2: report_context=\u03A0\u03B5\u03C1\u03B9\u03B2\u03AC\u03BB\u03BB\u03BF\u03BD: report_from=\u0391\u03C0\u03CC: month_1=\u0399\u03B1\u03BD\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2 month_2=\u03A6\u03B5\u03B2\u03C1\u03BF\u03C5\u03AC\u03C1\u03B9\u03BF\u03C2 month_3=\u039C\u03AC\u03C1\u03C4\u03B9\u03BF\u03C2 month_4=\u0391\u03C0\u03C1\u03AF\u03BB\u03B9\u03BF\u03C2 month_5=\u039C\u03AC\u03B9\u03BF\u03C2 month_6=\u0399\u03BF\u03CD\u03BD\u03B9\u03BF\u03C2 month_7=\u0399\u03BF\u03CD\u03BB\u03B9\u03BF\u03C2 month_8=\u0391\u03CD\u03B3\u03BF\u03C5\u03C3\u03C4\u03BF\u03C2 month_9=\u03A3\u03B5\u03C0\u03C4\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2 month_10=\u039F\u03BA\u03C4\u03CE\u03B2\u03C1\u03B9\u03BF\u03C2 month_11=\u039D\u03BF\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2 month_12=\u0394\u03B5\u03BA\u03AD\u03BC\u03B2\u03C1\u03B9\u03BF\u03C2 report_to=\u03A0\u03C1\u03BF\u03C2: report_global_precision=\u039A\u03B1\u03B8\u03BF\u03BB\u03B9\u03BA\u03AE \u03B1\u03BA\u03C1\u03AF\u03B2\u03B5\u03B9\u03B1 report_solved_activities=\u0395\u03C0\u03B9\u03BB\u03C5\u03BC\u03AD\u03BD\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 report_user_evolution=\u0395\u03BE\u03AD\u03BB\u03B9\u03BE\u03B7 \u03C4\u03BF\u03C5 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 report_group_evolution=\u0395\u03BE\u03AD\u03BB\u03B9\u03BE\u03B7 \u03C4\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 report_project_evolution=\u0395\u03BE\u03AD\u03BB\u03B9\u03BE\u03B7 \u03C4\u03BF\u03C5 \u03AD\u03C1\u03B3\u03BF\u03C5 report_result_distribution=\u0394\u03B9\u03B1\u03BD\u03BF\u03BC\u03AE \u03B1\u03C0\u03BF\u03C4\u03B5\u03BB\u03B5\u03C3\u03BC\u03AC\u03C4\u03C9\u03BD report_no_data=\u0394\u0395\u039D \u03A5\u03A0\u0391\u03A1\u03A7\u039F\u03A5\u039D \u0394\u0395\u0394\u039F\u039C\u0395\u039D\u0391 report_users=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2; report_sessions=\u03A3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B5\u03C2: report_projects=\u0388\u03C1\u03B3\u03B1: report_actDone=\u039F\u03BB\u03BF\u03BA\u03BB\u03B7\u03C1\u03C9\u03BC\u03AD\u03BD\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2: report_actSolved=\u0395\u03C0\u03B9\u03BB\u03C5\u03BC\u03AD\u03BD\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2: report_totalTime=\u03A3\u03C5\u03BD\u03BF\u03BB\u03B9\u03BA\u03CC\u03C2 \u03C7\u03C1\u03CC\u03BD\u03BF\u03C2: report_globalPrec=\u03A3\u03C5\u03BD\u03BF\u03BB\u03B9\u03BA\u03AE \u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1 report_globalSummary=\u0393\u03B5\u03BD\u03B9\u03BA\u03AE \u03C3\u03CD\u03BD\u03BF\u03C8\u03B7 report_header_date=\u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03AF\u03B1 report_session_list=\u03A3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B5\u03C2: report_header_user=\u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 report_header_project=\u03AD\u03C1\u03B3\u03BF report_header_numActs=\u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 report_header_actsSolved=\u03B5\u03C0\u03B9\u03BB\u03C5\u03BC\u03AD\u03BD\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 report_header_time=\u03C7\u03C1\u03CC\u03BD\u03BF\u03C2 report_header_prec=\u03B2\u03B1\u03B8\u03BC\u03BF\u03BB\u03BF\u03B3\u03AF\u03B1 report_session_detail_show=\u03B5\u03BC\u03C6\u03AC\u03BD\u03B9\u03C3\u03B7 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03C3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B1\u03C2 report_session_detail_title=\u03A0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03BF\u03C0\u03BF\u03B9\u03B7\u03BC\u03AD\u03BD\u03B5\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03C3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B1 report_header_activity=\u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 report_header_actions=\u03B5\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2 report_header_score=\u03B4\u03B9\u03BF\u03C1\u03B8\u03CE\u03BD\u03B5\u03B9 report_header_solved=\u0395\u03BD\u03C4\u03AC\u03BE\u03B5\u03B9 Y=\u039D\u03B1\u03B9 N=\u038C\u03C7\u03B9 report_session_detail_hide=\u03B1\u03C0\u03CC\u03BA\u03C1\u03C5\u03C8\u03B7 \u03BB\u03B5\u03C0\u03C4\u03BF\u03BC\u03B5\u03C1\u03B5\u03B9\u03CE\u03BD \u03C3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B1\u03C2 report_header_sessions=\u03C3\u03C5\u03BD\u03B5\u03B4\u03C1\u03AF\u03B5\u03C2 report_all_activities=\u038C\u03BB\u03B5\u03C2 \u03BF\u03B9 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 report_activity=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1: report_many=\u03B1\u03C1\u03BA\u03B5\u03C4\u03AC report_n_users=\u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 group_admin_title=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03BF\u03BC\u03AC\u03B4\u03C9\u03BD group_admin_new_button=\u039D\u03AD\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1... group_admin_groups=\u039F\u03BC\u03AC\u03B4\u03B5\u03C2 report_actions=\u0395\u03BD\u03AD\u03C1\u03B3\u03B5\u03B9\u03B5\u03C2 group_admin_edit_button=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1... user_admin_title=\u0394\u03B9\u03B1\u03C7\u03B5\u03AF\u03C1\u03B9\u03C3\u03B7 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 group_admin_delete_button=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE... group_admin_clear_button=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD... group_admin_properties=\u0399\u03B4\u03B9\u03CC\u03C4\u03B7\u03C4\u03B5\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 group_admin_name=\u038C\u03BD\u03BF\u03BC\u03B1: group_admin_id=\u0391\u03BD\u03B1\u03B3\u03BD\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC: group_admin_icon=\u0395\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF: error=\u03A3\u03A6\u0391\u039B\u039C\u0391 return=\u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE group_admin_users=\u03A7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 group_admin_no_users=\u0391\u03C5\u03C4\u03AE \u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03B4\u03B5\u03BD \u03B4\u03B9\u03B1\u03B8\u03AD\u03C4\u03B5\u03B9 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2. group_admin_create_user_button=\u0394\u03B7\u03BC\u03B9\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03BD\u03AD\u03BF\u03C5 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7... cancel=\u0386\u03BA\u03C5\u03C1\u03BF group_admin_invalid_name=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2! group_admin_invalid_id=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF \u03B1\u03BD\u03B1\u03B3\u03BD\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2! group_admin_id_already_exists=\u03A5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03BC\u03B9\u03B1 \u03AC\u03BB\u03BB\u03B7 \u03BF\u03BC\u03AC\u03B4\u03B1 \u03C3\u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03BC\u03B5 \u03C4\u03BF \u03AF\u03B4\u03B9\u03BF \u03B1\u03BD\u03B1\u03B3\u03BD\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC! group_admin_delete_group=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 report_areyousure=\u03A3\u03AF\u03B3\u03BF\u03C5\u03C1\u03B1; YES=\u039D\u03B1\u03B9 NOT=\u038C\u03C7\u03B9 group_admin_delete_group_explain=\u0391\u03C5\u03C4\u03AE \u03B7 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B8\u03B1 \u03C3\u03B2\u03AE\u03C3\u03B5\u03B9 \u03CC\u03BB\u03BF\u03C5\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B5\u03C2 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD. \u038C\u03BB\u03B1 \u03C4\u03B1 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1 \u03B1\u03C5\u03C4\u03CE\u03BD \u03C4\u03C9\u03BD \u03C7\u03C1\u03B7\u03C3\u03C4\u03CE\u03BD \u03B8\u03B1 \u03C7\u03B1\u03B8\u03BF\u03CD\u03BD. db_error=\u0391\u03B4\u03C5\u03BD\u03B1\u03BC\u03AF\u03B1 \u03B5\u03BA\u03C0\u03BB\u03AE\u03C1\u03C9\u03C3\u03B7\u03C2 \u03C4\u03BF\u03C5 \u03C3\u03C4\u03CC\u03C7\u03BF\u03C5. group_admin_clear_group=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC\u03C2 \u03C4\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 group_admin_clear_group_explain=\u0391\u03C5\u03C4\u03AE \u03B7 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B8\u03B1 \u03BA\u03B1\u03B8\u03B1\u03C1\u03AF\u03C3\u03B5\u03B9 \u03CC\u03BB\u03B5\u03C2 \u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C4\u03C9\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03C0\u03BF\u03C5 \u03C0\u03C1\u03B1\u03B3\u03BC\u03B1\u03C4\u03BF\u03C0\u03BF\u03B9\u03AE\u03B8\u03B7\u03BA\u03B1\u03BD \u03B1\u03C0\u03CC \u03C4\u03B1 \u03BC\u03AD\u03BB\u03B7 \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03BF\u03BC\u03AC\u03B4\u03B1\u03C2 \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C4\u03C9\u03BD \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03B9\u03CE\u03BD. db_clear_reports_date=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC\u03C2 user_admin_invalid_name=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF \u03CC\u03BD\u03BF\u03BC\u03B1 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7. user_admin_invalid_id=\u039B\u03B1\u03BD\u03B8\u03B1\u03C3\u03BC\u03AD\u03BD\u03BF \u03B1\u03BD\u03B1\u03B3\u03BD\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7. user_admin_id_already_exists=\u03A5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03AD\u03BD\u03B1\u03C2 \u03AC\u03BB\u03BB\u03BF \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03BC\u03B5 \u03C4\u03BF \u03AF\u03B4\u03B9\u03BF \u03B1\u03BD\u03B1\u03B3\u03BD\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC \u03C3\u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD! user_admin_user_deleted=\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03B1\u03C6\u03B1\u03B9\u03C1\u03AD\u03B8\u03B7\u03BA\u03B5 \u03BC\u03B5 \u03B5\u03C0\u03B9\u03C4\u03C5\u03C7\u03AF\u03B1 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD. user_admin_id=\u0391\u03BD\u03B1\u03B3\u03BD\u03C9\u03C1\u03B9\u03C3\u03C4\u03B9\u03BA\u03CC: user_admin_name=\u038C\u03BD\u03BF\u03BC\u03B1: user_admin_icon=\u0395\u03B9\u03BA\u03BF\u03BD\u03AF\u03B4\u03B9\u03BF: user_admin_edit_button=\u0395\u03C0\u03B5\u03BE\u03B5\u03C1\u03B3\u03B1\u03C3\u03AF\u03B1... user_admin_delete_button=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE... user_admin_clear_button=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD... user_admin_delete_user=\u0394\u03B9\u03B1\u03B3\u03C1\u03B1\u03C6\u03AE \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 user_admin_delete_user_explain=\u0391\u03C5\u03C4\u03AE \u03B7 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B8\u03B1 \u03B4\u03B9\u03B1\u03B3\u03C1\u03AC\u03C8\u03B5\u03B9 \u03C4\u03BF\u03BD \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03BA\u03B1\u03B9 \u03C4\u03B9\u03C2 \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C4\u03BF\u03C5 \u03B1\u03C0\u03CC \u03C4\u03B7 \u03B2\u03AC\u03C3\u03B7 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD. user_admin_clear_user=\u039A\u03B1\u03B8\u03B1\u03C1\u03B9\u03C3\u03BC\u03CC\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03C9\u03BD \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC\u03C2 \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 user_admin_clear_user_explain=\u0391\u03C5\u03C4\u03AE \u03B7 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 \u03B8\u03B1 \u03BA\u03AC\u03BD\u03B5\u03B9 \u03B5\u03BA\u03BA\u03B1\u03B8\u03AC\u03C1\u03B9\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03CE\u03BD \u03BA\u03B1\u03B9 \u03C4\u03C9\u03BD \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03BF\u03C4\u03AE\u03C4\u03C9\u03BD \u03C0\u03BF\u03C5 \u03AD\u03B3\u03B9\u03BD\u03B1\u03BD \u03B1\u03C0\u03CC \u03B1\u03C5\u03C4\u03CC\u03BD \u03C4\u03BF\u03BD \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7 \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C4\u03C9\u03BD \u03BA\u03B1\u03B8\u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03C9\u03BD \u03B7\u03BC\u03B5\u03C1\u03BF\u03BC\u03B7\u03BD\u03B9\u03CE\u03BD. success=\u0395\u03C0\u03B9\u03C4\u03C5\u03C7\u03AE\u03C2 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1 bad_data=\u039B\u03AC\u03B8\u03BF\u03C2 \u03B4\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03B1! db_admin_param_lap=\u03A7\u03C1\u03CC\u03BD\u03BF\u03C2 \u03BC\u03B5\u03C4\u03B1\u03BE\u03CD \u03C4\u03C9\u03BD \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03B5\u03C9\u03BD (\u03B4\u03B5\u03C5\u03C4\u03B5\u03C1\u03CC\u03BB\u03B5\u03C0\u03C4\u03B1): jclic_reports=\u0391\u03BD\u03B1\u03C6\u03BF\u03C1\u03AD\u03C2 \u03C4\u03BF\u03C5 JClic YES_SHORT=\u039D\u03B1\u03B9 NOT_SHORT=\u038C\u03C7\u03B9 user_admin_pw_prompt=\u039A\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2: user_admin_pw_prompt_confirm=\u0395\u03C0\u03B9\u03B2\u03B5\u03B2\u03B1\u03AF\u03C9\u03C3\u03B7 \u03BA\u03C9\u03B4\u03B9\u03BA\u03BF\u03CD \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2: user_admin_err_bad_pw=\u039F \u03BA\u03C9\u03B4\u03B9\u03BA\u03CC\u03C2 \u03C0\u03C1\u03CC\u03C3\u03B2\u03B1\u03C3\u03B7\u03C2 \u03B4\u03B5\u03BD \u03C4\u03B1\u03B9\u03C1\u03B9\u03AC\u03B6\u03B5\u03B9: jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages.properties0000644000175000017500000001146211377161311030447 0ustar login_pwd=Password: login_desc=You need to provide a valid password in order to access the reports database. login_title=Login submit=Submit... login_incorrect=Incorrect password! main_title=Main menu users_admin_title=Users and groups admin group_report_title=Group reports user_report_title=User reports act_report_title=Activity reports db_admin_title=Database admin db_admin_settings_error=Unable to set the new database values! db_admin_param_agc=Allow users to create new groups db_admin_param_auc=Allow users to create new users db_admin_param_shgl=Select group in a list db_admin_param_shul=Select user name in a list db_admin_param_ut=Database has tables of users and groups db_admin_edit_btn=Edit settings... db_admin_pw_edit_btn=Set password... title=Title db_admin_edit_title=Edit database settings db_admin_pw_edit_title=Change system password db_admin_pw_newPwd=New password db_admin_pw_verifyPwd=Retype password db_admin_pw_noFit=Password fields don't fit! report_group=Group: report_user=User: report_project=Project: report_all_projects=All projects report_key=Key: report_code=Code: report_context=Context: report_from=From: month_1=january month_2=february month_3=march month_4=april month_5=may month_6=june month_7=july month_8=august month_9=september month_10=october month_11=november month_12=december report_to=To: report_global_precision=Global precision report_solved_activities=Solved activities report_user_evolution=User evolution report_group_evolution=Group evolution report_project_evolution=Project evolution report_result_distribution=Result distribution report_no_data=NO DATA report_users=Users: report_sessions=Sessions: report_projects=Projects: report_actDone=Activities done: report_actSolved=Activities solved: report_totalTime=Total time: report_globalPrec=Global score: report_globalSummary=Global summary report_header_date=date report_session_list=Sessions: report_header_user=user report_header_project=project report_header_numActs=activities report_header_actsSolved=acts. solved report_header_time=time report_header_prec=score report_session_detail_show=show session details report_session_detail_title=Activities done in session report_header_activity=activity report_header_actions=actions report_header_score=corrects report_header_solved=ok Y=Y N=N report_session_detail_hide=hide session details report_header_sessions=sessions report_all_activities=All activities report_activity=Activity: report_many=several report_n_users=users group_admin_title=Groups administration group_admin_new_button=New group... group_admin_groups=Groups report_actions=Actions group_admin_edit_button=Edit... user_admin_title=User admin group_admin_delete_button=Delete... group_admin_clear_button=Clear reports... group_admin_properties=Group properties group_admin_name=Name: group_admin_id=Identifier: group_admin_icon=Icon: error=ERROR return=return... group_admin_users=Users group_admin_no_users=This group has no users. group_admin_create_user_button=Create a new user... cancel=Cancel group_admin_invalid_name=Incorrect group name! group_admin_invalid_id=Incorrect group identifier! group_admin_id_already_exists=There is another group with the same identifier in the database! group_admin_delete_group=Delete group report_areyousure=Are you sure? YES=Yes NOT=Not group_admin_delete_group_explain=This operation will also delete on the database all users of this group. All data of these users will be lost. db_error=Unable to complete the task. group_admin_clear_group=Clear report data of group group_admin_clear_group_explain=This operation will clear all the reports of the activities done by the members of this group between the specified dates. db_clear_reports_date=Clear report data user_admin_invalid_name=Invalid user name. user_admin_invalid_id=Invalid user identifier user_admin_id_already_exists=There is another user with the same identifier in the database! user_admin_user_deleted=The user was successfully deleted from the database. user_admin_id=Identifier: user_admin_name=Name: user_admin_icon=Icon: user_admin_edit_button=Edit... user_admin_delete_button=Delete... user_admin_clear_button=Clear reports... user_admin_delete_user=Delete user user_admin_delete_user_explain=This operation will delete this user and his reports from the database. user_admin_clear_user=Clear report data of user user_admin_clear_user_explain=This operation will clear all the reports of the activities done by this user between the specified dates. success=Operation successful bad_data=Bad data! db_admin_param_lap=Time between connections (seconds)\: jclic_reports=JClic reports YES_SHORT=Y NOT_SHORT=N user_admin_pw_prompt=Password\: user_admin_pw_prompt_confirm=Confirm password\: user_admin_err_bad_pw=Passwords don't match\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ca.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ca.propertie0000644000175000017500000001334311377161311030727 0ustar login_pwd=Contrasenya: login_desc=Heu d'escriure una contrasenya correcta per accedir a la base de dades d'informes. login_title=Connexi\u00F3 a la base de dades submit=Envia dades... login_incorrect=Contrasenya incorrecta! main_title=Men\u00FA principal users_admin_title=Administraci\u00F3 de grups i usuaris group_report_title=Informes de grup user_report_title=Informes d'usuari/a act_report_title=Informes d'activitat db_admin_title=Administraci\u00F3 de la base de dades db_admin_settings_error=Ha estat impossible fixar els nous valors per a la base de dades! db_admin_param_agc=Permetre als usuaris crear nous grups db_admin_param_auc=Permetre als usuaris la creaci\u00F3 de nous usuaris db_admin_param_shgl=Seleccionar grup en una llista db_admin_param_shul=Seleccionar el nom d'usuari/a en una llista db_admin_param_ut=La base de dades t\u00E9 taules d'usuaris i grups db_admin_edit_btn=Edita les propietats... db_admin_pw_edit_btn=Estableix la contrasenya... title=T\u00EDtol db_admin_edit_title=Edita les propietats de la base de dades db_admin_pw_edit_title=Canvia la contrasenya del sistema db_admin_pw_newPwd=Nova contrasenya db_admin_pw_verifyPwd=Torna a escriure la contrasenya db_admin_pw_noFit=Els dos texts no co\u00EFncideixen! report_group=Grup: report_user=Usuari: report_project=Projecte: report_all_projects=Tots els projectes report_key=Clau: report_code=Codi: report_context=Context: report_from=Des de: month_1=gener month_2=febrer month_3=mar\u00E7 month_4=abril month_5=maig month_6=juny month_7=juliol month_8=agost month_9=setembre month_10=octubre month_11=novembre month_12=desembre report_to=Fins a: report_global_precision=Precisi\u00F3 global report_solved_activities=Activitats resoltes report_user_evolution=Evoluci\u00F3 de l'usuari/a report_group_evolution=Evoluci\u00F3 del grup report_project_evolution=Evoluci\u00F3 del projecte report_result_distribution=Distribuci\u00F3 de resultats report_no_data=SENSE DADES report_users=Usuaris: report_sessions=Sessions: report_projects=Projectes: report_actDone=Activitats fetes: report_actSolved=Activitats resoltes: report_totalTime=Temps total: report_globalPrec=Precisi\u00F3 global: report_globalSummary=Resum global report_header_date=data report_session_list=Sessions realitzades: report_header_user=usuari/a report_header_project=projecte report_header_numActs=activitats report_header_actsSolved=act. resoltes report_header_time=temps report_header_prec=precisi\u00F3 report_session_detail_show=mostrar detalls de la sessi\u00F3 report_session_detail_title=Activitats realitzades a la sessi\u00F3 report_header_activity=activitat report_header_actions=accions report_header_score=encerts report_header_solved=b\u00E9 Y=S N=N report_session_detail_hide=amaga els detalls de la sessi\u00F3 report_header_sessions=sessions report_all_activities=Totes les activitats report_activity=Activitat: report_many=diversos report_n_users=usuaris group_admin_title=Administraci\u00F3 de grups group_admin_new_button=Nou grup... group_admin_groups=Grups report_actions=Accions group_admin_edit_button=Modifica... user_admin_title=Administraci\u00F3 d'usuaris group_admin_delete_button=Elimina... group_admin_clear_button=Elimina informes... group_admin_properties=Propietats del grup group_admin_name=Nom: group_admin_id=Identificador: group_admin_icon=Icona: error=ERROR return=torna... group_admin_users=Usuaris group_admin_no_users=Aquest grup no cont\u00E9 cap usuari/a. group_admin_create_user_button=Crea un nou usuari/a... cancel=Cancel\u00B7la group_admin_invalid_name=El nom del grup \u00E9s incorrecte! group_admin_invalid_id=L'identificador de grup \u00E9s incorrecte! group_admin_id_already_exists=Ja hi ha un altre grup amb el mateix identificador a la base de dades! group_admin_delete_group=Elimina el grup report_areyousure=Segur que voleu realitzar aquesta operaci\u00F3? YES=S\u00ED NOT=No group_admin_delete_group_explain=Aquesta operaci\u00F3 tamb\u00E9 eliminar\u00E1 de la base de dades a tots els usuaris d'aquest grup. Totes les seves dades es perdran. db_error=No s'ha pogut realitzar l'operaci\u00F3. group_admin_clear_group=Esborra els informes del grup group_admin_clear_group_explain=Aquesta operaci\u00F3 esborrar\u00E0 tots els informes de les activitats realitzades pels membres d'aquest grup entre les dates indicades. db_clear_reports_date=Esborra els informes user_admin_invalid_name=El nom d'usuari/a \u00E9s incorrecte. user_admin_invalid_id=L'identificador d'usuari/a \u00E9s incorrecte! user_admin_id_already_exists=Ja hi ha un altre usuari/a amb aquest identificador a la base de dades. Els noms es poden repetir (en diferents grups), per\u00F2 els identificadors han de ser \u00FAnics. user_admin_user_deleted=L'usuari/a ha estat eliminat satisfact\u00F2riament de la base de dades. user_admin_id=Identificador: user_admin_name=Nom: user_admin_icon=Icona: user_admin_edit_button=Modifica... user_admin_delete_button=Elimina... user_admin_clear_button=Elimina informes... user_admin_delete_user=Elimina l'usuari/a user_admin_delete_user_explain=Aquesta operaci\u00F3 eliminar\u00E0 aquest/a usuari/a i els seus informes de la base de dades. user_admin_clear_user=Elimina els informes de l'usuari/a user_admin_clear_user_explain=Aquesta operaci\u00F3 eliminar\u00E1 els informes de les activitats realitzades per aquest/a usuari/a en el per\u00EDode especificat. success=Operaci\u00F3 realitzada amb \u00E8xit bad_data=Dades incorrectes! db_admin_param_lap=Temps entre connexions (segons): jclic_reports=Informes JClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Contrasenya: user_admin_pw_prompt_confirm=Confirmaci\u00F3 de la contrasenya: user_admin_err_bad_pw=Les contrasenyes no co\u00EFncideixen\\! ././@LongLink0000000000000000000000000000014700000000000011567 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ast.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_ast.properti0000644000175000017500000001320611377161311030764 0ustar login_pwd=Contrase\u00F1a: login_desc=Tien d'escribir una contrase\u00F1a correuta p'acceder a la base de datos d'informes. login_title=Coneutar submit=Unviar... login_incorrect=\u00A1Contrase\u00F1a incorreuta! main_title=Men\u00FA principal users_admin_title=Alministraci\u00F3n de grupos y usuarios group_report_title=Informes de grupu user_report_title=Informes d'usuariu/a act_report_title=Informes de xera db_admin_title=Alministraci\u00F3n de la base de datos db_admin_settings_error=\u00A1Nun se pudieron camudar los valores de la base de datos! db_admin_param_agc=Permitir a los usuarios criar grupos nuevos db_admin_param_auc=Permitir a los usuarios la creaci\u00F3n de usuarios nuevos db_admin_param_shgl=Esbillar grupu d'una llista db_admin_param_shul=Esbillar el nome d'usuariu/a d'una llista db_admin_param_ut=La base de datos tien tables d'usuarios y grupos db_admin_edit_btn=Editar propiedaes... db_admin_pw_edit_btn=Afitar contrase\u00F1a... title=T\u00EDtulu db_admin_edit_title=Editar propiedaes de la base de datos db_admin_pw_edit_title=Camudar la contrase\u00F1a del sistema db_admin_pw_newPwd=Contrase\u00F1a nueva db_admin_pw_verifyPwd=Volver a escribir la contrase\u00F1a db_admin_pw_noFit=Los dos testos nun concasen! report_group=Grupu: report_user=Usuariu: report_project=Proyeutu: report_all_projects=Tolos proyeutos report_key=Contrase\u00F1a: report_code=C\u00F3digu: report_context=Contestu: report_from=Dende: month_1=xineru month_2=febreru month_3=marzu month_4=abril month_5=mayu month_6=xunu month_7=xunetu month_8=agostu month_9=setiembre month_10=ochobre month_11=payares month_12=avientu report_to=Fasta: report_global_precision=Precisi\u00F3n global report_solved_activities=Xeres resueltes report_user_evolution=Evoluci\u00F3n del usuariu/a report_group_evolution=Evoluci\u00F3n del grupu report_project_evolution=Evoluci\u00F3n del proyeutu report_result_distribution=Distribuci\u00F3n de resultaos report_no_data=ENSIN DATOS report_users=Usuarios: report_sessions=Sesiones: report_projects=Proyeutos: report_actDone=Xeres realizaes: report_actSolved=Xeres resueltes: report_totalTime=Tiempu total: report_globalPrec=Precisi\u00F3n global: report_globalSummary=Resume global report_header_date=data report_session_list=Sesiones realizaes: report_header_user=usuariu/a report_header_project=proyeutu report_header_numActs=xeres report_header_actsSolved=xeres. resueltes report_header_time=tiempu report_header_prec=precisi\u00F3n report_session_detail_show=amosar detalles de la sesi\u00F3n... report_session_detail_title=Xeres realizaes na sesi\u00F3n report_header_activity=xera report_header_actions=aiciones report_header_score=aciertos report_header_solved=bien Y=S N=N report_session_detail_hide=esconder detalles de la sesi\u00F3n report_header_sessions=sesiones report_all_activities=Toles xeres report_activity=Xera: report_many=dellos report_n_users=usuarios group_admin_title=Alministraci\u00F3n de grupos group_admin_new_button=Grupu nuevu... group_admin_groups=Grupos report_actions=Aiciones group_admin_edit_button=Camudar... user_admin_title=Alministraci\u00F3n d'usuarios group_admin_delete_button=Esborrar... group_admin_clear_button=Llimpiar informes... group_admin_properties=Propiedaes del grupu group_admin_name=Nome: group_admin_id=Identificador: group_admin_icon=Iconu: error=ERROR return=tornar... group_admin_users=Usuarios group_admin_no_users=Esti grupu nun tien usuariu/a deng\u00FAn. group_admin_create_user_button=Criar un usuariu/a nuevu... cancel=Encaboxar group_admin_invalid_name=El nome del grupu ye incorreutu! group_admin_invalid_id=L'identificador de grupu ye incorreutu. group_admin_id_already_exists=\u00A1Y\u00E1 hai un grupu con esti identificador na base de datos! group_admin_delete_group=Esborrar el grupu report_areyousure=\u00BFDe xuru? YES=S\u00ED NOT=Non group_admin_delete_group_explain=Esta operaci\u00F3n va desaniciar tami\u00E9n de la base de datos a tolos usuarios d'esti grupu. Van perdese tolos datos d'estos usuarios. db_error=Nun se pudo facer la operaci\u00F3n. group_admin_clear_group=Llimpiar los informes del grupu group_admin_clear_group_explain=Esta operaci\u00F3n va llimpiar tolos informes de les xeres realizaes polos miembros d'esti grupu ente les dates conse\u00F1aes. db_clear_reports_date=Llimpiar los datos d'informes user_admin_invalid_name=El nome d'usuariu/a ye incorreutu. user_admin_invalid_id=L'identificador d'usuariu/a ye incorreutu! user_admin_id_already_exists=Y\u00E1 hai otru usuariu/a con esti identificador na base de datos. Los nomes puen repetise (en dellos grupos) pero los identificadores tienen de ser \u00FAnicos. user_admin_user_deleted=L'usuariu/a foi esborr\u00E1u dafechu de la base de datos. user_admin_id=Identificador: user_admin_name=Nome: user_admin_icon=Iconu: user_admin_edit_button=Camudar... user_admin_delete_button=Esborrar... user_admin_clear_button=Llimpiar informes... user_admin_delete_user=Esborrar l'usuariu/a user_admin_delete_user_explain=Esta operaci\u00F3n va esborrar al usuariu/a y los sos informes de la base de datos. user_admin_clear_user=Llimpiar los informes del usuariu/a user_admin_clear_user_explain=Esta operaci\u00F3n va llimpiar los informes de les xeres realizaes por esti/a usuariu/a nel periodu especific\u00E1u. success=Operaci\u00F3n fecha con \u00E9situ bad_data=\u00A1Datos incorreutos! db_admin_param_lap=Tiempu ente conexones (segundos): jclic_reports=Informes JClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Contrase\u00F1a: user_admin_pw_prompt_confirm=Confirmar contrase\u00F1a: user_admin_err_bad_pw=\u00A1Les contrase\u00F1es nun concasen\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_fr.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_fr.propertie0000644000175000017500000001353211377161311030753 0ustar login_pwd=Mot de passe: login_desc=Vous devez donner un mot de passe valide pour acc\u00E9der \u00E0 la base de rapports. login_title=Login submit=Soumettre... login_incorrect=Mot de passe incorrect\\! main_title=Menu principal users_admin_title=Administrateur d'utilisateurs et de groupes group_report_title=Rapports de groupe user_report_title=Rapports utilisateur act_report_title=Rapports d'activit\u00E9s db_admin_title=Administrateur de la base de donn\u00E9es db_admin_settings_error=Impossible de d\u00E9finir les valeurs de la nouvelle base de donn\u00E9es\\! db_admin_param_agc=Autoriser les utilisateurs \u00E0 cr\u00E9er de nouveaux groupes db_admin_param_auc=Autoriser les utilisateurs \u00E0 cr\u00E9er de nouveaux utilisateurs db_admin_param_shgl=S\u00E9lectionner un groupe dans une liste db_admin_param_shul=S\u00E9lectionner un nom d'utilisateur dans une liste db_admin_param_ut=La base de donn\u00E9es contient des tables d'utilisateurs et de groupes db_admin_edit_btn=Editer les param\u00E8tres... db_admin_pw_edit_btn=D\u00E9finir le mot de passe... title=Titre db_admin_edit_title=Editer les param\u00E8tres de la base de donn\u00E9es db_admin_pw_edit_title=Changer le mot de passe syst\u00E8me db_admin_pw_newPwd=Nouveau mot de passe db_admin_pw_verifyPwd=Retapez le mot de passe db_admin_pw_noFit=Les champs mot de passe ne doivent pas rester vides report_group=Groupe : report_user=Utilisateur: report_project=Projet: report_all_projects=Tous les projets report_key=Cl\u00E9: report_code=Code: report_context=Contexte: report_from=DE: month_1=janvier month_2=f\u00E9vrier month_3=mars month_4=avril month_5=mai month_6=juin month_7=juillet month_8=ao\u00FBt month_9=septembre month_10=octobre month_11=novembre month_12=d\u00E9cembre report_to=A: report_global_precision=Pr\u00E9cision globale report_solved_activities=Activit\u00E9s r\u00E9solues report_user_evolution=Evolution de l'utilisateur report_group_evolution=Evolution du groupe report_project_evolution=Evolution du projet report_result_distribution=Distribution du r\u00E9sultat report_no_data=PAS DE DONNEES report_users=Utilisateurs: report_sessions=Sessions: report_projects=Projets: report_actDone=Activit\u00E9s faites: report_actSolved=Activit\u00E9s r\u00E9solues: report_totalTime=Temps total: report_globalPrec=Score global: report_globalSummary=Sommaire g\u00E9n\u00E9ral report_header_date=date report_session_list=Sessions: report_header_user=utilisateur report_header_project=projet report_header_numActs=activit\u00E9s report_header_actsSolved=acts. r\u00E9solues report_header_time=temps report_header_prec=score report_session_detail_show=Montrer les d\u00E9tails de session report_session_detail_title=Activit\u00E9s faites pendant la session report_header_activity=activit\u00E9 report_header_actions=actions report_header_score=correctes report_header_solved=ok Y=O N=N report_session_detail_hide=Cacher les d\u00E9tails de session report_header_sessions=sessions report_all_activities=Toutes les activit\u00E9s report_activity=Activit\u00E9: report_many=plusieurs report_n_users=utilisateurs group_admin_title=Administration des groupes group_admin_new_button=Nouveau groupe... group_admin_groups=Groupes report_actions=Actions group_admin_edit_button=Editer... user_admin_title=Utilisateur admin group_admin_delete_button=Supprimer... group_admin_clear_button=Effacer rapports... group_admin_properties=Groupe propri\u00E9t\u00E9s group_admin_name=Nom: group_admin_id=Identifiant: group_admin_icon=Ic\u00F4ne: error=ERREUR return=retour... group_admin_users=Utilisateurs group_admin_no_users=Ce groupe n'a pas d'utilisateurs. group_admin_create_user_button=Cr\u00E9er un nouvel utilisateur... cancel=Annuler group_admin_invalid_name=Nom de groupe incorrect\\! group_admin_invalid_id=L'identifiant de groupe est incorrect\\! group_admin_id_already_exists=Il y a un autre groupe avec le m\u00EAme identifiant dans la base de donn\u00E9es\\! group_admin_delete_group=Supprimer le groupe report_areyousure=Etes-vous s\u00FBr ? YES=Oui NOT=Non group_admin_delete_group_explain=Cette op\u00E9ration effacera aussi dans la base de donn\u00E9es tous les utilisateurs de ce groupe. Toutes les donn\u00E9es de ces utilisateurs seront perdues. db_error=Impossible de terminer la t\u00E2che. group_admin_clear_group=Effacer les donn\u00E9es du rapport du groupe group_admin_clear_group_explain=Cette op\u00E9ration effacera tous les rapports d'activit\u00E9s faites par les membres de ce groupe entre deux dates sp\u00E9cifi\u00E9es. db_clear_reports_date=Effacer les donn\u00E9es du rapport. user_admin_invalid_name=Nom d'utilisateur invalide. user_admin_invalid_id=Identifiant utilisateur invalide user_admin_id_already_exists=Il y a un autre utilisateur avec le m\u00EAme identifiant dans la base de donn\u00E9es\\! user_admin_user_deleted=L'utilisateur a \u00E9t\u00E9 supprim\u00E9 de la base de donn\u00E9es. user_admin_id=Identifiant: user_admin_name=Nom: user_admin_icon=Ic\u00F4ne: user_admin_edit_button=Editer... user_admin_delete_button=Supprimer... user_admin_clear_button=Effacer les rapports... user_admin_delete_user=Supprimer l'utilisateur user_admin_delete_user_explain=Cette op\u00E9ration supprimera cet utilisateur et ses rapports de la base de donn\u00E9es. user_admin_clear_user=Effacer les donn\u00E9es du rapport de l'utilisateur user_admin_clear_user_explain=Cette op\u00E9ration effacera tous les rapports d'activit\u00E9s faites par cet utilisateur entre des dates sp\u00E9cifi\u00E9es. success=Op\u00E9ration r\u00E9ussie bad_data=Mauvaise donn\u00E9e\\! db_admin_param_lap=Temps entre les connections (secondes): jclic_reports=JClic rapports YES_SHORT=O NOT_SHORT=N user_admin_pw_prompt=Mot de passe: user_admin_pw_prompt_confirm=Confirmer mot de passe: user_admin_err_bad_pw=Les mots de passe ne coincident pas\\! ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt_BR.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt_BR.proper0000644000175000017500000001323111377161311030644 0ustar login_pwd=Senha : login_desc=\u00C9 necess\u00E1rio que voc\u00EA forne\u00E7a uma senha v\u00E1lida para poder acessar os relat\u00F3rios no banco de dados. login_title=Login submit=Enviar... login_incorrect=Senha incorreta! main_title=Menu principal users_admin_title=Administrador de usu\u00E1rios e grupos group_report_title=Relat\u00F3rios de grupo user_report_title=relat\u00F3rios de usu\u00E1rio act_report_title=Relat\u00F3rios de atividades db_admin_title=Administrador de BD db_admin_settings_error=N\u00E3o foi poss\u00EDvel definir os novos valores do banco de dados! db_admin_param_agc=Permitir que usu\u00E1rios criem novos grupos db_admin_param_auc=Permitir que usu\u00E1rios criem novos usu\u00E1rios db_admin_param_shgl=Selecione grupo em uma lista db_admin_param_shul=Selecione nome de usu\u00E1rio em uma lista db_admin_param_ut=Banco de dados possui tabelas de usu\u00E1rios e grupos db_admin_edit_btn=Editar prefer\u00EAncias... db_admin_pw_edit_btn=Definir senha... title=T\u00EDtulo db_admin_edit_title=Editar configura\u00E7\u00F5es do banco de dados db_admin_pw_edit_title=Alterar senha do sistema db_admin_pw_newPwd=Nova senha db_admin_pw_verifyPwd=Confirme a senha db_admin_pw_noFit=As senhas est\u00E3o diferentes! report_group=Grupo: report_user=Usu\u00E1rio: report_project=Projeto: report_all_projects=Todos os projetos report_key=Chave: report_code=C\u00F3digo: report_context=Contexto: report_from=De: month_1=janeiro month_2=fevereiro month_3=mar\u00E7o month_4=abril month_5=maio month_6=junho month_7=julho month_8=agosto month_9=setembro month_10=outubro month_11=novembro month_12=dezembro report_to=Para: report_global_precision=Precis\u00E3o global report_solved_activities=Atividades resolvidas report_user_evolution=Progresso do usu\u00E1rio report_group_evolution=Progresso do grupo report_project_evolution=Progresso do projeto report_result_distribution=Distribui\u00E7\u00E3o do resultado report_no_data=SEM DADOS report_users=Usu\u00E1rios: report_sessions=Sess\u00F5es: report_projects=Projetos: report_actDone=Atividades realizadas: report_actSolved=Atividades resolvidas: report_totalTime=Tempo total: report_globalPrec=Pontua\u00E7\u00E3o geral: report_globalSummary=Resumo geral report_header_date=Data report_session_list=Sess\u00F5es: report_header_user=usu\u00E1rio report_header_project=projeto report_header_numActs=atividades report_header_actsSolved=ativ. feitas report_header_time=tempo report_header_prec=acertos report_session_detail_show=mostrar detalhes da sess\u00E3o report_session_detail_title=Atividades feitas na sess\u00E3o report_header_activity=atividade report_header_actions=a\u00E7\u00F5es report_header_score=corretas report_header_solved=ok Y=S N=N report_session_detail_hide=ocultar detalhes da sess\u00E3o report_header_sessions=sess\u00F5es report_all_activities=Todas as atividades report_activity=Atividade: report_many=v\u00E1rios report_n_users=usu\u00E1rios group_admin_title=Administra\u00E7\u00E3o de grupos group_admin_new_button=Novo grupo... group_admin_groups=Grupos report_actions=A\u00E7\u00F5es group_admin_edit_button=Editar... user_admin_title=Administrador de usu\u00E1rio group_admin_delete_button=Excluir... group_admin_clear_button=Apagar registros... group_admin_properties=Propriedades do grupo group_admin_name=Nome: group_admin_id=Identificador: group_admin_icon=\u00CDcone: error=ERRO return=voltar... group_admin_users=Usu\u00E1rios group_admin_no_users=Esse grupo n\u00E3o cont\u00E9m usu\u00E1rios. group_admin_create_user_button=Criar um novo usu\u00E1rio... cancel=Cancelar group_admin_invalid_name=Nome de grupo incorreto! group_admin_invalid_id=Identificador de grupo incorreto! group_admin_id_already_exists=J\u00E1 existe outro grupo com o mesmo identificador no banco de dados! group_admin_delete_group=Excluir grupo report_areyousure=Voc\u00EA tem certeza? YES=Sim NOT=N\u00E3o group_admin_delete_group_explain=Essa opera\u00E7\u00E3o tamb\u00E9m excluir\u00E1 do banco todos os usu\u00E1rios desse grupo. Todos os dados desses usu\u00E1rios ser\u00E3o perdidos. db_error=N\u00E3o foi poss\u00EDvel completar a tarefa. group_admin_clear_group=Apagar dados de relat\u00F3rio do grupo group_admin_clear_group_explain=Essa opera\u00E7\u00E3o apagar\u00E1 todos os registros de atividades feitas pelos membros desse grupo dentro do intervalo de datas indicadas. db_clear_reports_date=Apagar registros de dados user_admin_invalid_name=Nome de usu\u00E1rio inv\u00E1lido. user_admin_invalid_id=Identificador de usu\u00E1rio inv\u00E1lido user_admin_id_already_exists=J\u00E1 existe outro usu\u00E1rio com o mesmo identificador no banco de dados! user_admin_user_deleted=O usu\u00E1rio foi exclu\u00EDdo com sucesso do banco de dados. user_admin_id=Identificador: user_admin_name=Nome: user_admin_icon=\u00CDcone: user_admin_edit_button=Editar... user_admin_delete_button=Eliminar... user_admin_clear_button=Apagar registros... user_admin_delete_user=Excluir usu\u00E1rio user_admin_delete_user_explain=Essa opera\u00E7\u00E3o excluir\u00E1 do banco de dados esse usu\u00E1rio e seus registros. user_admin_clear_user=Apagar registros de dados do usu\u00E1rio user_admin_clear_user_explain=Esse opera\u00E7\u00E3o apagar\u00E1 todos os registros de atividades feitas pelo usu\u00E1rio no per\u00EDodo entre as datas indicadas. success=Opera\u00E7\u00E3o bem sucedida bad_data=Dados incorretos! db_admin_param_lap=Tempo entre conex\u00F5es (segundos): jclic_reports=Relat\u00F3rios jClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Senha: user_admin_pw_prompt_confirm=Confirme senha: user_admin_err_bad_pw=As senhas est\u00E3o diferentes\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_tr.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_tr.propertie0000644000175000017500000001354611377161311030776 0ustar login_pwd=\u015Eifre login_desc=Veritaban\u0131 raporlar\u0131na eri\u015Fim i\u00E7in ge\u00E7erli bir \u015Fifreye ihtiyac\u0131n\u0131z var. login_title=Kullan\u0131c\u0131 ad\u0131 submit=G\u00F6nder login_incorrect=Hatal\u0131 \u015Fifre! main_title=Ana men\u00FC users_admin_title=Kullan\u0131c\u0131lar ve y\u00F6neticiler group_report_title=Grup raporlar\u0131 user_report_title=Kullan\u0131c\u0131 raporlar\u0131 act_report_title=Aktivite raporlar\u0131 db_admin_title=Veritaban\u0131 y\u00F6neticisi db_admin_settings_error=Yeni veritaban\u0131 de\u011Ferleri yap\u0131land\u0131r\u0131lam\u0131yor! db_admin_param_agc=Kullan\u0131c\u0131lara yeni grup eklemelerine izin ver db_admin_param_auc=Kullan\u0131c\u0131lara yeni kullan\u0131c\u0131 olu\u015Fturma izni ver db_admin_param_shgl=Listedeki gruplar\u0131 se\u00E7 db_admin_param_shul=Listeden bir kullan\u0131c\u0131 ad\u0131 se\u00E7 db_admin_param_ut=Veritaban\u0131nda kullan\u0131c\u0131lar ve gruplar tablosu olu\u015Fturuldu db_admin_edit_btn=Ayarlar\u0131 d\u00FCzenle db_admin_pw_edit_btn=\u015Eifre belirle... title=Ba\u015Fl\u0131k db_admin_edit_title=Veritaban\u0131 ayarlar\u0131n\u0131 d\u00FCzenle db_admin_pw_edit_title=Sistem \u015Fifresini de\u011Fi\u015Ftir db_admin_pw_newPwd=Yeni parola db_admin_pw_verifyPwd=\u015Eifrenizi tekrar giriniz db_admin_pw_noFit=Password fields don't fit! report_group=Grup: report_user=Kullan\u0131c\u0131: report_project=Proje: report_all_projects=T\u00FCm projeler report_key=Anahtar: report_code=Kod: report_context=\u0130\u00E7erik: report_from=G\u00F6nderen: month_1=Ocak month_2=\u015Eubat month_3=Mart month_4=Nisan month_5=May\u0131s month_6=Haziran month_7=Temmuz month_8=A\u011Fustos month_9=Eyl\u00FCl month_10=Ekim month_11=Kas\u0131m month_12=Aral\u0131k report_to=Kime: report_global_precision=Global precision report_solved_activities=\u00C7\u00F6z\u00FClm\u00FC\u015F aktiviteler report_user_evolution=Kullan\u0131c\u0131 geli\u015Fimi report_group_evolution=Grup geli\u015Fimi report_project_evolution=Proje geli\u015Fimi report_result_distribution=Result distribution report_no_data=VER\u0130 YOK report_users=Kullan\u0131c\u0131lar: report_sessions=Oturumlar: report_projects=Projeler: report_actDone=Activities done: report_actSolved=\u00C7\u00F6z\u00FClm\u00FC\u015F aktiviteler report_totalTime=Toplam s\u00FCre: report_globalPrec=Genel sonu\u00E7: report_globalSummary=Genel \u00F6zet: report_header_date=tarih report_session_list=Oturumlar: report_header_user=kullan\u0131c\u0131 report_header_project=proje report_header_numActs=aktiviteler report_header_actsSolved=\u00E7\u00F6z\u00FClm\u00FC\u015F aktiviteler report_header_time=zaman report_header_prec=sonu\u00E7 report_session_detail_show=oturum detaylar\u0131n\u0131 g\u00F6ster report_session_detail_title=Activities done in session report_header_activity=aktivite report_header_actions=eylemler report_header_score=do\u011Frular report_header_solved=tamam Y=E N=H report_session_detail_hide=oturum detaylar\u0131n\u0131 sakla report_header_sessions=oturumlar report_all_activities=t\u00FCm aktiviteler report_activity=Aktivite: report_many=several report_n_users=kullan\u0131c\u0131lar group_admin_title=Grup y\u00F6neticisi group_admin_new_button=Yeni grup... group_admin_groups=Gruplar report_actions=Eylemler group_admin_edit_button=D\u00FCzenle... user_admin_title=Kullan\u0131c\u0131 y\u00F6neticisi group_admin_delete_button=Sil... group_admin_clear_button=Raporlar\u0131 sil... group_admin_properties=Grup \u00F6zellikleri group_admin_name=\u0130sim: group_admin_id=Identifier: group_admin_icon=Simge: error=HATA return=geri d\u00F6n... group_admin_users=Kullan\u0131c\u0131lar group_admin_no_users=Bu grupta kullan\u0131c\u0131 yok. group_admin_create_user_button=Yeni kullan\u0131c\u0131 olu\u015Ftur... cancel=\u0130ptal group_admin_invalid_name=Grup ad\u0131 hatal\u0131! group_admin_invalid_id=Grup kimli\u011Fi hatal\u0131! group_admin_id_already_exists=Veritaban\u0131nda ayn\u0131 isme sahip ba\u015Fka bir grup var! group_admin_delete_group=Grup Sil report_areyousure=Emin misiniz? YES=Evet NOT=De\u011Fil group_admin_delete_group_explain=Bu i\u015Flem bu gruptaki t\u00FCm kullan\u0131c\u0131lar\u0131 veritaban\u0131ndan silecek. Kullan\u0131c\u0131lara ait t\u00FCm veriler kaybolacak. db_error=Unable to complete the task. group_admin_clear_group=Grup veri raporunu sil group_admin_clear_group_explain=This operation will clear all the reports of the activities done by the members of this group between the specified dates. db_clear_reports_date=Veri raporunu sil user_admin_invalid_name=Ge\u00E7ersiz kullan\u0131c\u0131 ad\u0131 user_admin_invalid_id=Ge\u00E7ersiz kullan\u0131c\u0131 kimli\u011Fi user_admin_id_already_exists=Veritaban\u0131nda ayn\u0131 kimli\u011Fe sahip ba\u015Fka bir kullan\u0131c\u0131 var! user_admin_user_deleted=Kullan\u0131c\u0131 ba\u015Far\u0131yla veritaban\u0131ndan silindi. user_admin_id=Identifier: user_admin_name=\u0130sim: user_admin_icon=Simge: user_admin_edit_button=D\u00FCzenle... user_admin_delete_button=Sil... user_admin_clear_button=Raporlar\u0131 sil... user_admin_delete_user=Kullan\u0131c\u0131 sil user_admin_delete_user_explain=Bu i\u015Flem kullan\u0131c\u0131y\u0131 ve raporlar\u0131n\u0131 veritaban\u0131ndan silecek. user_admin_clear_user=Kullan\u0131c\u0131 veri raporunu sil user_admin_clear_user_explain=This operation will clear all the reports of the activities done by this user between the specified dates. success=\u0130\u015Flem ba\u015Far\u0131yla ger\u00E7ekle\u015Ftirildi bad_data=Hatal\u0131 veri! db_admin_param_lap=\u0130ki ba\u011Flant\u0131 aras\u0131ndaki zaman (saniye): jclic_reports=JClic raporlar\u0131 YES_SHORT=E NOT_SHORT=H user_admin_pw_prompt=\u015Eifre: user_admin_pw_prompt_confirm=Confirm password: user_admin_err_bad_pw=Passwords don't match\\! ././@LongLink0000000000000000000000000000015100000000000011562 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_zh_TW.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_zh_TW.proper0000644000175000017500000001413411377161311030674 0ustar login_pwd=\u5BC6\u78BC\uFF1A login_desc=You need to provide a valid password in order to access the reports database. login_title=\u767B\u5165 submit=\u9001\u51FA login_incorrect=\u5BC6\u78BC\u4E0D\u6B63\u78BA main_title=\u4E3B\u9078\u55AE users_admin_title=\u4F7F\u7528\u8005\u8207\u7FA4\u7D44\u7BA1\u7406 group_report_title=\u7FA4\u7D44\u5831 \u544A user_report_title=\u4F7F\u7528\u8005\u5831\u544A act_report_title=\u6D3B\u52D5\u5831\u544A db_admin_title=\u8CC7\u6599\u5EAB\u7BA1\u7406 db_admin_settings_error=Unable to set the new database values! db_admin_param_agc=\u5141\u8A31\u4F7F\u7528\u8005\u5EFA\u7ACB\u65B0\u7FA4\u7D44 db_admin_param_auc=\u5141\u8A31\u4F7F\u7528\u8005\u5EFA\u7ACB\u65B0\u4F7F\u7528\u8005 db_admin_param_shgl=\u5728\u5217\u8868\u4E2D\u9078\u64C7\u7FA4\u7D44 db_admin_param_shul=\u5728\u5217\u8868\u4E2D\u9078\u64C7\u4F7F\u7528\u8005 db_admin_param_ut=\u8CC7\u6599\u5EAB\u6709\u4F7F\u7528\u8005\u8207\u7FA4\u7D44\u5DE5\u4F5C\u8868 db_admin_edit_btn=\u7DE8\u8F2F\u504F\u597D\u8A2D\u5B9A... db_admin_pw_edit_btn=\u8A2D\u5B9A\u5BC6\u78BC... title=\u6A19\u984C db_admin_edit_title=\u7DE8\u8F2F\u8CC7\u6599\u5EAB\u8A2D\u5B9A db_admin_pw_edit_title=\u8B8A\u66F4\u7CFB\u7D71\u5BC6\u78BC db_admin_pw_newPwd=\u65B0\u5BC6\u78BC db_admin_pw_verifyPwd=\u518D\u4E00\u6B21\u8F38\u5165\u5BC6\u78BC db_admin_pw_noFit=\u5BC6\u78BC\u6B04\u4F4D\u4E0D\u4E00\u81F4\uFF01 report_group=\u7FA4\u7D44\uFF1A report_user=\u4F7F\u7528\u8005\uFF1A report_project=\u5C08\u6848\uFF1A report_all_projects=\u5168\u90E8\u5C08\u6848 report_key=\u91D1\u9470\uFF1A report_code=\u7DE8\u78BC\uFF1A report_context=\u4E0A\u4E0B\u6587\uFF1A report_from=\u5F9E\uFF1A month_1=\u4E00\u6708 month_2=\u4E8C\u6708 month_3=\u4E09\u6708 month_4=\u56DB\u6708 month_5=\u4E94\u6708 month_6=\u516D\u6708 month_7=\u4E03\u6708 month_8=\u516B\u6708 month_9=\u4E5D\u6708 month_10=\u5341\u6708 month_11=\u5341\u4E00\u6708 month_12=\u5341\u4E8C\u6708 report_to=\u5230\uFF1A report_global_precision=Global precision report_solved_activities=\u89E3\u7B54\u6D3B\u52D5 report_user_evolution=User evolution report_group_evolution=Group evolution report_project_evolution=Project evolution report_result_distribution=Result distribution report_no_data=NO DATA report_users=\u4F7F\u7528\u8005: report_sessions=Sessions: report_projects=\u5C08\u6848\uFF1A report_actDone=Activities done: report_actSolved=Activities solved: report_totalTime=\u5168\u90E8\u6642\u9593: report_globalPrec=\u7E3D\u6210\u7E3E report_globalSummary=Global summary report_header_date=\u65E5\u671F report_session_list=Sessions: report_header_user=\u4F7F\u7528\u8005 report_header_project=\u5C08\u6848 report_header_numActs=activities report_header_actsSolved=acts. solved report_header_time=\u6642\u9593 report_header_prec=\u5206\u6578 report_session_detail_show=show session details report_session_detail_title=Activities done in session report_header_activity=\u6D3B\u52D5 report_header_actions=\u52D5\u4F5C report_header_score=corrects report_header_solved=\u78BA\u5B9A Y=Y N=N report_session_detail_hide=hide session details report_header_sessions=sessions report_all_activities=All activities report_activity=\u6D3B\u52D5\uFF1A report_many=several report_n_users=\u4F7F\u7528\u8005 group_admin_title=\u7FA4\u7D44\u7BA1\u7406 group_admin_new_button=\u65B0\u7FA4\u7D44... group_admin_groups=\u7FA4\u7D44 report_actions=\u52D5\u4F5C group_admin_edit_button=\u7DE8\u8F2F\u2026 user_admin_title=\u4F7F\u7528\u8005\u7BA1\u7406 group_admin_delete_button=\u522A\u9664... group_admin_clear_button=\u6E05\u9664\u5831\u544A... group_admin_properties=\u7FA4\u7D44\u5C6C\u6027 group_admin_name=\u540D\u7A31\uFF1A group_admin_id=\u8B58\u5225\u78BC: group_admin_icon=\u5716\u793A\uFF1A error=\u932F\u8AA4 return=\u8FD4\u56DE... group_admin_users=\u4F7F\u7528\u8005 group_admin_no_users=\u9019\u500B\u7FA4\u7D44\u6C92\u6709\u4F7F\u7528\u8005\u3002 group_admin_create_user_button=\u5EFA\u7ACB\u65B0\u4F7F\u7528\u8005... cancel=\u53D6\u6D88 group_admin_invalid_name=\u4E0D\u6B63\u78BA\u7684\u7FA4\u7D44\u540D\u7A31\uFF01 group_admin_invalid_id=\u4E0D\u6B63\u78BA\u7684\u7FA4\u7D44\u8B58\u5225\u78BC\uFF01 group_admin_id_already_exists=There is another group with the same identifier in the database! group_admin_delete_group=\u522A\u9664\u7FA4\u7D44 report_areyousure=\u60A8\u78BA\u5B9A\u55CE\uFF1F YES=\u78BA\u5B9A NOT=Not group_admin_delete_group_explain=This operation will also delete on the database all users of this group. All data of these users will be lost. db_error=Unable to complete the task. group_admin_clear_group=\u6E05\u9664\u7FA4\u7D44\u7684\u5831\u544A\u8CC7\u6599 group_admin_clear_group_explain=This operation will clear all the reports of the activities done by the members of this group between the specified dates. db_clear_reports_date=\u6E05\u9664\u5831\u544A\u8CC7\u6599 user_admin_invalid_name=\u7121\u6548\u7684\u4F7F\u7528\u8005\u540D\u7A31\u3002 user_admin_invalid_id=\u7121\u6548\u7684\u4F7F\u7528\u8005\u8B58\u5225\u78BC user_admin_id_already_exists=There is another user with the same identifier in the database! user_admin_user_deleted=\u4F7F\u7528\u8005\u5DF2\u7D93\u522A\u9664\u3002 user_admin_id=\u8B58\u5225\u78BC\uFF1A user_admin_name=\u540D\u7A31\uFF1A user_admin_icon=\u5716\u793A\uFF1A user_admin_edit_button=\u7DE8\u8F2F\u2026 user_admin_delete_button=\u522A\u9664... user_admin_clear_button=\u6E05\u9664\u5831\u544A... user_admin_delete_user=\u522A\u9664\u4F7F\u7528\u8005 user_admin_delete_user_explain=This operation will delete this user and his reports from the database. user_admin_clear_user=\u6E05\u9664\u4F7F\u7528\u8005\u7684\u5831\u544A user_admin_clear_user_explain=This operation will clear all the reports of the activities done by this user between the specified dates. success=\u64CD\u4F5C\u5B8C\u6210 bad_data=\u58DE\u7684\u8CC7\u6599\uFF01 db_admin_param_lap=Time between connections (seconds): jclic_reports=JClic \u5831\u544A YES_SHORT=Y NOT_SHORT=N user_admin_pw_prompt=\u5BC6\u78BC\uFF1A user_admin_pw_prompt_confirm=\u78BA\u8A8D\u5BC6\u78BC\uFF1A user_admin_err_bad_pw=\u5BC6\u78BC\u6C92\u6709\u5339\u914D\uFF01 ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_cs.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_cs.propertie0000644000175000017500000001371011377161311030747 0ustar login_pwd=Heslo: login_desc=Mus\u00EDte zadat platn\u00E9 heslo pro p\u0159\u00EDstup k datab\u00E1zi zpr\u00E1v. login_title=P\u0159ihl\u00E1\u0161en\u00ED submit=Odeslat... login_incorrect=Chybn\u00E9 heslo main_title=Hlavn\u00ED menu users_admin_title=U\u017Eivatel\u00E9 a administr\u00E1to\u0159i skupin group_report_title=Skupinov\u00E1 sestava user_report_title=U\u017Eivatelsk\u00E1 sestava act_report_title=Sestava aktivit db_admin_title=Administr\u00E1tor datab\u00E1ze db_admin_settings_error=Nemohu nastavit hodnoty pro novou datab\u00E1zi! db_admin_param_agc=Povolit u\u017Eivatel\u016Fm vytv\u00E1\u0159et nov\u00E9 skupiny db_admin_param_auc=Povolit u\u017Eivatel\u016Fm vytv\u00E1\u0159et nov\u00E9 u\u017Eivatele db_admin_param_shgl=Vybrat skupinu ze seznamu db_admin_param_shul=Vybrat u\u017Eivatele ze seznamu db_admin_param_ut=Datab\u00E1ze m\u00E1 tabulky u\u017Eivatel\u016F a skupin db_admin_edit_btn=Upravit nastaven\u00ED... db_admin_pw_edit_btn=Nastavit heslo... title=Titulek db_admin_edit_title=Upravit nastaven\u00ED datab\u00E1ze db_admin_pw_edit_title=Zm\u011Bnit heslo syst\u00E9mu db_admin_pw_newPwd=Nov\u00E9 heslo db_admin_pw_verifyPwd=Znovu napi\u0161 heslo db_admin_pw_noFit=Hesla se neshoduj\u00ED! report_group=Skupina: report_user=U\u017Eivatel: report_project=Projekt: report_all_projects=V\u0161echny projekty report_key=Kl\u00E1vesa: report_code=K\u00F3d: report_context=Kontext: report_from=Od: month_1=leden month_2=\u00FAnor month_3=b\u0159ezen month_4=duben month_5=kv\u011Bten month_6=\u010Derven month_7=\u010Dervenec month_8=srpen month_9=z\u00E1\u0159\u00ED month_10=\u0159\u00EDjen month_11=listopad month_12=prosinec report_to=Komu: report_global_precision=Glob\u00E1ln\u00ED p\u0159esnost report_solved_activities=Vy\u0159e\u0161en\u00E9 aktivity report_user_evolution=V\u00FDvoj u\u017Eivatele report_group_evolution=V\u00FDvoj skupiny report_project_evolution=V\u00FDvoj projektu report_result_distribution=Rozd\u011Blen\u00ED v\u00FDsledk\u016F report_no_data=NO DATA report_users=U\u017Eivatel\u00E9: report_sessions=Relace: report_projects=Projekty: report_actDone=Vyzkou\u0161en\u00E9 aktivity: report_actSolved=Vy\u0159e\u0161en\u00E9 aktivity: report_totalTime=Celkov\u00FD \u010Das: report_globalPrec=Celkov\u00E9 sk\u00F3re: report_globalSummary=Souhrnn\u00FD p\u0159ehled report_header_date=datum report_session_list=Relace: report_header_user=u\u017Eivatel report_header_project=projekt report_header_numActs=aktivity report_header_actsSolved=akty. vy\u0159e\u0161en report_header_time=\u010Das report_header_prec=Sk\u00F3re report_session_detail_show=zobrazit podrobnosti relace (sessions) report_session_detail_title=Aktivity vyzkou\u0161en\u00E9 v relaci report_header_activity=aktivita report_header_actions=akce report_header_score=spr\u00E1vn\u011B report_header_solved=ok Y=Y N=N report_session_detail_hide=skr\u00FDt detaily relace report_header_sessions=relace report_all_activities=V\u0161echny aktivity report_activity=Aktivita: report_many=n\u011Bkolik report_n_users=u\u017Eivatel\u00E9 group_admin_title=Spr\u00E1va skupin group_admin_new_button=Nov\u00E1 skupina... group_admin_groups=Skupiny report_actions=Akce group_admin_edit_button=Upravit... user_admin_title=Spr\u00E1vce group_admin_delete_button=Smazat... group_admin_clear_button=Vymazat zpr\u00E1vy ... group_admin_properties=Vlastnosti skupiny group_admin_name=Jm\u00E9no: group_admin_id=Identifik\u00E1tor: group_admin_icon=Ikona: error=CHYBA return=zp\u011Bt... group_admin_users=U\u017Eivatel\u00E9 group_admin_no_users=Tato skupina nem\u00E1 \u017E\u00E1dn\u00E9 u\u017Eivatele. group_admin_create_user_button=Vytvo\u0159it nov\u00E9ho u\u017Eivatele... cancel=Zru\u0161it group_admin_invalid_name=Chybn\u00FD n\u00E1zev skupiny! group_admin_invalid_id=Chybn\u00FD identifik\u00E1tor skupiny! group_admin_id_already_exists=Je tam dal\u0161\u00ED skupina se stejn\u00FDm identifik\u00E1torem v datab\u00E1zi! group_admin_delete_group=Odstranit skupinu report_areyousure=Jste si jist\u00FD? YES=Ano NOT=Ne group_admin_delete_group_explain=Tato operace tak\u00E9 odstran\u00ED z datab\u00E1ze v\u0161echny u\u017Eivatele t\u00E9to skupiny. V\u0161echna data t\u011Bchto u\u017Eivatel\u016F budou smaz\u00E1na. db_error=Nelze dokon\u010Dit \u00FAkol. group_admin_clear_group=Vy\u010Distit hl\u00E1\u0161en\u00E1 data o skupin\u011B group_admin_clear_group_explain=Tato operace sma\u017Ee v\u0161echna hl\u00E1\u0161en\u00ED \u010Dinnost\u00ED proveden\u00FDch \u010Dleny t\u00E9to skupiny mezi zadan\u00FDmi daty. db_clear_reports_date=Vy\u010Distit hl\u00E1\u0161en\u00E1 data user_admin_invalid_name=Neplatn\u00E9 u\u017Eivatelsk\u00E9 jm\u00E9no. user_admin_invalid_id=Neplatn\u00FD identifik\u00E1tor u\u017Eivatele user_admin_id_already_exists=Je zde jin\u00FD u\u017Eivatel se stejn\u00FDm identifik\u00E1torem v datab\u00E1zi! user_admin_user_deleted=U\u017Eivatel byl \u00FAsp\u011B\u0161n\u011B smaz\u00E1n z datab\u00E1ze. user_admin_id=Identifik\u00E1tor: user_admin_name=N\u00E1zev: user_admin_icon=Ikona: user_admin_edit_button=Upravit... user_admin_delete_button=Smazat... user_admin_clear_button=Vymazat zpr\u00E1vy ... user_admin_delete_user=Odstranit u\u017Eivatele user_admin_delete_user_explain=Tato operace vyma\u017Ee tohoto u\u017Eivatele a jeho hl\u00E1\u0161en\u00ED z datab\u00E1ze. user_admin_clear_user=Vy\u010Distit datov\u00E1 hl\u00E1\u0161en\u00ED u\u017Eivatele user_admin_clear_user_explain=Tato operace sma\u017Ee v\u0161echna hl\u00E1\u0161en\u00ED \u010Dinnost\u00ED tohoto u\u017Eivatele mezi stanoven\u00FDmi term\u00EDny. success=Operace prob\u011Bhla \u00FAsp\u011B\u0161n\u011B bad_data=\u0160patn\u00E1 data! db_admin_param_lap=\u010Cas mezi p\u0159ipojen\u00EDm (sekundy): jclic_reports=JClic hl\u00E1\u0161en\u00ED YES_SHORT=A NOT_SHORT=N user_admin_pw_prompt=Heslo: user_admin_pw_prompt_confirm=Potvrzen\u00ED hesla: user_admin_err_bad_pw=Hesla se neshoduj\u00ED\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_gl.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_gl.propertie0000644000175000017500000001312711377161311030746 0ustar login_pwd=Contrasinal: login_desc=\u00C9 imprescind\u00EDbel escribir un sinal correcto para acceder \u00E1 base de datos de informes. login_title=Conexi\u00F3n \u00E1 base de datos submit=Enviar datos... login_incorrect=Sinal incorrecto! main_title=Men\u00FA principal users_admin_title=Administraci\u00F3n de grupos e usuarios group_report_title=Informes de grupo user_report_title=Informes de usuario/a act_report_title=Informes de actividade db_admin_title=Administraci\u00F3n da base de datos db_admin_settings_error=Impos\u00EDbel mudar os valores na base de datos! db_admin_param_agc=Permitir aos usuarios crear novos grupos db_admin_param_auc=Permitir aos usuarios crear novos usuarios db_admin_param_shgl=Seleccionar grupo nunha lista db_admin_param_shul=Seleccionar nome de usuario/a nunha lista db_admin_param_ut=A base de datos cont\u00E9n t\u00E1boas de usuarios e grupos db_admin_edit_btn=Editar propiedades... db_admin_pw_edit_btn=Establecer o sinal... title=T\u00EDtulo db_admin_edit_title=Editar as propiedades da base de datos db_admin_pw_edit_title=Mudar o sinal do sistema db_admin_pw_newPwd=Novo sinal db_admin_pw_verifyPwd=Escribir de novo o sinal db_admin_pw_noFit=Os dous textos non coinciden! report_group=Grupo: report_user=Usuario: report_project=Proxecto: report_all_projects=Todos os proxectos report_key=Clave: report_code=C\u00F3digo: report_context=Contexto: report_from=Desde: month_1=xaneiro month_2=febreiro month_3=marzo month_4=abril month_5=maio month_6=xu\u00F1o month_7=xullo month_8=agosto month_9=setembro month_10=outubro month_11=novembro month_12=decembro report_to=Ata: report_global_precision=Precisi\u00F3n global report_solved_activities=Actividades resoltas: report_user_evolution=Evoluci\u00F3n do usuario report_group_evolution=Evoluci\u00F3n do grupo report_project_evolution=Evoluci\u00F3n do proxecto report_result_distribution=Distribuci\u00F3n de resultados report_no_data=SEN DATOS report_users=Usuarios: report_sessions=Sesi\u00F3ns: report_projects=Proxectos: report_actDone=Actividades feitas: report_actSolved=Actividades resoltas: report_totalTime=Tempo total: report_globalPrec=Precisi\u00F3n global: report_globalSummary=Resume global report_header_date=data report_session_list=Sesi\u00F3ns: report_header_user=usuario report_header_project=proxecto report_header_numActs=actividades report_header_actsSolved=acts. resoltas report_header_time=tempo report_header_prec=precisi\u00F3n report_session_detail_show=mostrar detalles da sesi\u00F3n report_session_detail_title=Actividades feitas na sesi\u00F3n report_header_activity=actividade report_header_actions=acci\u00F3ns report_header_score=acertos report_header_solved=ben Y=S N=N report_session_detail_hide=ocultar detalles da sesi\u00F3n report_header_sessions=sesi\u00F3ns report_all_activities=Todas as actividades report_activity=Actividade: report_many=diversos report_n_users=usuarios group_admin_title=Administraci\u00F3n de grupos group_admin_new_button=Novo grupo... group_admin_groups=Grupos report_actions=Acci\u00F3ns group_admin_edit_button=Modificar... user_admin_title=Administraci\u00F3n de usuarios group_admin_delete_button=Eliminar... group_admin_clear_button=Eliminar informes... group_admin_properties=Propiedades do grupo group_admin_name=Nome: group_admin_id=Identificador: group_admin_icon=Icona: error=ERRO return=voltar... group_admin_users=Usuarios group_admin_no_users=Este grupo non ten usuarios. group_admin_create_user_button=Crear un novo usuario... cancel=Cancelar group_admin_invalid_name=Nome de grupo incorrecto! group_admin_invalid_id=Identificador de grupo incorrecto! group_admin_id_already_exists=Existe outro grupo co mesmo identificador na base de datos! group_admin_delete_group=Eliminar o grupo report_areyousure=Tes a seguridade de realizar esta operaci\u00F3n? YES=Si NOT=Non group_admin_delete_group_explain=Esta operaci\u00F3n tam\u00E9n eliminar\u00E1 da base de datos todos os usuarios deste grupo. Perderanse todos os seus datos. db_error=Impos\u00EDbel completar a operaci\u00F3n. group_admin_clear_group=Eliminar os informes do grupo group_admin_clear_group_explain=Esta operaci\u00F3n eliminar\u00E1 os informes de actividade de todos os membros deste grupo entre as datas especificadas. db_clear_reports_date=Eliminar os informes user_admin_invalid_name=O nome de usuario/a \u00E9 incorrecto. user_admin_invalid_id=O identificador de usuario/a \u00E9 incorrecto! user_admin_id_already_exists=Hai outro/a usuario/a co mesmo identificador na base de datos! Os nomes poden repetirse (en grupos distintos) pero os identificadores deben ser \u00FAnicos. user_admin_user_deleted=O/a usuario/a foi eliminado/a axeitadamente da base de datos. user_admin_id=Identificador: user_admin_name=Nome: user_admin_icon=Icona: user_admin_edit_button=Modificar... user_admin_delete_button=Eliminar... user_admin_clear_button=Eliminar informes... user_admin_delete_user=Eliminar o usuario/a user_admin_delete_user_explain=Esta operaci\u00F3n eliminar\u00E1 o usuario/a e os seus informes da base de datos user_admin_clear_user=Eliminar os informes do usuario/a user_admin_clear_user_explain=Esta operaci\u00F3n eliminar\u00E1 os informes de actividades realizadas por este/a usuario/a entre as datas especificadas. success=Operaci\u00F3n realizada con \u00E9xito bad_data=Datos incorrectos! db_admin_param_lap=Tempo en segundos entre conexi\u00F3ns: jclic_reports=Informes JClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Sinal: user_admin_pw_prompt_confirm=Confirmar sinal: user_admin_err_bad_pw=Os sinais non coinciden\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_de.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_de.propertie0000644000175000017500000001267011377161311030736 0ustar login_pwd=Passwort: login_desc=Sie ben\u00F6tigen ein g\u00FCltiges Passwort, um auf die Datenbank zugreifen zu k\u00F6nnen. login_title=Login submit=Absenden... login_incorrect=Falsches Passwort! main_title=Hauptmen\u00FC users_admin_title=User- und Gruppenverwaltung group_report_title=Berichte f\u00FCr Gruppe user_report_title=Userberichte act_report_title=\u00DCbungsberichte db_admin_title=Datenbankverwaltung db_admin_settings_error=Neue Werte f\u00FCr Datenbank konnten nicht \u00FCbernommen werden! db_admin_param_agc=User d\u00FCrfen neue Gruppen anlegen db_admin_param_auc=User d\u00FCrfen neue User anlegen db_admin_param_shgl=Gruppe aus Liste ausw\u00E4hlen db_admin_param_shul=Username aus Liste ausw\u00E4hlen db_admin_param_ut=Datenbank beinhaltet Tabellen der User und Usergruppen db_admin_edit_btn=Einstellungen bearbeiten... db_admin_pw_edit_btn=Passwort festlegen... title=Titel db_admin_edit_title=Einstellungen f\u00FCr Datenbank bearbeiten db_admin_pw_edit_title=Passwort f\u00FCr System \u00E4ndern db_admin_pw_newPwd=Neues Passwort db_admin_pw_verifyPwd=Passwort wiederholen db_admin_pw_noFit=Falsches Passwort! report_group=Gruppe: report_user=User: report_project=Projekt: report_all_projects=Alle Projekte report_key=Schl\u00FCssel: report_code=Code: report_context=Context: report_from=Von: month_1=J\u00E4nner month_2=Feber month_3=M\u00E4rz month_4=April month_5=Mai month_6=Juni month_7=Juli month_8=August month_9=September month_10=Oktober month_11=November month_12=Detember report_to=Bis: report_global_precision=Gesamtpunkte report_solved_activities=Richtig gel\u00F6ste \u00DCbungen report_user_evolution=Userfortschritt report_group_evolution=Fortschritt der Gruppe report_project_evolution=Projektfortschritt report_result_distribution=Ergebnisverteilung report_no_data=KEINE DATEN report_users=User: report_sessions=Sitzungen: report_projects=Projekte: report_actDone=Abgeschlossene \u00DCbungen: report_actSolved=Richtig gel\u00F6ste \u00DCbungen: report_totalTime=Gesamtzeit: report_globalPrec=Gesamtpunktestand: report_globalSummary=Gesamtergebnis report_header_date=Datum report_session_list=Sitzungen: report_header_user=User report_header_project=Projekt report_header_numActs=\u00DCbungen report_header_actsSolved=Richtig gel\u00F6ste \u00DCbungen report_header_time=Zeit report_header_prec=Punktestand report_session_detail_show=Details der Sitzung anzeigen report_session_detail_title=In der Sitzung durchgfef\u00FChrte \u00DCbungen report_header_activity=\u00DCbung report_header_actions=Aktionen report_header_score=Richtige report_header_solved=OK Y=J N=N report_session_detail_hide=Details der Sitzung nicht anzeigen report_header_sessions=Sitzungen report_all_activities=Alle \u00DCbungen report_activity=\u00DCbung: report_many=mehrere report_n_users=User group_admin_title=Gruppenverwaltung group_admin_new_button=Neue Gruppe... group_admin_groups=Gruppen report_actions=Aktionen group_admin_edit_button=Bearbeiten... user_admin_title=Userverwaltung group_admin_delete_button=L\u00F6schen... group_admin_clear_button=Berichte l\u00F6schen... group_admin_properties=Gruppeneigenschaften group_admin_name=Name: group_admin_id=Username: group_admin_icon=Symbol: error=ERROR return=zur\u00FCck... group_admin_users=User group_admin_no_users=Keine Benutzer in dieser Gruppe vorhanden. group_admin_create_user_button=Neuen User anlegen... cancel=L\u00F6schen group_admin_invalid_name=Falscher Gruppenname! group_admin_invalid_id=Falscher Gruppenname! group_admin_id_already_exists=Es wurde bereits eine andere Gruppe mit gleichem Namen in die Datenbank eingetragen! group_admin_delete_group=Gruppe l\u00F6schen report_areyousure=Sind Sie sicher, dass Sie diese Aktion durchf\u00FChren wollen? YES=Ja NOT=Nein group_admin_delete_group_explain=Dieser Vorgang l\u00F6scht alle User der ausgew\u00E4hlten Gruppe aus der Datenbank. Alle Daten der ausgew\u00E4hlten User werden gel\u00F6scht. db_error=Vorgang konnte nicht durchgef\u00FChrt werden. group_admin_clear_group=Daten der Gruppe l\u00F6schen group_admin_clear_group_explain=Dieser Vorgang l\u00F6scht alle \u00DCbungsberichte f\u00FCr die Mitglieder der ausgew\u00E4hlten Gruppe im angegebenen Zeitraum aus der Datenbank. db_clear_reports_date=Daten l\u00F6schen user_admin_invalid_name=Ung\u00FCltiger Username. user_admin_invalid_id=Ung\u00FCltiger Username user_admin_id_already_exists=Username wird bereits von einem anderen User verwendet! user_admin_user_deleted=User erfolgreich aus der Datenbank gel\u00F6scht. user_admin_id=Username: user_admin_name=Name: user_admin_icon=Symbol: user_admin_edit_button=Bearbeiten... user_admin_delete_button=L\u00F6schen... user_admin_clear_button=Berichte l\u00F6schen... user_admin_delete_user=User l\u00F6schen user_admin_delete_user_explain=Dieser Vorgang l\u00F6scht den ausgew\u00E4hlten User und alle dazugeh\u00F6rigen Berichte aus der Datenbank. user_admin_clear_user=Userdaten l\u00F6schen user_admin_clear_user_explain=Dieser Vorgang l\u00F6scht alle Ergebnisse des ausgew\u00E4hlten Users innerhalb des angegebenen Zeitraums aus der Datenbank. success=Vorgang erfolgreich abgeschlossen bad_data=Falsche Eingabe! db_admin_param_lap=Zeitabstand zwischen Verbindungen (in Sekunden): jclic_reports=JClic Reports YES_SHORT=J NOT_SHORT=N user_admin_pw_prompt=Passwort: user_admin_pw_prompt_confirm=Passwort best\u00E4tigen: user_admin_err_bad_pw=Falsches Passwort\\!\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_nl.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_nl.propertie0000644000175000017500000001231211377161311030750 0ustar login_pwd=Wachtwoord: login_desc=Je dient een geldig wachtwoord in te voeren om toegang te krijgen tot de rapporten database. login_title=Aanmelden submit=Verzenden... login_incorrect=Verkeer paswoord! main_title=Hoofdmenu users_admin_title=Gebruikers en groepen admin group_report_title=Groep rapporten user_report_title=Gebruikers rapport act_report_title=Activiteiten rapporten db_admin_title=Database admin db_admin_settings_error=Nieuwe database waarden kunnen niet ingevoerd worden! db_admin_param_agc=Laat gebruikers nieuwe groepen maken db_admin_param_auc=Laat gebruikers nieuwe gebruikers maken db_admin_param_shgl=Kies groep in een lijst db_admin_param_shul=Kies gebruikersnaam in een lijst db_admin_param_ut=Database heeft tabellen met gebruikers en groepen db_admin_edit_btn=Bewerk instellingen... db_admin_pw_edit_btn=Wachtwoord instellen... title=Titel db_admin_edit_title=Database instellingen bewerken db_admin_pw_edit_title=Verander systeem wachtwoord db_admin_pw_newPwd=Nieuw wachtwoord db_admin_pw_verifyPwd=Wachtwoord opnieuw invoeren db_admin_pw_noFit=Wachtwoorden komen niet overeen! report_group=Groep: report_user=Gebruiker: report_project=Project: report_all_projects=Alle projecten report_key=Sleutel: report_code=Code: report_context=Inhoud: report_from=Van: month_1=januari month_2=februari month_3=maart month_4=april month_5=mei month_6=juni month_7=juli month_8=augustus month_9=september month_10=oktober month_11=november month_12=december report_to=Tot: report_global_precision=Totale nauwkeurigheid report_solved_activities=Opgeloste activiteiten report_user_evolution=Vooruitgang gebruiker report_group_evolution=Vooruitgang groep report_project_evolution=Vooruitgang project report_result_distribution=Resultaat verdeling report_no_data=GEEN GEGEVENS report_users=Gebruikers: report_sessions=Reeksen: report_projects=Projecten: report_actDone=Activiteiten klaar: report_actSolved=Activiteiten opgelost: report_totalTime=Totale tijd: report_globalPrec=Puntentotaal: report_globalSummary=Samenvatting overzicht report_header_date=datum report_session_list=Reeksen: report_header_user=gebruiker report_header_project=project report_header_numActs=activiteiten report_header_actsSolved=opgeloste activiteiten report_header_time=tijd report_header_prec=punten report_session_detail_show=toon details reeks report_session_detail_title=activiteiten gedaan in reeks report_header_activity=activiteit report_header_actions=acties report_header_score=juist report_header_solved=ok Y=J N=N report_session_detail_hide=verberg details report_header_sessions=reeksen report_all_activities=Alle activiteiten report_activity=Activiteit: report_many=verschillende report_n_users=gebruikers group_admin_title=Groepen administratie group_admin_new_button=Nieuwe groep... group_admin_groups=Groepen report_actions=Acties group_admin_edit_button=Bewerken... user_admin_title=Gebruikers administratie group_admin_delete_button=Verwijder... group_admin_clear_button=Rapporten wissen... group_admin_properties=Groepseigenschappen group_admin_name=Naam: group_admin_id=Identificatie: group_admin_icon=Pictogram: error=FOUT return=verder... group_admin_users=Gebruikers group_admin_no_users=Deze groep heeft geen gebruikers group_admin_create_user_button=Maak nieuwe gebruiker... cancel=Annuleren group_admin_invalid_name=Verkeerde groepsnaam! group_admin_invalid_id=Verkeerde groepsidentificatie! group_admin_id_already_exists=Er is een andere groep met dezelfde identificatie in de database! group_admin_delete_group=Groep verwijderen report_areyousure=Weet u het zeker? YES=Ja NOT=Nee group_admin_delete_group_explain=Deze bewerking zal ook alle gebruikers van deze groep verwijderen. Alle gegevens zullen verloren gaan. db_error=Kan de opdracht niet afwerken. group_admin_clear_group=Rapport gegevens van de groep leeg maken group_admin_clear_group_explain=Deze operatie zal alle rapporten van de activiteiten van leden tussen de twee opgegeven datums van deze groep verwijderen db_clear_reports_date=Rapport gegevens verwijderen user_admin_invalid_name=Ongeldige gebruikers naam. user_admin_invalid_id=Ongeldige gebruiker identificatie user_admin_id_already_exists=Er is een andere gebruiker met dezelfde identificatie in de database! user_admin_user_deleted=De gebruiker is verwijderd uit de database. user_admin_id=Identificatie: user_admin_name=Naam: user_admin_icon=Pictogram: user_admin_edit_button=Bewerken... user_admin_delete_button=Verwijder... user_admin_clear_button=Rapporten wissen... user_admin_delete_user=Gebruiker verwijderen user_admin_delete_user_explain=Deze bewerking zal de gebruiker en zijn rapporten verwijderen uit deze database. user_admin_clear_user=Verwijder rapport gegevens van gebruiker user_admin_clear_user_explain=Deze bewerking zal alle rapporten van de activiteiten van deze gebruiker tussen de opgegeven datums verwijderen. success=Geslaagde bewerking bad_data=Verkeerde gegevens! db_admin_param_lap=Tijd tussen verbindingen (in seconden): jclic_reports=JClic rapporten YES_SHORT=J NOT_SHORT=N user_admin_pw_prompt=Wachtwoord: user_admin_pw_prompt_confirm=Bevestig wachtwoord: user_admin_err_bad_pw=Wachtwoorden komen niet overeen\\! ././@LongLink0000000000000000000000000000014600000000000011566 Lustar rootrootjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt.propertiesjclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/messages/reportMessages_pt.propertie0000644000175000017500000001316211377161311030766 0ustar login_pwd=Palavra-chave: login_desc=\u00C9 necess\u00E1rio fornecer uma palavra-chave para ter acesso \u00E0 base de dados de relat\u00F3rios login_title=Utilizador submit=Enviar... login_incorrect=Palavra-chave incorreta main_title=Menu principal users_admin_title=Utilizadores e grupos admin group_report_title=Relat\u00F3rios do grupo user_report_title=Relat\u00F3rios do utilizador act_report_title=Relat\u00F3rios de actividades db_admin_title=Base de dados admin db_admin_settings_error=N\u00E3o foi poss\u00EDvel definir os valores da nova base de dados! db_admin_param_agc=Permitir que os utilizadores criem novos grupos db_admin_param_auc=Permitir que os utilizadores criem novos utilizadores db_admin_param_shgl=Selecione o grupo numa lista db_admin_param_shul=Escolha o nome de utilizador numa lista db_admin_param_ut=Base de dados possui tabelas de utilizadores e grupos db_admin_edit_btn=Edtiar configura\u00E7\u00F5es... db_admin_pw_edit_btn=Definir palavra-chave... title=T\u00EDtulo db_admin_edit_title=Editar configura\u00E7\u00F5es da base de dados db_admin_pw_edit_title=Alterar palavra-chave do sistema db_admin_pw_newPwd=Nova palavra-chave db_admin_pw_verifyPwd=Confirme a palavra-chave db_admin_pw_noFit=As palavras-chave s\u00E3o diferentes! report_group=Grupo: report_user=Utilizador: report_project=Projecto: report_all_projects=Todos os projectos report_key=Chave: report_code=C\u00F3digo: report_context=Contexto: report_from=De: month_1=Janeiro month_2=Fevereiro month_3=Mar\u00E7o month_4=Abril month_5=Maio month_6=Junho month_7=Julho month_8=Agosto month_9=Setembro month_10=Outubro month_11=Novembro month_12=Dezembro report_to=At\u00E9: report_global_precision=Precis\u00E3o global report_solved_activities=Actividades resolvidas report_user_evolution=Progresso do utilizador report_group_evolution=Progresso do grupo report_project_evolution=Progresso do projeto report_result_distribution=Distribui\u00E7\u00E3o do resultado report_no_data=SEM DADOS report_users=Utilizadores: report_sessions=Sess\u00F5es: report_projects=Projectos: report_actDone=Actividades realizadas: report_actSolved=Actividades resolvidas: report_totalTime=Dura\u00E7\u00E3o total: report_globalPrec=Pontua\u00E7\u00E3o global: report_globalSummary=Resumo global report_header_date=data report_session_list=Sess\u00F5es: report_header_user=Utilizador report_header_project=projecto report_header_numActs=actividades report_header_actsSolved=resolvidas report_header_time=tempo report_header_prec=acertos report_session_detail_show=mostrar pormenores da sess\u00E3o report_session_detail_title=Actividades conclu\u00EDdas na sess\u00E3o report_header_activity=actividade report_header_actions=ac\u00E7\u00F5es report_header_score=correctas report_header_solved=ok Y=S N=N report_session_detail_hide=Ocultar pomenores da sess\u00E3o report_header_sessions=sess\u00F5es report_all_activities=Todas as actividades report_activity=Actividade: report_many=v\u00E1rios report_n_users=utilizadores group_admin_title=Administra\u00E7\u00E3o de grupos group_admin_new_button=Novo grupo... group_admin_groups=Grupos report_actions=Ac\u00E7\u00F5es group_admin_edit_button=Editar... user_admin_title=Utilizador admin group_admin_delete_button=Eliminar... group_admin_clear_button=Limpar relat\u00F3rios... group_admin_properties=Propriedades de grupo group_admin_name=Nome: group_admin_id=Identificador: group_admin_icon=\u00CDcone: error=ERRO return=voltar... group_admin_users=Utilizadores group_admin_no_users=Este grupo n\u00E3o possui utilizadores group_admin_create_user_button=Criar um novo utilizador... cancel=Cancelar group_admin_invalid_name=Nome de grupo incorrecto! group_admin_invalid_id=Identificador de grupo incorrecto! group_admin_id_already_exists=H\u00E1 outro grupo com o mesmo identificador na base de dados! group_admin_delete_group=Eliminar grupo report_areyousure=Tem a certeza? YES=Sim NOT=N\u00E3o group_admin_delete_group_explain=Esta opera\u00E7\u00E3o tamb\u00E9m excluir\u00E1 da base de dados todos os utilizadores do grupo. Todos os dados desses utilizadores ser\u00E3o perdidos. db_error=Imposs\u00EDvel concluir a tarefa. group_admin_clear_group=Limpar dados dos relat\u00F3rios do grupo group_admin_clear_group_explain=Esta opera\u00E7\u00E3o elimina todos os relat\u00F3rios de actividades realizadas pelos membros do grupo entre as datas especificadas. db_clear_reports_date=Limpar dados de relat\u00F3rios user_admin_invalid_name=Nome de utilizador inv\u00E1lido. user_admin_invalid_id=Identificador de utilizador inv\u00E1lido user_admin_id_already_exists=H\u00E1 outro utilizador com o mesmo identificador na base de dados! user_admin_user_deleted=O utilizador foi exclu\u00EDdo com sucesso da base de dados. user_admin_id=Identificador: user_admin_name=Nome: user_admin_icon=\u00CDcone: user_admin_edit_button=Editar... user_admin_delete_button=Eliminar... user_admin_clear_button=Limpar relat\u00F3rios... user_admin_delete_user=Eliminar utilizador user_admin_delete_user_explain=Esta opera\u00E7\u00E3o elimina o utilizador e respectivos relat\u00F3rios na base de dados. user_admin_clear_user=Limpar os dados de relat\u00F3rios do utilizador user_admin_clear_user_explain=Esta opera\u00E7\u00E3o limpa todos os relat\u00F3rios das actividades success=Opera\u00E7\u00E3o bem sucedida! bad_data=Dados incorrectos! db_admin_param_lap=Tempo entre conex\u00F5es (segundos): jclic_reports=Relat\u00F3rios jClic YES_SHORT=S NOT_SHORT=N user_admin_pw_prompt=Palavra-chave: user_admin_pw_prompt_confirm=Confirme palavra-chave: user_admin_err_bad_pw=Palavras-chave diferentes\\! jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/html/0000755000175000017500000000000011377161311022457 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/html/menys.gif0000644000175000017500000000007111377161311024277 0ustar GIF89a !, ^Lye|;jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/html/icon_reports.gif0000644000175000017500000000246711377161311025665 0ustar GIF89a<<Tkhƨȳs(ր2vYdӹ㼠`z3=%ۨzKғ~rƧx[Ȫ}β|!áooγĥx27V` ݳ٤߳R}޵t.{͇ϺvC mhk,]˯Ԙֿğްό^c^ ySt;5ȪεXbۥן!{,<<{s4eXXq00SbeJ>\mD2o Q40>Va "[B? DG%@KF9pCȌ?F(ϼ>&(Ddt܊z@G JR]0JЫG80Ç5YA>0ₑB E6"r50!Tt-}Hp4!*M ED.]) dxmɃ&ipn 5QUT[,ҵl&#A\8cWֶ,{Ø6Րo Z\pD>`tɈװ_?y!dĆ:ma= N|8<#|Ƌ"#Nh~7]|$"Dp0B B߿@f:p "DHgO0@}xI@& "b  >DNjP\0ĄWLvi1"X !F%Zbh=Ul A频1$t|qBQ%D!t6Ve&N[ [:F +g)0Ty0(Y0Afog -h-\@V2%g8~Ip¨VX)hd:Vkebױ.6[RmRvI-ήb*eծqRJ. jR^܎k>B*޹.&{g ,nn q#2L1;ok0aHnm 2"W\ _?rĭn>w'$|-$tҢ6,FZIS$1,^Ӷd{`0 n   H 3Pqw)n'8$;jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/html/basic.css0000644000175000017500000000361211377161311024254 0ustar body { background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; } tr, td { font-size: 10pt; } a:link { color: #006699; text-decoration: none; } a:visited { color: #006699; text-decoration: none; } a:hover { color: #dd6900; text-decoration: underline } a:active { color: #ff0000; } h1 { font-weight: bold; font-size: 14pt; color: #235A5A; background-image: url(icon_reports.gif); background-repeat: no-repeat; background-position: left bottom; padding-left: 70px; vertical-align: bottom; padding-top: 15px; padding-bottom: 4px; display: block; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; border-bottom-width: 2px; border-bottom-style: solid; } h2 { font-weight: bold; font-size: 10pt; color: purple } .menu { font-size: 11pt; line-height: 30px; font-weight: bold; } .cap { font-size: 14pt; color: #235A5A; background-color: #EFF7DD; font-weight: bold; font-family: Arial, Helvetica, sans-serif; } .topMenu { font-size: 8pt; font-weight: bold; padding-bottom: 3px; padding-top: 3px; margin-top: 0px; margin-bottom: 30px; } .info { background-color: #FFFFCC; border: 1px solid; padding: 5px; margin-top: 10px; margin-bottom: 10px; float: left; } .tblA { border-collapse: separate; border-spacing: 1px 1px 1px 1px; } .tblA td { font-size: 8pt; background-color:#eeeeee; padding: 3px; } .tblA th { font-size: 8pt; background-color:#add8e6; padding: 3px; } #t2x td{ background-color: #f0f8ff } #t2x th{ background-color: #a6caf0; } #t2x #green{ background-color: #90ee90; text-align:center; } #t2x #red{ background-color: #ff7f50; text-align:center; } .inputForm { text-align: right; float: left; vertical-align: top; margin-right: 10px; } #compact p { margin: 2px 0px; } .inputForm p{ margin: 5px 0px; vertical-align: middle; } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/html/mes.gif0000644000175000017500000000007111377161311023730 0ustar GIF89a !,  "Ks,S;jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/resources/html/basic_print.css0000644000175000017500000000331711377161311025472 0ustar body { background-color: #FFFFFF; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10pt; } tr, td { font-size: 10pt; } a:link { color: black; text-decoration: none; } a:active { color: black; text-decoration: none; } a:visited { color: black; text-decoration: none; } h1 { font-weight: bold; font-size: 14pt; color: #235A5A; background-image: url(icon_reports.gif); background-repeat: no-repeat; background-position: left bottom; padding-left: 70px; vertical-align: bottom; padding-top: 15px; padding-bottom: 4px; display: block; font-family: Arial, Helvetica, sans-serif; margin-bottom: 0px; border-bottom-width: 2px; border-bottom-style: solid; } h2 { font-weight: bold; font-size: 10pt; } .menu { font-size: 11pt; line-height: 30px; font-weight: bold; } .cap { font-size: 14pt; color: #235A5A; background-color: #EFF7DD; font-weight: bold; font-family: Arial, Helvetica, sans-serif; } .topMenu { display: none; } .info { background-color: #FFFFCC; border: 1px solid; padding: 5px; margin-top: 10px; margin-bottom: 10px; float: left; } .tblA { border-collapse: collapse; } .tblA td { border: 1px solid; font-size: 8pt; padding: 3px; } .tblA th { border: 1px solid; font-size: 8pt; padding: 3px; } #t2x td{ background-color: #f0f8ff } #t2x th{ background-color: #a6caf0; } #t2x #green{ background-color: #90ee90; text-align:center; } #t2x #red{ background-color: #ff7f50; text-align:center; } .inputForm { text-align: right; float: left; vertical-align: top; margin-right: 10px; margin-bottom: 10px; } #compact p { margin: 2px 0px; } .inputForm p{ margin: 5px 0px; vertical-align: middle; } #noPrint{ display: none; }jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/servlet/0000755000175000017500000000000011377161311021165 5ustar jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/servlet/ResourceRP.java0000644000175000017500000000611211377161311024061 0ustar /* * File : ResourceRP.java * Created : 23-jan-2003 10:42 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.servlet; import java.util.HashMap; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ResourceRP extends RequestProcessor{ protected String objectName; protected byte[] objectData; public static final String ID="id", LAST_MODIFIED="Last-Modified"; public static final String RESOURCE_BASE="html/"; protected static HashMap objects=new HashMap(); protected static String dateStr=httpDate(new java.util.Date()); /** Creates a new instance of ResourceRP */ public ResourceRP() { super(); } public boolean noCache(){ return false; } public boolean init() throws Exception{ objectName=getParam(ID); if(objectName!=null){ objectData=(byte[])objects.get(objectName); if(objectData==null){ try{ StringBuffer sb=new StringBuffer(RESOURCE_BASE); sb.append(objectName); objectData=edu.xtec.util.ResourceManager.getResourceBytes(sb.substring(0)); objects.put(objectName, objectData); } catch(Exception ex){ errCode=HTTP_NOT_FOUND; errMsg=objectName+" not found!"; } } } else{ errCode=HTTP_BAD_REQUEST; errMsg="Unespecified object id!"; } return true; }; public void header(java.util.Vector v){ super.header(v); if(objectData!=null){ String ct=null; if(objectName.endsWith(".gif")) ct="image/gif"; else if(objectName.endsWith(".jpg")) ct="text/jpg"; else if(objectName.endsWith(".css")) ct="text/css"; if(ct!=null){ v.add(new String[]{CONTENT_TYPE, ct}); } v.add(new String[]{CONTENT_LENGTH, Integer.toString(objectData.length)}); v.add(new String[]{EXTRA, LAST_MODIFIED, dateStr}); } } public boolean usesWriter(){ return false; } public void process(java.io.OutputStream out) throws Exception { if(objectData!=null) out.write(objectData, 0, objectData.length); } } jclic-0.2.1.0.orig/src/report/reportServlets/edu/xtec/servlet/RequestProcessor.java0000644000175000017500000002644311377161311025371 0ustar /* * File : RequestProcessor.java * Created : 23-jan-2003 10:31 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.servlet; import java.util.Vector; import java.util.Iterator; import java.util.StringTokenizer; import java.util.Date; import java.text.SimpleDateFormat; import java.util.Locale; import java.util.TimeZone; import java.io.InputStream; import java.util.HashMap; import java.util.Map; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public abstract class RequestProcessor { public static final String REDIRECT="REDIRECT", CONTENT_TYPE="CONTENT_TYPE", CONTENT_LENGTH="CONTENT_LENGTH", COOKIE="COOKIE", EXTRA="EXTRA", ERROR="ERROR"; public static final int HTTP_NOT_FOUND=404, HTTP_BAD_REQUEST=400, HTTP_UNAUTHORIZED=401; public static final String CHARSET="ISO-8859-1"; private java.util.HashMap params; private java.util.HashMap cookies; private java.util.HashMap headers; private InputStream inputStream; public int errCode; public String errMsg; private static boolean DIRECT_RESOURCES; protected static HashMap properties=new HashMap(); /** Creates a new instance of RequestProcessor */ public RequestProcessor() { params=new java.util.HashMap(); cookies=new java.util.HashMap(); headers=new java.util.HashMap(); inputStream=null; errCode=-1; errMsg=null; } public static void config(Map prop){ if(prop!=null) properties.putAll(prop); } public boolean init() throws Exception{ return true; } public boolean usesWriter(){ return true; } public boolean noCache(){ return true; } public void process(java.io.OutputStream out) throws Exception{ }; public void process(java.io.PrintWriter out) throws Exception{ startHead(out); head(out); endHead(out); startBody(out); body(out); endBody(out); }; public void header(Vector v){ if(cookies.size()>0){ Iterator it=cookies.keySet().iterator(); while(it.hasNext()){ String key=(String)it.next(); String value=(String)cookies.get(key); v.add(new String[]{COOKIE, key, value}); } } } public void end(){ } public boolean wantsInputStream(){ return false; } public InputStream getInputStream(){ return inputStream; } public void setInputStream(InputStream is){ inputStream=is; } public int getIntParam(String name, int defaultValue){ int result=defaultValue; String s=getParam(name); if(s!=null){ try{ result=Integer.parseInt(s); } catch(NumberFormatException ex){ } } return result; } public Date getDateParam(String name, Date defaultValue, boolean atMidnight){ Date result=defaultValue; String s=getParam(name); if(s!=null){ try{ result=edu.xtec.jclic.report.ReportUtils.strToDate(s, atMidnight); } catch(Exception ex){ } } return result; } public String getParamNotNull(String name){ String result=getParam(name, 0); if(result==null) result=""; return result.trim(); } public String getParam(String name){ return getParam(name, 0); } public Object[] getParams(String name){ return (Object[])params.get(name); } public String getParam(String name, int index){ String result=null; Object[] array=(Object[])params.get(name); if(index>=0 && array!=null && array.length>index) result=(String)array[index]; return result; } public void setParam(String name, String value){ params.put(name, new String[]{value}); } public void setParam(String name, String[] value){ params.put(name, value); } public void setParams(java.util.Map map){ //params.putAll(map); if(map!=null){ java.util.Set s=map.keySet(); Iterator it=s.iterator(); while (it.hasNext()){ Object o=it.next(); Object val=map.get(o); if(o!=null){ if (val instanceof String) setParam(o.toString(),(String)val); else if(val instanceof String[]) setParam(o.toString(),(String[])val); } } } } public String getCookie(String name){ return (String)cookies.get(name); } public void setCookie(String name, String value){ cookies.put(name, value); } public void setCookies(java.util.Map map){ cookies.putAll(map); } public void setHeaders(java.util.Map map){ headers.putAll(map); } public java.util.Vector getHeaders(String headerName){ return (java.util.Vector)headers.get(headerName.toLowerCase()); } public String getHeader(String headerName){ String result=null; java.util.Vector v=getHeaders(headerName); if(v!=null && !v.isEmpty()) result=(String)v.get(0); return result; } protected void startHead(java.io.PrintWriter out){ out.println(""); out.println(""); out.print(""); } protected void head(java.io.PrintWriter out) throws Exception{ }; protected void endHead(java.io.PrintWriter out){ out.println(""); } protected void linkStyle(String fileScreen, String filePrint, java.io.PrintWriter out){ StringBuffer sb=new StringBuffer(); sb.append("\n"); sb.append(""); } else sb.append("\">"); out.println(sb.substring(0)); } protected void linkScript(String file, java.io.PrintWriter out){ out.print(""); } protected void writeScript(String text, java.io.PrintWriter out){ out.println(""); } protected void title(String prefix, String title, java.io.PrintWriter out){ StringBuffer sb=new StringBuffer(200); sb.append(""); if(prefix!=null) sb.append(filter(prefix)).append(" - "); sb.append(filter(title)); sb.append(""); out.println(sb.substring(0)); } protected void startBody(java.io.PrintWriter out){ out.println(""); } protected void body(java.io.PrintWriter out) throws Exception{ }; protected void endBody(java.io.PrintWriter out){ out.println(""); out.println(""); } public static String filter(String input){ String result=(input==null ? "" : input); if(input!=null && input.length()>0){ StringBuffer filtered = new StringBuffer(input.length()); char c; for(int i=0; i': s=">"; break; case '"': s="""; break; case '&': s="&"; break; } if(s!=null) filtered.append(s); else filtered.append(c); } result=filtered.substring(0); } return result; } public static String escape(String input){ String result=input; if(input!=null && input.length()>0){ StringBuffer filtered = new StringBuffer(input.length()); char c; for(int i=0; i=0 ? rp.errCode : HttpServletResponse.SC_INTERNAL_SERVER_ERROR; String errMsg = rp.errMsg!=null ? rp.errMsg : ex.getMessage(); if(!response.isCommitted()){ response.sendError(errCode, errMsg); } System.err.println("ERROR "+errCode+": "+errMsg); ex.printStackTrace(System.err); } finally { if(rp!=null) rp.end(); } } protected abstract RequestProcessor createRP() throws Exception; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, java.io.IOException { processRequest(request, response); } } jclic-0.2.1.0.orig/src/report/jclicReports.properties0000644000175000017500000001113711377161311017502 0ustar #-------------------------------------------------------------------------- # JCLIC REPORTS SERVER SETTINGS #-------------------------------------------------------------------------- #-------------------------------------------------------------------------- # Name of the JDBC driver #-------------------------------------------------------------------------- # Examples: ODBC: sun.jdbc.odbc.JdbcOdbcDriver # MySQL: com.mysql.jdbc.Driver # PointBase: com.pointbase.jdbc.jdbcUniversalDriver # Oracle: oracle.jdbc.driver.OracleDriver #-------------------------------------------------------------------------- dbDriver=sun.jdbc.odbc.JdbcOdbcDriver #-------------------------------------------------------------------------- # URL of the the database #-------------------------------------------------------------------------- # Examples: ODBC: jdbc:odbc:JClic # MySQL: jdbc:mysql://localhost/JClicReports # PointBase: jdbc:pointbase:jclic # Oracle: jdbc:oracle:thin:@server.domain.com:1521:database #-------------------------------------------------------------------------- dbServer=jdbc:odbc:JClic #-------------------------------------------------------------------------- # DB system username and password (not mandatory in some DBMS) #-------------------------------------------------------------------------- dbLogin=clic_user dbPassword=clic_pwd #-------------------------------------------------------------------------- # If not exist, automatically create tables on first run #-------------------------------------------------------------------------- createTables=true #-------------------------------------------------------------------------- # String that will be used as prefix for table names #-------------------------------------------------------------------------- tablePrefix=JCLIC_ #-------------------------------------------------------------------------- # Automatically start services #-------------------------------------------------------------------------- autostart=true http_autostart=true #-------------------------------------------------------------------------- # Provide console/log info on each transaction #-------------------------------------------------------------------------- verbose=true #-------------------------------------------------------------------------- # Language to be used (ISO-639 two-letter language codes) #-------------------------------------------------------------------------- #language=ca #-------------------------------------------------------------------------- # If set, write logs to file #-------------------------------------------------------------------------- http_logFile= #-------------------------------------------------------------------------- # Maximum time to wait for idle connections (in milliseconds) #-------------------------------------------------------------------------- http_timeout=1200 timeout=1200 #-------------------------------------------------------------------------- # Parameters related to the pool of database connections #-------------------------------------------------------------------------- # Reuse preparedStatements dbMapStatements=true # Absolute path name for log file. e.g. 'c:/temp/mylog.log'. # Default is 'jclicReportsDBConnection.log' in user's home dir. dbLogFile=jclicReportsDBConnection.log # Append to logfile. Default is true. dbLogAppend=true # Minimum number of connections to start with. default is 1 dbMinConns=1 # Maximum number of connections in dynamic pool. Default is 3 dbMaxConns=3 # Time in days between connection resets. (Reset does a basic cleanup). Default is 1.0 dbMaxConnDays=1.0 # Level of debug messages output to the log file. # 0 -> no messages, 1 -> Errors, 2 -> Warnings, 3 -> Information. # Default is 2. dbDebugLevel=2 # Max time a connection can be checked out before being recycled. # Zero value turns option off. Default is 60. dbMaxCheckoutSeconds=60 #-------------------------------------------------------------------------- # Parameters related to the drawing of graphics #-------------------------------------------------------------------------- graph_width=440 graph_dist_width=192 graph_height=155 graph_header_height=25 graph_margin=8 graph_color_bg=F0F8FF graph_color_text=000000 graph_color_border=FFFFFF graph_color_v1=D00000 graph_color_v2=00D000 graph_color_dist=0000D0 graph_color_alert=FF0000 graph_stroke_width=3.0 graph_font_family=Dialog graph_font_size=11 graph_margin_x=50 graph_margin_y=20 graph_div_y=4 graph_max_cols=10 graph_margin_dist_x=15 graph_margin_dist_y=20 graph_color_header_bg=ADD8E6 graph_color_header_text=000000 jclic-0.2.1.0.orig/src/player/0000755000175000017500000000000011377161311012677 5ustar jclic-0.2.1.0.orig/src/player/edu/0000755000175000017500000000000011377161311013454 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/0000755000175000017500000000000011377161311014417 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/0000755000175000017500000000000011377161311015503 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/PlayerSettingsDlg.java0000644000175000017500000011404111377161311021753 0ustar /* * File : PlayerSettingsDlg.java * Created : 20-jun-2002 13:23 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.project.LibraryManager; import edu.xtec.util.Messages; import java.util.HashMap; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.util.StrUtils; import edu.xtec.jclic.report.TCPReporter; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class PlayerSettingsDlg extends edu.xtec.util.ExtendedJDialog { PlayerSettings settings; public boolean result; java.awt.Component parent; LibraryManager libraryManager; Messages msg; HashMap reporterOptions; /** Creates new form SettingsDlg */ public PlayerSettingsDlg(PlayerSettings settings, java.awt.Component parent) { super(parent, "", true); this.parent=parent; this.settings=settings; msg=settings.getMessages(); setTitle(msg.get("settings_title")); try{ libraryManager=LibraryManager.getLibraryManager(settings, settings.libraryManager.getJDomElement()); } catch(Exception ex){ msg.showErrorWarning(this, "library_error_clone", ex); libraryManager=settings.libraryManager; } result=false; reporterOptions=new HashMap(); Options.strToMap(settings.reporterParams, reporterOptions, ";", '=', false); initComponents(); checkEnabled(null); centerOver(parent); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel browserLb; javax.swing.JPanel btPanel; javax.swing.JButton cancelButton; javax.swing.JLabel countryLb; javax.swing.JPanel generalPane; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel langLb; javax.swing.JPanel libraryPane; javax.swing.JLabel lookLb; javax.swing.JTabbedPane mainPane; javax.swing.ButtonGroup mediaGroup; javax.swing.JPanel mediaPane; javax.swing.JPanel mediaSystemPanel; javax.swing.JButton okButton; javax.swing.JLabel pwdLb1; javax.swing.JLabel pwdLb2; javax.swing.ButtonGroup reportGroup; javax.swing.JPanel reportOptionsPanel; javax.swing.JPanel reportPane; javax.swing.JLabel rpAddressLb; javax.swing.JLabel rpClassLb; javax.swing.JLabel rpDriverLb; javax.swing.JLabel rpParamsLb; javax.swing.JLabel rpPwdLb; javax.swing.JLabel rpUrlLb; javax.swing.JLabel rpUserLb; javax.swing.JPanel securityPane; javax.swing.JLabel skinLb; javax.swing.JLabel variantLb; reportGroup = new javax.swing.ButtonGroup(); mediaGroup = new javax.swing.ButtonGroup(); mainPane = new javax.swing.JTabbedPane(); securityPane = new javax.swing.JPanel(); pwdCheck = new javax.swing.JCheckBox(); pwdLb1 = new javax.swing.JLabel(); pwdField1 = new javax.swing.JPasswordField(settings.password, 20); pwdLb2 = new javax.swing.JLabel(); pwdField2 = new javax.swing.JPasswordField(settings.password, 20); generalPane = new javax.swing.JPanel(); lookLb = new javax.swing.JLabel(); lookCombo = new javax.swing.JComboBox(edu.xtec.util.LFUtil.VALUES); skinLb = new javax.swing.JLabel(); skinCombo = new javax.swing.JComboBox(edu.xtec.jclic.skins.Skin.getSystemSkinList(false)); langLb = new javax.swing.JLabel(); langCombo = new javax.swing.JComboBox(Messages.getDescriptiveLanguageCodes(msg.getLocale())); countryLb = new javax.swing.JLabel(); countryField = new javax.swing.JTextField(); variantLb = new javax.swing.JLabel(); variantField = new javax.swing.JTextField(); browserLb = new javax.swing.JLabel(); browserField = new javax.swing.JTextField(); reportPane = new javax.swing.JPanel(); reportChk = new javax.swing.JCheckBox(); reportOptionsPanel = new javax.swing.JPanel(); tcpBtn = new javax.swing.JRadioButton(); rpAddressLb = new javax.swing.JLabel(); rpAddressTxt = new javax.swing.JTextField(); jdbcBtn = new javax.swing.JRadioButton(); rpDriverLb = new javax.swing.JLabel(); rpDriverTxt = new javax.swing.JTextField(); rpUrlLb = new javax.swing.JLabel(); rpUrlTxt = new javax.swing.JTextField(); rpUserLb = new javax.swing.JLabel(); rpUserTxt = new javax.swing.JTextField(); rpPwdLb = new javax.swing.JLabel(); rpPwdTxt = new javax.swing.JPasswordField(); otherBtn = new javax.swing.JRadioButton(); rpClassLb = new javax.swing.JLabel(); rpClassTxt = new javax.swing.JTextField(); rpParamsLb = new javax.swing.JLabel(); rpParamsTxt = new javax.swing.JTextField(); mediaPane = new javax.swing.JPanel(); soundEnabledChk = new javax.swing.JCheckBox(); mediaSystemPanel = new javax.swing.JPanel(); mDefaultBtn = new javax.swing.JRadioButton(); mJMFbtn = new javax.swing.JRadioButton(); mQTbtn = new javax.swing.JRadioButton(); systemSoundsChk = new javax.swing.JCheckBox(); libraryPane = new javax.swing.JPanel(); autoRunLibChk = new javax.swing.JCheckBox(); editLibPanel = libraryManager.getLibraryPane(true, true); btPanel = new javax.swing.JPanel(); okButton = new javax.swing.JButton(); cancelButton = new javax.swing.JButton(); addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); mainPane.setToolTipText(msg.get("settings_report_tooltip")); mainPane.setPreferredSize(new java.awt.Dimension(500, 400)); securityPane.setLayout(new java.awt.GridBagLayout()); securityPane.setToolTipText(msg.get("settings_security_tooltip")); pwdCheck.setSelected(settings.password!=null); pwdCheck.setText(msg.get("settings_password_protect")); pwdCheck.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { pwdCheckActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); securityPane.add(pwdCheck, gridBagConstraints); pwdLb1.setText(msg.get("settings_new_password")); pwdLb1.setLabelFor(pwdField1); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); securityPane.add(pwdLb1, gridBagConstraints); pwdField1.setEnabled(settings.password!=null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); securityPane.add(pwdField1, gridBagConstraints); pwdLb2.setText(msg.get("settings_new_password_confirm")); pwdLb2.setLabelFor(pwdField2); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); securityPane.add(pwdLb2, gridBagConstraints); pwdField2.setEnabled(settings.password!=null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); securityPane.add(pwdField2, gridBagConstraints); mainPane.addTab(msg.get("settings_security"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/security.gif")), securityPane, ""); generalPane.setLayout(new java.awt.GridBagLayout()); generalPane.setToolTipText(msg.get("settings_general_tooltip")); lookLb.setLabelFor(lookCombo); lookLb.setText(msg.get("settings_look")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(lookLb, gridBagConstraints); lookCombo.setSelectedItem(settings.lookAndFeel); lookCombo.setToolTipText(msg.get("settings_look_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(lookCombo, gridBagConstraints); skinLb.setLabelFor(skinCombo); skinLb.setText(msg.get("settings_skin")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(skinLb, gridBagConstraints); skinCombo.setEditable(true); skinCombo.setSelectedItem(settings.skin); skinCombo.setToolTipText(msg.get("settings_skin_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(skinCombo, gridBagConstraints); langLb.setLabelFor(langCombo); langLb.setText(msg.get("settings_language")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(langLb, gridBagConstraints); langCombo.setSelectedItem(Messages.getDescriptiveLanguageCode(settings.language)); langCombo.setToolTipText(msg.get("settings_language_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(langCombo, gridBagConstraints); countryLb.setLabelFor(countryField); countryLb.setText(msg.get("settings_country")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(countryLb, gridBagConstraints); countryField.setText(settings.country); countryField.setToolTipText(msg.get("settings_country_tooltip")); countryField.setMinimumSize(new java.awt.Dimension(75, 21)); countryField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(countryField, gridBagConstraints); variantLb.setLabelFor(variantField); variantLb.setText(msg.get("settings_variant")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(variantLb, gridBagConstraints); variantField.setText(settings.variant); variantField.setToolTipText(msg.get("settings_variant_tooltip")); variantField.setMinimumSize(new java.awt.Dimension(75, 21)); variantField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(variantField, gridBagConstraints); browserLb.setText(msg.get("settings_browser")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(browserLb, gridBagConstraints); browserField.setText(settings.preferredBrowser); browserField.setToolTipText(msg.get("settings_browser_tooltip")); browserField.setMinimumSize(new java.awt.Dimension(75, 21)); browserField.setPreferredSize(new java.awt.Dimension(200, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); generalPane.add(browserField, gridBagConstraints); mainPane.addTab(msg.get("settings_general"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/settings.gif")), generalPane, ""); reportPane.setLayout(new java.awt.GridBagLayout()); reportChk.setToolTipText(msg.get("settings_report_use_tooltip")); reportChk.setSelected(settings.reporterEnabled); reportChk.setText(msg.get("settings_report_use")); reportChk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { reportChkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportPane.add(reportChk, gridBagConstraints); reportOptionsPanel.setLayout(new java.awt.GridBagLayout()); reportOptionsPanel.setBorder(new javax.swing.border.TitledBorder(msg.get("settings_report_type"))); tcpBtn.setSelected(settings.reporterClass.equals("TCPReporter") && (settings.reporterParams==null || settings.reporterParams.indexOf(";")<0)); tcpBtn.setText(msg.get("settings_report_tcp")); tcpBtn.setToolTipText(msg.get("settings_report_tcp_tooltip")); reportGroup.add(tcpBtn); tcpBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { tcpBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(tcpBtn, gridBagConstraints); rpAddressLb.setText(msg.get("settings_report_address")); rpAddressLb.setLabelFor(rpAddressTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpAddressLb, gridBagConstraints); rpAddressTxt.setText(Options.getString(reporterOptions, TCPReporter.SERVER_PATH, TCPReporter.DEFAULT_SERVER_PATH)); rpAddressTxt.setToolTipText(msg.get("settings_report_address_tooltip")); rpAddressTxt.setPreferredSize(new java.awt.Dimension(80, 21)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpAddressTxt, gridBagConstraints); jdbcBtn.setSelected(settings.reporterClass.equals("JDBCReporter")); jdbcBtn.setText(msg.get("settings_report_jdbc")); jdbcBtn.setToolTipText(msg.get("settings_report_jdbc_tooltip")); reportGroup.add(jdbcBtn); jdbcBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jdbcBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(jdbcBtn, gridBagConstraints); rpDriverLb.setText(msg.get("settings_report_driver")); rpDriverLb.setLabelFor(rpDriverTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpDriverLb, gridBagConstraints); rpDriverTxt.setText(Options.getString(reporterOptions, "driver", "sun.jdbc.odbc.JdbcOdbcDriver")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpDriverTxt, gridBagConstraints); rpUrlLb.setText(msg.get("settings_report_url")); rpUrlLb.setLabelFor(rpUrlTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpUrlLb, gridBagConstraints); rpUrlTxt.setText(Options.getString(reporterOptions, "url", "jdbc:odbc:JClic")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpUrlTxt, gridBagConstraints); rpUserLb.setText(msg.get("settings_report_user")); rpUserLb.setLabelFor(rpUserTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpUserLb, gridBagConstraints); rpUserTxt.setText(Options.getString(reporterOptions, "system_user", null)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpUserTxt, gridBagConstraints); rpPwdLb.setText(msg.get("settings_report_pwd")); rpPwdLb.setLabelFor(rpPwdTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpPwdLb, gridBagConstraints); rpPwdTxt.setText(Options.getString(reporterOptions, "system_pwd", null)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 0.5; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpPwdTxt, gridBagConstraints); otherBtn.setSelected(!tcpBtn.isSelected() && !jdbcBtn.isSelected()); otherBtn.setText(msg.get("settings_report_other")); otherBtn.setToolTipText(msg.get("settings_report_other_tooltip")); reportGroup.add(otherBtn); otherBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { otherBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(otherBtn, gridBagConstraints); rpClassLb.setText(msg.get("settings_report_engine")); rpClassLb.setLabelFor(rpClassTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpClassLb, gridBagConstraints); rpClassTxt.setText(otherBtn.isSelected() ? settings.reporterClass : null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpClassTxt, gridBagConstraints); rpParamsLb.setText(msg.get("settings_report_params")); rpParamsLb.setLabelFor(rpParamsTxt); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(3, 8, 3, 3); reportOptionsPanel.add(rpParamsLb, gridBagConstraints); rpParamsTxt.setText(otherBtn.isSelected() ? settings.reporterParams : null); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportOptionsPanel.add(rpParamsTxt, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); reportPane.add(reportOptionsPanel, gridBagConstraints); mainPane.addTab(msg.get("settings_reports"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/report_small.gif")), reportPane, ""); mediaPane.setLayout(new java.awt.GridBagLayout()); mediaPane.setToolTipText(msg.get("settings_media_tooltip")); soundEnabledChk.setSelected(settings.soundEnabled); soundEnabledChk.setText(msg.get("settings_media_enabled")); soundEnabledChk.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { soundEnabledChkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mediaPane.add(soundEnabledChk, gridBagConstraints); mediaSystemPanel.setLayout(new java.awt.GridBagLayout()); mediaSystemPanel.setBorder(new javax.swing.border.TitledBorder(msg.get("settings_media_system"))); mDefaultBtn.setSelected(edu.xtec.jclic.Constants.DEFAULT.equals(settings.mediaSystem)); mDefaultBtn.setText(msg.get("settings_media_default")); mediaGroup.add(mDefaultBtn); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3); mediaSystemPanel.add(mDefaultBtn, gridBagConstraints); mJMFbtn.setSelected(edu.xtec.jclic.Constants.JMF.equals(settings.mediaSystem)); mJMFbtn.setText(msg.get("settings_media_jmf")); mediaGroup.add(mJMFbtn); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 0, 3); mediaSystemPanel.add(mJMFbtn, gridBagConstraints); mQTbtn.setSelected(edu.xtec.jclic.Constants.QT.equals(settings.mediaSystem)); mQTbtn.setText(msg.get("settings_media_qt")); mediaGroup.add(mQTbtn); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); mediaSystemPanel.add(mQTbtn, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mediaPane.add(mediaSystemPanel, gridBagConstraints); systemSoundsChk.setSelected(settings.systemSounds); systemSoundsChk.setText(msg.get("settings_media_event_sounds")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); mediaPane.add(systemSoundsChk, gridBagConstraints); mainPane.addTab(msg.get("settings_media"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/audio_on.gif")), mediaPane, ""); libraryPane.setLayout(new java.awt.GridBagLayout()); libraryPane.setToolTipText(msg.get("settings_library_tooltip")); autoRunLibChk.setSelected(libraryManager.autoRun); autoRunLibChk.setText(msg.get("settings_library_autorun")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); libraryPane.add(autoRunLibChk, gridBagConstraints); editLibPanel.setBorder(new javax.swing.border.TitledBorder(msg.get("settings_library"))); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); libraryPane.add(editLibPanel, gridBagConstraints); mainPane.addTab(msg.get("settings_library"), new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/database.gif")), libraryPane, ""); getContentPane().add(mainPane, java.awt.BorderLayout.CENTER); okButton.setText(msg.get("OK")); okButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { okButtonActionPerformed(evt); } }); btPanel.add(okButton); cancelButton.setText(msg.get("CANCEL")); cancelButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelButtonActionPerformed(evt); } }); btPanel.add(cancelButton); getContentPane().add(btPanel, java.awt.BorderLayout.SOUTH); pack(); }//GEN-END:initComponents private void soundEnabledChkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_soundEnabledChkActionPerformed checkEnabled(soundEnabledChk); }//GEN-LAST:event_soundEnabledChkActionPerformed private void otherBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_otherBtnActionPerformed checkEnabled(reportChk); }//GEN-LAST:event_otherBtnActionPerformed private void jdbcBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jdbcBtnActionPerformed checkEnabled(reportChk); }//GEN-LAST:event_jdbcBtnActionPerformed private void tcpBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tcpBtnActionPerformed checkEnabled(reportChk); }//GEN-LAST:event_tcpBtnActionPerformed private void reportChkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reportChkActionPerformed checkEnabled(reportChk); }//GEN-LAST:event_reportChkActionPerformed private void pwdCheckActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_pwdCheckActionPerformed checkEnabled(pwdCheck); }//GEN-LAST:event_pwdCheckActionPerformed private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelButtonActionPerformed result=false; closeDialog(null); }//GEN-LAST:event_cancelButtonActionPerformed private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed if(accept()){ result=true; closeDialog(null); } // Add your handling code here: }//GEN-LAST:event_okButtonActionPerformed public boolean accept(){ String p1=null; if(pwdCheck.isSelected()){ p1=StrUtils.nullableString(String.copyValueOf(pwdField1.getPassword())); String p2=StrUtils.nullableString(String.copyValueOf(pwdField2.getPassword())); if(p1==null || p2==null || !p1.equals(p2)){ msg.showAlert(this, "PASSWORD_INCORRECT"); return false; } } else settings.password=null; if(tcpBtn.isSelected()){ String server=rpAddressTxt.getText(); if(server==null || server.length()<1){ msg.showAlert(this, "settings_report_err_server"); return false; } settings.reporterClass="TCPReporter"; settings.reporterParams=new StringBuffer(TCPReporter.SERVER_PATH).append("=").append(server).substring(0); } else if(jdbcBtn.isSelected()){ String driver=StrUtils.nullableString(rpDriverTxt.getText()); String url=StrUtils.nullableString(rpUrlTxt.getText()); String usr=rpUserTxt.getText(); String pwd=String.copyValueOf(rpPwdTxt.getPassword()); if(driver==null || url==null){ msg.showAlert(this, "settings_report_err"); return false; } settings.reporterClass="JDBCReporter"; StringBuffer sb=new StringBuffer("driver=").append(driver); sb.append(";url=").append(url); if(usr!=null){ sb.append(";system_user=").append(usr); if(pwd!=null) sb.append(";system_pwd=").append(pwd); } settings.reporterParams=sb.substring(0); } else{ settings.reporterClass=rpClassTxt.getText(); settings.reporterParams=rpParamsTxt.getText(); } settings.password=p1; settings.passwordConfirmed=false; settings.lookAndFeel=(String)lookCombo.getSelectedItem(); settings.preferredBrowser=browserField.getText(); settings.skin=(String)skinCombo.getSelectedItem(); settings.language=Messages.getLanguageFromDescriptive((String)langCombo.getSelectedItem()); settings.country=StrUtils.nullableString(countryField.getText()); settings.variant=StrUtils.nullableString(variantField.getText()); settings.reporterEnabled=reportChk.isSelected(); settings.soundEnabled=soundEnabledChk.isSelected(); if(mJMFbtn.isSelected()) settings.mediaSystem=edu.xtec.jclic.Constants.JMF; else if(mQTbtn.isSelected()) settings.mediaSystem=edu.xtec.jclic.Constants.QT; else settings.mediaSystem=edu.xtec.jclic.Constants.DEFAULT; settings.systemSounds=systemSoundsChk.isSelected(); libraryManager.autoRun=autoRunLibChk.isSelected(); settings.libraryManager=libraryManager; return true; } private void checkEnabled(javax.swing.JComponent cmp){ if(cmp==null || cmp==reportChk){ enable(tcpBtn, reportChk, null); enable(rpAddressTxt, tcpBtn, reportChk); enable(jdbcBtn, reportChk, null); enable(rpDriverTxt, jdbcBtn, reportChk); enable(rpUrlTxt, jdbcBtn, reportChk); enable(rpUserTxt, jdbcBtn, reportChk); enable(rpPwdTxt, jdbcBtn, reportChk); enable(otherBtn, reportChk, null); enable(rpClassTxt, otherBtn, reportChk); enable(rpParamsTxt, otherBtn, reportChk); } if(cmp==null || cmp==pwdCheck){ enable(pwdField1, pwdCheck, null); enable(pwdField2, pwdCheck, null); } if(cmp==null || cmp==soundEnabledChk){ enable(mDefaultBtn, soundEnabledChk, null); enable(mJMFbtn, soundEnabledChk, null); enable(mQTbtn, soundEnabledChk, null); enable(systemSoundsChk, soundEnabledChk, null); } } private void enable(javax.swing.JComponent cmp, javax.swing.JToggleButton tg1, javax.swing.JToggleButton tg2){ if(cmp!=null && tg1!=null){ boolean b=tg1.isSelected() && (tg2==null || tg2.isSelected()); boolean current=cmp.isEnabled(); if(b!=current) cmp.setEnabled(b); } } /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog setVisible(false); dispose(); }//GEN-LAST:event_closeDialog // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JCheckBox autoRunLibChk; private javax.swing.JTextField browserField; private javax.swing.JTextField countryField; private javax.swing.JPanel editLibPanel; private javax.swing.JRadioButton jdbcBtn; private javax.swing.JComboBox langCombo; private javax.swing.JComboBox lookCombo; private javax.swing.JRadioButton mDefaultBtn; private javax.swing.JRadioButton mJMFbtn; private javax.swing.JRadioButton mQTbtn; private javax.swing.JRadioButton otherBtn; private javax.swing.JCheckBox pwdCheck; private javax.swing.JPasswordField pwdField1; private javax.swing.JPasswordField pwdField2; private javax.swing.JCheckBox reportChk; private javax.swing.JTextField rpAddressTxt; private javax.swing.JTextField rpClassTxt; private javax.swing.JTextField rpDriverTxt; private javax.swing.JTextField rpParamsTxt; private javax.swing.JPasswordField rpPwdTxt; private javax.swing.JTextField rpUrlTxt; private javax.swing.JTextField rpUserTxt; private javax.swing.JComboBox skinCombo; private javax.swing.JCheckBox soundEnabledChk; private javax.swing.JCheckBox systemSoundsChk; private javax.swing.JRadioButton tcpBtn; private javax.swing.JTextField variantField; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/0000755000175000017500000000000011377161311017151 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectInstallerDlg.form0000644000175000017500000013010311377161311023747 0ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectLibraryEditorPanel.form0000644000175000017500000000643011377161311025123 0ustar
jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectLibraryEditor.java0000644000175000017500000000551511377161311024124 0ustar /* * File : ProjectLibraryEditor.java * Created : 05-jun-2002 17:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.*; import edu.xtec.jclic.bags.*; import edu.xtec.jclic.activities.panels.*; import edu.xtec.util.Options; import javax.swing.ImageIcon; import javax.swing.Icon; import javax.swing.tree.TreeNode; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProjectLibraryEditor extends Editor{ public static ImageIcon icon; /** Creates new ProjectLibraryEditor */ public ProjectLibraryEditor(ProjectLibrary pl) { super(pl); } protected void createChildren(){ ProjectLibrary pl=getProjectLibrary(); Menu m=pl.getRootMenu(); if(m!=null) m.getEditor(this); } public Class getEditorPanelClass() { return ProjectLibraryEditorPanel.class; } public EditorPanel createEditorPanel(Options options) { return new ProjectLibraryEditorPanel(options); } public ProjectLibrary getProjectLibrary(){ return (ProjectLibrary)getUserObject(); } public static Icon getIcon(){ if(icon==null) icon=edu.xtec.util.ResourceManager.getImageIcon("icons/database.gif"); return icon; } public javax.swing.Icon getIcon(boolean leaf, boolean expanded){ return getIcon(); } public String toString(){ return getProjectLibrary().settings.title; } protected void saveMenus(TreeNode e){ if(e instanceof MenuEditor) getProjectLibrary().activityBag.addActivity(((MenuEditor)e).getMenu()); for(int i=0; i
jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectInstallerDlg.java0000644000175000017500000010435211377161311023734 0ustar /* * File : ProjectInstallerDlg.java * Created : 04-jun-2002 09:55 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import java.net.URL; import edu.xtec.jclic.activities.panels.*; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.util.*; import edu.xtec.jclic.misc.Utils; import java.awt.Component; import java.io.*; import java.util.Properties; import java.util.Map; import java.util.HashMap; import java.util.Vector; import javax.swing.event.ListSelectionListener; import javax.swing.event.ListSelectionEvent; import javax.swing.JComponent; import edu.xtec.jclic.edit.EditorTreePanel; import java.awt.BorderLayout; import javax.swing.event.TreeSelectionEvent; import java.awt.Font; import edu.xtec.jclic.misc.Gradient; import java.awt.Image; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.Rectangle; import edu.xtec.jclic.fileSystem.FileBackup; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ProjectInstallerDlg extends ExtendedJDialog implements ProgressInputStream.ProgressInputStreamListener, ListSelectionListener { public ProjectLibrary result; public boolean cancel; public boolean launchNow; public String pathToMainProject; Messages msg; LibraryManager lm; FileSystem storeFileSystem; ProjectInstaller pi; ProjectLibrary pl; LibraryManager.LibraryPane libraryPane; EditorTreePanel etp; File installDir; Options options; boolean workerRunning; SwingWorker worker; boolean copyComplete; private Font titleFont, mainFont, itemFont; private Image logo; private Gradient logoGp; private int currentStage=0; private static final int STAGE_INFO=0, STAGE_SELECT_LIB=1, STAGE_COPY_FILES=2, STAGE_SELECT_FOLDER=3, STAGE_END=4, NUM_STAGES=5; private static final String[] STAGE_TITLES=new String[]{ "install_title", "install_step_1", "install_step_2", "install_step_3", "install_step_4", }; private static final String LOGO="icons/install.png"; /** Creates new form ProjectInstallerDlg */ private ProjectInstallerDlg(Component parent, LibraryManager lm, ProjectInstaller pi) throws Exception { super(parent, null, true); this.lm=lm; options=lm.settings.rb.getOptions(); msg=options.getMessages(); setTitle(msg.get("install_title")); result=null; launchNow=true; pathToMainProject=null; cancel=false; titleFont=new Font("Dialog", Font.BOLD, 18); mainFont=new Font("Dialog", Font.BOLD, 12); itemFont=new Font("Dialog", 0, 12); this.pi=pi; if(pi.from==null) throw new Exception("Path to installer data store not specified!"); storeFileSystem=FileSystem.createFileSystem(pi.from, null, lm.settings.rb); logo=ResourceManager.getImageIcon(LOGO).getImage(); logoGp=new Gradient(Color.white, Color.blue, 90, 1); initComponents(); centerOver(parent); getRootPane().setDefaultButton(nextBtn); } public static ProjectInstallerDlg getProjectInstallerDlg(Component parent, LibraryManager lm, String installerScriptFile) throws Exception{ return new ProjectInstallerDlg(parent, lm, ProjectInstaller.getProjectInstaller(installerScriptFile)); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JTextArea authorLb; javax.swing.JPanel basicPane; javax.swing.JPanel btPane; javax.swing.JLabel destLbHeader; javax.swing.JLabel finishLb; javax.swing.JLabel finishLb2; javax.swing.JLabel finishLb3; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel infoTitleLb; javax.swing.JLabel libFolderLb; javax.swing.JLabel libLb; javax.swing.JLabel sourceLb; javax.swing.JLabel sourceLbHeader; javax.swing.JLabel sourcePathLb; javax.swing.JLabel sourcePathLbHeader; javax.swing.JLabel statusLbHeader; javax.swing.JTextArea titleLb2; javax.swing.JLabel wizardInfoLb; btPane = new javax.swing.JPanel(); cancelBtn = new javax.swing.JButton(); prevBtn = new javax.swing.JButton(); nextBtn = new javax.swing.JButton(); basicPane = new javax.swing.JPanel(); mainPane = new javax.swing.JPanel(); card00 = new javax.swing.JPanel(); infoTitleLb = new javax.swing.JLabel(); titleLb2 = new javax.swing.JTextArea(); authorLb = new javax.swing.JTextArea(); sourceLbHeader = new javax.swing.JLabel(); sourceLb = new javax.swing.JLabel(); wizardInfoLb = new javax.swing.JLabel(); card01 = new javax.swing.JPanel(); libLb = new javax.swing.JLabel(); selectLibPanel = lm.getLibraryPane(true, true); libraryPane=(LibraryManager.LibraryPane)selectLibPanel; libraryPane.addListSelectionListener(this); card02 = new javax.swing.JPanel(); sourcePathLbHeader = new javax.swing.JLabel(); sourcePathLb = new javax.swing.JLabel(); destLbHeader = new javax.swing.JLabel(); destLb = new javax.swing.JLabel(); statusLbHeader = new javax.swing.JLabel(); statusLb = new javax.swing.JLabel(); itemProgressBar = new javax.swing.JProgressBar(); card03 = new javax.swing.JPanel(); libFolderLb = new javax.swing.JLabel(); libFolderPanel = new javax.swing.JPanel(); card04 = new javax.swing.JPanel(); finishLb = new javax.swing.JLabel(); finishLb2 = new javax.swing.JLabel(); finishLb3 = new javax.swing.JLabel(); launchProjectChk = new javax.swing.JCheckBox(); cardTitleLb = new javax.swing.JLabel(); logoPanel = new javax.swing.JPanel(){ public void paintComponent(Graphics g){ Rectangle r=new Rectangle(0, 0, getBounds().width, getBounds().height); if(logoGp!=null) logoGp.paint((Graphics2D)g, r); if(logo!=null){ int x=(r.width-logo.getWidth(this))/2; int y=(r.height-logo.getHeight(this))/2; g.drawImage(logo, x, y, this); } } }; addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { closeDialog(evt); } }); btPane.setLayout(new java.awt.GridBagLayout()); cancelBtn.setToolTipText(msg.get("wizard_cancel_tooltip")); cancelBtn.setText(msg.get("wizard_cancel")); cancelBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); btPane.add(cancelBtn, gridBagConstraints); prevBtn.setToolTipText(msg.get("wizard_prev_tooltip")); prevBtn.setText(msg.get("wizard_prev")); prevBtn.setEnabled(false); prevBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { prevBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); btPane.add(prevBtn, gridBagConstraints); nextBtn.setToolTipText(msg.get("wizard_next_tooltip")); nextBtn.setText(msg.get("wizard_next")); nextBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { nextBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); btPane.add(nextBtn, gridBagConstraints); getContentPane().add(btPane, java.awt.BorderLayout.SOUTH); basicPane.setLayout(new java.awt.BorderLayout()); basicPane.setPreferredSize(new java.awt.Dimension(500, 300)); mainPane.setLayout(new java.awt.CardLayout()); mainPane.setBackground(new java.awt.Color(255, 255, 204)); card00.setLayout(new java.awt.GridBagLayout()); card00.setOpaque(false); infoTitleLb.setFont(mainFont); infoTitleLb.setText(msg.get("install_info_info")); infoTitleLb.setPreferredSize(new java.awt.Dimension(300, 17)); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card00.add(infoTitleLb, gridBagConstraints); titleLb2.setEditable(false); titleLb2.setFont(mainFont); titleLb2.setLineWrap(true); titleLb2.setText("\""+pi.projectTitle+"\""); titleLb2.setWrapStyleWord(true); titleLb2.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3); card00.add(titleLb2, gridBagConstraints); authorLb.setEditable(false); authorLb.setFont(itemFont); authorLb.setLineWrap(true); authorLb.setText(pi.authors!=null ? pi.authors : ""); authorLb.setWrapStyleWord(true); authorLb.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); card00.add(authorLb, gridBagConstraints); sourceLbHeader.setText(msg.get("install_info_from")); sourceLbHeader.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints.insets = new java.awt.Insets(12, 3, 3, 3); card00.add(sourceLbHeader, gridBagConstraints); sourceLb.setText(storeFileSystem.getFullRoot()); sourceLb.setFont(itemFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); card00.add(sourceLb, gridBagConstraints); wizardInfoLb.setText(msg.get("wizard_info")); wizardInfoLb.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(12, 3, 3, 3); card00.add(wizardInfoLb, gridBagConstraints); mainPane.add(card00, "card00"); card01.setLayout(new java.awt.GridBagLayout()); card01.setOpaque(false); libLb.setText(msg.get("install_select_library")); libLb.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card01.add(libLb, gridBagConstraints); selectLibPanel.setBorder(new javax.swing.border.TitledBorder(msg.get("library_caption"))); selectLibPanel.setPreferredSize(new java.awt.Dimension(300, 200)); selectLibPanel.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card01.add(selectLibPanel, gridBagConstraints); mainPane.add(card01, "card01"); card02.setLayout(new java.awt.GridBagLayout()); card02.setPreferredSize(new java.awt.Dimension(400, 300)); card02.setOpaque(false); sourcePathLbHeader.setText(msg.get("install_source")); sourcePathLbHeader.setFont(mainFont); sourcePathLbHeader.setLabelFor(sourcePathLb); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card02.add(sourcePathLbHeader, gridBagConstraints); sourcePathLb.setText(storeFileSystem.getFullRoot()); sourcePathLb.setFont(itemFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card02.add(sourcePathLb, gridBagConstraints); destLbHeader.setText(msg.get("install_dest")); destLbHeader.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card02.add(destLbHeader, gridBagConstraints); destLb.setText(pi.baseFolder); destLb.setFont(itemFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card02.add(destLb, gridBagConstraints); statusLbHeader.setText(msg.get("install_status")); statusLbHeader.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(6, 3, 6, 3); card02.add(statusLbHeader, gridBagConstraints); statusLb.setText(msg.get("install_msg_waiting")); statusLb.setFont(itemFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(6, 3, 6, 3); card02.add(statusLb, gridBagConstraints); itemProgressBar.setToolTipText(msg.get("install_progress_tooltip")); itemProgressBar.setStringPainted(true); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card02.add(itemProgressBar, gridBagConstraints); mainPane.add(card02, "card02"); card03.setLayout(new java.awt.GridBagLayout()); card03.setOpaque(false); libFolderLb.setText(msg.get("install_select_folder")); libFolderLb.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card03.add(libFolderLb, gridBagConstraints); libFolderPanel.setLayout(new java.awt.BorderLayout()); libFolderPanel.setBorder(new javax.swing.border.TitledBorder(msg.get("install_library_folders"))); libFolderPanel.setPreferredSize(new java.awt.Dimension(300, 200)); libFolderPanel.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.gridheight = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); card03.add(libFolderPanel, gridBagConstraints); mainPane.add(card03, "card03"); card04.setLayout(new java.awt.GridBagLayout()); card04.setOpaque(false); finishLb.setText(msg.get("install_success_1")); finishLb.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 13, 3); card04.add(finishLb, gridBagConstraints); finishLb2.setText(msg.get("install_success_2")); finishLb2.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 0, 3); card04.add(finishLb2, gridBagConstraints); finishLb3.setText(msg.get("install_success_3")); finishLb3.setFont(mainFont); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(0, 3, 3, 3); card04.add(finishLb3, gridBagConstraints); launchProjectChk.setSelected(true); launchProjectChk.setText(msg.get("install_launchProject")); launchProjectChk.setOpaque(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(13, 3, 3, 3); card04.add(launchProjectChk, gridBagConstraints); mainPane.add(card04, "card04"); basicPane.add(mainPane, java.awt.BorderLayout.CENTER); cardTitleLb.setText(msg.get("install_title")); cardTitleLb.setForeground(new java.awt.Color(255, 255, 255)); cardTitleLb.setBackground(new java.awt.Color(255, 153, 51)); cardTitleLb.setFont(new java.awt.Font("SansSerif", 1, 18)); cardTitleLb.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(5, 10, 5, 10))); cardTitleLb.setOpaque(true); basicPane.add(cardTitleLb, java.awt.BorderLayout.NORTH); getContentPane().add(basicPane, java.awt.BorderLayout.CENTER); logoPanel.setPreferredSize(new java.awt.Dimension(75, 230)); getContentPane().add(logoPanel, java.awt.BorderLayout.WEST); pack(); }//GEN-END:initComponents private void nextBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nextBtnActionPerformed if(currentStage==STAGE_COPY_FILES && !copyComplete){ //copyFiles(); // do nothing } else goToStage(currentStage+1); }//GEN-LAST:event_nextBtnActionPerformed private void goToStage(int stage){ if(stage>=0 && stage<=NUM_STAGES){ boolean next=false, prev=false, cancel=false; currentStage=stage; switch(currentStage){ case STAGE_INFO: next=true; prev=false; cancel=true; break; case STAGE_SELECT_LIB: next=(libraryPane.getCurrentSelected()!=null); prev=true; cancel=true; break; case STAGE_COPY_FILES: initCopyStage(); //prev=true; next=true; cancel=true; copyFiles(); prev=false; next=false; cancel=true; break; case STAGE_SELECT_FOLDER: next=(etp!=null && etp.currentItem!=null && etp.currentItem instanceof MenuEditor); prev=false; cancel=true; break; case STAGE_END: initEndStage(); next=true; prev=false; cancel=false; break; case NUM_STAGES: result=pl; launchNow=launchProjectChk.isSelected(); closeDialog(null); return; } StringBuffer nbs=new StringBuffer("wizard_").append(currentStage=0; i--){ FileBackup fb=(FileBackup)fileBackups.get(i); if(cancel || ex!=null){ try{ fb.rollback(); } catch(Exception e){ msg.showErrorWarning(cmp, "FILE_ERR_RESTORING", fb.getFile().getAbsolutePath(), e, null); } } else{ try{ fb.cleanup(); } catch(Exception e){ msg.showErrorWarning(cmp, "FILE_ERR_DELETING", fb.getBackup().getAbsolutePath(), e, null); } } } } } statusLb.setText(msg.get("install_msg_end")); if(ex!=null) return ex; return cancel ? CANCEL : OK; } public void finished(){ Object result=get(); workerRunning=false; worker=null; if(result!=null){ if(cancel){ msg.showAlert(cmp, "install_msg_cancel"); closeDialog(null); } else if(result instanceof Exception){ msg.showErrorWarning(cmp, "install_error", (Exception)result); closeDialog(null); } else if(result.equals(PAUSED)){ statusLb.setText(msg.get("install_msg_waiting")); prevBtn.setEnabled(true); nextBtn.setEnabled(true); } else if(result.equals(OK)){ nextBtn.setEnabled(true); copyComplete=true; nextBtnActionPerformed(null); } } } }; worker.start(); } private void cancelBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelBtnActionPerformed cancel=true; StreamIO.setCancel(true); if(!workerRunning){ msg.showAlert(this, "install_msg_cancel"); closeDialog(null); } else{ worker.interrupt(); } }//GEN-LAST:event_cancelBtnActionPerformed /** Closes the dialog */ private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog setVisible(false); dispose(); }//GEN-LAST:event_closeDialog public void setProgressMax(int max){ itemProgressBar.setMaximum(max); } public void setProgressValue(int value){ itemProgressBar.setValue(value); } public void startProgress(String name){ itemProgressBar.setValue(0); } public void endProgress(){ } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancelBtn; private javax.swing.JPanel card00; private javax.swing.JPanel card01; private javax.swing.JPanel card02; private javax.swing.JPanel card03; private javax.swing.JPanel card04; private javax.swing.JLabel cardTitleLb; private javax.swing.JLabel destLb; private javax.swing.JProgressBar itemProgressBar; private javax.swing.JCheckBox launchProjectChk; private javax.swing.JPanel libFolderPanel; private javax.swing.JPanel logoPanel; private javax.swing.JPanel mainPane; private javax.swing.JButton nextBtn; private javax.swing.JButton prevBtn; private javax.swing.JPanel selectLibPanel; private javax.swing.JLabel statusLb; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectInstaller.java0000644000175000017500000002127111377161311023303 0ustar /* * File : ProjectInstaller.java * Created : 05-aug-2002 15:12 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import java.util.Vector; import java.util.HashMap; import edu.xtec.jclic.misc.Utils; import java.io.InputStream; import java.util.Properties; import java.net.URL; import java.io.File; import java.util.Map; import edu.xtec.jclic.fileSystem.FileSystem; import java.io.FileInputStream; import edu.xtec.util.JDomUtility; import java.util.Iterator; import edu.xtec.util.Domable; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ProjectInstaller implements Domable{ public static final String SEP=";", ITEM_SEP=",", EQUAL_SEP=":", FILES="files"; public static final String ITEM_NAMES="itemNames", ITEM_PROJECTS="itemProjects", ITEM_ICONS="itemIcons", ITEM_DESCRIPTIONS="itemDescriptions"; public static final String ELEMENT_NAME="JClicInstall"; public static final String TITLE="title", AUTHORS="authors", FROM="from"; public static final String FILE="file", SRC="src", FOLDER="folder"; public static final String SHORTCUT="shortcut", ICON="icon", PROJECT="project", TEXT="text", DESCRIPTION="description"; public static final String INSTALLER_EXTENSION=".jclic.inst"; public String fName; public String from; public String baseFolder; public String projectTitle; public String authors; public Vector files; public Vector iconItems; /** Creates a new instance of ProjectInstaller */ public ProjectInstaller() { files=new Vector(); iconItems=new Vector(); } public org.jdom.Element getJDomElement(){ return getJDomElement(true); } public org.jdom.Element getJDomElement(boolean includeFrom){ org.jdom.Element child=null; org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); JDomUtility.setStringAttr(e, TITLE, projectTitle, false); JDomUtility.setStringAttr(e, AUTHORS, authors, false); JDomUtility.setStringAttr(e, FOLDER, baseFolder, false); if(includeFrom) JDomUtility.setStringAttr(e, FROM, from, false); if(files!=null){ for(int i=0; i1) result=selectProjectLibrary(false, false); else{ result=ProjectLibrary.loadProjectLibrary(((LibraryManagerElement)libraries.get(0)).path, settings.rb); if(result!=null){ Menu m=result.getRootMenu(); if(m==null || m.getMenuElementCount()<1) result=null; } } } return result; } public ProjectLibrary selectProjectLibrary(boolean allowEdit, boolean selectOnlyEditable) throws Exception{ ProjectLibrary result=null; if(!libraries.isEmpty() || allowEdit){ LibraryDialog plDlg=new LibraryDialog(allowEdit, selectOnlyEditable); plDlg.setVisible(true); if(plDlg.result!=null){ result=ProjectLibrary.loadProjectLibrary(plDlg.result.path, settings.rb); } } return result; } public int getNumLibraries(){ return libraries.getSize(); } public LibraryManagerElement locateNewProjectLibrary(String path){ LibraryManagerElement result=null; ProjectLibrary pl=null; ResourceBridge rb=settings.rb; if(path==null){ int[] filters={Utils.JCLIC_FF}; String s=settings.fileSystem.chooseFile(settings.rootPath+File.separator+".", false, filters, rb.getOptions(), null, rb.getComponent(), false); if(s!=null) path=settings.fileSystem.getFullFileNamePath(s); } if(path!=null && !elementExists(path, true)){ try{ pl=ProjectLibrary.loadProjectLibrary(path, rb); result=new LibraryManagerElement(pl.settings.title, path, rb.getOptions()); } catch(Exception ex){ settings.rb.getOptions().getMessages().showErrorWarning(rb.getComponent(), "FILE_ERR_READING", path, ex, null); } } return result; } public LibraryManagerElement createNewProjectLibrary(String path, String name){ LibraryManagerElement result=null; ResourceBridge rb=settings.rb; if(name==null) name=rb.getMsg("library_newLibraryName"); if(path==null){ int[] filters={Utils.JCLIC_FF}; String s=settings.fileSystem.chooseFile(settings.rootPath+File.separator+"library.jclic", true, filters, rb.getOptions(), null, rb.getComponent(), false); if(s!=null) path=settings.fileSystem.getFullFileNamePath(s); } if(path!=null && !elementExists(path, true)){ ProjectLibrary pl=ProjectLibrary.createNewProjectLibrary(rb, settings.fileSystem); try{ pl.save(path); result=new LibraryManagerElement(pl.settings.title, path, rb.getOptions()); } catch(Exception ex){ settings.rb.getOptions().getMessages().showErrorWarning(rb.getComponent(), "FILE_ERR_SAVING", path, ex, null); } } return result; } public boolean elementExists(String path, boolean warn){ boolean result=false; for(int i=0; i0) list.setSelectedIndex(0); list.setCellRenderer(new DefaultListCellRenderer(){ public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); if(value instanceof LibraryManagerElement){ LibraryManagerElement lme=(LibraryManagerElement)value; setIcon(lme.getIcon()); if(!lme.exists || (!lme.editable && onlyEditable)) setForeground(java.awt.SystemColor.textInactiveText); } return this; } }); add(new JScrollPane(list), BorderLayout.CENTER); if(allowEdit){ JPanel buttonsPanel=new JPanel(); buttonsPanel.setOpaque(false); buttonsPanel.add(new JButton(editAction)); buttonsPanel.add(new JButton(newLibraryAction)); buttonsPanel.add(new JButton(deleteAction)); add(buttonsPanel, BorderLayout.SOUTH); } } void buildActions(){ final edu.xtec.util.Options options=settings.rb.getOptions(); editAction=new AbstractAction( options.getMsg(MSG_ID+"edit_caption"), ResourceManager.getImageIcon("icons/edit.gif") ){ public void actionPerformed(ActionEvent ev){ LibraryManagerElement lme=(LibraryManagerElement)list.getSelectedValue(); if(lme!=null){ try{ if(!settings.promptPassword(LibraryPane.this, null)) return; ProjectLibrary pl=ProjectLibrary.loadProjectLibrary(lme.path, settings.rb); if(pl.editProjectLibrary(LibraryPane.this)){ if(!pl.settings.title.equals(lme.name)){ lme.name=pl.settings.title; modified=true; list.repaint(); } } } catch(Exception ex){ System.err.println("Unable edit projectLibrary:\n"+ex); return; } } } }; editAction.putValue(AbstractAction.SHORT_DESCRIPTION, options.getMsg(MSG_ID+"edit_tooltip")); editAction.setEnabled(false); deleteAction=new AbstractAction( options.getMsg(MSG_ID+"delete_caption"), ResourceManager.getImageIcon("icons/delete.gif") ){ public void actionPerformed(ActionEvent ev){ LibraryManagerElement lme=(LibraryManagerElement)list.getSelectedValue(); if(lme!=null){ int currentIndex=list.getSelectedIndex(); try{ if(!settings.promptPassword(LibraryPane.this, null) || !(options.getMessages().showQuestionDlg(null, MSG_ID+"delete_confirm", null, "yn")==Messages.YES)) return; libraries.removeElement(lme); modified=true; list.setSelectedIndex(Math.max(0, currentIndex-1)); } catch(Exception ex){ System.err.println("Unable to delete projectLibrary:\n"+ex); return; } } } }; deleteAction.putValue(AbstractAction.SHORT_DESCRIPTION, options.getMsg(MSG_ID+"delete_tooltip")); deleteAction.setEnabled(false); newLibraryAction=new AbstractAction( options.getMsg(MSG_ID+"new_caption"), ResourceManager.getImageIcon("icons/database_new.gif") ){ public void actionPerformed(ActionEvent ev){ if(!settings.promptPassword(LibraryPane.this, null)) return; /* Object[] opcions = { options.getMsg(MSG_ID+"createNewLibrary"), options.getMsg(MSG_ID+"connectToLibrary"), options.getMsg("CANCEL")}; int n = JOptionPane.showOptionDialog(LibraryPane.this, options.getMsg(MSG_ID+"new_prompt"), null, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcions, opcions[0]); LibraryManagerElement lme=null; if(n==JOptionPane.YES_OPTION) lme=createNewProjectLibrary(null, null); else if(n==JOptionPane.NO_OPTION) lme=locateNewProjectLibrary(null); */ LibraryManagerElement lme=NewLibraryDlg.getLibraryManagerElement(LibraryManager.this, LibraryPane.this); if(lme!=null){ modified=true; libraries.addElement(lme); list.setSelectedValue(lme, true); } } }; newLibraryAction.putValue(AbstractAction.SHORT_DESCRIPTION, options.getMsg(MSG_ID+"new_tooltip")); } public LibraryManagerElement getCurrentSelected(){ return current; } public void addListSelectionListener(ListSelectionListener lst){ list.addListSelectionListener(lst); } public void valueChanged(ListSelectionEvent ev){ if(ev!=null && !ev.getValueIsAdjusting()){ current=(LibraryManagerElement)list.getSelectedValue(); editAction.setEnabled(current!=null && current.editable); deleteAction.setEnabled(current!=null); //list.setToolTipText(item==null ? null : item.settings.description); } } } class LibraryDialog extends edu.xtec.util.ExtendedJDialog implements ListSelectionListener{ LibraryManagerElement result=null; Action selectAction, cancelAction; LibraryPane pane; boolean allowEdit, onlyEditable; LibraryDialog(boolean allowEdit, boolean selectOnlyEditable){ super(settings.rb.getComponent(), settings.rb.getMsg(MSG_ID+"caption"), true); this.allowEdit=allowEdit; onlyEditable=selectOnlyEditable; pane=new LibraryPane(allowEdit, selectOnlyEditable); pane.setOpaque(false); buildActions(); pane.addListSelectionListener(this); getContentPane().add(pane, BorderLayout.CENTER); JPanel buttonsPanel=new JPanel(); buttonsPanel.setOpaque(false); //buttonsPanel.add(new JButton(selectAction)); JButton btSelect=new JButton(selectAction); btSelect.setDefaultCapable(true); buttonsPanel.add(btSelect); buttonsPanel.add(new JButton(cancelAction)); getContentPane().add(buttonsPanel, BorderLayout.SOUTH); getRootPane().setDefaultButton(btSelect); pack(); centerOver(settings.rb.getComponent()); pane.list.setSelectedIndex(0); valueChanged(new ListSelectionEvent(pane.list, 0, 0, false)); valueChanged(null); } public void valueChanged(ListSelectionEvent ev){ if(ev!=null && !ev.getValueIsAdjusting()){ LibraryManagerElement item=pane.getCurrentSelected(); selectAction.setEnabled(item!=null && item.exists && (!onlyEditable || item.editable)); } } void closeDialog(){ if(modified){ settings.save(); modified=false; } setVisible(false); } void buildActions(){ final edu.xtec.util.Options options=settings.rb.getOptions(); selectAction=new AbstractAction( options.getMsg(MSG_ID+"select_caption"), ResourceManager.getImageIcon("icons/file_open.gif") ){ public void actionPerformed(ActionEvent ev){ result=(LibraryManagerElement)pane.list.getSelectedValue(); closeDialog(); } }; selectAction.putValue(AbstractAction.SHORT_DESCRIPTION, options.getMsg(MSG_ID+"select_tooltip")); selectAction.setEnabled(false); cancelAction=new AbstractAction( options.getMsg(MSG_ID+"cancel_caption"), ResourceManager.getImageIcon("icons/cancel.gif") ){ public void actionPerformed(ActionEvent ev){ result=null; closeDialog(); } }; cancelAction.putValue(AbstractAction.SHORT_DESCRIPTION, options.getMsg(MSG_ID+"cancel_tooltip")); } } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectLibraryEditorPanel.java0000644000175000017500000001051011377161311025073 0ustar /* * File : ProjectLibraryEditorPanel.java * Created : 10-jun-2002 13:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.edit.*; import edu.xtec.util.Options; import edu.xtec.jclic.misc.Utils; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class ProjectLibraryEditorPanel extends EditorPanel { /** Creates new form ProjectLibraryEditorPanel */ public ProjectLibraryEditorPanel(Options options) { super(options); ProjectLibraryEditor.createActions(options); initComponents(); postInit(250, true, false ); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel titleLb; mainPanel = new javax.swing.JPanel(); titleLb = new javax.swing.JLabel(); titleText = new javax.swing.JTextField(); titleText.getDocument().addDocumentListener(this); setLayout(new java.awt.BorderLayout()); mainPanel.setLayout(new java.awt.GridBagLayout()); mainPanel.setOpaque(false); titleLb.setText(options.getMsg("edit_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); mainPanel.add(titleLb, gridBagConstraints); titleText.setToolTipText(options.getMsg("library_dlg_name_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); mainPanel.add(titleText, gridBagConstraints); add(mainPanel, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return e instanceof ProjectLibraryEditor; } protected ProjectLibrary getProjectLibrary(){ if(editor==null) return null; else return ((ProjectLibraryEditor)editor).getProjectLibrary(); //return (ProjectLibrary)editor.getData(); } public void fillData(){ ProjectLibrary p=getProjectLibrary(); titleText.setText(p==null ? options.getMsg("UNNAMED") : p.settings.title); } public void saveData(){ ProjectLibrary p=getProjectLibrary(); if(p!=null){ p.settings.title=checkEmptyString(titleText.getText(), true, options.getMsg("UNNAMED")); titleText.setText(p.settings.title); } } /* public boolean isModified(){ boolean result=super.isModified(); if(!result && getProjectLibrary()!=null){ result=!(Utils.compareObjects (titleText.getText() , getProjectLibrary().settings.title)); } return result; } */ protected javax.swing.Icon getIcon(){ return ProjectLibraryEditor.getIcon(); } protected String getTitle(){ return options.getMsg("library_dlg_title"); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JPanel mainPanel; private javax.swing.JTextField titleText; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/ProjectLibrary.java0000644000175000017500000002337111377161311022755 0ustar /* * File : ProjectLibrary.java * Created : 04-jun-2002 10:37 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.*; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.activities.panels.*; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.util.ResourceManager; import edu.xtec.jclic.bags.*; import javax.swing.tree.*; import javax.swing.*; import javax.swing.event.*; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.io.FileOutputStream; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.util.ResourceBridge; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ProjectLibrary extends JClicProject implements Editable{ public static final String LIBRARY_TYPE="library"; public static final String MSG_ID="library_"; /** Creates new ProjectLibrary */ private ProjectLibrary(ResourceBridge rb, FileSystem fileSystem, String fullPath) { super(rb, fileSystem, fullPath); type=LIBRARY_TYPE; } //public void load(org.jdom.Element e) throws Exception{ public void setProperties(org.jdom.Element e, Object aux) throws Exception{ type=null; super.setProperties(e, aux); if(!LIBRARY_TYPE.equals(type)) throw new Exception(bridge.getMsg("library_badFormat")); } public static ProjectLibrary createNewProjectLibrary(ResourceBridge rb, FileSystem fileSystem){ ProjectLibrary pl=new ProjectLibrary(rb, fileSystem, null); pl.settings.title=rb.getMsg("library_newLibraryName"); Menu m=new Menu(pl); m.name="main"; String description=rb.getMsg("library_mainMenu"); m.description=description; /* edu.xtec.jclic.boxes.ActiveBoxContent initMess=new edu.xtec.jclic.boxes.ActiveBoxContent(); initMess.setBoxBase(new edu.xtec.jclic.boxes.BoxBase()); initMess.setTextContent(description); m.setMessage(Activity.MSG_TYPE[Activity.MAIN], initMess); */ ActiveBoxContent[] messages=m.getMessages(); messages[Activity.MAIN]=new ActiveBoxContent(); messages[Activity.MAIN].setBoxBase(new BoxBase()); messages[Activity.MAIN].setTextContent(description); pl.activityBag.addActivity(m); pl.activitySequence.add(new ActivitySequenceElement(m.name, true)); return pl; } public static ProjectLibrary getProjectLibrary(org.jdom.Element e, ResourceBridge rb, FileSystem fileSystem, String fullPath) throws Exception{ ProjectLibrary pl=new ProjectLibrary(rb, fileSystem, fullPath); //pl.load(e); pl.setProperties(e, null); return pl; } public static ProjectLibrary loadProjectLibrary(String fullPath, ResourceBridge rb) throws Exception{ FileSystem fs=FileSystem.createFileSystem(fullPath, rb); org.jdom.Document doc=fs.getXMLDocument(fs.getFileNameOf(fullPath)); ProjectLibrary pl=new ProjectLibrary(rb, fs, fullPath); //pl.load(doc.getRootElement()); pl.setProperties(doc.getRootElement(), null); return pl; } public void save(String path) throws Exception{ if(path==null) path=fullPath; FileOutputStream fos=fileSystem.createSecureFileOutputStream(path); saveDocument(fos); fos.close(); } public String toString(){ return settings.title; } public String getPublicName(){ //System.out.println("public name is: "+settings.title); return settings.title; } public Menu getRootMenu(){ Menu result=null; if(activitySequence.getSize()>0){ try{ Activity act=null; ActivitySequenceElement ase=activitySequence.getElement(0, false); if(ase!=null){ act=Activity.getActivity(activityBag.getElement(ase.getActivityName()).getData(), this); if(act instanceof Menu){ result=(Menu)act; } } } catch(Exception ex){ System.err.println("Error reading project library!\n"+ex); } } return result; } public Editor getEditor(Editor parent){ return Editor.createEditor(getClass().getName()+"Editor", this, parent); } public boolean editProjectLibrary(Object parent){ ProjectLibraryDialog pld; if(parent instanceof JDialog) pld=new ProjectLibraryDialog(true, true, (JDialog)parent); else pld=new ProjectLibraryDialog(true, true); pld.setVisible(true); return pld.accept; } protected JComponent getRbComponent(){ if(bridge==null) return null; return bridge.getComponent(); } protected String getRbMessage(String msg){ if(bridge==null){ return ""; } return bridge.getMsg(msg); } class ProjectLibraryDialog extends edu.xtec.util.ExtendedJDialog{ ProjectLibraryEditor pled; EditorTreePanel etp; Menu result=null; boolean accept=false; //boolean modified=false; boolean allowEdit, allowNewMenu; Action selectAction, cancelAction; ProjectLibraryDialog(boolean allowNewMenu, boolean allowEdit, JDialog parent){ super(parent, bridge.getMsg(MSG_ID+"caption"), true); this.allowEdit=allowEdit; this.allowNewMenu=allowNewMenu; init(); } ProjectLibraryDialog(boolean allowNewMenu, boolean allowEdit){ //super(rb.getComponent(), rb.getMsg(MSG_ID+"caption"), true); super(getRbComponent(), getRbMessage(MSG_ID+"caption"), true); this.allowEdit=allowEdit; this.allowNewMenu=allowNewMenu; init(); } protected void init(){ buildActions(); pled=(ProjectLibraryEditor)getEditor(null); etp=new EditorTreePanel(pled, bridge.getOptions(), !allowEdit, (allowEdit ? null : Menu.class)) { protected void currentItemChanged(){ if(!allowEdit) selectAction.setEnabled(currentItem!=null); super.currentItemChanged(); } }; getContentPane().add(etp, BorderLayout.CENTER); JPanel buttonsPanel=new JPanel(); buttonsPanel.add(new JButton(selectAction)); buttonsPanel.add(new JButton(cancelAction)); /* if(allowNewMenu || allowEdit){ buttonsPanel.add(new JButton(newFolderAction)); } */ getContentPane().add(buttonsPanel, BorderLayout.SOUTH); pack(); centerOver(bridge.getComponent()); } void buildActions(){ String s=allowEdit ? "select_caption_ok" : "select_caption"; selectAction=new AbstractAction( bridge.getMsg(MSG_ID+s), ResourceManager.getImageIcon(allowEdit ? "icons/commit_changes.gif" : "icons/file_open.gif") ){ public void actionPerformed(ActionEvent ev){ if(allowEdit && etp.getCurrentPanel()!=null){ etp.getCurrentPanel().save(); if(pled.isModified()){ pled.saveMenus(pled); try{ save(null); } catch(Exception ex){ bridge.getOptions().getMessages().showErrorWarning(getParent(), "FILE_ERR_SAVING", fullPath, ex, null); } } } if(etp.currentItem!=null && etp.currentItem instanceof MenuEditor){ result=((MenuEditor)etp.currentItem).getMenu(); } else{ result=null; if(!allowEdit) return; } //modified=etp.modified; accept=true; setVisible(false); } }; selectAction.putValue(AbstractAction.SHORT_DESCRIPTION, bridge.getMsg(MSG_ID+s+"_tooltip")); if(!allowEdit) selectAction.setEnabled(false); cancelAction=new AbstractAction( bridge.getMsg(MSG_ID+"cancel_caption"), ResourceManager.getImageIcon("icons/cancel.gif") ){ public void actionPerformed(ActionEvent ev){ result=null; //modified=false; accept=false; setVisible(false); } }; cancelAction.putValue(AbstractAction.SHORT_DESCRIPTION, bridge.getMsg(MSG_ID+"cancel_tooltip")); } } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/project/NewLibraryDlg.java0000644000175000017500000001562111377161311022526 0ustar /* * File : NewLibraryDlg.java * Created : 06-sep-2004 17:09 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.project; import edu.xtec.jclic.PlayerSettings; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.StrUtils; import java.awt.Component; import java.io.File; /** * * @author Francesc */ public class NewLibraryDlg extends javax.swing.JPanel { PlayerSettings settings; Options options; /** Creates new form NewLibraryDlg */ public NewLibraryDlg(PlayerSettings settings) { this.settings=settings; this.options=settings.rb.getOptions(); initComponents(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.ButtonGroup bg; javax.swing.JLabel fileLabel; java.awt.GridBagConstraints gridBagConstraints; bg = new javax.swing.ButtonGroup(); btOptionNew = new javax.swing.JRadioButton(); btOptionLink = new javax.swing.JRadioButton(); fileLabel = new javax.swing.JLabel(); fileText = new javax.swing.JTextField(); fileBrowseBtn = new javax.swing.JButton(); setLayout(new java.awt.GridBagLayout()); btOptionNew.setSelected(true); btOptionNew.setText(options.getMsg("libraryManager_newLibaryOption")); bg.add(btOptionNew); btOptionNew.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btOptionNewActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(2, 2, 6, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(btOptionNew, gridBagConstraints); btOptionLink.setText(options.getMsg("libraryManager_connectToExistingOption")); bg.add(btOptionLink); btOptionLink.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { btOptionLinkActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.insets = new java.awt.Insets(6, 2, 2, 2); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; add(btOptionLink, gridBagConstraints); fileLabel.setText(options.getMsg("libraryManager_fileOrUrlCaption")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 20, 2, 2); add(fileLabel, gridBagConstraints); fileText.setPreferredSize(new java.awt.Dimension(200, 20)); fileText.setEnabled(false); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); gridBagConstraints.weightx = 1.0; add(fileText, gridBagConstraints); fileBrowseBtn.setText("..."); fileBrowseBtn.setToolTipText(options.getMsg("BROWSE_FILES")); fileBrowseBtn.setEnabled(false); fileBrowseBtn.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { fileBrowseBtnActionPerformed(evt); } }); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); add(fileBrowseBtn, gridBagConstraints); }//GEN-END:initComponents private void fileBrowseBtnActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_fileBrowseBtnActionPerformed int[] filters={Utils.JCLIC_FF}; String result=settings.fileSystem.chooseFile(settings.rootPath+File.separator+".", false, filters, settings.rb.getOptions(), null, this, false); if(result!=null) fileText.setText(settings.fileSystem.getFullFileNamePath(result)); }//GEN-LAST:event_fileBrowseBtnActionPerformed private void btOptionLinkActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOptionLinkActionPerformed checkEnabled(); }//GEN-LAST:event_btOptionLinkActionPerformed private void btOptionNewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btOptionNewActionPerformed checkEnabled(); }//GEN-LAST:event_btOptionNewActionPerformed public void checkEnabled(){ fileText.setEnabled(btOptionLink.isSelected()); fileBrowseBtn.setEnabled(btOptionLink.isSelected()); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JRadioButton btOptionLink; private javax.swing.JRadioButton btOptionNew; private javax.swing.JButton fileBrowseBtn; private javax.swing.JTextField fileText; // End of variables declaration//GEN-END:variables public static LibraryManagerElement getLibraryManagerElement(LibraryManager lm, Component parent){ NewLibraryDlg dlg=new NewLibraryDlg(lm.settings); Messages msg=lm.settings.rb.getOptions().getMessages(); LibraryManagerElement result=null; while(result==null && msg.showInputDlg(parent, dlg, "libraryManager_newLibraryTitle")){ if(dlg.btOptionNew.isSelected()){ result=lm.createNewProjectLibrary(null, null); break; } else{ String path=StrUtils.nullableString(dlg.fileText.getText()); if(path==null) msg.showAlert(parent, "libraryManager_warnNoFileSelected"); else result=lm.locateNewProjectLibrary(path); } } return result; } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/report/0000755000175000017500000000000011377161311017016 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/report/BasicJDBCBridge.java0000644000175000017500000005512211377161311022447 0ustar /* * File : BasicJDBCBridge.java * Created : 16-jul-2001 19:00 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import java.sql.*; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.db.ConnectionBean; import edu.xtec.util.db.ConnectionBeanProvider; import java.util.Vector; import java.util.HashMap; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BasicJDBCBridge extends Object { public static final String DEFAULT_ODBC_BRIDGE="sun.jdbc.odbc.JdbcOdbcDriver"; public static final String DEFAULT_DB="jdbc:odbc:JClicUserReports"; public static final String TABLE_PREFIX_KEY="tablePrefix"; public static final String CREATE_TABLES_KEY="createTables"; public static final String TRUST_CLIENT_DATETIME="trustClientDateTime"; public static final int OTHER=0; public static final int MYSQL=1; public static final int ORACLE=2; public static final int ACCESS=3; protected String driver; protected String url; public String DBMSName; public int DBMSType; protected ConnectionBeanProvider cbp; protected boolean createTables; protected String tablePrefix; /** Creates new BasicJDBCBridge */ //public BasicJDBCBridge(String setDriver, String setUrl, String systemUser, String systemPwd) throws Exception{ public BasicJDBCBridge(ConnectionBeanProvider cbp, boolean createTables, String tablePrefix) throws Exception{ this.cbp=cbp; this.createTables=createTables; this.tablePrefix=(tablePrefix==null ? "" : tablePrefix); if(createTables) checkTables(); } public String getTableName(String tableName){ return getTableName(tableName, null); } public String getTableName(String tableName, String alias){ StringBuffer result=new StringBuffer(); if(tablePrefix!=null && tablePrefix.length()>0) result.append(tablePrefix); result.append(tableName); if(alias!=null) result.append(" ").append(alias); return result.substring(0); } public ConnectionBeanProvider getConnectionBeanProvider(){ return cbp; } public static final Object[][] TABLE_DEFS={ {"SETTINGS", new String[]{ "SETTING_KEY VARCHAR(255) NOT NULL", "SETTING_VALUE VARCHAR(255)", "PRIMARY KEY (SETTING_KEY)" }}, {"GROUPS", new String[]{ "GROUP_ID VARCHAR(50) NOT NULL", "GROUP_NAME VARCHAR(80) NOT NULL", "GROUP_DESCRIPTION VARCHAR(255)", "GROUP_ICON VARCHAR(255)", "GROUP_CODE VARCHAR(50)", "GROUP_KEYWORDS VARCHAR(255)", "PRIMARY KEY (GROUP_ID)" }}, {"USERS", new String[]{ "USER_ID VARCHAR(50) NOT NULL", "GROUP_ID VARCHAR(50) NOT NULL", "USER_NAME VARCHAR(80) NOT NULL", "USER_PWD VARCHAR(255)", "USER_ICON VARCHAR(255)", "USER_CODE VARCHAR(50)", "USER_KEYWORDS VARCHAR(255)", "PRIMARY KEY (USER_ID)" }}, {"SESSIONS", new String[]{ "SESSION_ID VARCHAR(50) NOT NULL", "USER_ID VARCHAR(50) NOT NULL", "SESSION_DATETIME TIMESTAMP NOT NULL", "PROJECT_NAME VARCHAR(100) NOT NULL", "SESSION_KEY VARCHAR(50)", "SESSION_CODE VARCHAR(50)", "SESSION_CONTEXT VARCHAR(50)", "PRIMARY KEY (SESSION_ID)" }}, {"ACTIVITIES", new String[]{ "SESSION_ID VARCHAR(50) NOT NULL", "ACTIVITY_ID INTEGER(5) NOT NULL", "ACTIVITY_NAME VARCHAR(50) NOT NULL", "NUM_ACTIONS INTEGER(4)", "SCORE INTEGER(4)", "ACTIVITY_SOLVED INTEGER(1)", "QUALIFICATION INTEGER(3)", "TOTAL_TIME INTEGER(5)", "ACTIVITY_CODE VARCHAR(50)", "PRIMARY KEY (SESSION_ID,ACTIVITY_ID)" }}, {"ACTIONS", new String[]{ "SESSION_ID VARCHAR(50) NOT NULL", "ACTIVITY_ID INTEGER(5) NOT NULL", "ACTION_ID INTEGER(4) NOT NULL", "ACTION_TYPE VARCHAR(20) NOT NULL", "ACTION_SOURCE VARCHAR(255)", "ACTION_DEST VARCHAR(255)", "ACTION_OK INTEGER(1)", "PRIMARY KEY (SESSION_ID,ACTIVITY_ID,ACTION_ID)" }} }; public static final String[][] DEFAULT_SETTINGS={ {"ALLOW_CREATE_GROUPS","false"}, {"ALLOW_CREATE_USERS","false"}, {"SHOW_GROUP_LIST","true"}, {"SHOW_USER_LIST","true"}, {"USER_TABLES","true"}, {"TIME_LAP","10"} }; protected void checkTables() throws Exception{ Exception ex=null; ConnectionBean cb=cbp.getConnectionBean(); try{ Connection con=cb.getConnection(); java.sql.DatabaseMetaData dbmd = con.getMetaData(); DBMSName=dbmd.getDatabaseProductName(); if(DBMSName!=null){ DBMSName=DBMSName.toLowerCase(); if(DBMSName.indexOf("oracle")>=0) DBMSType=ORACLE; else if(DBMSName.indexOf("mysql")>=0) DBMSType=MYSQL; else if(DBMSName.indexOf("access")>=0) DBMSType=ACCESS; else DBMSType=OTHER; } for(int i=0; i0){ int intP2=sf.indexOf(')', intP); sf=sf.substring(0, intP+7)+(intP2>0 && sf.length()>intP2+1 ? sf.substring(intP2+1) : ""); } } else if(DBMSType==ORACLE){ // Change TIMESTAMP for DATE int intP=sf.indexOf("TIMESTAMP"); if(intP>0){ sf=sf.substring(0, intP)+"DATE"+(sf.length()>intP+9 ? sf.substring(intP+9) : ""); } intP=sf.indexOf("INTEGER"); if(intP>0){ sf=sf.substring(0, intP)+"NUMBER"+sf.substring(intP+7); } } sb.append(sf).append(","); } sb.deleteCharAt(sb.length()-1); sb.append(")"); //System.out.println("CREATING TABLE "+tName); stmt.executeUpdate(sb.substring(0)); if(i==0){ for(int j=0; j0){ sb.append(",GROUP_DESCRIPTION"); n++; } sb.append(") VALUES(?,?"); for(int i=0; i0) stmt.setString(n++, gd.description); stmt.executeUpdate(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return gd.getId(); } public String newUser(UserData ud) throws Exception{ Exception ex=null; StringBuffer sb=new StringBuffer( "INSERT INTO "+getTableName("USERS")+ " (GROUP_ID,USER_ID,USER_NAME"); int n=0; if(ud.hasIcon()){ sb.append(",USER_ICON"); n++; } if(ud.pwd!=null && ud.pwd.length()>0){ sb.append(",USER_PWD"); n++; } sb.append(") VALUES(?,?,?"); for(int i=0; i0) stmt.setString(n++, ud.pwd); stmt.executeUpdate(); } catch(Exception e){ ex=e; } finally{ cb.closeStatement(stmt); cbp.freeConnectionBean(cb); if(ex!=null) throw ex; } return ud.getId(); } public static String trimStr(String s){ String result=s; if(result!=null) result=result.trim(); return result; } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/report/JDBCReporter.java0000644000175000017500000001573011377161311022114 0ustar /* * File : JDBCReporter.java * Created : 12-jul-2001 18:56 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.report; import edu.xtec.jclic.Activity; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.bags.*; import java.util.HashMap; import java.util.Vector; import java.awt.Component; import edu.xtec.util.Messages; import edu.xtec.util.db.ConnectionBeanProvider; import edu.xtec.util.db.SingleConnectionBeanProvider; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class JDBCReporter extends Reporter { protected String currentSessionId; protected int actCount; protected ActivityReg lastActivity; protected BasicJDBCBridge bridge; public static final String DRIVER="driver", URL="url", SYSTEM_USER="system_user", SYSTEM_PWD="system_pwd"; /** Creates new ODBCReporter */ public JDBCReporter() { super(); bridge=null; currentSessionId=null; lastActivity=null; actCount=0; } public void end(){ super.end(); reportActivity(); if(bridge!=null){ bridge.end(); bridge=null; } } public void init(HashMap properties, Component parent, Messages msg) throws Exception{ super.init(properties, parent, msg); boolean success=false; try{ bridge=null; String driver=(String)properties.get(DRIVER); String url=(String)properties.get(URL); description="JDBC "+url; String system_user=(String)properties.get(SYSTEM_USER); String system_pwd=(String)properties.get(SYSTEM_PWD); String tablePrefix=(String)properties.get(BasicJDBCBridge.TABLE_PREFIX_KEY); boolean createTables=!"false".equalsIgnoreCase((String)properties.get(BasicJDBCBridge.CREATE_TABLES_KEY)); //ConnectionBeanProvider cbp=new SingleConnectionBeanProvider(driver, url, system_user, system_pwd, true); ConnectionBeanProvider cbp=ConnectionBeanProvider.getConnectionBeanProvider(false, driver, url, system_user, system_pwd, true); bridge=new BasicJDBCBridge(cbp, createTables, tablePrefix); if(userId==null) userId=promptUserId(parent, msg); if(userId==null) success=true; } catch(Exception ex){ msg.showErrorWarning(parent, "report_err_init", description, ex, null); } if(!success){ if(bridge!=null){ bridge.end(); bridge=null; } description=description + " ("+msg.get("report_not_connected")+")"; initiated=false; } } public String getProperty(String key, String defaultValue) throws Exception{ checkBridge(); return bridge.getProperty(key, defaultValue); } public Vector getGroups() throws Exception{ checkBridge(); return bridge.getGroups(); } public Vector getUsers(String groupId) throws Exception{ checkBridge(); return bridge.getUsers(groupId); } public String newGroup(GroupData gd) throws Exception{ checkBridge(); return bridge.newGroup(gd); } public String newUser(UserData ud) throws Exception{ checkBridge(); return bridge.newUser(ud); } public UserData getUserData(String userId) throws Exception{ checkBridge(); return bridge.getUserData(userId); } public GroupData getGroupData(String groupId) throws Exception{ checkBridge(); return bridge.getGroupData(groupId); } protected void checkBridge() throws Exception{ if(bridge==null) throw new Exception("Not connected!"); } public void newSession(JClicProject jcp, Component parent, Messages msg){ super.newSession(jcp, parent, msg); if(bridge==null || userId==null) return; reportActivity(); currentSessionId=null; } public void createDBSession(){ if(bridge==null || userId==null) return; try{ actCount=0; currentSessionId=bridge.addSession( userId, currentSession.timeMillis, currentSession.projectName, currentSession.code, sessionKey, sessionContext); }catch(Exception ex){ currentSessionId=null; bridge.end(); bridge=null; initiated=false; System.err.println("Error creating report of session:\n"+ex); } } protected void reportActivity(){ if(lastActivity!=null && bridge!=null){ if(!lastActivity.closed) lastActivity.closeActivity(); if(currentSessionId==null) createDBSession(); if(currentSessionId!=null){ try{ int actId=actCount; ActionReg ar=null; actId=bridge.addActivity( actCount++, currentSessionId, lastActivity.name, lastActivity.numActions, lastActivity.score, lastActivity.solved, lastActivity.getPrecision(), (int)(lastActivity.totalTime/1000), lastActivity.code); for(int arc=0; (ar=lastActivity.getActionReg(arc))!=null; arc++) bridge.addAction(actId, currentSessionId, arc, ar.type, ar.source, ar.dest, ar.isOk); }catch(Exception ex){ bridge.end(); bridge=null; initiated=false; System.err.println("Error reporting activity:\n"+ex); } } } if(currentSession!=null && currentSession.currentSequence!=null && currentSession.currentSequence.currentActivity!=lastActivity){ lastActivity=currentSession.currentSequence.currentActivity; } else lastActivity=null; } public void newActivity(Activity act){ super.newActivity(act); reportActivity(); } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/0000755000175000017500000000000011377161311017647 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/panels/0000755000175000017500000000000011377161311021131 5ustar jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/panels/MenuElementEditor.java0000644000175000017500000002005511377161311025363 0ustar /* * File : MenuElementEditor.java * Created : 05-jun-2002 16:14 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.project.ProjectLibrary; import edu.xtec.util.Options; import edu.xtec.jclic.misc.Utils; import javax.swing.ImageIcon; import javax.swing.Icon; import javax.swing.Action; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import javax.swing.JTree; import javax.swing.tree.TreePath; import java.awt.Component; import java.io.File; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MenuElementEditor extends Editor { protected static ImageIcon icon; protected ImageIcon meIcon; protected ProjectLibrary projectLibrary; public static EditorAction findProjectAction, findIconAction; protected static boolean actionsCreated=false; /** Creates new EditorMenuElement */ public MenuElementEditor(MenuElement me) { super(me); } protected void createChildren(){ ProjectLibrary pl=getProjectLibrary(); if(pl!=null){ meIcon=getMenuElement().getIcon(pl.mediaBag); } } public MenuElement getMenuElement(){ return (MenuElement)getUserObject(); } public MenuEditor getMenuEditorParent(){ MenuEditor result=null; if(getParent()!=null && getParent() instanceof MenuEditor) result=(MenuEditor)getParent(); return result; } public Class getEditorPanelClass() { return MenuElementEditorPanel.class; } public ProjectLibrary getProjectLibrary(){ if(projectLibrary!=null) return projectLibrary; MenuEditor me=getMenuEditorParent(); if(me!=null) projectLibrary=me.getProjectLibrary(); return projectLibrary; } public String toString(){ return getMenuElement().caption; } public EditorPanel createEditorPanel(Options options) { return new MenuElementEditorPanel(options); } public static Icon getIcon(){ if(icon==null) icon=edu.xtec.util.ResourceManager.getImageIcon("icons/miniclic.png"); return icon; } public javax.swing.Icon getIcon(boolean leaf, boolean expanded){ return leaf ? getIcon() : null; } protected boolean canClone(){ return true; } protected Editor getClone() throws Exception{ MenuElement me=MenuElement.getMenuElement(getMenuElement().getJDomElement()); MenuElementEditor mee=(MenuElementEditor)me.getEditor(null); mee.projectLibrary=getProjectLibrary(); mee.meIcon=meIcon; return mee; } public void setActionsOwner(){ allowCut = allowDelete = allowCopy = allowPaste = true; super.setActionsOwner(); if(actionsCreated){ findProjectAction.setActionOwner(this); findIconAction.setActionOwner(this); boolean hasParent=(getMenuEditorParent()!=null); MenuEditor.newMenuAction.setActionOwner(hasParent ? this : null); MenuEditor.newMenuElementAction.setActionOwner(hasParent ? this : null); } } public void clearActionsOwner(){ super.clearActionsOwner(); if(actionsCreated){ findProjectAction.setActionOwner(null); findIconAction.setActionOwner(null); MenuEditor.newMenuAction.setActionOwner(null); MenuEditor.newMenuElementAction.setActionOwner(null); } } protected void syncParentIndex(){ MenuEditor me=getMenuEditorParent(); if(me!=null){ me.getMenu().menuElements.remove(getMenuElement()); me.getMenu().menuElements.add(me.getIndex(this), getMenuElement()); } } public boolean moveUp(boolean updateSelection){ boolean result=super.moveUp(updateSelection); if(result) syncParentIndex(); return result; } public boolean moveDown(boolean updateSelection){ boolean result=super.moveDown(updateSelection); if(result) syncParentIndex(); return result; } public boolean delete(boolean updateSelection){ boolean result=false; getProjectLibrary(); MenuEditor me=getMenuEditorParent(); if(me!=null && (result=super.delete(updateSelection))==true) me.getMenu().menuElements.remove(getMenuElement()); return result; } public boolean canBeParentOf(Editor e){ return false; } public boolean canBeSiblingOf(Editor e){ return (e instanceof MenuElementEditor) || (e instanceof MenuEditor); } public void findProject(Options options, Component dlgOwner){ MenuElement me=getMenuElement(); ProjectLibrary pl=getProjectLibrary(); if(pl!=null){ int[] filters={Utils.ALL_CLIC_FF, Utils.ALL_JCLIC_FF}; String result=pl.getFileSystem().chooseFile(me.projectPath, false, filters, options, "edit_find_file", dlgOwner, false); if(result!=null){ me.projectPath=result; fireEditorDataChanged(null); } } } public void findIcon(Options options, Component dlgOwner){ MenuElement me=getMenuElement(); ProjectLibrary pl=getProjectLibrary(); if(pl!=null){ int[] filters={Utils.ALL_IMAGES_FF, Utils.GIF_FF}; String s=me.icon; if(s!=null && s.startsWith("@")) s=null; String result=pl.getFileSystem().chooseFile(s==null ? me.projectPath : s, false, filters, options, "edit_find_image", dlgOwner, false); if(result!=null){ ImageIcon ii=null; try{ ii=new ImageIcon(pl.getFileSystem().getImageFile(result)); if(ii.getIconWidth()>MenuElement.MAX_ICON_WIDTH || ii.getIconHeight()>MenuElement.MAX_ICON_HEIGHT){ options.getMessages().showAlert(dlgOwner, "menuElement_err_iconTooLarge"); ii=null; } } catch(Exception ex){ System.err.println("Error reading image "+result+"\n"+ex); } if(ii!=null){ me.icon=result; meIcon=me.getIcon(pl.mediaBag); fireEditorDataChanged(null); } } } } public static void createActions(Options options){ createBasicActions(options); if(!actionsCreated){ findProjectAction=new EditorAction("edit_find_file", "icons/file_open.gif", "edit_find_file", options){ protected void doAction(Editor e){ if(e instanceof MenuElementEditor) ((MenuElementEditor)e).findProject(this.options, getComponentSrc()); } }; findIconAction=new EditorAction("edit_find_image", "icons/file_open.gif", "edit_find_image", options){ protected void doAction(Editor e){ if(e instanceof MenuElementEditor) ((MenuElementEditor)e).findIcon(this.options, getComponentSrc()); } }; actionsCreated=true; } } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/panels/MenuEditorPanel.java0000644000175000017500000001225011377161311025027 0ustar /* * File : MenuEditorPanel.java * Created : 10-jun-2002 09:59 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.edit.Editor; import edu.xtec.jclic.edit.EditorPanel; import edu.xtec.util.Options; import edu.xtec.util.SmallButton; import java.awt.Container; import javax.swing.Icon; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class MenuEditorPanel extends EditorPanel { /** Creates new form MenuEditorPanel */ public MenuEditorPanel(Options options) { super(options); MenuEditor.createActions(options); initComponents(); postInit(250, true, true); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel captionLb; java.awt.GridBagConstraints gridBagConstraints; mainPanel = new javax.swing.JPanel(); captionLb = new javax.swing.JLabel(); captionText = new javax.swing.JTextField(); captionText.getDocument().addDocumentListener(this); setLayout(new java.awt.BorderLayout()); mainPanel.setLayout(new java.awt.GridBagLayout()); mainPanel.setOpaque(false); captionLb.setLabelFor(captionText); captionLb.setText(options.getMsg("edit_name")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); mainPanel.add(captionLb, gridBagConstraints); captionText.setToolTipText(options.getMsg("menu_dlg_name_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); mainPanel.add(captionText, gridBagConstraints); add(mainPanel, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents /* private void captionTextActionPerformed(java.awt.event.ActionEvent evt) { setModified(true); save(); } */ public boolean checkIfEditorValid(Editor e) { return e instanceof MenuEditor; } /* public void clear() { super.clear(); captionText.setText(null); } */ protected MenuEditor getMenuEditor(){ return (MenuEditor)editor; } protected Menu getMenu(){ if(editor==null) return null; else return getMenuEditor().getMenu(); } public void fillData() { Menu m=getMenu(); captionText.setText(m==null ? "" : m.description); } public void saveData(){ Menu m=getMenu(); if(m!=null){ getMenuEditor().setDescription(captionText.getText()); // Is this really useful? //captionText.setText(m.description); //getMenuEditor().saveData(); } } /* public boolean isModified(){ boolean result=super.isModified(); if(!result && getMenu()!=null){ result=!(Utils.compareObjects (captionText.getText() , getMenu().description)); } return result; } */ protected Icon getIcon(){ return MenuEditor.getIcon(); } protected String getTitle(){ return options.getMsg("menu_dlg_title"); } protected void addActionsTo(Container cnt){ cnt.add(new SmallButton(MenuEditor.newMenuElementAction)); cnt.add(new SmallButton(MenuEditor.newMenuAction)); cnt.add(new SmallButton(Editor.moveUpAction)); cnt.add(new SmallButton(Editor.moveDownAction)); cnt.add(new SmallButton(Editor.copyAction)); cnt.add(new SmallButton(Editor.cutAction)); cnt.add(new SmallButton(Editor.pasteAction)); cnt.add(new SmallButton(Editor.deleteAction)); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JTextField captionText; private javax.swing.JPanel mainPanel; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/panels/MenuElementEditorPanel.java0000644000175000017500000003007011377161311026341 0ustar /* * File : MenuElementEditorPanel.java * Created : 05-jun-2002 12:17 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.SmallButton; import java.awt.Container; import javax.swing.ImageIcon; import javax.swing.DefaultComboBoxModel; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class MenuElementEditorPanel extends EditorPanel { private static java.util.Vector standardIcons; private java.util.Vector icons; /** Creates new form MenuElementEditPanel */ public MenuElementEditorPanel(edu.xtec.util.Options options) { super(options); MenuEditor.createActions(options); MenuElementEditor.createActions(options); buildIconList(); initComponents(); postInit(250, true, true); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents javax.swing.JLabel captionLabel; javax.swing.JLabel descLabel; java.awt.GridBagConstraints gridBagConstraints; javax.swing.JLabel iconLabel; javax.swing.JLabel projectLabel; mainPanel = new javax.swing.JPanel(); projectLabel = new javax.swing.JLabel(); projectText = new javax.swing.JTextField(); projectText.getDocument().addDocumentListener(this); btFindProject = new SmallButton(MenuElementEditor.findProjectAction); iconLabel = new javax.swing.JLabel(); iconCombo = new javax.swing.JComboBox(new DefaultComboBoxModel(icons)); iconCombo.addActionListener(this); btFindIcon = new SmallButton(MenuElementEditor.findIconAction); captionLabel = new javax.swing.JLabel(); captionText = new javax.swing.JTextField(); captionText.getDocument().addDocumentListener(this); descLabel = new javax.swing.JLabel(); descText = new javax.swing.JTextField(); descText.getDocument().addDocumentListener(this); setLayout(new java.awt.BorderLayout()); setPreferredSize(new java.awt.Dimension(350, 300)); mainPanel.setLayout(new java.awt.GridBagLayout()); mainPanel.setOpaque(false); projectLabel.setText(options.getMsg("menuElement_dlg_project")); projectLabel.setToolTipText(options.getMsg("menuElement_dlg_project_tooltip")); projectLabel.setLabelFor(projectText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); mainPanel.add(projectLabel, gridBagConstraints); projectText.setToolTipText(options.getMsg("menuElement_dlg_project_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = 2; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.weightx = 1.0; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 2); mainPanel.add(projectText, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; mainPanel.add(btFindProject, gridBagConstraints); iconLabel.setText(options.getMsg("menuElement_dlg_icon")); iconLabel.setToolTipText(options.getMsg("menuElement_dlg_icon_tooltip")); iconLabel.setLabelFor(iconCombo); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); mainPanel.add(iconLabel, gridBagConstraints); iconCombo.setToolTipText(options.getMsg("menuElement_dlg_icon_tooltip")); iconCombo.setRenderer(new edu.xtec.util.CustomListCellRenderer()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); mainPanel.add(iconCombo, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; mainPanel.add(btFindIcon, gridBagConstraints); captionLabel.setText(options.getMsg("edit_text")); captionLabel.setToolTipText(options.getMsg("menuElement_dlg_text_tooltip")); captionLabel.setLabelFor(captionText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); mainPanel.add(captionLabel, gridBagConstraints); captionText.setToolTipText(options.getMsg("menuElement_dlg_text_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); mainPanel.add(captionText, gridBagConstraints); descLabel.setText(options.getMsg("menuElement_dlg_description")); descLabel.setToolTipText(options.getMsg("menuElement_dlg_description_tooltip")); descLabel.setLabelFor(descText); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST; gridBagConstraints.insets = new java.awt.Insets(2, 4, 2, 2); mainPanel.add(descLabel, gridBagConstraints); descText.setToolTipText(options.getMsg("menuElement_dlg_description_tooltip")); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; gridBagConstraints.insets = new java.awt.Insets(2, 2, 2, 4); mainPanel.add(descText, gridBagConstraints); add(mainPanel, java.awt.BorderLayout.CENTER); }//GEN-END:initComponents public boolean checkIfEditorValid(Editor e) { return e instanceof MenuElementEditor; } /* public void clear() { super.clear(); captionText.setText(null); projectText.setText(null); descText.setText(null); iconCombo.setSelectedItem(null); } */ public void fillData(){ MenuElement me=getMenuElement(); captionText.setText(me==null ? "" : me.caption); projectText.setText(me==null ? "" : me.projectPath); descText.setText(me==null ? "" : me.description); if(getMeIcon()!=null && !icons.contains(getMeIcon())){ // in jdk 1.3.1 DefaultComboBoxModel build by means of Vector references the original Vector DefaultComboBoxModel model=(DefaultComboBoxModel)iconCombo.getModel(); model.addElement(getMeIcon()); } iconCombo.setSelectedItem(getMeIcon()); } /* public boolean isModified(){ boolean result=super.isModified(); if(!result){ MenuElement me=getMenuElement(); if(me!=null){ result= !(Utils.compareObjects(captionText.getText(), me.caption) && Utils.compareObjects(projectText.getText(), me.projectPath) && Utils.compareObjects(descText.getText(), me.description) && Utils.compareObjects(iconCombo.getSelectedItem(), getMeIcon()) ); } } return result; } */ protected MenuElement getMenuElement(){ if(editor==null) return null; else return (getMeEditor().getMenuElement()); } public void saveData(){ MenuElement me=getMenuElement(); if(me!=null){ me.caption=captionText.getText(); me.projectPath=projectText.getText(); me.description=descText.getText(); getMeEditor().meIcon=(ImageIcon)iconCombo.getSelectedItem(); if(getMeIcon()!=null) me.icon=getMeIcon().getDescription(); } } protected void setEditor(Editor e){ super.setEditor(e); if(e!=null){ icons=new java.util.Vector(standardIcons); iconCombo.setModel(new DefaultComboBoxModel(icons)); } } protected javax.swing.Icon getIcon(){ return MenuElementEditor.getIcon(); } protected MenuElementEditor getMeEditor(){ return (MenuElementEditor)editor; } protected ImageIcon getMeIcon(){ MenuElementEditor mee=getMeEditor(); return mee==null ? null : mee.meIcon; } protected String getTitle(){ return options.getMsg("menuElement_dlg_title"); } protected void addActionsTo(Container cnt){ cnt.add(new SmallButton(MenuEditor.newMenuElementAction)); cnt.add(new SmallButton(MenuEditor.newMenuAction)); cnt.add(new SmallButton(Editor.moveUpAction)); cnt.add(new SmallButton(Editor.moveDownAction)); cnt.add(new SmallButton(Editor.copyAction)); cnt.add(new SmallButton(Editor.cutAction)); cnt.add(new SmallButton(Editor.pasteAction)); cnt.add(new SmallButton(Editor.deleteAction)); } protected void buildIconList(){ if(standardIcons==null){ standardIcons=new java.util.Vector(); for(int i=0; i<4; i++){ //String s="ico0"+i+".gif"; String s="ico0"+i+".png"; ImageIcon ii=edu.xtec.util.ResourceManager.getImageIcon("icons/"+s); if(ii!=null) standardIcons.add(ii); } } icons=new java.util.Vector(standardIcons); } /* class ComboBoxRenderer extends javax.swing.JLabel implements javax.swing.ListCellRenderer { public ComboBoxRenderer() { setOpaque(true); setHorizontalAlignment(CENTER); setVerticalAlignment(CENTER); } public java.awt.Component getListCellRendererComponent(javax.swing.JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { if (isSelected) { setBackground(list.getSelectionBackground()); setForeground(list.getSelectionForeground()); } else { setBackground(list.getBackground()); setForeground(list.getForeground()); } ImageIcon icon = (ImageIcon)value; //setText(icon.getDescription()); setIcon(icon); return this; } } */ // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btFindIcon; private javax.swing.JButton btFindProject; private javax.swing.JTextField captionText; private javax.swing.JTextField descText; private javax.swing.JComboBox iconCombo; private javax.swing.JPanel mainPanel; private javax.swing.JTextField projectText; // End of variables declaration//GEN-END:variables } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/panels/MenuEditorPanel.form0000644000175000017500000000676311377161311025065 0ustar
jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/activities/panels/MenuEditor.java0000644000175000017500000003260111377161311024051 0ustar /* * File : MenuEditor.java * Created : 05-jun-2002 17:01 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.*; import edu.xtec.jclic.edit.*; import edu.xtec.jclic.project.*; import edu.xtec.util.Options; import edu.xtec.jclic.bags.ActivitySequenceElement; import java.awt.Component; import javax.swing.Action; import javax.swing.Icon; import javax.swing.AbstractAction; import java.awt.event.ActionEvent; import javax.swing.JTree; import javax.swing.tree.TreePath; import javax.swing.ImageIcon; import edu.xtec.jclic.boxes.ActiveBoxContent; import edu.xtec.jclic.boxes.BoxBase; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MenuEditor extends Editor{ protected static ImageIcon icon; public static EditorAction newMenuElementAction, newMenuAction; public static boolean actionsCreated=false; protected ProjectLibrary projectLibrary; /** Creates new MenuEditor */ public MenuEditor(Menu menu) { super(menu); } protected void createChildren(){ Menu m=getMenu(); ProjectLibrary pl=getProjectLibrary(); if(pl!=null && !m.menuElements.isEmpty()){ for(int i=0; i
jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/ExtendedPlayer.java0000644000175000017500000003653311377161311021275 0ustar /* * File : ExtendedPlayer.java * Created : 25-oct-2001 10:10 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.jclic.skins.Skin; import edu.xtec.jclic.fileSystem.*; import edu.xtec.util.*; import edu.xtec.jclic.project.*; import edu.xtec.jclic.misc.Utils; import javax.swing.*; import java.awt.event.KeyEvent; import java.awt.event.ActionEvent; import java.util.Properties; import java.util.Vector; import java.util.StringTokenizer; import java.io.File; import java.io.FileOutputStream; import java.awt.Dimension; import java.awt.Toolkit; import edu.xtec.util.KJMenuItem; import edu.xtec.jclic.project.ProjectInstaller; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ExtendedPlayer extends Player { JFrame debugFrame=null; public static final String MESSAGES_BUNDLE="messages.PlayerMessages"; protected int recentFilesOffset; protected JMenuBar menuBar; protected JMenu fileMenu, recentFilesMenu, activityMenu, toolsMenu, helpMenu; protected PlayerSettings settings; /** Creates new ExtendedPlayer */ public ExtendedPlayer(Options options){ super(options); } protected void init(){ //settings=PlayerSettings.loadPlayerSettings(this, options); settings=PlayerSettings.loadPlayerSettings(this); super.init(); settings.checkLibrary(); } protected void doInstall(String fileName){ if(settings.promptPassword(this, new String[]{"install_info_description", "settings_passwordRequired"})){ try{ ProjectInstallerDlg pi=ProjectInstallerDlg.getProjectInstallerDlg(this, settings.libraryManager, fileName); if(pi!=null){ pi.setVisible(true); if(pi.result!=null && !pi.cancel){ if(pi.launchNow && pi.pathToMainProject!=null) load(pi.pathToMainProject, null); else launchProjectLibrary(pi.result); } } } catch(Exception ex){ System.err.println("Error installing!"); ex.printStackTrace(); } } } public boolean start(String fullPath, String sequence){ boolean result=super.start(fullPath, sequence); if(!result){ try{ ProjectLibrary pl=settings.libraryManager.getAutoStartProjectLibrary(); if(pl!=null) launchProjectLibrary(pl); } catch(Exception ex){ System.err.println("Error loading autoStart project library!\n"+ex); } } return result; } public boolean load(String fullPath, String sequence){ boolean result=false; if(fullPath!=null && sequence==null && fullPath.endsWith(ProjectInstaller.INSTALLER_EXTENSION)) doInstall(fullPath); else result=super.load(fullPath, sequence); return result; } public Messages setMessages(){ super.setMessages(); messages.addBundle(MESSAGES_BUNDLE); return messages; } protected FileSystem createFileSystem(){ return settings.fileSystem; } protected void createMenu(){ menuBar=new JMenuBar(); fileMenu=new JMenu(messages.get("m_File")); fileMenu.setMnemonic(messages.get("m_File_Mnemonic").charAt(0)); fileMenu.add(new KJMenuItem(getAction(ACTION_OPEN_FILE))); fileMenu.add(new KJMenuItem(getAction(ACTION_OPEN_URL))); menuBar.add(fileMenu); activityMenu=new JMenu(messages.get("m_Activity")); activityMenu.setMnemonic(messages.get("m_Activity_Mnemonic").charAt(0)); activityMenu.add(new KJMenuItem(getAction(ACTION_NEXT))); activityMenu.add(new KJMenuItem(getAction(ACTION_PREV))); activityMenu.add(new KJMenuItem(getAction(ACTION_RETURN))); activityMenu.add(new KJMenuItem(getAction(ACTION_RESET))); activityMenu.addSeparator(); activityMenu.add(new KJMenuItem(getAction(ACTION_INFO))); activityMenu.add(new KJMenuItem(getAction(ACTION_HELP))); activityMenu.add(new KJMenuItem(getAction(ACTION_REPORTS))); activityMenu.addSeparator(); activityMenu.add(new KJMenuItem(getAction(ACTION_AUDIO))); menuBar.add(activityMenu); toolsMenu=new JMenu(messages.get("m_Tools")); toolsMenu.setMnemonic(messages.get("m_Tools_Mnemonic").charAt(0)); toolsMenu.add(new KJMenuItem(getAction(ACTION_LIBRARIES))); toolsMenu.add(new KJMenuItem(getAction(ACTION_SETTINGS))); menuBar.add(toolsMenu); helpMenu=new JMenu(messages.get("m_Help")); helpMenu.setMnemonic(messages.get("m_Help_Mnemonic").charAt(0)); helpMenu.add(new KJMenuItem(getAction(ACTION_ABOUT))); menuBar.add(helpMenu); } protected void postCreateMenu(){ fileMenu.addSeparator(); fileMenu.add(new KJMenuItem(getAction(ACTION_EXIT))); fileMenu.addSeparator(); recentFilesMenu=fileMenu; recentFilesOffset=fileMenu.getItemCount(); updateRecentFilesMenu(); } public void addTo(RootPaneContainer cont, Object constraints){ super.addTo(cont, constraints); checkMenu(false); } protected void checkMenu(boolean recreate){ JRootPane rp=getRootPane(); if(rp==null) return; if(recreate || rp.getJMenuBar()==null){ if(recreate || menuBar==null){ createMenu(); postCreateMenu(); } rp.setJMenuBar(menuBar); rp.revalidate(); } } protected void updateRecentFilesMenu(){ if(recentFilesMenu!=null && recentFilesOffset>=0){ JMenuItem jmi; int itemsToRemove=recentFilesMenu.getItemCount()-recentFilesOffset; for(int i=0; i=0) s=s.substring(k+1); createMenuItem(recentFilesMenu, Integer.toString(i+1)+". "+s, "recent"+i, true, KeyStroke.getKeyStroke(KeyEvent.VK_1+i, ActionEvent.ALT_MASK)); } } } } JMenuItem createMenuItem(JComponent parent, String text, String actionCommand, boolean mnemonic, KeyStroke accelerator){ JMenuItem jmi=new JMenuItem(text); if(actionCommand!=null){ jmi.setActionCommand(actionCommand); jmi.addActionListener(this); } if(mnemonic) jmi.setMnemonic(jmi.getText().charAt(0)); if(accelerator!=null) jmi.setAccelerator(accelerator); parent.add(jmi); return jmi; } public static final int ACTION_OPEN_FILE=NUM_ACTIONS, ACTION_OPEN_URL=NUM_ACTIONS+1, ACTION_EXIT=NUM_ACTIONS+2, ACTION_SETTINGS=NUM_ACTIONS+3, ACTION_LIBRARIES=NUM_ACTIONS+4, ACTION_ABOUT=NUM_ACTIONS+5, NUM_ACTIONS_EXT=NUM_ACTIONS+6; public static final String[] ACTION_NAME_EXT={"openFile", "openUrl", "exit", "settings", "libraries", "helpAbout"}; public static final String[] ACTION_ICONS_EXT={ "icons/file_open.gif", "icons/world.gif", "icons/exit_small.gif", "icons/settings.gif", "icons/database.gif", "icons/help.gif" }; protected int getNumActions(){ return NUM_ACTIONS_EXT; } protected void buildActions(){ super.buildActions(); actions[ACTION_OPEN_FILE]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ FileSystem fs=project.getFileSystem(); if(fs.isUrlBased()) fs=settings.fileSystem; int[] filters={Utils.ALL_CLIC_FF, Utils.INSTALL_FF, Utils.ALL_JCLIC_FF}; String result=fs.chooseFile(null, false, filters, options, null, ExtendedPlayer.this, false); if(result!=null){ String fileName=fs.getFullFileNamePath(result); if(load(fileName, null)) addRecentFile(fileName); } } }; actions[ACTION_OPEN_URL]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ String url=messages.showInputDlg(ExtendedPlayer.this, "URL_OPEN", "URL", "http://", "URL_OPEN", false); if(url!=null){ url=url.trim(); if(url.startsWith("http://http://")) url=url.substring(7); if(url.length()>0 && !url.equals("http://")){ if(load(url, null)) addRecentFile(url); } } } }; actions[ACTION_EXIT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ exit(); } }; actions[ACTION_SETTINGS]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ String currentLook=options.getString(LFUtil.LOOK_AND_FEEL); String currentLanguage=options.getString(Messages.LANGUAGE); String currentCountry=options.getString(Messages.COUNTRY); String currentVariant=options.getString(Messages.VARIANT); String currentSkin=options.getString(SKIN); String currentReporterClass=settings.reporterClass; String currentReporterParams=settings.reporterParams; boolean currentReporterEnabled=settings.reporterEnabled; String currentMediaSystem=settings.mediaSystem; if(settings.edit(ExtendedPlayer.this)){ settings.save(); options.syncProperties(settings.getProperties(), false); if(!settings.skin.equals(currentSkin)){ initSkin(); setSkin(null); } else if(getSkin()!=null){ AbstractButton bt=getSkin().getButton(ACTION_AUDIO); if(bt!=null) bt.setSelected(!audioEnabled); } boolean recreateMenu=false; if(!settings.lookAndFeel.equals(currentLook)){ options.setLookAndFeel(); recreateMenu=true; } if(settings.language!=null && (!StrUtils.compareObjects(settings.language, currentLanguage) || !StrUtils.compareObjects(settings.country, currentCountry) || !StrUtils.compareObjects(settings.variant, currentVariant))){ setMessages(); recreateMenu=true; } if(recreateMenu){ checkMenu(true); } if(settings.reporterEnabled && (!settings.reporterClass.equals(currentReporterClass) || !settings.reporterParams.equals(currentReporterParams))){ initReporter(); } audioEnabled=settings.soundEnabled; edu.xtec.jclic.media.EventSounds.globalEnabled=settings.systemSounds; if(!currentMediaSystem.equals(settings.mediaSystem)){ options.put(MEDIA_SYSTEM, settings.mediaSystem); edu.xtec.jclic.media.CheckMediaSystem.check(options, false); createEventSounds(); } } } }; actions[ACTION_LIBRARIES]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ try{ ProjectLibrary pl=settings.libraryManager.selectProjectLibrary(true, false); if(pl!=null) launchProjectLibrary(pl); } catch(Exception ex){ messages.showErrorWarning(ExtendedPlayer.this, "error_launchLibrary", ex); } } }; actions[ACTION_ABOUT]=new AbstractAction(){ public void actionPerformed(ActionEvent ev){ showAbout(false); } }; } protected String getActionName(int actionId){ if(actionId>=NUM_ACTIONS && actionId=NUM_ACTIONS && actionId6){ try{ int i=Integer.parseInt(ac.substring(6)); if(i>=0 && i
jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/SingleInstanceJFrame.java0000644000175000017500000003011511377161311022341 0ustar /* * File : SingleInstanceJFrame.java * Created : 19-feb-2004 14:01 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.util.Check; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.ResourceManager; import edu.xtec.util.StrUtils; import java.awt.Dimension; import java.awt.Toolkit; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.InterruptedIOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public class SingleInstanceJFrame extends javax.swing.JFrame implements Constants{ public static final String OK="OK", CANCEL="CANCEL"; public static final int DEFAULT_TIMEOUT=1000; RunnableComponent rc; javax.swing.JLabel splashLabel; String project; Options options; boolean trace; String playerClass; SocketThread socketThread; boolean initializing; boolean armed; /** Creates a new instance of SingleInstanceJFrame */ public SingleInstanceJFrame(String playerClass, String[] args, String windowTitle, String logoIcon, String frameIcon, int port) { initializing=true; setDefaultCloseOperation(javax.swing.JFrame.DO_NOTHING_ON_CLOSE); this.playerClass=playerClass; options=new Options(this); project=loadArgs(args, options); if(!checkOtherInstance(port)){ build(playerClass, args, windowTitle, frameIcon, logoIcon); armed=true; } } public boolean isArmed(){ return armed; } public static String loadArgs(String[] args, Options options){ String result=null; for(int i=0; i0){ if(args[i].startsWith("-")){ String key=null, value=null; int k=args[i].indexOf('='); if(k>0){ key=args[i].substring(1, k); value=args[i].substring(k+1); } else key=args[i].substring(1); options.put(key, value); //System.out.println(key+" is "+value); } else result=args[i]; } } return result; } protected void build(String playerClass, String[] args, String windowTitle, String frameIcon, String logoIcon) { trace=options.getBoolean(TRACE); if(trace){ for(int i=0; i>> initializing..."); // launch swingWorker sw.start(); } private void initComponents() { addWindowListener(new java.awt.event.WindowAdapter() { public void windowClosing(java.awt.event.WindowEvent evt) { if(rc==null || rc.windowCloseRequested()){ if(socketThread!=null) socketThread.stopSocketThread(); if(rc!=null){ rc.end(); rc=null; } dispose(); } } public void windowActivated(java.awt.event.WindowEvent evt) { if(rc!=null) rc.activate(); } public void windowClosed(java.awt.event.WindowEvent evt) { exitForm(evt); } } ); } /** Exit the Application */ private void exitForm(java.awt.event.WindowEvent evt) { if(socketThread!=null) socketThread.stopSocketThread(); if(rc!=null){ rc.end(); rc=null; } while(socketThread!=null){ Thread.currentThread().yield(); } System.exit(0); } protected boolean checkOtherInstance(int port){ boolean result=false; try{ socketThread=new SocketThread(port, DEFAULT_TIMEOUT); } catch(Exception ex){ // socket already created! // eat exception } if(socketThread==null){ try{ Socket socket=new Socket(InetAddress.getLocalHost(), port); BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); pw.println(playerClass); pw.println(StrUtils.secureString(project)); pw.println(""); pw.flush(); String response=in.readLine(); result=OK.equals(response); socket.close(); } catch(Exception ex){ System.err.println("Socket error: "+ex); } } else{ result=false; socketThread.start(); } return result; } protected class SocketThread extends Thread{ boolean running; boolean inService; boolean forceSocketClose; ServerSocket ss; int socketTimeOut; SocketThread(int port, int timeOut) throws IOException{ ss=new ServerSocket(port); socketTimeOut=timeOut; running=false; } public void run(){ try{ running=true; ss.setSoTimeout(1000); while(running){ try{ inService=false; Socket socket=ss.accept(); inService=true; BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter pw = new PrintWriter(new OutputStreamWriter(socket.getOutputStream())); String skPlayerClass=StrUtils.secureString(in.readLine()); String skArg1=StrUtils.nullableString(in.readLine()); String skArg2=StrUtils.nullableString(in.readLine()); boolean result=rc!=null && !initializing && skPlayerClass.equals(playerClass) && skArg1!=null; pw.println(result ? OK : CANCEL); pw.flush(); socket.close(); if(result) rc.newInstanceRequest(skArg1, skArg2); }catch(InterruptedIOException ioex){ // Timeout. start again... }catch(Exception ex){ if(!forceSocketClose) System.err.println("Socket error: "+ex); running=false; } } forceSocketClose=true; ss.close(); } catch (IOException ex){ if(!forceSocketClose) System.err.println("Server socket error: "+ex); } running=false; inService=false; socketThread=null; } public void stopSocketThread(){ if(inService){ running=false; } else { try{ forceSocketClose=true; ss.close(); } catch(IOException ex){ // eat exception } finally{ socketThread=null; running=false; } } } } } jclic-0.2.1.0.orig/src/player/edu/xtec/jclic/PlayerSettings.java0000644000175000017500000004044011377161311021325 0ustar /* * File : PlayerSettings.java * Created : 19-jun-2002 10:22 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic; import edu.xtec.util.JDomUtility; import edu.xtec.util.Options; import edu.xtec.jclic.project.LibraryManager; import edu.xtec.jclic.fileSystem.FileSystem; import edu.xtec.util.BrowserLauncher; import edu.xtec.util.Messages; import java.util.StringTokenizer; import java.util.HashMap; import java.util.Iterator; import java.io.File; import java.io.FileOutputStream; import java.awt.Component; import edu.xtec.util.LFUtil; import javax.swing.JPasswordField; import java.util.Vector; import edu.xtec.util.Domable; import edu.xtec.util.ResourceBridge; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class PlayerSettings extends Object implements Cloneable, edu.xtec.jclic.Constants, Domable { public ResourceBridge rb; //public Options options; public LibraryManager libraryManager; public String language, country, variant; public String reporterClass, reporterParams; public boolean reporterEnabled; public boolean soundEnabled, systemSounds; public String lookAndFeel; public String skin; public HashMap misc; public String rootPath; public String mediaSystem; public FileSystem fileSystem; public static int MAX_RECENT=8; public String[] recentFiles; public String preferredBrowser; protected String password; protected boolean passwordConfirmed; public String cfgFile; public boolean readOnly; protected static String defaultCfgFile=null; public static final String PROJECTS_PATH="projects", CFG_FILE="jclic.cfg", DEFAULT_SKIN="@default.xml", DEFAULT_REPORTER="TCPReporter", DEFAULT_REPORTER_PARAMS="path=localhost:9000"; /** Creates new PlayerSettings */ public PlayerSettings(ResourceBridge rb, String fromPath /*, Options options*/){ this.rb=rb; //this.options=options; password=null; misc=new HashMap(); reporterEnabled=false; reporterClass=DEFAULT_REPORTER; reporterParams=DEFAULT_REPORTER_PARAMS; soundEnabled=true; systemSounds=true; lookAndFeel=edu.xtec.util.LFUtil.DEFAULT; preferredBrowser=""; skin=DEFAULT_SKIN; recentFiles=new String[MAX_RECENT]; mediaSystem=DEFAULT; readOnly=false; rootPath=System.getProperty("user.home"); //cfgFile=(fromPath==null ? getDefaultCfgFile(options) : fromPath); cfgFile=(fromPath==null ? getDefaultCfgFile(rb.getOptions()) : fromPath); fileSystem=new FileSystem(rb); if(FileSystem.isStrUrl(cfgFile)){ readOnly=true; } else{ File f=new File(cfgFile); readOnly=!f.canWrite(); } libraryManager=new LibraryManager(this); passwordConfirmed=false; } public static final String ELEMENT_NAME="JClicSettings", REPORTER="reporter", CLASS="class", PARAMS="params", SOUND="sound", SYSTEM="system", MISC="misc", PATHS="paths", PATH="path", ROOT="root", RECENT_FILES="recentFiles", FILE="file", PASSWORD="password"; public static String getDefaultCfgFile(Options options){ if(defaultCfgFile==null) defaultCfgFile=edu.xtec.util.PersistentSettings.getFilePath(PROGRAM, CFG_FILE, options); return defaultCfgFile; } public static PlayerSettings loadPlayerSettings(ResourceBridge rb /*, Options options*/){ PlayerSettings result=null; //String cfgFile=options.getString(ELEMENT_NAME); String cfgFile=rb.getOptions().getString(ELEMENT_NAME); if(cfgFile!=null){ try{ result=new PlayerSettings(rb, cfgFile /*, options*/); result.loadSettings(result.fileSystem.getXMLDocument(cfgFile).getRootElement()); } catch(Exception ex){ result=null; System.err.println("Unable to read settings from "+cfgFile+"\n"+ex); } } if(result==null){ //cfgFile=getDefaultCfgFile(options); cfgFile=getDefaultCfgFile(rb.getOptions()); //result=new PlayerSettings(rb, cfgFile, options); result=new PlayerSettings(rb, cfgFile); try{ result.loadSettings(result.fileSystem.getXMLDocument(cfgFile).getRootElement()); } catch(Exception ex){ result.initNewSettings(); } } /* options.syncProperties(result.getProperties(), true); if(!options.getBoolean(Options.LANGUAGE_BY_PARAM) && result.language!=null){ options.put(Messages.LANGUAGE, result.language); if(result.country!=null) options.put(Messages.COUNTRY, result.country); if(result.variant!=null) options.put(Messages.VARIANT, result.variant); } */ rb.getOptions().syncProperties(result.getProperties(), true); if(!rb.getOptions().getBoolean(Options.LANGUAGE_BY_PARAM) && result.language!=null){ rb.getOptions().put(Messages.LANGUAGE, result.language); if(result.country!=null) rb.getOptions().put(Messages.COUNTRY, result.country); if(result.variant!=null) rb.getOptions().put(Messages.VARIANT, result.variant); } return result; } private void initNewSettings(){ try{ Messages msg=rb.getOptions().getMessages(); if(language==null){ language=msg.getLocale().getLanguage(); country=msg.getLocale().getCountry(); variant=msg.getLocale().getVariant(); } readOnly=false; File f=new File(new File(cfgFile).getParentFile(), PROJECTS_PATH); f.mkdirs(); rootPath=f.getAbsolutePath(); fileSystem=new FileSystem(rootPath, rb); } catch(Exception ex){ System.err.println("Unable to create new settings!\n"+ex); } } public void checkLibrary(){ if(!readOnly && libraryManager.isEmpty() && rootPath!=null && !FileSystem.isStrUrl(rootPath)){ File f=new File(new File(rootPath), "library.jclic"); try{ libraryManager.addNewLibrary(f.getAbsolutePath(), null); save(); } catch(Exception ex){ System.err.println("Unable to create new project library!\n"+ex); } } } public void save(){ if(!readOnly){ try{ FileOutputStream fos=fileSystem.createSecureFileOutputStream(cfgFile); JDomUtility.saveDocument(fos, getJDomElement()); fos.close(); } catch(Exception ex){ System.err.println("unable to save settings "+cfgFile); ex.printStackTrace(); //getMessages().showCompoundWarning(alertParent, "error_propertiesFile_beg", " "+cfgFile+" ", "error_propertiesFile_end", null); } } } public org.jdom.Element getJDomElement(){ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); org.jdom.Element child, child2; e.addContent(libraryManager.getJDomElement()); if(password!=null) e.setAttribute(PASSWORD, edu.xtec.util.Encryption.Encrypt(password)); if(language!=null){ child=new org.jdom.Element(Messages.LANGUAGE); child.setAttribute(ID, language); if(country!=null) child.setAttribute(Messages.COUNTRY, country); if(variant!=null) child.setAttribute(Messages.VARIANT, variant); e.addContent(child); } child=new org.jdom.Element(PATHS); child2=new org.jdom.Element(PATH); child2.setAttribute(ID, ROOT); child2.setAttribute(PATH, rootPath); child.addContent(child2); e.addContent(child); child=new org.jdom.Element(REPORTER); child.setAttribute(ENABLED, JDomUtility.boolString(reporterEnabled)); child.setAttribute(CLASS, reporterClass); child.setAttribute(PARAMS, reporterParams); e.addContent(child); child=new org.jdom.Element(SOUND); child.setAttribute(ENABLED, JDomUtility.boolString(soundEnabled)); child.setAttribute(SYSTEM, JDomUtility.boolString(systemSounds)); child.setAttribute(MEDIA_SYSTEM, mediaSystem); e.addContent(child); child=new org.jdom.Element(LFUtil.LOOK_AND_FEEL); child.setAttribute(ID, lookAndFeel); e.addContent(child); child=new org.jdom.Element(BrowserLauncher.BROWSER); child.setAttribute(ID, preferredBrowser); e.addContent(child); child=new org.jdom.Element(SKIN); child.setAttribute(ID, skin); e.addContent(child); if(!misc.isEmpty()){ child=new org.jdom.Element(MISC); java.util.Iterator it=misc.entrySet().iterator(); while(it.hasNext()){ java.util.Map.Entry me=(java.util.Map.Entry)it.next(); String k=(String)me.getKey(); Object v=me.getValue(); if(k!=null && v!=null && v instanceof String) child.setAttribute(k, (String)v); } e.addContent(child); } child=new org.jdom.Element(RECENT_FILES); for(int i=0; iə?]F6/Y'S"}̎J:Ǭ=^JR:NPGژrXzI%!L%aF!pP&!H=Ro}8[%qXQ=R]l\Z#ksi gXs6M⢈HKDa#/w,brQAi6yE e \/hQ-WD.S)qB5SZ $XaC)%@2hg f_Y+jjQGS ^ޯmU5B߬k7+O(˫siRй|%OKA#:y/X|ְNlM)v匿]YQ鮭_pZ(huvj~U'x.T.wKw*\0 0 0 0 ð+,k2P2IENDB`jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/new_miniclic.png0000644000175000017500000000116611377161311022716 0ustar PNG  IHDR(-SsBITOPLTElYlYlYYlYlYYr\ys{uz~kl_\{h_xub\{xulfb_rlb|xtrlh\Dd<BtRNS""33DUUffwN1* pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$IDATxU0DXb/XDAQ]x8t3P/UYu\.xur1;I)omYɸh#Kg'v|yᧁ0}x`ż[dMOx\Mbi"F.X2DEB"tܼkf)zzsIENDB`jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/database_unavailable.gif0000644000175000017500000000163711377161311024351 0ustar GIF89a3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3f!,|Y H@ Dx!Z 0aCנeXq k%"РU$Yk%˘JA K$Y͠9DĖ*QjD@YA9E$`þ5ᵳhzU6 ;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/database_new.gif0000644000175000017500000000164611377161311022657 0ustar GIF89aRJJJRRRƜΥ𠠤!,HP  Z "F\Hq  *dT0ƒ4Nx0!BT0 ce ,Ёğ,0AУĠC"=>JTS~*BhV Kp[ " ;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/new_folder.gif0000644000175000017500000000023711377161311022361 0ustar GIF89a̴̳̽{f33! ,@LI& YQŬl NbS^XrMB XhI/D&e\.kIF K<!شD;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/minus.gif0000644000175000017500000000006711377161311021371 0ustar GIF89a !, h·;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/file_open.gif0000644000175000017500000000034411377161311022174 0ustar GIF89a̴̳̽{f33! ,@>Id k "cqIڨR)!r;_ & R"!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/run.gif0000644000175000017500000000016511377161311021041 0ustar GIF89a㺃njB^^!,:hZ.>([*su>]'' ,2ͦ1Ŋ gXa)ϦtjH;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/edit.gif0000644000175000017500000000067111377161311021164 0ustar GIF89aATNa濾侽ֲٱؿʡ̩Եവ޲ܯ׸ᗙâͨFSMٯ漺ö((( !,@pH, :RWpP7 T@ ͎Ukl\YNJH' `)`r/O_S3*!"8.kCY l w`/ET DY VK96UFVV8kWFDA!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/new.gif0000644000175000017500000000053211377161311021024 0ustar GIF89a鮤ɮǺһϺι纵ɬǑѺ髥ɑ!-,wpH,GVbcXIH`Jk R46UI$&DBq`lCwBYv| ,Z|(#&+EX )B"-M-l+,%-UDVY,lHA;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/database.gif0000644000175000017500000000025611377161311022002 0ustar GIF89a北̑RRRNNNU!,@[pId,{bKpqEPBPq\ TQa D.$ϨeJ(ZX(Raq0zC;v3hl{V;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/world.gif0000644000175000017500000000167211377161311021370 0ustar GIF89a11cc111Μcc!,` *0P@.ʨ@ 2BCREJCW tBR   MCTkHFDA!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;jclic-0.2.1.0.orig/src/player/edu/xtec/resources/icons/file_save.gif0000644000175000017500000000031611377161311022170 0ustar GIF89afff!,@HoIA8 ,_H&\Z'B 6ҥI+[a@) >m ѤH)$,K*邰%/=0){ pEnd=src.indexOf(tagEnd, pStart+tagStart.length()); if(pEnd<=pStart) break; Object[] tagMark=new Object[4]; tagMark[0]=new Integer(pStart); tagMark[1]=new Integer(pEnd+tagEnd.length()-pStart); String key=src.substring(pStart+tagStart.length(), pEnd); String value=(String)map.get(key); if(value!=null){ tagMark[2]=value; // tagMark[3] is reserved result.add(tagMark); } p=pEnd+tagEnd.length(); } } return result; } protected String filter(String src){ String result=src; if(src!=null){ StringBuffer sb=new StringBuffer(); Vector tagMarks=locateTags(src); int p=0; for(int i=0; i0){ String key=StrUtils.secureString(line.substring(0, p)).trim(); String value=StrUtils.secureString(line.substring(p+1)).trim(); if(key.length()>0) map.put(key, value); } } } } catch(Exception ex){ System.err.println("Error initializing TagReplace: "+ex); } } } public void innerListReferences(HashMap map) throws Exception{ if(mapFileName!=null) map.put(mapFileName, Constants.EXTERNAL_OBJECT); } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/automation/TextActivityContentKit.java0000644000175000017500000000175711377161311026054 0ustar /* * TextActivityContentKit.java * * Created on 20 / octubre / 2006, 13:39 */ package edu.xtec.jclic.automation; import edu.xtec.jclic.activities.text.TextActivityDocument; /** * * @author Francesc */ public class TextActivityContentKit { public TextActivityDocument tad; public String checkButtonText; public String prevScreenText; /** Creates a new instance of TextActivityContentKit */ public TextActivityContentKit(TextActivityDocument tad, String checkButtonText, String prevScreenText) { this.tad=tad; this.checkButtonText=checkButtonText; this.prevScreenText=prevScreenText; } /** * Activities should implement this interface if based on * {@link edu.xtec.jclic.activities.text.TextActivityDocument} objects, in order to let * {@link edu.xtec.jclic.automation.AutoContentProvider} objects to check whether * they are compatible with them. */ public interface Compatible{}; } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/0000755000175000017500000000000011377161311020517 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/text/0000755000175000017500000000000011377161311021503 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/text/Complete.java0000644000175000017500000002315711377161311024126 0ustar /* * File : Complete.java * Created : 24-oct-2001 17:01 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import edu.xtec.util.Actions; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import java.awt.event.*; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.misc.Utils; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Complete extends TextActivityBase { Evaluator ev; /** Creates new Complete */ public Complete(JClicProject project) { super(project); ev=new ComplexEvaluator(project); hasCheckButton=true; } public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); e.addContent(ev.getJDomElement()); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ super.setProperties(e, aux); ev=Evaluator.getEvaluator(e.getChild(Evaluator.ELEMENT_NAME), project); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); ((ComplexEvaluator)ev).setProperties(c3a); hasCheckButton=true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends TextActivityBase.Panel { TextActivityDocument playDoc=null; boolean locked; int nActions; protected Panel(PlayStation ps){ super(ps); locked=true; nActions=0; } protected void initDocument() throws Exception{ nActions=0; if(tad!=null){ playing=false; playDoc=new TextActivityDocument(styleContext); tad.cloneDoc(playDoc, true, false, false); pane.setStyledDocument(playDoc); playDoc.attachTo(pane, Complete.Panel.this); pane.setEnabled(true); if(playDoc.tmb.size()>0){ pane.setEditable(true); pane.requestFocus(); pane.getCaret().setVisible(true); locked=false; } else{ locked=true; pane.setEditable(false); pane.getCaret().setVisible(false); } } } protected TextActivityPane buildPane(){ //CompletePane cp=new CompletePane(this); CompletePane cp=new CompletePane(); cp.setActions(); return cp; } class CompletePane extends TextActivityPane{ //public CompletePane(Complete act){ protected CompletePane(){ super(Complete.Panel.this); } public boolean processMouse(MouseEvent e){ if(super.processMouse(e) && e.getID()==MouseEvent.MOUSE_PRESSED && playing && !locked) return true; return false; } protected void invalidateSelection(){ int offset=getCaret().getDot(); if(getCaret().getMark()!=offset) getCaret().setDot(offset); } protected void fireCaretUpdate(CaretEvent e){ invalidateSelection(); super.fireCaretUpdate(e); } public void replaceSelection(String content){ invalidateSelection(); if(content!=null && content.length()>0){ char ch=content.charAt(0); int offset=getCaret().getDot(); if(ch>=0x20 && ch!=0x7F){ try{ playDoc.insertString(offset, new String(new char[]{ch}), playDoc.getTargetAttributeSet()); } catch(BadLocationException ex){ System.err.println("Text activity error:\n"+ex); } } } } public void cut(){ invalidateSelection(); } public void paste(){ invalidateSelection(); } boolean readyForActions(){ return playing && !locked && isEditable() && isEnabled(); } // Actions Action kitDeletePrevCharAction=null; AbstractAction deletePrevCharAction=new AbstractAction(DefaultEditorKit.deletePrevCharAction){ public void actionPerformed(ActionEvent e){ if(readyForActions() && kitDeletePrevCharAction!=null){ invalidateSelection(); int offset=getCaret().getDot()-1; if(offset>0 && playDoc.checkBooleanAttribute(offset, TextActivityDocument.TARGET)==true){ kitDeletePrevCharAction.actionPerformed(e); } } } }; Action kitDeleteNextCharAction=null; AbstractAction deleteNextCharAction=new AbstractAction(DefaultEditorKit.deleteNextCharAction){ public void actionPerformed(ActionEvent e){ if(readyForActions() && kitDeleteNextCharAction!=null){ invalidateSelection(); int offset=getCaret().getDot(); if(offset>=0 && offset> } public void clear(){ for(int i=0; i<2; i++) if(bg[i]!=null){ bg[i].end(); bg[i]=null; } textField=null; } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); ActiveBox bx; currentCell=-1; clear(); if(abc[0]!=null && abc[1]!=null){ if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, true), ps); if(invAss){ invAssCheck=new boolean[abc[1].getNumCells()]; for(int i=0; i=0 ? abc[1].getActiveBoxContent(id).text : ""); //>> String txAnswer=textField.getText().trim(); if(edu.xtec.util.StrUtils.compareMultipleOptions(txAnswer, txCheck, false)){ ok=true; bx.idAss=-1; // 29-mai-2007 // When in multiple-answer, fill-in textField with // the first valid option: if(txCheck.indexOf('|')>=0) textField.setText((new java.util.StringTokenizer(txCheck, "|")).nextToken()); if(abc[2]!=null){ bx.switchToAlt(ps); m=bx.playMedia(ps); } else bx.clear(); if(invAss && id>=0 && id0){ ps.reportNewAction(getActivity(), ACTION_WRITE, src, txAnswer, ok, cellsPlaced); } if(ok && (checkInvAss() || cellsPlaced==bg[0].getNumCells())){ finishActivity(true); textField.setEnabled(false); return; } else if(!m && txAnswer.length()>0) playEvent(ok ? EventSounds.ACTION_OK : EventSounds.ACTION_ERROR); } if(useOrder) bx=(ActiveBox)bg[0].getBox(currentItem); else bx=bg[0].getActiveBoxWithIdLoc(i); if(bx==null || bx.idAss==-1){ for(int j=0; j1) bx.setMarked(true); currentCell=bx.idLoc; textField.setText(""); textField.requestFocus(); bx.playMedia(ps); } public void requestFocus(){ if(playing && textField!=null) textField.requestFocus(); } public void actionPerformed(java.awt.event.ActionEvent e){ if(playing && e.getSource()==textField && currentCell!=-1) setCurrentCell(currentCell); } public void processMouse(MouseEvent e){ ActiveBox bx; boolean m=false; if(playing) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: ps.stopMedia(1); if((bx=bg[0].findActiveBox(e.getPoint()))!=null){ if(bx.getContent()!=null && bx.getContent().mediaContent==null) playEvent(EventSounds.CLICK); setCurrentCell(bx.idLoc); } break; } } public void showHelp(){ if(!helpWindowAllowed() || bg[0]==null) return; HelpActivityComponent hac=null; if(showSolution){ hac=new HelpActivityComponent(this){ ActiveBoxBag abb=null; String currentResponse=""; int cellsPlaced=bg[0].countCellsWithIdAss(-1); public void render(Graphics2D g2, Rectangle dirtyRegion){ if(abb!=null) abb.update(g2, dirtyRegion, this); } public void init(){ currentResponse=textField.getText(); abb=(ActiveBoxBag)bg[0].clone(); abb.setContainer(this); Dimension size=abb.getBounds().getSize(); abb.setBounds(DEFAULT_MARGIN, DEFAULT_MARGIN, size.width, size.height); size.width+=2*DEFAULT_MARGIN; size.height+=2*DEFAULT_MARGIN; setPreferredSize(size); setMaximumSize(size); setMinimumSize(size); Point p=(Point)getClientProperty(HelpActivityComponent.PREFERRED_LOCATION); if(p!=null) p.translate((int)bg[0].x-DEFAULT_MARGIN, (int)bg[0].y-DEFAULT_MARGIN); } public void end(){ super.end(); textField.setText(currentResponse); } public void processMouse(MouseEvent e){ ActiveBox bx; boolean m=false; if(abb!=null) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: bx=abb.findActiveBox(e.getPoint()); if(bx!=null){ m=bx.playMedia(ps); String s=abc[1].getActiveBoxContent(bx.idOrder).text; if(s!=null) textField.setText(s.replace('|', ' ')); ps.reportNewAction(getActivity(), ACTION_HELP, bx.getDescription(), null, false, cellsPlaced); if(!m) playEvent(EventSounds.CLICK); } break; case MouseEvent.MOUSE_RELEASED: unmarkBox(); textField.setText(""); break; } } }; hac.init(); } if(ps.showHelp(hac, helpMsg)) ps.reportNewAction(getActivity(), ACTION_HELP, null, null, false, bg[0].countCellsWithIdAss(-1)); if(hac!=null) hac.end(); } } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/text/Order.java0000644000175000017500000004072511377161311023431 0ustar /* * File : Order.java * Created : 24-oct-2001 17:04 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import edu.xtec.util.Actions; import javax.swing.*; import javax.swing.text.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.AWTEvent; import edu.xtec.jclic.*; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Order extends TextActivityBase { public static final int ORDER_WORDS=0, ORDER_PARAGRAPHS=1; protected boolean amongParagraphs; protected int type; //boolean evalOnTheFly; protected Evaluator ev; /** Creates new Order */ public Order(JClicProject project) { super(project); //evalOnTheFly=false; amongParagraphs=false; setType(ORDER_WORDS); hasCheckButton=true; checkButtonText=""; ev=new BasicEvaluator(project); } public static final String[] TYPES={"orderWords", "orderParagraphs"}; public static final String AMONG_PARAGRAPHS="amongParagraphs"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); e.setAttribute(TYPE, TYPES[type]); if(amongParagraphs) e.setAttribute(AMONG_PARAGRAPHS, JDomUtility.boolString(amongParagraphs)); e.addContent(ev.getJDomElement()); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ super.setProperties(e, aux); //evalOnTheFly=!hasCheckButton; setType(JDomUtility.getStrIndexAttr(e, TYPE, TYPES, type)); if(type==ORDER_WORDS) amongParagraphs=JDomUtility.getBoolAttr(e, AMONG_PARAGRAPHS, amongParagraphs); ev=Evaluator.getEvaluator(e.getChild(Evaluator.ELEMENT_NAME), project); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); ((BasicEvaluator)ev).setProperties(c3a); setType(c3a.puzMode==edu.xtec.jclic.clic3.Clic3.BPARAGRAFS ? ORDER_PARAGRAPHS : ORDER_WORDS); amongParagraphs=c3a.brPar; //evalOnTheFly=!hasCheckButton; //evalOnTheFly=c3a.avCont; //if(evalOnTheFly) // hasCheckButton=false; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } /** Getter for property type. * @return Value of property type. */ public int getType() { return type; } public boolean hasRandom(){ return true; } public boolean shuffleAlways(){ return true; } /** Setter for property type. * @param type New value of property type. */ public void setType(int type) { this.type = (type==ORDER_WORDS ? ORDER_WORDS : ORDER_PARAGRAPHS); tad.setTargetType(type==ORDER_WORDS ? TextActivityDocument.TT_WORD : TextActivityDocument.TT_PARAGRAPH); } class Panel extends TextActivityBase.Panel { TextActivityDocument playDoc; int nActions; TargetMarker anchor, cursor; protected Panel(PlayStation ps){ super(ps); playDoc=null; nActions=0; } protected void initDocument() throws Exception{ if(tad!=null){ playing=false; playDoc=new TextActivityDocument(styleContext); tad.cloneDoc(playDoc, false, false, false); for(int i=0; i1){ for(int i=0; i<5; i++){ if(shuffle()!=playDoc.tmb.size()) break; } } pane.setStyledDocument(playDoc); playDoc.attachTo(pane, Order.Panel.this); pane.setEditable(false); pane.requestFocus(); bc=new edu.xtec.jclic.boxes.BoxConnector(pane); nActions=0; } } private int shuffle(){ if(playDoc==null || playDoc.tmb.size()<2) return 0; TargetMarkerBag tmb=playDoc.tmb; int k=tmb.size(); int[] p=tmb.getParagragraphOffsets(); int[] p2=new int[k]; int k2; for(k2=0; k20){ for(int c=0; c<300; c++){ t2=p2[rnd.nextInt(k2)]; if(t2!=t1) break; } if(t1!=t2) tmb.swapTargets(tmb.getElement(t1), tmb.getElement(t2)); } } return tmb.checkTargets(ev); } protected TextActivityPane buildPane(){ //OrderPane p=new OrderPane(this); OrderPane p=new OrderPane(); p.setActions(); return p; } class OrderPane extends TextActivityPane{ //public OrderPane(Order act){ protected OrderPane(){ super(Order.Panel.this); enableEvents(AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK); } public boolean processMouse(MouseEvent e){ if(!super.processMouse(e) || bc==null || !playing) return false; switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: int p=viewToModel(e.getPoint()); if(p>=0){ playEvent(EventSounds.CLICK); TargetMarker tm=playDoc.tmb.getElementByOffset(p, false); if(tm!=null){ setTargetCursor(tm); if(bc.active){ bc.end(); if(cursor==anchor){ setTargetAnchor(null); setTargetCursor(tm); } else{ swapTargets(anchor, cursor); } } else{ setTargetAnchor(tm); bc.begin(e.getPoint()); } } else{ bc.end(); setTargetAnchor(null); } } break; case MouseEvent.MOUSE_MOVED: case MouseEvent.MOUSE_DRAGGED: if(bc.active) bc.moveTo(e.getPoint()); break; } return false; } public boolean initKeyAction(){ if(!playing) return false; if(bc.active) bc.end(); if(cursor==null){ setTargetCursor(playDoc.tmb.getElement(0)); return false; } return true; } // Actions AbstractAction forwardAction=new AbstractAction(DefaultEditorKit.forwardAction){ public void actionPerformed(ActionEvent e){ nextTargetAction.actionPerformed(e); } }; AbstractAction backwardAction=new AbstractAction(DefaultEditorKit.backwardAction){ public void actionPerformed(ActionEvent e){ prevTargetAction.actionPerformed(e); } }; AbstractAction nextTargetAction=new AbstractAction("next-target"){ public void actionPerformed(ActionEvent e){ if(initKeyAction()){ setTargetCursor(playDoc.tmb.getNextTarget(cursor)); } } }; AbstractAction prevTargetAction=new AbstractAction("prev-target"){ public void actionPerformed(ActionEvent e){ if(initKeyAction()){ setTargetCursor(playDoc.tmb.getPrevTarget(cursor)); } } }; AbstractAction insertBreakAction=new AbstractAction(DefaultEditorKit.insertBreakAction){ public void actionPerformed(ActionEvent e){ if(initKeyAction()){ if(anchor==null) setTargetAnchor(cursor); else swapTargets(anchor, cursor); } } }; AbstractAction insertTabAction=new AbstractAction(DefaultEditorKit.insertTabAction){ public void actionPerformed(ActionEvent e){ if((e.getModifiers() & ActionEvent.SHIFT_MASK)!=0) prevTargetAction.actionPerformed(e); else nextTargetAction.actionPerformed(e); } }; AbstractAction beginAction=new AbstractAction(DefaultEditorKit.beginAction){ public void actionPerformed(ActionEvent e){ if(initKeyAction()){ setTargetCursor(playDoc.tmb.getElement(0)); } } }; AbstractAction endAction=new AbstractAction(DefaultEditorKit.endAction){ public void actionPerformed(ActionEvent e){ if(initKeyAction()){ setTargetCursor(playDoc.tmb.getElement(playDoc.tmb.size()-1)); } } }; AbstractAction upAction=new AbstractAction(DefaultEditorKit.upAction){ public void actionPerformed(ActionEvent e){ prevTargetAction.actionPerformed(e); } }; AbstractAction downAction=new AbstractAction(DefaultEditorKit.downAction){ public void actionPerformed(ActionEvent e){ nextTargetAction.actionPerformed(e); } }; protected void setActions(){ java.util.HashMap actionKeys=Actions.getActionKeys(this); ActionMap am=new ActionMap(); am.setParent(getActionMap()); setActionMap(am); //Originals: Actions.mapTraceAction(this, actionKeys, DefaultEditorKit.beepAction); Actions.mapTraceAction(this, actionKeys, "requestFocus"); Actions.mapTraceAction(this, actionKeys, "toggle-componentOrientation"); //Derivats: Actions.mapAction(this, actionKeys, insertBreakAction); Actions.mapAction(this, actionKeys, insertTabAction); Actions.mapAction(this, actionKeys, forwardAction); Actions.mapAction(this, actionKeys, backwardAction); Actions.mapAction(this, actionKeys, beginAction); Actions.mapAction(this, actionKeys, endAction); Actions.mapAction(this, actionKeys, upAction); Actions.mapAction(this, actionKeys, downAction); Actions.mapAction(this, actionKeys, nextTargetAction); Actions.mapAction(this, actionKeys, prevTargetAction); am.setParent(null); getInputMap().put(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB, java.awt.Event.SHIFT_MASK), insertTabAction.getValue(Action.NAME)); } } protected void setTargetAnchor(TargetMarker tm){ if(anchor!=null) playDoc.applyStyleToTarget(anchor, TextActivityDocument.TARGET, false, true); anchor=tm; if(anchor!=null) playDoc.applyStyleToTarget(anchor, TextActivityDocument.TARGET, true, true); } protected void setTargetCursor(TargetMarker tm){ if(tm!=null && tm==anchor){ cursor=tm; return; } if(cursor!=null){ if(cursor!=anchor) playDoc.applyStyleToTarget(cursor, TextActivityDocument.TARGET, false, true); } cursor=tm; if(cursor!=null) playDoc.applyStyleToTarget(cursor, null, true, true); } protected void swapTargets(TargetMarker src, TargetMarker dest){ if(src==dest || !playing || playDoc==null) return; setTargetAnchor(null); TargetMarkerBag tmb=playDoc.tmb; tmb.swapTargets(src, dest); src.checkText(ev); boolean ok=dest.checkText(ev); nActions++; //if(evalOnTheFly){ if(!hasCheckButton){ int solvedTargets=tmb.countSolvedTargets(); ps.reportNewAction(getActivity(), ACTION_PLACE, src.getCurrentText(), Integer.toString(tmb.indexOf(dest)), ok, solvedTargets); if(ok && solvedTargets==tmb.size()){ finishActivity(true); } else{ playEvent(ok ? EventSounds.ACTION_OK : EventSounds.ACTION_ERROR); } } setTargetCursor(dest); } protected void doCheck(boolean fromButton){ if(playDoc==null || playDoc.tmb.size()==0) return; TargetMarkerBag tmb=playDoc.tmb; if(bc.active) bc.end(); for(int i=0; i=begOffset && (includeEndPos ? (offset<=endOffset) : (offset0) child.setAttribute(INI_TEXT, iniText); e.addContent(child); } if(popupContent!=null && infoMode!=NO_INFO){ child=new org.jdom.Element(INFO); if(infoMode!=INFO_ALWAYS) child.setAttribute(MODE, infoTypes[infoMode]); if(popupDelay>0) child.setAttribute(DELAY, Integer.toString(popupDelay)); if(popupMaxTime>0) child.setAttribute(MAX_TIME, Integer.toString(popupMaxTime)); if(onlyPlay && popupContent.mediaContent!=null){ child.addContent(popupContent.mediaContent.getJDomElement()); } else{ child.addContent(popupContent.getJDomElement()); } e.addContent(child); } return e; } public static TextTarget getTextTarget(org.jdom.Element e, MediaBag mediaBag) throws Exception{ TextTarget tt=new TextTarget(); tt.setProperties(e, mediaBag); return tt; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ JDomUtility.checkName(e, ELEMENT_NAME); MediaBag mediaBag=(MediaBag)aux; org.jdom.Element child, child2; java.util.List answerLst=e.getChildren(ANSWER); if(!answerLst.isEmpty()){ answer=new String[answerLst.size()]; for(int i=0; i0) iniChar=s.charAt(0); numIniChars=JDomUtility.getIntAttr(child, INI_LEN, numIniChars); maxLenResp=JDomUtility.getIntAttr(child, MAX_LEN, maxLenResp); iniText=child.getAttributeValue(INI_TEXT); } if((child=e.getChild(INFO))!=null){ infoMode=JDomUtility.getStrIndexAttr(child, MODE, infoTypes, INFO_ALWAYS); popupDelay=JDomUtility.getIntAttr(child, DELAY, popupDelay); popupMaxTime=JDomUtility.getIntAttr(child, MAX_TIME, popupMaxTime); if((child2=child.getChild(MediaContent.ELEMENT_NAME))!=null){ onlyPlay=true; popupContent=new ActiveBoxContent(); popupContent.mediaContent=MediaContent.getMediaContent(child2); } else if((child2=child.getChild(ActiveBoxContent.ELEMENT_NAME))!=null){ popupContent=ActiveBoxContent.getActiveBoxContent(child2, mediaBag); } } } protected void setParentPane(TextActivityPane pane){ parentPane=pane; } public void setAnswer(String text){ java.util.StringTokenizer st=new java.util.StringTokenizer(text, "|"); int numItems=st.countTokens(); if(numItems<=0){ answer=null; } else{ answer=new String[numItems]; for(int i=0; i0) sb.append("|"); sb.append(answer[i]); } return sb.substring(0); } public boolean checkText(String txt, Evaluator ev){ if(answer==null || txt==null) return false; boolean ok=ev.checkText(txt, answer); targetStatus=ok ? SOLVED : WITH_ERROR; return ok; } public JComboBox buildCombo(AttributeSet targetAttr, AttributeSet errorAttr){ if(!isList || options==null) return null; comboList=new TargetCombo(options, targetAttr, errorAttr); if(iniText!=null) comboList.setSelectedItem(iniText); return comboList; } public String getFillString(){ return getFillString(numIniChars); } public String getFillString(int length){ StringBuffer s=new StringBuffer(); for(int i=0; i tabp.pane.getWidth()){ pt.x-=(tabp.pane.getWidth()-pt.x+popupContent.dimension.width); if(pt.x<0) pt.x=0; } return pt; } public void adjustPopupLocation(TextActivityBase.Panel tabp, TargetMarker tm){ Point pt=getPopupLocation(tabp, tm); if(pt!=null) tabp.pane.bx.setLocation(pt); } public void lostFocus(TextActivityBase.Panel tabp, TargetMarker tm){ if(comboList!=null && parentPane!=null){ parentPane.repaint(); } if(popupContent!=null) tabp.popupTimer.stopPopup(); } class TargetCombo extends JComboBox{ Color bgColor, foreColor; Color errBgColor, errForeColor; Font rFont; TargetComboCellRenderer cellRenderer; JTextField editor; AbstractAction showListAction, fwdAction, bkAction; public TargetCombo(Object[] items, AttributeSet targetAttr, AttributeSet errorAttr){ super(items); setSelectedIndex(-1); showListAction=new AbstractAction("showList"){ public void actionPerformed(ActionEvent e){ setPopupVisible(true); } }; fwdAction=new AbstractAction("forward"){ public void actionPerformed(ActionEvent e){ if(parentPane!=null){ Action act=parentPane.getActionMap().get("next-target"); if(act!=null) act.actionPerformed(e); } } }; bkAction=new AbstractAction("backwards"){ public void actionPerformed(ActionEvent e){ if(parentPane!=null){ Action act=parentPane.getActionMap().get("prev-target"); if(act!=null) act.actionPerformed(e); } } }; rFont=TextActivityDocument.attributesToFont(targetAttr); setFont(rFont); bgColor=StyleConstants.getBackground(targetAttr); foreColor=StyleConstants.getForeground(targetAttr); errBgColor=StyleConstants.getBackground(errorAttr); errForeColor=StyleConstants.getForeground(errorAttr); setCursor(Cursor.getDefaultCursor()); cellRenderer=new edu.xtec.jclic.activities.text.TextTarget.TargetCombo.TargetComboCellRenderer(); setRenderer(cellRenderer); Dimension d=getPreferredSize(); setPreferredSize(new Dimension((int)d.getWidth()+rFont.getSize()/2, (int)d.getHeight())); setMaximumSize(getPreferredSize()); setEditable(true); Component c=getEditor().getEditorComponent(); if(c instanceof JTextField) editor=(JTextField)c; else editor=new JTextField(); editor.setEnabled(false); checkColors(); setAlignmentY(0.8f); setKActions(); } protected void setKActions(){ registerKeyboardAction(showListAction, KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), JComponent.WHEN_FOCUSED); registerKeyboardAction(showListAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_FOCUSED); editor.registerKeyboardAction(showListAction, KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, 0), JComponent.WHEN_FOCUSED); editor.registerKeyboardAction(showListAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_FOCUSED); registerKeyboardAction(fwdAction, KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); registerKeyboardAction(fwdAction, KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); registerKeyboardAction(fwdAction, KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); registerKeyboardAction(bkAction, KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); registerKeyboardAction(bkAction, KeyStroke.getKeyStroke(KeyEvent.VK_TAB, Event.SHIFT_MASK), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); } public void checkColors(){ if(targetStatus==WITH_ERROR){ editor.setBackground(errBgColor); editor.setForeground(errForeColor); editor.setDisabledTextColor(errForeColor); } else{ editor.setBackground(bgColor); editor.setForeground(foreColor); editor.setDisabledTextColor(foreColor); } } class TargetComboCellRenderer extends JLabel implements ListCellRenderer { public TargetComboCellRenderer() { setOpaque(true); setFont(rFont); } public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){ setBackground(isSelected ? foreColor : bgColor); setForeground(isSelected ? bgColor : foreColor); setText(value.toString()); return this; } } public void setSelectedItem(Object o){ super.setSelectedItem(o); if(o!=null && parentPane!=null){ setModified(true); SwingUtilities.invokeLater(new Runnable(){ public void run(){ if(!isPopupVisible()){ parentPane.targetChanged(TextTarget.this); } } }); } } } public void setModified(boolean value){ flagModified=value; if(value==true && targetStatus==NOT_EDITED) targetStatus=EDITED; } public boolean isModified(){ return flagModified; } public static class PopupTimer extends javax.swing.Timer{ TextTarget target; boolean action; TextActivityBase.Panel tabp; TargetMarker tm; public PopupTimer(TextActivityBase.Panel tabp){ super(1000, null); this.tabp=tabp; setRepeats(false); target=null; } public void setUp(TextTarget setTarget, TargetMarker setTm){ stop(); target=setTarget; tm=setTm; action=true; if(target!=null && target.popupContent!=null){ SwingUtilities.invokeLater(new Runnable(){ public void run(){ if(target.popupDelay>0){ //setDelay(target.popupDelay*1000); setInitialDelay(target.popupDelay*1000); setRepeats(false); start(); } else startPopup(); }}); } } public void startPopup(){ stop(); if(target!=null && target.popupContent!=null){ if(!target.onlyPlay){ Point pt=target.getPopupLocation(tabp, tm); if(pt!=null) tabp.pane.enableActiveBox(target.popupContent, pt); } if(target.popupContent.mediaContent!=null) tabp.ps.playMedia(target.popupContent.mediaContent, tabp.pane.bx); if(target.popupMaxTime>0){ action=false; //setDelay(target.popupMaxTime*1000); setInitialDelay(target.popupMaxTime*1000); setRepeats(false); start(); } } } public void stopPopup(){ stop(); if(target!=null && target.popupContent!=null){ tabp.ps.stopMedia(1); tabp.pane.disableActiveBox(); } } protected void fireActionPerformed(java.awt.event.ActionEvent e){ if(action==true) startPopup(); else stopPopup(); } } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/text/BasicEvaluator.java0000644000175000017500000001213311377161311025252 0ustar /* * File : BasicEvaluator.java * Created : 07-jun-2001 13:50 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.util.JDomUtility; import java.text.Collator; import edu.xtec.util.Messages; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class BasicEvaluator extends Evaluator { public static final String CHECK_CASE="checkCase"; public static final String CHECK_ACCENTS="checkAccents"; public static final String CHECK_PUNCTUATION="checkPunctuation"; public static final String CHECK_DOUBLE_SPACES="checkDoubleSpaces"; public static final String PUNCTUATION=".,;:"; protected boolean checkCase; protected boolean checkAccents; protected boolean checkPunctuation; protected boolean checkDoubleSpaces; int strength; /** Creates new BasicEvaluator */ public BasicEvaluator(JClicProject project){ super(project); checkCase=false; checkAccents=true; checkPunctuation=true; checkDoubleSpaces=false; init(); } public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); if(checkCase) e.setAttribute(CHECK_CASE, JDomUtility.boolString(checkCase)); if(!checkAccents) e.setAttribute(CHECK_ACCENTS, JDomUtility.boolString(checkAccents)); if(!checkPunctuation) e.setAttribute(CHECK_PUNCTUATION, JDomUtility.boolString(checkPunctuation)); if(checkDoubleSpaces) e.setAttribute(CHECK_DOUBLE_SPACES, JDomUtility.boolString(checkDoubleSpaces)); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ super.setProperties(e, aux); checkCase=JDomUtility.getBoolAttr(e, CHECK_CASE, false); checkAccents=JDomUtility.getBoolAttr(e, CHECK_ACCENTS, true); checkPunctuation=JDomUtility.getBoolAttr(e, CHECK_PUNCTUATION, true); checkDoubleSpaces=JDomUtility.getBoolAttr(e, CHECK_DOUBLE_SPACES, false); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a){ checkCase=c3a.avMaj; checkAccents=c3a.avAcc; checkPunctuation=c3a.avPunt; checkDoubleSpaces=c3a.avDblSpc; } protected void init(){ super.init(); strength = checkAccents ? checkCase ? Collator.TERTIARY : Collator.SECONDARY : Collator.PRIMARY; /* if(!checkAccents) strength=Collator.PRIMARY; else if(!checkCase) strength=Collator.SECONDARY; else strength=Collator.TERTIARY; */ collator.setStrength(strength); } public boolean checkText(String text, String match){ return collator.equals(getClearedText(text), getClearedText(match)); } public byte[] evalText(String text, String[] match){ byte[] flags=new byte[text.length()]; boolean result=checkText(text, match); for(int i=0; i=0 && !checkPunctuation){ if(!wasSpace) sb.append(' '); else skipped[i]=true; wasSpace=true; } else if(ch==' '){ if(checkDoubleSpaces || !wasSpace) sb.append(ch); else skipped[i]=true; wasSpace=true; } else{ wasSpace=false; sb.append(ch); } } return sb.substring(0); } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/text/TargetMarkerBag.java0000644000175000017500000001517111377161311025355 0ustar /* * File : TargetMarkerBag.java * Created : 04-jun-2001 19:54 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import javax.swing.text.Element; import java.util.Vector; import java.util.Iterator; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TargetMarkerBag extends java.util.ArrayList { private TargetMarker currentTarget; /** Creates new TargetMarkerBag */ public TargetMarkerBag() { super(10); currentTarget=null; } public boolean add(Object obj){ int i; //if(!obj.getClass().isAssignableFrom(TargetMarker.class)) return false; if(!(obj instanceof TargetMarker)) return false; TargetMarker tm=(TargetMarker)obj; for(i=0; i=tm.begOffset) break; } if(i==size()) return super.add(obj); super.add(i, obj); return true; } public TargetMarker getElement(int n){ try{ return (TargetMarker)get(n); } catch(Exception e){ return null; } } public void setParentPane(TextActivityPane parent){ for(int i=0; i=offset){ next=tm; break; } } return searchForward ? next : prev; } /* public int getNextElementOffset(int offset){ int p=-1; for(int i=0; i=offset) return p; } return p; } */ public void setCurrentTarget(TargetMarker tm, TextActivityBase.Panel tabp){ if(currentTarget!=null/* && currentTarget!=tm*/){ currentTarget.lostFocus(tabp); } if(tm!=null && contains(tm)){ currentTarget=tm; if(currentTarget.target!=null) currentTarget.target.setModified(false); currentTarget.requestFocus(tabp); } else currentTarget=null; } public TargetMarker getCurrentTarget(){ return currentTarget; } public TargetMarker getElement(TextTarget tt){ for(int i=0; i0){ char[] chars=null; try{ chars=playDoc.getText(0, l).toCharArray(); } catch(BadLocationException ex){ playDoc=null; return false; } validChars=new boolean[l]; marks=new boolean[l]; targets=new boolean[l]; for(int i=0; i=marks.length){ playEvent(EventSounds.ACTION_ERROR); return; } nActions++; boolean marked=marks[p]; int l=1; TargetMarker tm=playDoc.tmb.getElementByOffset(p, false); if(tm!=null){ p=tm.begOffset; l=tm.getLength(); } else{ if(!validChars[p]){ playEvent(EventSounds.ACTION_ERROR); return; } if(type==IDENTIFY_WORDS){ int it=p; while(it>0 && validChars[it]==true) it--; int p0=it+1; it=p; p=p0; while(it6){ targetElementCount=0; intoTarget=false; tm.endOffset=getLength(); tmb.add(tm); } else{ intoTarget=true; } } else{ intoTarget=intoTarget ? false : true; if(intoTarget){ tm=new TargetMarker(this); tm.begOffset=getLength(); } else{ tm.endOffset=getLength(); tmb.add(tm); } } } else if(intoBlock){ ActiveBoxContent ab=new ActiveBoxContent(); StringTokenizer stb=new StringTokenizer(t, ","); w=Integer.parseInt(stb.nextToken()); h=Integer.parseInt(stb.nextToken()); ab.setDimension(new Dimension(w, h)); ab.setBorder((Integer.parseInt(stb.nextToken()))!=0); boolean b=((Integer.parseInt(stb.nextToken()))!=0); ab.txtAlign[0]=b ? JDomUtility.ALIGN_LEFT : JDomUtility.ALIGN_MIDDLE; ab.imgAlign[0]=ab.txtAlign[0]; c3a.setActiveBoxTextContent(ab, stb.nextToken("").substring(1)); //ab.setBoxBase(tab.boxesContent.bb); ab.setBoxBase(boxesContent.bb); ab.userData=getEndPosition(); boxesContent.addActiveBoxContent(ab); JPanelActiveBox jpab=new JPanelActiveBox(null, null, tab.getProject().getBridge().getComponent()); jpab.setAlignmentY(0.9f); jpab.setActiveBoxContent(ab); MutableAttributeSet attr=new SimpleAttributeSet(regular); StyleConstants.setComponent(attr, jpab); insertString(getLength(), " ", attr); } else if(intoTarget){ if(targetElementCount==0) insertString(getLength(), t, getStyle(TARGET)); else switch(targetElementCount){ case 1: StringTokenizer stx=new StringTokenizer(t, ","); tm.target.iniChar=stx.nextToken().charAt(0); tm.target.isList=(stx.nextToken().compareTo("1")==0); tm.target.numIniChars=Integer.parseInt(stx.nextToken()); tm.target.maxLenResp=Integer.parseInt(stx.nextToken()); tm.target.infoMode=Integer.parseInt(stx.nextToken()); int v=Integer.parseInt(stx.nextToken()); tm.target.popupDelay=v&0xFF; tm.target.popupMaxTime=(v&0xFF00)>>8; w=Integer.parseInt(stx.nextToken()); h=Integer.parseInt(stx.nextToken()); int flags=Integer.parseInt(stx.nextToken()); leftAlign=((flags&1)==1); onlyPlay=((flags&2)==2); break; case 2: if(t.length()>0) tm.target.setAnswer(t); break; case 3: StringTokenizer sty=new StringTokenizer(t, "\n\r"); java.util.ArrayList al=new java.util.ArrayList(); while(sty.hasMoreTokens()){ String s=sty.nextToken(); if(s.length()>0) al.add(s); } if(al.size()>0){ tm.target.options=new String[al.size()]; for(int i=0; i0) tm.target.iniText=t; break; case 5: if(t.length()>0){ tm.target.popupContent=new ActiveBoxContent(); tm.target.popupContent.setDimension(new Dimension(w, h)); c3a.setActiveBoxTextContent(tm.target.popupContent, t); tm.target.popupContent.setBoxBase(popupsContent.bb); tm.target.popupContent.txtAlign[0]=leftAlign ? JDomUtility.ALIGN_LEFT : JDomUtility.ALIGN_MIDDLE; tm.target.popupContent.imgAlign[0]=tm.target.popupContent.txtAlign[0]; tm.target.onlyPlay=onlyPlay; popupsContent.addActiveBoxContent(tm.target.popupContent); } break; case 6: insertString(getLength(), t, getStyle(TARGET)); break; } } else{ insertString(getLength(), t, getStyle(StyleContext.DEFAULT_STYLE)); } } tmb.setPositions(); } public static JPanelActiveBox insertBox(ActiveBoxContent ab, int atPos, TextActivityDocument doc, TextActivityBase tab, AttributeSet atr) throws Exception{ if(atr==null) atr=doc.getStyle(StyleContext.DEFAULT_STYLE); if(atPos<0) atPos=doc.getLength(); doc.boxesContent.addActiveBoxContent(ab); JPanelActiveBox jpab=new JPanelActiveBox(null, ab.bb, tab.getProject().getBridge().getComponent()); jpab.setAlignmentY(0.9f); jpab.setActiveBoxContent(ab); SimpleAttributeSet satr=new SimpleAttributeSet(atr); StyleConstants.setComponent(satr, jpab); doc.insertString(atPos, " ", satr); return jpab; } public static Style boxBaseToStyledDocument(BoxBase bb, StyledDocument sd){ Style style=sd.getStyle(StyleContext.DEFAULT_STYLE); boxBaseToStyle(bb, style); return style; } public static void boxBaseToStyle(BoxBase bb, Style st){ StyleConstants.setFontFamily(st, bb.getFont().getFamily()); StyleConstants.setFontSize(st, bb.getFont().getSize()); StyleConstants.setBold(st, bb.getFont().isBold()); StyleConstants.setItalic(st, bb.getFont().isItalic()); StyleConstants.setBackground(st, bb.backColor); StyleConstants.setForeground(st, bb.textColor); } public void setTabSpc(int newTabSpc){ tabSpc=newTabSpc; setStyledDocumentTabSpc(tabSpc, this, styleContext); } protected static AttributeSet getAttributes(TextActivityDocument doc, AttributeSet a, org.jdom.Element e) throws Exception { int nAttributes=e.getAttributes().size(); if(nAttributes<1) return a; String parentStyle=e.getAttributeValue(STYLE); Style style=(parentStyle!=null ? doc.getStyle(parentStyle) : null); if(style!=null && nAttributes==1) return style; MutableAttributeSet atr=new SimpleAttributeSet(); atr.setResolveParent(style!=null ? style : a); fillAttributes(atr, e); return atr; } protected static void fillAttributes(MutableAttributeSet a, org.jdom.Element e) throws Exception { java.util.List atrList=e.getAttributes(); for(int i=0; i0 && !font.equals(StyleConstants.getFontFamily(mainStyle))){ StyleConstants.setFontFamily(mainStyle, font); result=true; } } if(fontSize){ int size=StyleConstants.getFontSize(srcMainStyle); if(size>0 && size!=StyleConstants.getFontSize(mainStyle)){ StyleConstants.setFontSize(mainStyle, size); result=true; } } if(colour){ Color color=StyleConstants.getForeground(srcMainStyle); if(color!=null && !color.equals(StyleConstants.getForeground(mainStyle))){ StyleConstants.setForeground(mainStyle, color); result=true; } color=StyleConstants.getBackground(srcMainStyle); if(color!=null && !color.equals(StyleConstants.getBackground(mainStyle))){ StyleConstants.setBackground(mainStyle, color); result=true; } } if(style){ boolean b=StyleConstants.isBold(srcMainStyle); if(b!=StyleConstants.isBold(mainStyle)){ StyleConstants.setBold(mainStyle, b); result=true; } b=StyleConstants.isItalic(srcMainStyle); if(b!=StyleConstants.isItalic(mainStyle)){ StyleConstants.setItalic(mainStyle, b); result=true; } b=StyleConstants.isUnderline(srcMainStyle); if(b!=StyleConstants.isUnderline(mainStyle)){ StyleConstants.setUnderline(mainStyle, b); result=true; } } if(targetColour){ Style targetStyle=clon.getStyle(TARGET); Style srcTargetStyle=src.getStyle(TARGET); if(targetStyle!=null && srcTargetStyle!=null){ Color color=StyleConstants.getForeground(srcTargetStyle); if(color!=null && !color.equals(StyleConstants.getForeground(targetStyle))){ StyleConstants.setForeground(targetStyle, color); result=true; } color=StyleConstants.getBackground(srcTargetStyle); if(color!=null && !color.equals(StyleConstants.getBackground(targetStyle))){ StyleConstants.setBackground(targetStyle, color); result=true; } } } if(errorColour){ Style errorStyle=clon.getStyle(TARGET_ERROR); Style srcErrorStyle=src.getStyle(TARGET_ERROR); if(errorStyle!=null && srcErrorStyle!=null){ Color color=StyleConstants.getForeground(srcErrorStyle); if(color!=null && !color.equals(StyleConstants.getForeground(errorStyle))){ StyleConstants.setForeground(errorStyle, color); result=true; } color=StyleConstants.getBackground(srcErrorStyle); if(color!=null && !color.equals(StyleConstants.getBackground(errorStyle))){ StyleConstants.setBackground(errorStyle, color); result=true; } } } return result ? clon : dest; } public static final String ELEMENT_NAME="document"; public static final String STYLE="style", TABSPC="tabWidth", TEXT="text", P="p", BASE="base", NAME="name"; public org.jdom.Element getJDomElement() throws Exception{ return getJDomElement(styleContext); } public org.jdom.Element getJDomElement(StyleContext sc) throws Exception{ org.jdom.Element e=new org.jdom.Element(ELEMENT_NAME); tmb.setPositions(); addStylesToElement(e, sc, tabSpc); e.addContent(getJDomElement(getDefaultRootElement())); return e; } public static void addStylesToElement(org.jdom.Element e, StyleContext sc, int tabSpc) throws Exception{ java.util.Enumeration styleNamesEnum=sc.getStyleNames(); // use Stack for reverse order java.util.Stack styleNames=new java.util.Stack(); while(styleNamesEnum.hasMoreElements()) styleNames.push(styleNamesEnum.nextElement()); while(!styleNames.empty()){ org.jdom.Element s=new org.jdom.Element(STYLE); String styleName=(String)styleNames.pop(); s.setAttribute(NAME, styleName); Style style=sc.getStyle(styleName); Style parent=(Style)style.getAttribute(AttributeSet.ResolveAttribute); if(parent!=null) s.setAttribute(BASE, parent.getName()); setJDomElementAttributes(s, style, true); if(styleName.equals(StyleContext.DEFAULT_STYLE) && s.getAttribute(TABSPC)==null) s.setAttribute(TABSPC, Integer.toString(tabSpc)); e.addContent(s); } } public org.jdom.Element getJDomElement(Element element) throws Exception{ org.jdom.Element e=null; String elementName=element.getName(); AttributeSet atr=element.getAttributes(); String style=(String)(atr.getAttribute(AttributeSet.NameAttribute)); if(elementName.equals("component")){ Object cmp=atr.getAttribute(StyleConstants.ComponentAttribute); if(cmp!=null && cmp instanceof JPanelActiveBox){ JPanelActiveBox jpab=(JPanelActiveBox)cmp; return jpab.getActiveBox().getContent().getJDomElement(); } } else if(TARGET.equals(style)){ elementName=TARGET; TargetMarker tm=tmb.getElementByOffset(element.getStartOffset(), true); if(tm!=null){ TextTarget tt=tm.target; if(tt!=null){ e=tt.getJDomElement(); e.addContent(new org.jdom.Element(TEXT).setText(getElementText(element))); return e; } } } if(elementName.equals("content")) elementName=TEXT; else if(elementName.equals("paragraph")) elementName=P; e=new org.jdom.Element(elementName); if(style==null || !atr.isEqual(getStyle(style))){ setJDomElementAttributes(e, atr, elementName.equals(P)); } else{ if(!StyleContext.DEFAULT_STYLE.equals(style) && !TARGET.equals(style)) e.setAttribute(STYLE, style); } int count=element.getElementCount(); if(count==0){ String s=getElementText(element); if(s!=null && s.length()>0) e.setText(getElementText(element)); else{ if(elementName.equals(TEXT)) return null; } } else{ for(int i=0; i0) s=element.getDocument().getText(offset, length); return edu.xtec.util.StrUtils.replace(s, "\n", ""); } protected static void setJDomElementAttributes(org.jdom.Element e, AttributeSet atr, boolean isParagraph){ java.util.Enumeration atrNames=atr.getAttributeNames(); if(atrNames!=null){ while(atrNames.hasMoreElements()){ Object attribute=atrNames.nextElement(); if(attribute!=null && atr.isDefined(attribute) && (isParagraph || !(attribute instanceof AttributeSet.ParagraphAttribute))){ JDomUtility.addGenericAttribute(e, attribute.toString(), atr.getAttribute(attribute)); } } } } public static TextActivityDocument getTextActivityDocument(org.jdom.Element e, TextActivityBase tab) throws Exception{ TextActivityDocument doc=new TextActivityDocument(tab.styleContext); org.jdom.Element child, child2; JDomUtility.checkName(e, ELEMENT_NAME); java.util.List styleList=e.getChildren(STYLE); if(!styleList.isEmpty()){ Style s; String styleName, styleParent; for(int i=0; i=0) doc.setParagraphAttributes(p, doc.getLength()-p, atr, true); } else if(elementName.equals(TEXT)){ doc.insertString(doc.getLength(), e.getText(), getAttributes(doc, atrBase, e)); } else if(elementName.equals(TARGET)){ atr=doc.getStyle(TARGET); TargetMarker tm=new TargetMarker(doc); tm.begOffset=doc.getLength(); if(!e.getChildren().isEmpty()){ tm.target=TextTarget.getTextTarget(e, tab.getProject().mediaBag); processChilds(e.getChildren(TEXT), doc, tab, atr); } else{ doc.insertString(doc.getLength(), e.getText(), atr); } tm.endOffset=doc.getLength(); doc.tmb.add(tm); } else if(elementName.equals(ActiveBoxContent.ELEMENT_NAME)){ ActiveBoxContent ab=ActiveBoxContent.getActiveBoxContent(e, tab.getProject().mediaBag); //tab.boxesContent.addActiveBoxContent(ab); doc.boxesContent.addActiveBoxContent(ab); JPanelActiveBox jpab=new JPanelActiveBox(null, ab.bb, tab.getProject().getBridge().getComponent()); jpab.setAlignmentY(0.9f); jpab.setActiveBoxContent(ab); SimpleAttributeSet satr=new SimpleAttributeSet(atr); StyleConstants.setComponent(satr, jpab); doc.insertString(doc.getLength(), " ", satr); } } } public TextActivityDocument cloneDoc(TextActivityDocument dest, boolean hideTargets, boolean initTargets, boolean hideTargetStyle) throws Exception{ tmb.updateOffsets(); TextActivityDocument d=dest; if(d==null) d=new TextActivityDocument(styleContext); AttributeSet s, s2; s=getStyle(StyleContext.DEFAULT_STYLE); s2=null; d.setParagraphAttributes(0, d.getLength(), s, true); d.boxesContent=boxesContent; d.popupsContent=popupsContent; int ip=0; int lp=getLength(); char[] currentChars=getText(0, lp).toCharArray(); while(ip0){ d.insertString(d.getLength(), si, attr!=null ? attr : s); } if(tm!=null){ tmx.endOffset=d.getLength(); d.tmb.add(tmx); } i=j; s=s2; } int lpd=d.getLength()-dOffset; if(lpd>0){ d.setParagraphAttributes(dOffset, lpd, ep.getAttributes(), true); } // bug: getEndOffset fails! //ip=ep.getEndOffset()+1; ip=l; } d.tmb.setPositions(); return d; } public static Font attributesToFont(AttributeSet s){ int style=(StyleConstants.isBold(s) ? Font.BOLD : 0) | (StyleConstants.isItalic(s) ? Font.ITALIC : 0); return new Font(StyleConstants.getFontFamily(s), style ,StyleConstants.getFontSize(s)); } public JPanelActiveBox[] getPanelBoxes(){ java.util.Vector v=new java.util.Vector(); for(int i=0; i0){ pane.setEditable(true); pane.requestFocus(); pane.getCaret().setVisible(true); setCaretPos(0); locked=false; } else{ locked=true; pane.setEditable(false); pane.getCaret().setVisible(false); } } } protected TextActivityPane buildPane(){ //FillInBlanksPane fp=new FillInBlanksPane(this); FillInBlanksPane fp=new FillInBlanksPane(); fp.setActions(); return fp; } class FillInBlanksPane extends TextActivityPane{ //public FillInBlanksPane(FillInBlanks.Panel fbp){ // super(fbp); //} protected FillInBlanksPane(){ super(FillInBlanks.Panel.this); } public boolean processMouse(MouseEvent e){ if(super.processMouse(e) && e.getID()==MouseEvent.MOUSE_PRESSED && playing && !locked){ int p=this.viewToModel(e.getPoint()); if(p>=0) setCaretPos(p); } return false; } protected void removeChar(int offset) throws BadLocationException{ TargetMarker tm=playDoc.tmb.getCurrentTarget(); if(tm==null || !tm.contains(offset, false)){ playEvent(EventSounds.ACTION_ERROR); return; } boolean lastChar=(tm.getLength()==1); playDoc.remove(offset, 1); tm.target.setModified(true); if(lastChar){ playDoc.insertString(tm.begOffset, tm.target.getFillString(1), playDoc.getFillAttributeSet()); getCaret().setDot(tm.begOffset); } else{ tm.endOffset--; getCaret().setDot(offset); } tm.setPositions(); playDoc.tmb.updateOffsets(); } protected void removeCharCatch(int offset){ try{ removeChar(offset); } catch(BadLocationException ex){ System.err.println("Text activity error:\n"+ex); } } protected void insertChar(int offset, char ch) throws BadLocationException{ TargetMarker tm=playDoc.tmb.getCurrentTarget(); if(tm==null || !tm.contains(offset, true) || ch<0x20) return; int firstFill=getFirstFillChar(tm); if(firstFill>=0){ playDoc.remove(firstFill, 1); if(offset>firstFill) offset--; } else if(tm.getLength()>=tm.target.maxLenResp){ playEvent(EventSounds.ACTION_ERROR); return; } playDoc.insertString(offset, new String(new char[]{ch}), playDoc.getTargetAttributeSet()); tm.target.setModified(true); if(firstFill<0) tm.endOffset++; tm.setPositions(); playDoc.tmb.updateOffsets(); //if(autoJump && tm.getLength()==tm.target.maxLenResp){ if(autoJump && tm.getCurrentText(TextActivityDocument.FILL).length()>=tm.target.maxLenResp){ getCaret().setDot(goToTarget(playDoc.tmb.getNextTarget(tm), -1)); } else{ getCaret().setDot(offset+1); } } protected void insertCharCatch(int offset, char ch){ try{ insertChar(offset, ch); } catch(BadLocationException ex){ System.err.println("Text activity error:\n"+ex); } } protected int getFirstFillChar(TargetMarker tm){ for(int i=tm.begOffset; i 0) && ((mod & ActionEvent.ALT_MASK) == (mod & ActionEvent.CTRL_MASK))){ char c = content.charAt(0); if ((c >= 0x20) && (c != 0x7F)) { insertCharCatch(getCaret().getDot(), c); } } } } }; AbstractAction forwardAction=new AbstractAction(DefaultEditorKit.forwardAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ int k=getCaret().getDot(); setCaretPos(k+1, k, true); } } }; AbstractAction backwardAction=new AbstractAction(DefaultEditorKit.backwardAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ int k=getCaret().getDot(); setCaretPos(k-1, k, false); } } }; AbstractAction nextTargetAction=new AbstractAction("next-target"){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ getCaret().setDot(goToTarget(playDoc.tmb.getNextTarget(null), -1)); } } }; AbstractAction prevTargetAction=new AbstractAction("prev-target"){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ getCaret().setDot(goToTarget(playDoc.tmb.getPrevTarget(null), -1)); } } }; AbstractAction insertBreakAction=new AbstractAction(DefaultEditorKit.insertBreakAction){ public void actionPerformed(ActionEvent e){ insertTabAction.actionPerformed(e); } }; AbstractAction insertTabAction=new AbstractAction(DefaultEditorKit.insertTabAction){ public void actionPerformed(ActionEvent e){ if((e.getModifiers() & ActionEvent.SHIFT_MASK)!=0) prevTargetAction.actionPerformed(e); else nextTargetAction.actionPerformed(e); } }; AbstractAction deletePrevCharAction=new AbstractAction(DefaultEditorKit.deletePrevCharAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ removeCharCatch(getCaret().getDot()-1); } } }; AbstractAction deleteNextCharAction=new AbstractAction(DefaultEditorKit.deleteNextCharAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ removeCharCatch(getCaret().getDot()); } } }; AbstractAction beginWordAction=new AbstractAction(DefaultEditorKit.beginWordAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ TargetMarker tm=playDoc.tmb.getCurrentTarget(); if(tm!=null) setCaretPos(tm.begOffset); } } }; AbstractAction endWordAction=new AbstractAction(DefaultEditorKit.endWordAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ TargetMarker tm=playDoc.tmb.getCurrentTarget(); if(tm!=null) setCaretPos(tm.endOffset); } } }; AbstractAction beginAction=new AbstractAction(DefaultEditorKit.beginAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ if((e.getModifiers() & ActionEvent.CTRL_MASK)!=0) setCaretPos(goToTarget(playDoc.tmb.getElement(0), -1)); else beginWordAction.actionPerformed(e); } } }; AbstractAction endAction=new AbstractAction(DefaultEditorKit.endAction){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ if((e.getModifiers() & ActionEvent.CTRL_MASK)!=0) setCaretPos(goToTarget(playDoc.tmb.getElement(playDoc.tmb.size()-1), -1)); else endWordAction.actionPerformed(e); } } }; AbstractAction showHelpAction=new AbstractAction("show-help"){ public void actionPerformed(ActionEvent e){ if(readyForActions()){ TargetMarker tm=playDoc.tmb.getCurrentTarget(); if(tm!=null && tm.target!=null && tm.target.popupContent!=null && tm.target.infoMode==TextTarget.INFO_ON_DEMAND) tm.target.checkPopup(Panel.this, tm, true); } } }; Action kitUpAction=null; AbstractAction upAction=new AbstractAction(DefaultEditorKit.upAction){ public void actionPerformed(ActionEvent e){ if(kitUpAction!=null && readyForActions()){ int bkPos=getCaret().getDot(); kitUpAction.actionPerformed(e); int newPos=getCaret().getDot(); getCaret().setDot(bkPos); setCaretPos(newPos, bkPos, false); } } }; Action kitDownAction=null; AbstractAction downAction=new AbstractAction(DefaultEditorKit.downAction){ public void actionPerformed(ActionEvent e){ if(kitDownAction!=null && readyForActions()){ int bkPos=getCaret().getDot(); kitDownAction.actionPerformed(e); int newPos=getCaret().getDot(); getCaret().setDot(bkPos); setCaretPos(newPos, bkPos, true); } } }; protected void setActions(){ kitUpAction=getActionMap().get(DefaultEditorKit.upAction); kitDownAction=getActionMap().get(DefaultEditorKit.downAction); java.util.HashMap actionKeys=Actions.getActionKeys(this); //Actions.dumpActionKeys(actionKeys, getActionMap()); ActionMap am=new ActionMap(); am.setParent(getActionMap()); setActionMap(am); //Originals: Actions.mapTraceAction(this, actionKeys, DefaultEditorKit.beepAction); //Actions.mapTraceAction(this, actionKeys, DefaultEditorKit.readOnlyAction); //Actions.mapTraceAction(this, actionKeys, DefaultEditorKit.writableAction); Actions.mapTraceAction(this, actionKeys, "requestFocus"); Actions.mapTraceAction(this, actionKeys, "toggle-componentOrientation"); //Derivats: Actions.mapAction(this, actionKeys, defaultKeyTypedAction); Actions.mapAction(this, actionKeys, insertBreakAction); Actions.mapAction(this, actionKeys, insertTabAction); Actions.mapAction(this, actionKeys, deletePrevCharAction); Actions.mapAction(this, actionKeys, deleteNextCharAction); Actions.mapAction(this, actionKeys, forwardAction); Actions.mapAction(this, actionKeys, backwardAction); Actions.mapAction(this, actionKeys, beginWordAction); Actions.mapAction(this, actionKeys, endWordAction); Actions.mapAction(this, actionKeys, beginAction); Actions.mapAction(this, actionKeys, endAction); Actions.mapAction(this, actionKeys, upAction); Actions.mapAction(this, actionKeys, downAction); Actions.mapAction(this, actionKeys, showHelpAction); Actions.mapAction(this, actionKeys, nextTargetAction); Actions.mapAction(this, actionKeys, prevTargetAction); Actions.mapAction(this, actionKeys, nextTargetAction, DefaultEditorKit.nextWordAction); Actions.mapAction(this, actionKeys, prevTargetAction, DefaultEditorKit.previousWordAction); Actions.mapAction(this, actionKeys, nextTargetAction, DefaultEditorKit.endParagraphAction); Actions.mapAction(this, actionKeys, prevTargetAction, DefaultEditorKit.beginParagraphAction); Actions.mapAction(this, actionKeys, nextTargetAction, DefaultEditorKit.beginLineAction); Actions.mapAction(this, actionKeys, prevTargetAction, DefaultEditorKit.endLineAction); Actions.mapAction(this, actionKeys, nextTargetAction, DefaultEditorKit.pageDownAction); Actions.mapAction(this, actionKeys, prevTargetAction, DefaultEditorKit.pageUpAction); am.setParent(null); getInputMap().put(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_TAB, java.awt.Event.SHIFT_MASK), insertTabAction.getValue(Action.NAME)); getInputMap().put(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0), showHelpAction.getValue(Action.NAME)); } protected void targetChanged(TextTarget tt){ if(readyForActions()){ TargetMarker tm=playDoc.tmb.getElement(tt); if(tm!=null){ TargetMarker currentTm=playDoc.tmb.getCurrentTarget(); goToTarget(tm, -1); //if(currentTm!=tm && evalOnTheFly){ if(currentTm!=tm && !hasCheckButton){ tm.target.setModified(true); goToTarget(tm, -1); } } } } } protected boolean evalTarget(TargetMarker tm){ if(tm.target==null) return false; String src=tm.getCurrentText(TextActivityDocument.FILL); if(src==null || src.length()<1) return false; byte[] result=ev.evalText(src, tm.target.answer); boolean ok=Evaluator.isOk(result); tm.target.targetStatus = ok ? TextTarget.SOLVED : TextTarget.WITH_ERROR; markTarget(tm, result); return ok; } protected void markTarget(TargetMarker tm, byte[] attributes){ if(tm.target.comboList!=null){ tm.target.comboList.checkColors(); tm.target.comboList.repaint(); return; } int bgTarget=tm.begPos.getOffset(); int endTarget=tm.endPos.getOffset(); int p=0; for(int i=bgTarget; imaxCheck){ maxCheck=numChecks[i]; maxCheckIndex=i; } } } byte[] returnFlags=new byte[text.length()]; for(int i=0, k=0; i=0 && iok0 && checkScope>0){ int lbloc=2*checkSteps+1; int[] itcoinc=new int[lbloc]; int i=0, j, is2, iok2, ls2, lok2, jmax; for(j=0; j=lok) continue; is2=(i<0 ? is-i:is); if(is2>=ls) continue; ls2=(ls2=ls-is2)>checkScope ? checkScope : ls2; iok2=(i<0 ? 0:i); lok2=(lok2=lok-iok2)>checkScope ? checkScope : lok2; byte[] flags2=new byte[src.length()-is2]; boolean result2=compareSegment(src.substring(is2), ls2, ok.substring(iok2), lok2, flags2, true); itcoinc[j]=countFlagsOk(flags2); if(result2) break; } if(j==lbloc){ //jmax=itcoinc[checkSteps]; jmax=checkSteps; for(j=0; jitcoinc[jmax]) jmax=j; i=iok+((jmax+1)/2)*((jmax&1)!=0 ? 1 : -1); } else if(itcoinc[j]>0) coinci++; iok=i; lastiok=false; } } } if(iok!=lok){ result=false; attr[lastIs]=Evaluator.FLAG_DEFAULT_ERROR; } return result; } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/text/TextActivityBase.java0000644000175000017500000003706511377161311025615 0ustar /* * File : TextActivitybase.java * Created : 28-may-2001 10:19 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.text; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.TextActivityContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.util.JDomUtility; import edu.xtec.jclic.media.EventSounds; import javax.swing.text.*; import javax.swing.JScrollPane; import javax.swing.JButton; import javax.swing.BorderFactory; import java.awt.*; import edu.xtec.jclic.project.JClicProject; import edu.xtec.util.StrUtils; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class TextActivityBase extends Activity implements TextActivityContentKit.Compatible { protected TextActivityDocument tad; protected StyleContext styleContext; //ActiveBagContent boxesContent; //ActiveBagContent popupsContent; protected boolean hasCheckButton; protected String checkButtonText; protected boolean prevScreen; protected int prevScreenMaxTime; protected String prevScreenText; protected BoxBase prevScreenStyle; // transient properties protected StyledDocument prevScreenDocument; /** Creates new TextActivityBase */ public TextActivityBase(JClicProject project) { super(project); styleContext=new StyleContext(); MutableAttributeSet mas=styleContext.getStyle(StyleContext.DEFAULT_STYLE); if(mas!=null){ StyleConstants.setFontFamily(mas, BoxBase.getDefaultFont().getFamily()); StyleConstants.setBackground(mas, Color.white); } tad=new TextActivityDocument(styleContext); hasCheckButton=false; checkButtonText=""; prevScreen=false; prevScreenMaxTime=0; prevScreenText=null; prevScreenDocument=null; prevScreenStyle=new BoxBase(); } public static final String TYPE="type", CHECK_BUTTON="checkButton", PREV_SCREEN="prevScreen", TEXT="text", MAX_TIME="maxTime"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); if(hasCheckButton) e.addContent(new org.jdom.Element(CHECK_BUTTON).setText(checkButtonText)); if(prevScreen){ org.jdom.Element child=new org.jdom.Element(PREV_SCREEN); if(prevScreenMaxTime>0) child.setAttribute(MAX_TIME, Integer.toString(prevScreenMaxTime)); if(prevScreenText!=null){ child.addContent(prevScreenStyle.getJDomElement()); JDomUtility.setParagraphs(child, prevScreenText); } e.addContent(child); } try{ e.addContent(tad.getJDomElement()); } catch(Exception ex){ System.err.println("Error getting document contents!"); return null; } return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); if((child=e.getChild(CHECK_BUTTON))!=null){ hasCheckButton=true; checkButtonText=child.getText(); } if((child=e.getChild(PREV_SCREEN))!=null){ prevScreen=true; if((prevScreenText=JDomUtility.getParagraphs(child))!=null){ prevScreenStyle=BoxBase.getBoxBase(child.getChild(BoxBase.ELEMENT_NAME)); prevScreenDocument=new DefaultStyledDocument(); TextActivityDocument.boxBaseToStyledDocument(prevScreenStyle, prevScreenDocument); prevScreenDocument.insertString(0, prevScreenText, null); } prevScreenMaxTime=JDomUtility.getIntAttr(child, MAX_TIME, prevScreenMaxTime); } setTextActivityDocument(e.getChild(TextActivityDocument.ELEMENT_NAME)); } public void setTextActivityDocument(org.jdom.Element e) throws Exception{ tad=TextActivityDocument.getTextActivityDocument(e, this); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); setWindowSize(new Dimension(c3a.txtCW, c3a.txtCH)); hasCheckButton=c3a.btCorregir; checkButtonText=c3a.txBtCorregir; if(c3a.avPrevHelp>0){ prevScreen=true; prevScreenMaxTime=c3a.avTimePH; if(c3a.avPrevHelp==2){ prevScreenText=c3a.txPrev; prevScreenStyle=c3a.getBoxBase(3); } messages[PREVIOUS]=new ActiveBoxContent(); messages[PREVIOUS].setBoxBase(messages[MAIN].bb); c3a.setActiveBoxTextContent(messages[PREVIOUS], c3a.initMessPrev); } tad.readClic3Data(c3a, this); } public void setStyleContext(StyleContext sc){ if(sc!=null){ try{ setTextActivityDocument(tad.getJDomElement(sc)); styleContext=sc; } catch(Exception ex){ System.err.println("Error updating document styles:\n"+ex); } } } public StyleContext getStyleContext(){ return styleContext; } protected Evaluator buildClic3Evaluator(edu.xtec.jclic.clic3.Clic3Activity c3a, boolean complex) throws Exception{ org.jdom.Element e=new org.jdom.Element(Evaluator.ELEMENT_NAME); String evaluatorClassName= complex ? ComplexEvaluator.class.getName() : BasicEvaluator.class.getName(); e.setAttribute(JDomUtility.CLASS, evaluatorClassName); e.setAttribute(BasicEvaluator.CHECK_CASE, JDomUtility.boolString(c3a.avMaj)); e.setAttribute(BasicEvaluator.CHECK_ACCENTS, JDomUtility.boolString(c3a.avAcc)); e.setAttribute(BasicEvaluator.CHECK_PUNCTUATION, JDomUtility.boolString(c3a.avPunt)); e.setAttribute(BasicEvaluator.CHECK_DOUBLE_SPACES, JDomUtility.boolString(c3a.avDblSpc)); if(complex){ e.setAttribute(ComplexEvaluator.DETAIL, JDomUtility.boolString(c3a.avLletra)); e.setAttribute(ComplexEvaluator.CHECK_STEPS, Integer.toString(c3a.avScope)); e.setAttribute(ComplexEvaluator.CHECK_SCOPE, Integer.toString(c3a.avMaxScope)); } return Evaluator.getEvaluator(e, c3a.project); } public int getMinNumActions(){ return (tad==null ? 0 : tad.tmb.size()); } public boolean prepareMedia(PlayStation ps){ if(!super.prepareMedia(ps)) return false; //if(boxesContent!=null) boxesContent.prepareMedia(ac); //if(popupsContent!=null) popupsContent.prepareMedia(ac); if(tad!=null){ tad.boxesContent.prepareMedia(ps); tad.popupsContent.prepareMedia(ps); } return true; } public boolean helpSolutionAllowed(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel implements java.awt.event.ActionListener { JScrollPane scrollPane=null; JButton checkButton=null; TextActivityPane pane=null; boolean showingPrevScreen=false; javax.swing.Timer prevScreenTimer=null; TextTarget.PopupTimer popupTimer=null; protected Panel(PlayStation ps){ super(ps); popupTimer=new TextTarget.PopupTimer(this); } public void clear(){ if(prevScreenTimer!=null){ prevScreenTimer.stop(); prevScreenTimer=null; } } public void doLayout(){ int w=getWidth(), h=getHeight(); if(checkButton!=null && checkButton.isVisible()){ int hb=checkButton.getPreferredSize().height; h-=hb; checkButton.setBounds(0, h, w, hb); } if(scrollPane!=null && pane!=null){ if(pane.getBounds().isEmpty()) pane.setBounds(0, 0, w, h); scrollPane.setBounds(0, 0, w, h); } } public void buildVisualComponents() throws Exception{ super.buildVisualComponents(); if(acp!=null){ TextActivityContentKit kit=new TextActivityContentKit(tad, checkButtonText, prevScreenText); if(acp.generateContent(kit, ps)){ checkButtonText=kit.checkButtonText; prevScreenText=kit.prevScreenText; } } if(prevScreen==true && prevScreenText!=null){ prevScreenDocument=new DefaultStyledDocument(); TextActivityDocument.boxBaseToStyledDocument(prevScreenStyle, prevScreenDocument); try{ prevScreenDocument.insertString(0, prevScreenText, null); } catch (Exception e){ System.err.println("Error displaying initial screen:\n"+e); } } pane=buildPane(); scrollPane=new JScrollPane(pane); scrollPane.setBorder(BorderFactory.createEmptyBorder()); scrollPane.getVerticalScrollBar().setBorder(BorderFactory.createLineBorder(Color.darkGray, 1)); add(scrollPane); if(hasCheckButton){ checkButton=new JButton(StrUtils.secureString(checkButtonText, " ")); checkButton.setOpaque(false); checkButton.addActionListener(this); add(checkButton); } if(prevScreen && prevScreenMaxTime>0){ prevScreenTimer=new javax.swing.Timer(1000 * prevScreenMaxTime, this); prevScreenTimer.setRepeats(false); } } protected TextActivityPane buildPane(){ return new TextActivityPane(this); } public void initActivity() throws Exception{ //super.initActivity(); if(prevScreen) preInitActivity(); else startActivity(); } public void startActivity() throws Exception{ super.initActivity(); showingPrevScreen=false; //setCounters(0, 0, 0); setAndPlayMsg(MAIN, EventSounds.START); //ps.setMsg(messages[MAIN]); initDocument(); if(checkButton!=null) checkButton.setVisible(true); ps.playMsg(); //if(messages[MAIN]==null || messages[MAIN].mediaContent==null) // playEvent(EventSounds.START); pane.requestFocus(); playing=true; } public void preInitActivity(){ if(messages[PREVIOUS]==null || prevScreen==false) return; showingPrevScreen=true; if(checkButton!=null) checkButton.setVisible(false); enableCounters(true, false, false); ps.setCounterValue(TIME_COUNTER, 0); ps.setMsg(messages[PREVIOUS]); pane.setEditable(false); pane.setStyledDocument(prevScreenDocument != null ? prevScreenDocument : tad); if(prevScreenTimer!=null){ ps.setCountDown(TIME_COUNTER, prevScreenMaxTime); prevScreenTimer.start(); } ps.playMsg(); } protected void initDocument() throws Exception{ if(tad!=null){ if(pane.getDocument()!=tad) pane.setStyledDocument(tad); //pane.setEditable(true); pane.setEnabled(true); } } public void render(Graphics2D g2, Rectangle dirtyRegion) { } public void requestFocus(){ if(playing && pane!=null) pane.requestFocus(); } public Dimension setDimension(Dimension desiredMaxSize){ return new Dimension( Math.min(desiredMaxSize.width, getWindowSize().width), Math.min(desiredMaxSize.height, getWindowSize().height)); } public void setCursor(Cursor cursor){ if(pane!=null) pane.setCursor(cursor); super.setCursor(cursor); } public void actionPerformed(java.awt.event.ActionEvent e) { if(checkButton!=null && e.getSource()==checkButton){ if(playing) doCheck(true); } if(prevScreenTimer!=null && e.getSource()==prevScreenTimer && showingPrevScreen){ ps.startActivity(this); } } public void forceFinishActivity(){ if(playing) doCheck(false); } protected void doCheck(boolean fromButton){ } public void showHelp(){ if(!helpWindowAllowed() || pane==null) return; HelpActivityComponent hac=null; if(showSolution){ hac=new HelpActivityComponent(this){ TextActivityPane tap=null; JScrollPane jsp=null; public void render(Graphics2D g2, Rectangle dirtyRegion){ } public void init(){ tap=buildPane(); try{ // build new document tap.setStyledDocument(TextActivityDocument.getTextActivityDocument(tad.getJDomElement(), TextActivityBase.this)); } catch(Exception ex){ // reuse existing document (lost floating elements) tap.setStyledDocument(tad); } tap.setEditable(false); tap.setEnabled(false); jsp=new JScrollPane(tap); jsp.setBorder(BorderFactory.createEmptyBorder()); jsp.getVerticalScrollBar().setBorder(BorderFactory.createLineBorder(Color.darkGray, 1)); add(jsp); Dimension size=scrollPane.getBounds().getSize(); jsp.setBounds(0, 0, size.width, size.height); if(tap.getBounds().isEmpty()) tap.setBounds(0, 0, size.width, size.height); setPreferredSize(size); setMaximumSize(size); setMinimumSize(size); } }; hac.init(); } if(ps.showHelp(hac, helpMsg)) ps.reportNewAction(getActivity(), ACTION_HELP, null, null, false, -1); if(hac!=null) hac.end(); } } public TextActivityDocument getDocument(){ return tad; } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/memory/0000755000175000017500000000000011377161311022027 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/memory/MemoryGame.java0000644000175000017500000002417011377161311024740 0ustar /* * File : MemoryGame.java * Created : 30-apr-2001 14:00 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.memory; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.*; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class MemoryGame extends Activity implements ActiveBagContentKit.Compatible { /** Creates new MemoryGame */ public MemoryGame(JClicProject project){ super(project); boxGridPos=AB; abc=new ActiveBagContent[2]; //for(int i=0; i<2; i++) // abc[i]=null; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, 'A'); } public org.jdom.Element getJDomElement(){ org.jdom.Element ex=null; if(abc[0]==null) return null; org.jdom.Element e=super.getJDomElement(); e.addContent(abc[0].getJDomElement().setAttribute(ID, PRIMARY)); if(abc[1]!=null) e.addContent(abc[1].getJDomElement().setAttribute(ID, SECONDARY)); ex=new org.jdom.Element(SCRAMBLE);{ ex.setAttribute(TIMES, Integer.toString(shuffles)); e.addContent(ex); } ex=new org.jdom.Element(LAYOUT); ex.setAttribute(POSITION, LAYOUT_NAMES[boxGridPos]); e.addContent(ex); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); ActiveBagContent bag=null; abc[1]=null; java.util.Iterator itr = e.getChildren(ActiveBagContent.ELEMENT_NAME).iterator(); while (itr.hasNext()){ child=((org.jdom.Element)itr.next()); bag=ActiveBagContent.getActiveBagContent(child, project.mediaBag); String id=JDomUtility.getStringAttr(child, ID, PRIMARY, false); if(PRIMARY.equals(id)) abc[0]=bag; else if(SECONDARY.equals(id)) abc[1]=bag; } if(abc[0]==null) throw new IllegalArgumentException("Memory game without ActiveBagContent"); if((child=e.getChild(SCRAMBLE))!=null){ shuffles=JDomUtility.getIntAttr(child, TIMES, shuffles); } if((child=e.getChild(LAYOUT))!=null) boxGridPos=JDomUtility.getStrIndexAttr(child, POSITION, LAYOUT_NAMES, boxGridPos); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); abc[0]=c3a.createActiveBagContent(0); abc[0].setBoxBase(c3a.getBoxBase(0)); boxGridPos=c3a.graPos; } public int getMinNumActions(){ return abc[0]==null ? 0 : abc[0].getNumCells(); } public boolean hasRandom(){ return true; } public boolean shuffleAlways(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel { ActiveBoxBag bg; protected Panel(PlayStation ps){ super(ps); bc=new BoxConnector(this); } public void clear(){ if(bg!=null){ bg.end(); bg=null; } } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null){ if(acp!=null){ ActiveBagContent[] abcPass = abc[1]==null ? new ActiveBagContent[] {abc[0]} : new ActiveBagContent[] {abc[0], abc[1]}; acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abcPass, false), ps); } int ncw=abc[0].ncw; int nch=abc[0].nch; if(boxGridPos==AB || boxGridPos==BA) ncw*=2; else nch*=2; bg=new ActiveBoxGrid(null, this, margin, margin, abc[0].w*ncw, abc[0].h*nch, new edu.xtec.jclic.shapers.Rectangular(ncw, nch), abc[0].bb); int nc=abc[0].getNumCells(); bg.setBorder(abc[0].border); bg.setContent(abc[0], null, 0, 0, nc); bg.setContent((abc[1]!=null ? abc[1] : abc[0]), null, 0, nc, nc); for(int i=0; i<2; i++){ for(int j=0; j=menuElements.size()) return null; return (MenuElement)menuElements.get(n); } public void addMenuElement(MenuElement me){ menuElements.add(me); } public int getMinNumActions() { return 0; } public Editor getEditor(Editor parent){ return Editor.createEditor(getClass().getName()+"Editor", this, parent); } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel implements ActionListener { VFlowScrollPane scrollPane; JPanel panel; protected Panel(PlayStation ps){ super(ps); } public void buildVisualComponents() throws Exception{ super.buildVisualComponents(); panel=new JPanel(); panel.setBackground(activityBgColor); panel.setLayout(new java.awt.FlowLayout()); scrollPane=new VFlowScrollPane(panel); scrollPane.setBorder(BorderFactory.createEmptyBorder()); scrollPane.getVerticalScrollBar().setBorder(BorderFactory.createLineBorder(Color.darkGray, 1)); addButtons(); add(scrollPane); } public void addButtons(){ panel.removeAll(); for(int i=0; i=0){ MenuElement me=getMenuElement(i); if(me!=null && (me.projectPath!=null || me.sequence!=null)){ MediaContent mc=new MediaContent(); if(MenuElement.RETURN_TAG.equals(me.sequence)){ mc.mediaType=MediaContent.RETURN; } else{ mc.mediaType=MediaContent.RUN_CLIC_PACKAGE; mc.mediaFileName=me.sequence; mc.externalParam=me.projectPath; } ps.playMedia(mc, null); } } } } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/panels/Explore.java0000644000175000017500000002246211377161311024270 0ustar /* * File : Explore.java * Created : 27-apr-2001 12:49 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.bags.ActivitySequenceElement; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.*; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Explore extends Activity implements ActiveBagContentKit.Compatible { /** Creates new Explore */ public Explore(JClicProject project) { super(project); boxGridPos=AB; abc=new ActiveBagContent[2]; //for(int i=0; i<2; i++) // abc[i]=null; scramble[0]=false; bTimeCounter=bScoreCounter=bActionsCounter=false; includeInReports=false; reportActions=false; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, '1', true, false, 50, 30); abc[1]=ActiveBagContent.initNew(1, 6, 'A'); } public org.jdom.Element getJDomElement(){ org.jdom.Element ex=null; if(abc[0]==null || abc[1]==null) return null; org.jdom.Element e=super.getJDomElement(); e.addContent(abc[0].getJDomElement().setAttribute(ID, PRIMARY)); e.addContent(abc[1].getJDomElement().setAttribute(ID, SECONDARY)); ex=new org.jdom.Element(SCRAMBLE);{ ex.setAttribute(TIMES, Integer.toString(shuffles)); ex.setAttribute(PRIMARY, JDomUtility.boolString(scramble[0])); e.addContent(ex); } ex=new org.jdom.Element(LAYOUT); ex.setAttribute(POSITION, LAYOUT_NAMES[boxGridPos]); e.addContent(ex); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); ActiveBagContent bag=null; java.util.Iterator itr = e.getChildren(ActiveBagContent.ELEMENT_NAME).iterator(); while (itr.hasNext()){ child=((org.jdom.Element)itr.next()); bag=ActiveBagContent.getActiveBagContent(child, project.mediaBag); String id=JDomUtility.getStringAttr(child, ID, PRIMARY, false); if(PRIMARY.equals(id)) abc[0]=bag; else if(SECONDARY.equals(id)) abc[1]=bag; } if(abc[0]==null || abc[1]==null) throw new IllegalArgumentException("Explore activity without content!"); if((child=e.getChild(SCRAMBLE))!=null){ shuffles=JDomUtility.getIntAttr(child, TIMES, shuffles); scramble[0]=JDomUtility.getBoolAttr(child, PRIMARY, scramble[0]); } if((child=e.getChild(LAYOUT))!=null) boxGridPos=JDomUtility.getStrIndexAttr(child, POSITION, LAYOUT_NAMES, boxGridPos); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); for(int i=0; i<2; i++){ abc[i]=c3a.createActiveBagContent(i); abc[i].setBoxBase(c3a.getBoxBase(i)); } // Clic3 bug abc[1].border=false; abc[0].setIds(c3a.ass); boxGridPos=c3a.graPos; // Clic3 bug: //scramble=c3a.bar[0]; scramble[0]=false; bScoreCounter=bActionsCounter=false; includeInReports=false; reportActions=false; } public boolean mustPauseSequence(){ return true; } public int getMinNumActions(){ return 0; } public boolean hasRandom(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel { ActiveBoxBag[] bg=new ActiveBoxBag[2]; protected Panel(PlayStation ps){ super(ps); for(int i=0; i<2; i++) bg[i]=null; } public void clear(){ for(int i=0; i<2; i++) if(bg[i]!=null){ bg[i].end(); bg[i]=null; } } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null && abc[1]!=null){ // consider the use of assIds if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, true), ps); bg[0]=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]); // Clic3 behavior!!! double w=abc[1].w; if(boxGridPos==AUB || boxGridPos==BUA) w=abc[0].getTotalWidth(); bg[1]=new ActiveBoxGrid(null, this, margin, margin, w, abc[1].h, new edu.xtec.jclic.shapers.Rectangular(1, 1), abc[1].bb); bg[0].setContent(abc[0]); bg[0].setDefaultIdAss(); bg[1].getActiveBox(0).setInactive(false); bg[0].setVisible(true); bg[1].setVisible(true); invalidate(); } } public void initActivity() throws Exception{ super.initActivity(); if(!firstRun) buildVisualComponents(); else firstRun=false; setAndPlayMsg(MAIN, EventSounds.START); //ps.setMsg(messages[MAIN]); if(bg[0]!=null && bg[1]!=null){ if(scramble[0]) shuffle(new ActiveBoxBag[] {bg[0]}, true, true); //ps.playMsg(); //if(messages[MAIN]==null || messages[MAIN].mediaContent==null) // playEvent(EventSounds.START); if(useOrder) currentItem=bg[0].getNextItem(-1); playing=true; } } public void render(Graphics2D g2, Rectangle dirtyRegion) { for(int i=0; i<2; i++) if(bg[i]!=null) bg[i].update(g2, dirtyRegion, this); } public Dimension setDimension(Dimension preferredMaxSize){ if(bg[0]==null || bg[1]==null || getSize().equals(preferredMaxSize)) return preferredMaxSize; return BoxBag.layoutDouble(preferredMaxSize, bg[0], bg[1], boxGridPos, margin); } public void processMouse(MouseEvent e){ ActiveBox bx1, bx2; boolean m=false; if(playing) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: ps.stopMedia(1); if((bx1=bg[0].findActiveBox(e.getPoint()))!=null){ bx2=bg[1].getActiveBox(0); if(bx1.idAss!=-1 && (!useOrder || bx1.idOrder==currentItem)){ bx2.setContent(abc[1], bx1.idAss); if(!bx2.playMedia(ps) && !bx1.playMedia(ps)) playEvent(EventSounds.CLICK); if(useOrder) currentItem=bg[0].getNextItem(currentItem); ps.reportNewAction(getActivity(), ACTION_SELECT, bx1.getDescription(), bx2.getDescription(), true, 0); // Clic 3.0 behavior: if(bx1.idAss>=0 && bx1.idAss0 && (project.activitySequence.getNavButtonsFlag() & ActivitySequenceElement.NAV_FWD)==0){ finishActivity(true); } } } else{ bx2.clear(); bx2.setInactive(false); } } break; } } } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/panels/Identify.java0000644000175000017500000002035611377161311024425 0ustar /* * File : Identify.java * Created : 27-apr-2001 10:36 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.panels; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.*; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class Identify extends Activity implements ActiveBagContentKit.Compatible { int nonAssignedCells; int cellsToMatch; /** Creates new Identify */ public Identify(JClicProject project) { super(project); abc=new ActiveBagContent[2]; //for(int i=0; i<2; i++) // abc[i]=null; scramble[0]=true; nonAssignedCells=0; cellsToMatch=1; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, 'A'); //abc[0].getActiveBoxContent(0).id=1; abc[0].setAllIdsTo(0); abc[0].defaultIdValue=0; } public org.jdom.Element getJDomElement(){ org.jdom.Element ex=null; if(abc[0]==null) return null; org.jdom.Element e=super.getJDomElement(); e.addContent(abc[0].getJDomElement().setAttribute(ID, PRIMARY)); if(abc[1]!=null) e.addContent(abc[1].getJDomElement().setAttribute(ID, SOLVED_PRIMARY)); ex=new org.jdom.Element(SCRAMBLE);{ ex.setAttribute(TIMES, Integer.toString(shuffles)); ex.setAttribute(PRIMARY, JDomUtility.boolString(scramble[0])); e.addContent(ex); } return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); ActiveBagContent bag=null; abc[1]=null; java.util.Iterator itr = e.getChildren(ActiveBagContent.ELEMENT_NAME).iterator(); while (itr.hasNext()){ child=((org.jdom.Element)itr.next()); bag=ActiveBagContent.getActiveBagContent(child, project.mediaBag); String id=JDomUtility.getStringAttr(child, ID, PRIMARY, false); if(PRIMARY.equals(id)) abc[0]=bag; else if(SOLVED_PRIMARY.equals(id)) abc[1]=bag; } if(abc[0]==null) throw new IllegalArgumentException("Identify activity without contents"); if((child=e.getChild(SCRAMBLE))!=null){ shuffles=JDomUtility.getIntAttr(child, TIMES, shuffles); scramble[0]=JDomUtility.getBoolAttr(child, PRIMARY, scramble[0]); } } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); abc[0]=c3a.createActiveBagContent(0); abc[0].setBoxBase(c3a.getBoxBase(0)); abc[0].setIds(c3a.ass); scramble[0]=c3a.bar[0]; abc[1]=c3a.sol ? c3a.createActiveBagContent(2) : null; } public int getMinNumActions(){ return cellsToMatch; } public boolean hasRandom(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel { ActiveBoxBag bg; protected Panel(PlayStation ps){ super(ps); bg=null; } public void clear(){ if(bg!=null){ bg.end(); bg=null; } } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null){ // considerar assIds ? if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, (new ActiveBagContent[] {abc[0], null, abc[1]}), true), ps); bg=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]); bg.setContent(abc[0], abc[1]); bg.setAlternative(false); bg.setDefaultIdAss(); nonAssignedCells=0; cellsToMatch=0; for(int i=0; i0){ boolean ok=false; boolean repeated=false; int c; for(c=0; c=0 && k=0 && cur!=null){ if(upperCase) ch=Character.toUpperCase(ch); grid.setCharAt(cur.x, cur.y, ch); boolean ok=grid.isCellOk(cur.x, cur.y, checkCase); int r=getCurrentScore(); ps.reportNewAction(getActivity(), ACTION_WRITE, new String().copyValueOf(new char[]{ch}), "X:"+cur.x+" Y:"+cur.y, ok, r); if(r==numLetters){ grid.setCursorEnabled(false); grid.stopCursorBlink(); finishActivity(true); } else{ //playEvent(ok ? EventSounds.ACTION_OK : EventSounds.ACTION_ERROR); playEvent(EventSounds.CLICK); if(advance==ADVANCE_RIGHT) moveCursor(1, 0); else if(advance==ADVANCE_DOWN) moveCursor(0, 1); } } break; case KeyEvent.KEY_PRESSED: int dx=0, dy=0; switch(e.getKeyCode()){ case KeyEvent.VK_RIGHT: dx=1; break; case KeyEvent.VK_LEFT: dx=-1; break; case KeyEvent.VK_DOWN: dy=1; break; case KeyEvent.VK_UP: dy=-1; break; } if(dx!=0 || dy!=0) moveCursor(dx, dy); break; } } public void focusGained(FocusEvent e){ if(playing && grid!=null) grid.startCursorBlink(); } public void focusLost(FocusEvent e){ if(grid!=null) grid.stopCursorBlink(); } public void actionPerformed(ActionEvent ev){ advance=NO_ADVANCE; if(ev.getSource().equals(hClueBtn)){ if(hClueBtn.isSelected())advance=ADVANCE_RIGHT; vClueBtn.setSelected(false); } else if(ev.getSource().equals(vClueBtn)){ if(vClueBtn.isSelected())advance=ADVANCE_DOWN; hClueBtn.setSelected(false); } requestFocus(); } } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/associations/0000755000175000017500000000000011377161311023216 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/associations/ComplexAssociation.java0000644000175000017500000002124211377161311027666 0ustar /* * File : ComplexAssociation.java * Created : 23-apr-2001 9:57 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.associations; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ComplexAssociation extends SimpleAssociation { int nonAssignedCells; /** Creates new ComplexAssociation */ public ComplexAssociation(JClicProject project) { super(project); nonAssignedCells=0; invAss=false; useIdAss=true; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, 'A', true, false, 50, 30); abc[1]=ActiveBagContent.initNew(3, 2, '1'); //abc[2]=ActiveBagContent.initNew(3, 2, 'a'); } protected static final String INVERSE="inverse"; public org.jdom.Element getJDomElement(){ org.jdom.Element e=super.getJDomElement(); if(e!=null) if(invAss) e.setAttribute(INVERSE, JDomUtility.boolString(invAss)); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ super.setProperties(e, aux); invAss=JDomUtility.getBoolAttr(e, INVERSE, invAss); abc[0].avoidAllIdsNull(abc[1].getNumCells()); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); invAss=c3a.invAss; abc[0].setIds(c3a.ass); } public int getMinNumActions(){ if(abc[0]==null || abc[1]==null) return 0; if(invAss) return abc[1].getNumCells(); else return abc[0].getNumCells()-nonAssignedCells; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends SimpleAssociation.Panel { boolean [] invAssCheck; protected Panel(PlayStation ps){ super(ps); invAssCheck=null; } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null && abc[1]!=null){ if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, true), ps); if(invAss){ invAssCheck=new boolean[abc[1].getNumCells()]; for(int i=0; i=0){ ActiveBox bxSolution=bg[1].getActiveBox(useIdAss ? bx.idAss : bx.idOrder); markBox(bxSolution, false); if(bxSolution!=null) ps.reportNewAction(getActivity(), ACTION_HELP, bx.getDescription(), bxSolution.getDescription(), false, cellsPlaced); } } break; case MouseEvent.MOUSE_RELEASED: unmarkBox(); break; } } }; hac.init(); } if(ps.showHelp(hac, helpMsg)) ps.reportNewAction(getActivity(), ACTION_HELP, null, null, false, bg[1].countCellsWithIdAss(-1)); if(hac!=null) hac.end(); } } } jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/puzzles/0000755000175000017500000000000011377161311022233 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/puzzles/ExchangePuzzle.java0000644000175000017500000002241611377161311026037 0ustar /* * File : ExchangePuzzle.java * Created : 25-dec-2000 3:01 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.puzzles; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.*; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; import edu.xtec.jclic.edit.Editor; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class ExchangePuzzle extends Activity implements ActiveBagContentKit.Compatible { /** Creates new ExchangePuzzle */ public ExchangePuzzle(JClicProject project) { super(project); abc=new ActiveBagContent[1]; dragCells=true; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, 'A'); } public org.jdom.Element getJDomElement(){ org.jdom.Element ex=null; if(abc[0]==null) return null; org.jdom.Element e=super.getJDomElement(); e.addContent(abc[0].getJDomElement()); ex=new org.jdom.Element(SCRAMBLE);{ ex.setAttribute(TIMES, Integer.toString(shuffles)); e.addContent(ex); } return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); child=e.getChild(ActiveBagContent.ELEMENT_NAME); if(child!=null) abc[0]=ActiveBagContent.getActiveBagContent(child, project.mediaBag); if(abc[0]==null) throw new IllegalArgumentException("Puzzle without content!"); if((child=e.getChild(SCRAMBLE))!=null) shuffles=JDomUtility.getIntAttr(child, TIMES, shuffles); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); abc[0]=c3a.createActiveBagContent(0); abc[0].setBoxBase(c3a.getBoxBase(0)); dragCells=true; } public int getMinNumActions(){ return abc[0]==null ? 0 : abc[0].getNumCells(); } public boolean helpSolutionAllowed(){ return true; } public boolean hasRandom(){ return true; } public boolean shuffleAlways(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel { ActiveBoxBag bg; protected Panel(PlayStation ps){ super(ps); bc=new BoxConnector(this); } public void clear(){ if(bg!=null){ bg.end(); bg=null; } } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null){ if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, false), ps); bg=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]); bg.setContent(abc[0]); bg.setVisible(true); invalidate(); } } public void initActivity() throws Exception{ super.initActivity(); if(!firstRun) buildVisualComponents(); firstRun=false; setAndPlayMsg(MAIN, EventSounds.START); //ps.setMsg(messages[MAIN]); if(bg!=null){ shuffle(new ActiveBoxBag[] {bg}, true, false); ps.setCounterValue(SCORE_COUNTER, bg.countCellsAtEquivalentPlace(true)); //ps.playMsg(); //if(messages[MAIN]==null || messages[MAIN].mediaContent==null) // playEvent(EventSounds.START); playing=true; } } public void render(Graphics2D g2, Rectangle dirtyRegion) { if(bg!=null) bg.update(g2, dirtyRegion, this); if(bc.active) bc.update(g2, dirtyRegion, this); } public Dimension setDimension(Dimension preferredMaxSize){ if(bg==null || getSize().equals(preferredMaxSize)) return preferredMaxSize; return BoxBag.layoutSingle(preferredMaxSize, bg, margin); } public void processMouse(MouseEvent e){ ActiveBox bx1, bx2; Point p=e.getPoint(); boolean m=false; if(playing) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: ps.stopMedia(1); if(bc.active){ if(dragCells) bx1=bc.getBox(); else bx1=bg.findActiveBox(bc.origin); bc.end(); bx2=bg.findActiveBox(p); if(bx1!=null && bx2!=null){ String src=bx1.getDescription()+"("+bx1.idOrder+")"; String dest="("+bx2.idLoc+")"; boolean ok=(bx1.idOrder==bx2.idLoc); bx1.exchangeLocation(bx2); int cellsAtPlace=bg.countCellsAtEquivalentPlace(true); ps.reportNewAction(getActivity(), ACTION_PLACE, src, dest, ok, cellsAtPlace); if(ok && cellsAtPlace==bg.getNumCells()) finishActivity(true); else playEvent(ok ? EventSounds.ACTION_OK : EventSounds.ACTION_ERROR); } repaint(); } else{ if((bx1=bg.findActiveBox(p))!=null){ if(dragCells) bc.begin(p, bx1); else bc.begin(p); m=bx1.playMedia(ps); if(!m) playEvent(EventSounds.CLICK); } } break; case MouseEvent.MOUSE_MOVED: case MouseEvent.MOUSE_DRAGGED: bc.moveTo(p); break; } } public void showHelp(){ if(!helpWindowAllowed() || bg==null) return; HelpActivityComponent hac=null; if(showSolution){ hac=new HelpActivityComponent(this){ ActiveBoxBag abb=null; public void render(Graphics2D g2, Rectangle dirtyRegion){ if(abb!=null) abb.update(g2, dirtyRegion, this); } public void init(){ abb=ActiveBoxGrid.createEmptyGrid(null, this, DEFAULT_MARGIN, DEFAULT_MARGIN, abc[0]); abb.setContent(abc[0]); abb.setVisible(true); Dimension size=bg.getBounds().getSize(); abb.setBounds(DEFAULT_MARGIN, DEFAULT_MARGIN, size.width, size.height); size.width+=2*DEFAULT_MARGIN; size.height+=2*DEFAULT_MARGIN; setPreferredSize(size); setMaximumSize(size); setMinimumSize(size); Point p=(Point)getClientProperty(HelpActivityComponent.PREFERRED_LOCATION); if(p!=null) p.translate((int)bg.x-DEFAULT_MARGIN, (int)bg.y-DEFAULT_MARGIN); } public void processMouse(MouseEvent e){ ActiveBox bx; if(abb!=null && (bx=abb.findActiveBox(e.getPoint()))!=null) bx.playMedia(ps); } }; hac.init(); } if(ps.showHelp(hac, helpMsg)) ps.reportNewAction(getActivity(), ACTION_HELP, null, null, false, bg.countCellsAtEquivalentPlace(true)); if(hac!=null) hac.end(); } } }jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/puzzles/HolePuzzle.java0000644000175000017500000002471211377161311025205 0ustar /* * File : HolePuzzle.java * Created : 13-sep-2001 19:52 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.puzzles; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.*; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class HolePuzzle extends Activity implements ActiveBagContentKit.Compatible { /** Creates new ExchangePuzzle */ public HolePuzzle(JClicProject project) { super(project); abc=new ActiveBagContent[1]; boxGridPos=AB; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, 'A'); } public org.jdom.Element getJDomElement(){ org.jdom.Element ex=null; if(abc[0]==null) return null; org.jdom.Element e=super.getJDomElement(); e.addContent(abc[0].getJDomElement()); ex=new org.jdom.Element(SCRAMBLE);{ ex.setAttribute(TIMES, Integer.toString(shuffles)); e.addContent(ex); } ex=new org.jdom.Element(LAYOUT); ex.setAttribute(POSITION, LAYOUT_NAMES[boxGridPos]); e.addContent(ex); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); child=e.getChild(ActiveBagContent.ELEMENT_NAME); if(child!=null) abc[0]=ActiveBagContent.getActiveBagContent(child, project.mediaBag); if(abc[0]==null/* || abc[0].ncw*abc[0].nch<2*/) throw new IllegalArgumentException("Puzzle without content!"); if((child=e.getChild(SCRAMBLE))!=null) shuffles=JDomUtility.getIntAttr(child, TIMES, shuffles); if((child=e.getChild(LAYOUT))!=null) boxGridPos=JDomUtility.getStrIndexAttr(child, POSITION, LAYOUT_NAMES, boxGridPos); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); abc[0]=c3a.createActiveBagContent(0); abc[0].setBoxBase(c3a.getBoxBase(0)); boxGridPos=c3a.graPos; } public int getMinNumActions(){ return abc[0]==null ? 0 : abc[0].getNumCells(); } public boolean helpSolutionAllowed(){ return true; } public boolean hasRandom(){ return true; } public boolean shuffleAlways(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel { ActiveBoxGrid bg, parkBg; int hiddenBoxIndex; ActiveBox hiddenBox; protected Panel(PlayStation ps){ super(ps); bg=parkBg=null; hiddenBoxIndex=0; hiddenBox=null; } public void clear(){ if(bg!=null){bg.end(); bg=null;} if(parkBg!=null){parkBg.end(); parkBg=null;} } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null){ if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, false), ps); bg=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]); bg.setContent(abc[0]); bg.setVisible(true); hiddenBoxIndex=(int)(Math.random()*bg.getNumCells()); hiddenBox=bg.getActiveBox(hiddenBoxIndex); hiddenBox.setVisible(false); parkBg=new ActiveBoxGrid(null, this, margin, margin, hiddenBox.width, hiddenBox.height, new edu.xtec.jclic.shapers.Rectangular(1, 1), abc[0].bb); parkBg.setContent(abc[0], null, hiddenBoxIndex, 0, 1); parkBg.setBorder(bg.hasBorder()); parkBg.setVisible(true); invalidate(); } } public void initActivity() throws Exception{ super.initActivity(); if(!firstRun) buildVisualComponents(); firstRun=false; setAndPlayMsg(MAIN, EventSounds.START); //ps.setMsg(messages[MAIN]); if(bg!=null){ java.util.Random random=new java.util.Random(); if(shuffles%2!=1) shuffles++; for(int i=0; i=bg.nCols) pth.x-=2*v; } else{ pth.y+=v; if(pth.y<0 || pth.y>=bg.nRows) pth.y-=2*v; } ActiveBox dstBx=bg.getActiveBoxWithIdLoc(pth.y*bg.nCols+pth.x); if(dstBx!=null) hiddenBox.exchangeLocation(dstBx); } ps.setCounterValue(SCORE_COUNTER, bg.countCellsAtEquivalentPlace(true)); //ps.playMsg(); //if(messages[MAIN]==null || messages[MAIN].mediaContent==null) // playEvent(EventSounds.START); playing=true; } } public void render(Graphics2D g2, Rectangle dirtyRegion) { if(bg!=null) bg.update(g2, dirtyRegion, this); if(parkBg!=null) parkBg.update(g2, dirtyRegion, this); } public Dimension setDimension(Dimension preferredMaxSize){ if(bg==null || parkBg==null || getSize().equals(preferredMaxSize)) return preferredMaxSize; return BoxBag.layoutDouble(preferredMaxSize, bg, parkBg, boxGridPos, margin); } public void processMouse(MouseEvent e){ ActiveBox bx; Point p=e.getPoint(); boolean m=false; if(playing) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: ps.stopMedia(1); bx=bg.findActiveBox(p); if(bx!=null){ if(bx.isVisible()){ Point pt=bg.getCoordDist(bx, hiddenBox); if(Math.abs(pt.x)+Math.abs(pt.y)==1){ m=bx.playMedia(ps); String src=bx.getDescription()+"("+bx.idOrder+")"; String dest="("+hiddenBox.idLoc+")"; bx.exchangeLocation(hiddenBox); boolean ok=(bx.idOrder==bx.idLoc); int cellsAtPlace=bg.countCellsAtEquivalentPlace(true); ps.reportNewAction(getActivity(), ACTION_SELECT, src, dest, ok, cellsAtPlace); if(ok && cellsAtPlace==bg.getNumCells()){ hiddenBox.setVisible(true); parkBg.setVisible(false); finishActivity(true); } else if(!m) playEvent(EventSounds.CLICK); } } else playEvent(EventSounds.ACTION_ERROR); } repaint(); break; } } public void showHelp(){ if(!helpWindowAllowed() || bg==null) return; HelpActivityComponent hac=null; if(showSolution){ hac=new HelpActivityComponent(this){ ActiveBoxBag abb=null; public void render(Graphics2D g2, Rectangle dirtyRegion){ if(abb!=null) abb.update(g2, dirtyRegion, this); } public void init(){ abb=ActiveBoxGrid.createEmptyGrid(null, this, DEFAULT_MARGIN, DEFAULT_MARGIN, abc[0]); abb.setContent(abc[0]); abb.setVisible(true); Dimension size=bg.getBounds().getSize(); abb.setBounds(DEFAULT_MARGIN, DEFAULT_MARGIN, size.width, size.height); size.width+=2*DEFAULT_MARGIN; size.height+=2*DEFAULT_MARGIN; setPreferredSize(size); setMaximumSize(size); setMinimumSize(size); Point p=(Point)getClientProperty(HelpActivityComponent.PREFERRED_LOCATION); if(p!=null) p.translate((int)bg.x-DEFAULT_MARGIN, (int)bg.y-DEFAULT_MARGIN); } public void processMouse(MouseEvent e){ // no mouse } }; hac.init(); } if(ps.showHelp(hac, helpMsg)) ps.reportNewAction(getActivity(), ACTION_HELP, null, null, false, bg.countCellsAtEquivalentPlace(true)); if(hac!=null) hac.end(); } } }jclic-0.2.1.0.orig/src/activities/edu/xtec/jclic/activities/puzzles/DoublePuzzle.java0000644000175000017500000002706511377161311025534 0ustar /* * File : DoublePuzzle.java * Created : 20-apr-2001 10:31 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.activities.puzzles; import edu.xtec.jclic.*; import edu.xtec.jclic.automation.ActiveBagContentKit; import edu.xtec.jclic.boxes.*; import edu.xtec.jclic.media.EventSounds; import edu.xtec.util.JDomUtility; import java.awt.*; import java.awt.event.MouseEvent; import edu.xtec.jclic.project.JClicProject; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public class DoublePuzzle extends Activity implements ActiveBagContentKit.Compatible { /** Creates new DoublePuzzle */ public DoublePuzzle(JClicProject project) { super(project); abc=new ActiveBagContent[1]; boxGridPos=AB; dragCells=true; } public void initNew(){ super.initNew(); abc[0]=ActiveBagContent.initNew(3, 2, 'A'); } public org.jdom.Element getJDomElement(){ org.jdom.Element ex=null; if(abc[0]==null) return null; org.jdom.Element e=super.getJDomElement(); e.addContent(abc[0].getJDomElement()); ex=new org.jdom.Element(SCRAMBLE); ex.setAttribute(TIMES, Integer.toString(shuffles)); e.addContent(ex); ex=new org.jdom.Element(LAYOUT); ex.setAttribute(POSITION, LAYOUT_NAMES[boxGridPos]); e.addContent(ex); return e; } public void setProperties(org.jdom.Element e, Object aux) throws Exception{ org.jdom.Element child; super.setProperties(e, aux); child=e.getChild(ActiveBagContent.ELEMENT_NAME); if(child!=null) abc[0]=ActiveBagContent.getActiveBagContent(child, project.mediaBag); if(abc[0]==null) throw new IllegalArgumentException("Puzzle without data!"); if((child=e.getChild(SCRAMBLE))!=null) shuffles=JDomUtility.getIntAttr(child, TIMES, shuffles); if((child=e.getChild(LAYOUT))!=null) boxGridPos=JDomUtility.getStrIndexAttr(child, POSITION, LAYOUT_NAMES, boxGridPos); } public void setProperties(edu.xtec.jclic.clic3.Clic3Activity c3a) throws Exception{ super.setProperties(c3a); abc[0]=c3a.createActiveBagContent(0); boxGridPos=c3a.graPos; abc[0].setBoxBase(c3a.getBoxBase(0)); dragCells=true; } public int getMinNumActions(){ if(abc[0]==null) return 0; return abc[0].getNumCells(); } public boolean hasRandom(){ return true; } public boolean shuffleAlways(){ return true; } public boolean helpSolutionAllowed(){ return true; } public Activity.Panel getActivityPanel(PlayStation ps) { return new Panel(ps); } class Panel extends Activity.Panel { ActiveBoxBag bgA, bgB; protected Panel(PlayStation ps){ super(ps); bc=new BoxConnector(this); } public void clear(){ if(bgA!=null){bgA.end(); bgA=null;} if(bgB!=null){bgB.end(); bgB=null;} } public void buildVisualComponents() throws Exception{ if(firstRun) super.buildVisualComponents(); clear(); if(abc[0]!=null){ if(acp!=null) acp.generateContent(new ActiveBagContentKit(abc[0].nch, abc[0].ncw, abc, false), ps); bgA=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]); bgB=ActiveBoxGrid.createEmptyGrid(null, this, margin, margin, abc[0]); bgA.setContent(abc[0]); bgA.setVisible(true); bgB.setVisible(true); ActiveBox bgbA=bgA.getBackgroundActiveBox(); ActiveBox bgbB=bgB.getBackgroundActiveBox(); if(bgbA!=null && bgbB!=null) bgbB.exchangeContent(bgbA); invalidate(); } } public void initActivity() throws Exception{ super.initActivity(); if(!firstRun) buildVisualComponents(); else firstRun=false; setAndPlayMsg(MAIN, EventSounds.START); //ps.setMsg(messages[MAIN]); if(bgA!=null && bgB!=null){ shuffle(new ActiveBoxBag[] {bgA}, true, true); //ps.playMsg(); //if(messages[MAIN]==null || messages[MAIN].mediaContent==null) // playEvent(EventSounds.START); if(useOrder) currentItem=bgA.getNextItem(-1); playing=true; } } public void render(Graphics2D g2, Rectangle dirtyRegion) { if(bgA!=null) bgA.update(g2, dirtyRegion, this); if(bgB!=null) bgB.update(g2, dirtyRegion, this); if(bc.active) bc.update(g2, dirtyRegion, this); } public Dimension setDimension(Dimension preferredMaxSize){ if(bgA==null || bgB==null || getSize().equals(preferredMaxSize)) return preferredMaxSize; return BoxBag.layoutDouble(preferredMaxSize, bgA, bgB, boxGridPos, margin); } public void processMouse(MouseEvent e){ ActiveBox bx1, bx2; Point p=e.getPoint(); boolean m=false; if(playing) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: ps.stopMedia(1); if(bc.active){ if(dragCells) bx1=bc.getBox(); else bx1=bgA.findActiveBox(bc.origin); bc.end(); bx2=bgB.findActiveBox(p); if(bx1!=null && bx2!=null && bx2.isInactive()){ boolean ok=false; String src=bx1.getDescription()+ " ("+bx1.idOrder+")"; String dest="("+bx2.idOrder+")"; if(bx1.getContent().isEquivalent(abc[0].getActiveBoxContent(bx2.idOrder), true)){ ok=true; bx1.exchangeContent(bx2); bx1.setVisible(false); if(useOrder) currentItem=bgA.getNextItem(currentItem); } int cellsAtPlace=bgA.countInactiveCells(); ps.reportNewAction(DoublePuzzle.this, ACTION_PLACE, src, dest, ok, cellsAtPlace); if(ok && cellsAtPlace==bgA.getNumCells()) finishActivity(true); else playEvent(ok ? EventSounds.ACTION_OK : EventSounds.ACTION_ERROR); } repaint(); } else{ if((bx1=bgA.findActiveBox(p))!=null && !bx1.isInactive() && (!useOrder || bx1.idOrder==currentItem)){ if(dragCells) bc.begin(p, bx1); else bc.begin(p); m=bx1.playMedia(ps); if(!m) playEvent(EventSounds.CLICK); } } break; case MouseEvent.MOUSE_MOVED: case MouseEvent.MOUSE_DRAGGED: bc.moveTo(p); break; } } public void showHelp(){ if(!helpWindowAllowed() || bgA==null) return; HelpActivityComponent hac=null; if(showSolution){ hac=new HelpActivityComponent(this){ ActiveBoxBag abb=null; public void render(Graphics2D g2, Rectangle dirtyRegion){ if(abb!=null) abb.update(g2, dirtyRegion, this); } public void init(){ abb=ActiveBoxGrid.createEmptyGrid(null, this, DEFAULT_MARGIN, DEFAULT_MARGIN, abc[0]); abb.setContent(abc[0]); abb.setVisible(true); Dimension size=bgA.getBounds().getSize(); abb.setBounds(DEFAULT_MARGIN, DEFAULT_MARGIN, size.width, size.height); size.width+=2*DEFAULT_MARGIN; size.height+=2*DEFAULT_MARGIN; setPreferredSize(size); setMaximumSize(size); setMinimumSize(size); Point p=(Point)getClientProperty(HelpActivityComponent.PREFERRED_LOCATION); if(p!=null) p.translate((int)bgA.x-DEFAULT_MARGIN, (int)bgA.y-DEFAULT_MARGIN); } public void processMouse(MouseEvent e){ ActiveBox bx; boolean m=false; if(abb!=null) switch(e.getID()){ case MouseEvent.MOUSE_PRESSED: bx=abb.findActiveBox(e.getPoint()); if(bx!=null){ m=bx.playMedia(ps); markBox(bgB.getActiveBox(bx.idLoc), false); if(!m) playEvent(EventSounds.CLICK); } break; case MouseEvent.MOUSE_RELEASED: unmarkBox(); break; } } }; hac.init(); } if(ps.showHelp(hac, helpMsg)) ps.reportNewAction(getActivity(), ACTION_HELP, null, null, false, bgA.countInactiveCells()); if(hac!=null) hac.end(); } public Object nextFocusedItem(){ // TODO: Check functionality ActiveBox result = null; ActiveBoxBag abb = bc.active ? bgB : bgA; int currentIndex=abb.boxIndex(focusedItem); setFocusedItem(null); currentIndex=abb.getNextItem(currentIndex); if(currentIndex>=abb.getNumCells()) currentIndex=0; setFocusedItem(abb.getActiveBox(currentIndex)); return focusedItem; } } }jclic-0.2.1.0.orig/src/activities/edu/xtec/resources/0000755000175000017500000000000011377161311017301 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/resources/buttons/0000755000175000017500000000000011377161311020777 5ustar jclic-0.2.1.0.orig/src/activities/edu/xtec/resources/buttons/textdown.png0000644000175000017500000000106611377161311023364 0ustar PNG  IHDR sBIT|d pHYs  ~tEXtCreation Time09/15/04( tEXtSoftwareMacromedia Fireworks MX*$IDATxQ0Dz|O: @ Irs.$BLI`)ygX~iqI!` ͊C*@wxo31j3@ \r<[``1A|Gs0ʨ h2 XρpfVr3N^C(L[֛ X(0ZrT+xF$j! w)y~ڟD7 Pup/k:fV~O˕ؾ8)`V$4n4O] ̀ pFN+٥q'=jGdx_֒K,Tr%;hAJG"3bE_dOɀ {ovf;0gH:ނKro1|͓`z oUWI oZbCex"(/Iv brW}*V#IENDB`jclic-0.2.1.0.orig/src/shapers/0000755000175000017500000000000011377161311013050 5ustar jclic-0.2.1.0.orig/src/shapers/edu/0000755000175000017500000000000011377161311013625 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/0000755000175000017500000000000011377161311014570 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/0000755000175000017500000000000011377161311015654 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/0000755000175000017500000000000011377161311017321 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/EditableShapeConstants.java0000644000175000017500000000434211377161311024556 0ustar /* * File : EditableShapeConstants.java * Created : 28-feb-2002 11:33 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; /** * * @author allastar * @version */ public class EditableShapeConstants { public static int selectLength=8; public static double scaleXFactor=1.1; public static double scaleYFactor=1.1; public static int gridWidth=-1; //-1->Without grid public static java.awt.Color selectedColor=java.awt.Color.blue; public static java.awt.Color defaultColor=java.awt.Color.black; public static java.awt.Color gridColor=java.awt.Color.lightGray; public static java.awt.Color selectingAreaColor=java.awt.Color.darkGray; public static java.awt.Color lightColor=java.awt.Color.lightGray; public static java.awt.Color BORDER_COLOR=java.awt.Color.black; public static java.awt.Color DRAWN_BORDER_COLOR=java.awt.Color.black; public static java.awt.Color CUT_COLOR=java.awt.Color.red; public static java.awt.Color ACTIVE_COLOR=new java.awt.Color(128,128,255); //When the polygon can be modified public static java.awt.Color SELECTED_BORDER_COLOR=java.awt.Color.orange; //When there is a point selected public static java.awt.Color movingColor=java.awt.Color.green; public static java.awt.Color inactiveFillColor=new java.awt.Color(240,240,240); public static java.awt.Color inactiveBorderColor=new java.awt.Color(100,100,100); public static boolean fillDrawn=true; public static boolean pointsOnGrid=false; //magnet public static boolean showDrawnPoints=true; } jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/EditableCubicCurve2D.java0000644000175000017500000002251411377161311024042 0ustar /* * File : EditableCubicCurve2D.java * Created : 25-feb-2002 11:47 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import java.awt.geom.*; import java.awt.*; /** * * @author allastar * @version 1.0 */ public class EditableCubicCurve2D extends CubicCurve2D.Double implements EditableShape { private boolean selected=false; private int border=-1; private int selectedBorder=-1; /** Creates new EditableCubicCurve2D */ public EditableCubicCurve2D(CubicCurve2D curve){ super(); setCurve(curve); } public EditableCubicCurve2D(double x1, double y1, double ctrlx1, double ctrly1, double ctrlx2, double ctrly2, double x2, double y2) { super(x1,y1,ctrlx1,ctrly1,ctrlx2,ctrly2,x2,y2); } public boolean isSelected() { return selected; } public boolean isInto(java.awt.geom.Rectangle2D r) { return (r.contains(getP1())||r.contains(getP2())||r.contains(getCtrlP1())||r.contains(getCtrlP2())); } public void drawBorders(java.awt.Graphics g) { if (getP1().getX()!=-1) g.drawRect((int)getP1().getX()-(EditableShapeConstants.selectLength/2),(int)getP1().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); if (getP2().getX()!=-1) g.drawRect((int)getP2().getX()-(EditableShapeConstants.selectLength/2),(int)getP2().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); if (getCtrlP1().getX()!=-1) g.fillRect((int)getCtrlP1().getX()-(EditableShapeConstants.selectLength/2),(int)getCtrlP1().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); if (getCtrlP2().getX()!=-1) g.fillRect((int)getCtrlP2().getX()-(EditableShapeConstants.selectLength/2),(int)getCtrlP2().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); g.setColor(EditableShapeConstants.SELECTED_BORDER_COLOR); if (selectedBorder==1){ g.fillRect((int)getP1().getX()-(EditableShapeConstants.selectLength/2),(int)getP1().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); } else if (selectedBorder==2){ g.fillRect((int)getP2().getX()-(EditableShapeConstants.selectLength/2),(int)getP2().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); } } public boolean hasClickedBorder(double x, double y, boolean needSelected) { boolean hasClicked=false; if (!needSelected || selected){ Rectangle r1=new Rectangle((int)getP1().getX()-(EditableShapeConstants.selectLength/2),(int)getP1().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); Rectangle r2=new Rectangle((int)getP2().getX()-(EditableShapeConstants.selectLength/2),(int)getP2().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); Rectangle r3=new Rectangle((int)getCtrlP1().getX()-(EditableShapeConstants.selectLength/2),(int)getCtrlP1().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); Rectangle r4=new Rectangle((int)getCtrlP2().getX()-(EditableShapeConstants.selectLength/2),(int)getCtrlP2().getY()-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); if (r1.contains(x,y)){ border=1; hasClicked=true; } else if (r2.contains(x,y)){ border=2; hasClicked=true; } else if (r3.contains(x,y)){ border=3; hasClicked=true; } else if (r4.contains(x,y)){ border=4; hasClicked=true; } } return hasClicked; } public void aproximateNearestBorder(double x, double y) { //getNearestBorder(x,y).setLocation(x,y); if (hasClickedBorder(x,y,false)) changeBorder(x,y); } public java.awt.geom.Point2D getNearestBorder(double x, double y) { Point2D p1,p2; double d1=getP1().distance(x,y); double d2=getP2().distance(x,y); double d3=getCtrlP1().distance(x,y); double d4=getCtrlP2().distance(x,y); if (d1=0){ if (pdp.getNumShapes()>0) pdp.endPolygon(true,false,v); if (v>=0 && getHoles().getShapeData(v)!=null) tfName.setText(getHoles().getShapeData(v).comment); else tfName.setText(""); setCurrentShapeNoList(v); } else tfName.setText(""); } }; } protected void confirmChanges(){ pdp.endPolygon(); } protected void customizeComponents(){ btShowDrawnPoints.setSelected(EditableShapeConstants.showDrawnPoints); btGrid.setSelected(EditableShapeConstants.gridWidth!=-1); gridSizeEdit.setEnabled(btGrid.isSelected()); btMagnet.setSelected(EditableShapeConstants.pointsOnGrid); magnetRadiusEdit.setEnabled(btMagnet.isSelected()); btSelect.setSelected(true); } public void updateList(){ initMembers(); shapesList.setModel(listModel); } protected void setCurrentShape(int v){ if (shapesList.getSelectedIndex()!=v) shapesList.setSelectedIndex(v); btDelete.setEnabled(pdp.getNumShapes()>0); updateTransformingButtons(); currentShape=v; } protected void setCurrentShapeNoList(int v){ currentShape=v; pdp.selectShape(v); btDelete.setEnabled(pdp.getNumShapes()>0); ((PreviewPanel)previewPanel).updateView(); } /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ private void initComponents() {//GEN-BEGIN:initComponents java.awt.GridBagConstraints gridBagConstraints; javax.swing.JPanel leftPanel; javax.swing.JPanel listPanel; javax.swing.JSeparator sep0; javax.swing.JSeparator sep1; javax.swing.JSeparator sep2; javax.swing.JSeparator sep4; javax.swing.JSeparator sept1; javax.swing.JSeparator sept2; javax.swing.JSeparator sept3; javax.swing.JSeparator sept4; javax.swing.JLabel spacerLeft; javax.swing.JLabel spacerTop; javax.swing.JSplitPane splitPane; javax.swing.JToolBar tbLeft1; javax.swing.JToolBar tbTop1; javax.swing.JPanel topPanel; javax.swing.JLabel zoomLb; javax.swing.JPanel zoomPanel; bgMode = new javax.swing.ButtonGroup(); topPanel = new javax.swing.JPanel(); tbTop1 = new javax.swing.JToolBar(); btShowDrawnPoints = new javax.swing.JToggleButton(); btShowDrawnPoints.addActionListener(this); sept1 = new JToolBar.Separator(); btGrid = new javax.swing.JToggleButton(); btGrid.addActionListener(this); gridSizeEdit = new edu.xtec.jclic.beans.SmallIntEditor(); gridSizeEdit.addPropertyChangeListener(this); sept2 = new JToolBar.Separator(); btDelete = new javax.swing.JButton(); btDelete.addActionListener(this); btCopy = new javax.swing.JButton(); btCopy.addActionListener(this); btPaste = new javax.swing.JButton(); btPaste.addActionListener(this); sept3 = new JToolBar.Separator(); btMagnet = new javax.swing.JToggleButton(); btMagnet.addActionListener(this); magnetRadiusEdit = new edu.xtec.jclic.beans.SmallIntEditor(); magnetRadiusEdit.addPropertyChangeListener(this); sept4 = new JToolBar.Separator(); zoomPanel = new javax.swing.JPanel(); zoomLb = new javax.swing.JLabel(); btZoomOut = new javax.swing.JButton(); btZoomOut.addActionListener(this); lbZoom = new javax.swing.JTextField(); btZoomIn = new javax.swing.JButton(); btZoomIn.addActionListener(this); spacerTop = new javax.swing.JLabel(); sep0 = new javax.swing.JSeparator(); leftPanel = new javax.swing.JPanel(); tbLeft1 = new javax.swing.JToolBar(); btSelect = new javax.swing.JToggleButton(); btSelect.addActionListener(this); btDivide = new javax.swing.JToggleButton(); btDivide.addActionListener(this); sep1 = new JToolBar.Separator(); btRect = new javax.swing.JToggleButton(); btRect.addActionListener(this); btEllipse = new javax.swing.JToggleButton(); btEllipse.addActionListener(this); btPolygon = new javax.swing.JToggleButton(); btPolygon.addActionListener(this); btLine = new javax.swing.JButton(); btLine.addActionListener(this); btBezier = new javax.swing.JButton(); btBezier.addActionListener(this); btQuad = new javax.swing.JButton(); btQuad.addActionListener(this); sep2 = new JToolBar.Separator(); btExpand = new javax.swing.JButton(); btExpand.addActionListener(this); btContract = new javax.swing.JButton(); btContract.addActionListener(this); sep4 = new JToolBar.Separator(); btRotateRight = new javax.swing.JButton(); btRotateRight.addActionListener(this); btRotateLeft = new javax.swing.JButton(); btRotateLeft.addActionListener(this); spacerLeft = new javax.swing.JLabel(); splitPane = new javax.swing.JSplitPane(); previewPanel = new PreviewPanel(); previewPanel.addPropertyChangeListener(this); listPanel = new javax.swing.JPanel(); listScroll = new javax.swing.JScrollPane(); shapesList = new javax.swing.JList(); tfName = new javax.swing.JTextField(); tfName.addActionListener(this); setLayout(new java.awt.GridBagLayout()); topPanel.setLayout(new java.awt.GridBagLayout()); tbTop1.setFloatable(false); btShowDrawnPoints.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/vertex_off.gif"))); btShowDrawnPoints.setToolTipText(options.getMsg("edit_shape_showPoints_tooltip")); btShowDrawnPoints.setSelectedIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/vertex_on.gif"))); tbTop1.add(btShowDrawnPoints); sept1.setOrientation(javax.swing.SwingConstants.VERTICAL); tbTop1.add(sept1); btGrid.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/grid.gif"))); btGrid.setToolTipText(options.getMsg("edit_shape_hideGrid")); tbTop1.add(btGrid); gridSizeEdit.setToolTipText(options.getMsg("edit_shape_gridSize_tooltip")); gridSizeEdit.setEditColumns(2); gridSizeEdit.setMax(50); gridSizeEdit.setMin(5); gridSizeEdit.setValue(10); gridSizeEdit.setValues(new int[]{5, 10, 15, 20, 30, 50}); tbTop1.add(gridSizeEdit); sept2.setOrientation(javax.swing.SwingConstants.VERTICAL); tbTop1.add(sept2); btDelete.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/delete.gif"))); btDelete.setToolTipText(options.getMsg("edit_shape_deletePoint")); btDelete.setMaximumSize(new java.awt.Dimension(32, 32)); btDelete.setMinimumSize(new java.awt.Dimension(32, 32)); tbTop1.add(btDelete); btCopy.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/copy.gif"))); btCopy.setToolTipText(options.getMsg("COPY")); tbTop1.add(btCopy); btPaste.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/paste.gif"))); btPaste.setToolTipText(options.getMsg("PASTE")); tbTop1.add(btPaste); sept3.setOrientation(javax.swing.SwingConstants.VERTICAL); tbTop1.add(sept3); btMagnet.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/imant.gif"))); btMagnet.setToolTipText(options.getMsg("edit_shape_aproxPoints")); tbTop1.add(btMagnet); magnetRadiusEdit.setToolTipText(options.getMsg("edit_shape_magnetRadius_tooltip")); magnetRadiusEdit.setEditColumns(2); magnetRadiusEdit.setMax(15); magnetRadiusEdit.setMin(1); magnetRadiusEdit.setValue(4); magnetRadiusEdit.setValues(new int[]{1, 2, 4, 6, 10, 15}); tbTop1.add(magnetRadiusEdit); sept4.setOrientation(javax.swing.SwingConstants.VERTICAL); tbTop1.add(sept4); zoomPanel.setLayout(new javax.swing.BoxLayout(zoomPanel, javax.swing.BoxLayout.X_AXIS)); zoomPanel.setOpaque(false); zoomLb.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/zoom.gif"))); zoomLb.setBorder(new javax.swing.border.EmptyBorder(new java.awt.Insets(1, 3, 1, 3))); zoomPanel.add(zoomLb); btZoomOut.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/minus.gif"))); btZoomOut.setToolTipText(options.getMsg("edit_shape_zoomOut")); btZoomOut.setPreferredSize(new java.awt.Dimension(16, 16)); zoomPanel.add(btZoomOut); lbZoom.setColumns(3); lbZoom.setEditable(false); lbZoom.setHorizontalAlignment(javax.swing.JTextField.CENTER); lbZoom.setText("1x"); zoomPanel.add(lbZoom); btZoomIn.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/plus.gif"))); btZoomIn.setToolTipText(options.getMsg("edit_shape_zoomIn")); btZoomIn.setPreferredSize(new java.awt.Dimension(16, 16)); zoomPanel.add(btZoomIn); tbTop1.add(zoomPanel); topPanel.add(tbTop1, new java.awt.GridBagConstraints()); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.weightx = 1.0; topPanel.add(spacerTop, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(topPanel, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL; add(sep0, gridBagConstraints); leftPanel.setLayout(new java.awt.GridBagLayout()); tbLeft1.setFloatable(false); tbLeft1.setOrientation(1); btSelect.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/selectionMode.gif"))); btSelect.setToolTipText(options.getMsg("edit_shape_select")); bgMode.add(btSelect); btSelect.setMaximumSize(new java.awt.Dimension(32, 32)); btSelect.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btSelect); btDivide.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/add_point.gif"))); btDivide.setToolTipText(options.getMsg("edit_shape_addPoint")); bgMode.add(btDivide); btDivide.setMaximumSize(new java.awt.Dimension(32, 32)); btDivide.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btDivide); tbLeft1.add(sep1); btRect.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/rect.gif"))); btRect.setToolTipText(options.getMsg("edit_shape_drawRect")); bgMode.add(btRect); btRect.setMaximumSize(new java.awt.Dimension(32, 32)); btRect.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btRect); btEllipse.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/rodona.gif"))); btEllipse.setToolTipText(options.getMsg("edit_shape_drawEllipse")); bgMode.add(btEllipse); btEllipse.setMaximumSize(new java.awt.Dimension(32, 32)); btEllipse.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btEllipse); btPolygon.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/pent.gif"))); btPolygon.setToolTipText(options.getMsg("edit_shape_drawPoly")); bgMode.add(btPolygon); btPolygon.setMaximumSize(new java.awt.Dimension(32, 32)); btPolygon.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btPolygon); btLine.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/line.gif"))); btLine.setToolTipText(options.getMsg("edit_shape_toLine")); btLine.setMaximumSize(new java.awt.Dimension(32, 32)); btLine.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btLine); btBezier.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/bezier.gif"))); btBezier.setToolTipText(options.getMsg("edit_shape_toBezier")); btBezier.setMaximumSize(new java.awt.Dimension(32, 32)); btBezier.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btBezier); btQuad.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/quad.gif"))); btQuad.setToolTipText(options.getMsg("edit_shape_toQuad")); btQuad.setMaximumSize(new java.awt.Dimension(32, 32)); btQuad.setMinimumSize(new java.awt.Dimension(32, 32)); tbLeft1.add(btQuad); tbLeft1.add(sep2); btExpand.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/expand.gif"))); btExpand.setToolTipText(options.getMsg("edit_shape_expand")); tbLeft1.add(btExpand); btContract.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/contract.gif"))); btContract.setToolTipText(options.getMsg("edit_shape_contract")); tbLeft1.add(btContract); tbLeft1.add(sep4); btRotateRight.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/rotate_right.gif"))); btRotateRight.setToolTipText(options.getMsg("edit_shape_rRight")); tbLeft1.add(btRotateRight); btRotateLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/edu/xtec/resources/icons/rotate_left.gif"))); btRotateLeft.setToolTipText(options.getMsg("edit_shape_rLeft")); tbLeft1.add(btRotateLeft); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; leftPanel.add(tbLeft1, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.weighty = 1.0; leftPanel.add(spacerLeft, gridBagConstraints); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTH; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(leftPanel, gridBagConstraints); splitPane.setResizeWeight(1.0); previewPanel.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); previewPanel.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); splitPane.setLeftComponent(previewPanel); listPanel.setLayout(new java.awt.BorderLayout(10, 8)); listScroll.setToolTipText(options.getMsg("edit_shape_elements")); listScroll.setPreferredSize(new java.awt.Dimension(80, 100)); shapesList.setModel(listModel); shapesList.addListSelectionListener(listSelectionListener); listScroll.setViewportView(shapesList); listPanel.add(listScroll, java.awt.BorderLayout.CENTER); tfName.setToolTipText(options.getMsg("edit_shape_elemName")); listPanel.add(tfName, java.awt.BorderLayout.SOUTH); splitPane.setRightComponent(listPanel); gridBagConstraints = new java.awt.GridBagConstraints(); gridBagConstraints.gridwidth = java.awt.GridBagConstraints.REMAINDER; gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH; gridBagConstraints.weightx = 1.0; gridBagConstraints.weighty = 1.0; gridBagConstraints.insets = new java.awt.Insets(3, 3, 3, 3); add(splitPane, gridBagConstraints); }//GEN-END:initComponents private void setDrawingRectangleMode(){ deselectAll(); btRect.setSelected(true); pdp.setDrawingMode(pdp.DRAWING_RECT); pdp.deSelectAll(); repaint(0); } private void deselectAll(){ pdp.cancelCurrentOperations(); btSelect.setSelected(false); btRect.setSelected(false); btEllipse.setSelected(false); btPolygon.setSelected(false); btBezier.setSelected(false); btQuad.setSelected(false); btDivide.setSelected(false); // btZoom.setSelected(false); } public void setDrawingMode(int drawingMode){ pdp.setDrawingMode(drawingMode); switch (drawingMode){ case PolygonDrawPanel.SELECTING: btSelect.setSelected(true); break; case PolygonDrawPanel.NEW_POINT: btDivide.setSelected(true); break; } btDelete.setEnabled(pdp.getNumShapes()>0); } public void shapeChanged() { if (pdp.getNumShapes()>0){ //Ja no podem crear un rectangle o el.lipse btDelete.setEnabled(true); shapeDrawn=true; repaint(0); } else { btDelete.setEnabled(pdp.hasSelectedPoint()); clean(); } if (!btDivide.isSelected()){ pdp.setDrawingMode(pdp.SELECTING); deselectAll(); btSelect.setSelected(true); } else btSelect.setSelected(false); updateTransformingButtons(); } protected void updateTransformingButtons(){ java.util.Vector v=pdp.getSelectedShapes(); if (v.size()==1){ java.util.Enumeration e=v.elements(); EditableShape shape=(EditableShape)e.nextElement(); //El te segur: size==1 if (!(shape instanceof EditableRectangle)){ btBezier.setEnabled(true); btQuad.setEnabled(true); } if (!(shape instanceof EditableEllipse2D)) btLine.setEnabled(true); } else{ btBezier.setEnabled(false); btQuad.setEnabled(false); btLine.setEnabled(false); repaint(0); } } public PreviewPanel getPreviewPanel(){ return (PreviewPanel)previewPanel; } private void clean(){ //pdp.deleteCurrent(); pdp.deleteSelected(false); shapeDrawn=false; deselectAll(); btRect.setEnabled(true); btEllipse.setEnabled(true); btPolygon.setEnabled(true); ////btDivide.setEnabled(false); } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.ButtonGroup bgMode; private javax.swing.JButton btBezier; private javax.swing.JButton btContract; private javax.swing.JButton btCopy; private javax.swing.JButton btDelete; private javax.swing.JToggleButton btDivide; private javax.swing.JToggleButton btEllipse; private javax.swing.JButton btExpand; private javax.swing.JToggleButton btGrid; private javax.swing.JButton btLine; private javax.swing.JToggleButton btMagnet; private javax.swing.JButton btPaste; private javax.swing.JToggleButton btPolygon; private javax.swing.JButton btQuad; private javax.swing.JToggleButton btRect; private javax.swing.JButton btRotateLeft; private javax.swing.JButton btRotateRight; private javax.swing.JToggleButton btSelect; private javax.swing.JToggleButton btShowDrawnPoints; private javax.swing.JButton btZoomIn; private javax.swing.JButton btZoomOut; private edu.xtec.jclic.beans.SmallIntEditor gridSizeEdit; private javax.swing.JTextField lbZoom; private javax.swing.JScrollPane listScroll; private edu.xtec.jclic.beans.SmallIntEditor magnetRadiusEdit; private javax.swing.JScrollPane previewPanel; private javax.swing.JList shapesList; private javax.swing.JTextField tfName; // End of variables declaration//GEN-END:variables public void updateView(){ ((PreviewPanel)previewPanel).updateView(); } class PreviewPanel extends JScrollPane{ public VP vp; public PreviewPanel(){ vp=new VP(); setViewportView(vp); updateView(); } public void updateView(){ vp.updateView(); //doLayout();//// } } class VP extends JPanel{ private int xBak=-1, yBak=-1, wBak=-1, hBak=-1; Vector shapes=new Vector(); public void updateView(){ setSize(getSize()); setPreferredSize(getSize()); updateComponentsView(); } public void updateComponentsView(){ shapes.removeAllElements(); for(int i=0; i0 && newHeight>0){ double xFactor=newWidth/previewArea.width; double yFactor=newHeight/previewArea.height; for(int i=0; i=0){ sd=getHoles().getShapeData(currentShape); String txt=tfName.getText().trim(); //Potser caldria comprovar que no estigui repetit el nom if (sd!=null && txt.length()>0) sd.comment=txt; updateList(); } } } } public void propertyChange(java.beans.PropertyChangeEvent ev) { if(!initializing && ev!=null){ Object obj=ev.getSource(); if(obj==gridSizeEdit){ int v=btGrid.isSelected() ? gridSizeEdit.getValue() : -1; if(v!=EditableShapeConstants.gridWidth){ EditableShapeConstants.gridWidth=v; repaint(); } } else if(obj==magnetRadiusEdit){ int v=magnetRadiusEdit.getValue()*2; if(v!=EditableShapeConstants.selectLength){ EditableShapeConstants.selectLength=v; pdp.initDrawnBorders(); repaint(); } } else if(obj==previewPanel){ repaint(0); } } } protected void doZoom(boolean in){ double zoomDelta=1.0; if(in){ if(zoomFactor=1){ zoomDelta=((double)zoomFactor+1)/zoomFactor; } else{ double den=Math.abs(zoomFactor-2); zoomDelta=(1/(den-1))/(1/den); } zoomFactor++; } } else{ if(zoomFactor>MIN_ZOOM){ if (zoomFactor>1){ zoomDelta=((double)zoomFactor-1)/zoomFactor; } else { double den=Math.abs(zoomFactor-2); zoomDelta=(1/(den+1))/(1/den); } zoomFactor--; } } if (zoomDelta!=1){ pdp.endPolygon(); updatePreviewArea(zoomDelta, zoomDelta); } btZoomIn.setEnabled(zoomFactorMIN_ZOOM); String sFactor = (zoomFactor>=1) ? Integer.toString(zoomFactor) : ("1/"+Math.abs(zoomFactor-2)); lbZoom.setText(sFactor+"x"); } } jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/PolygonDrawPanel.java0000644000175000017500000017021711377161311023421 0ustar /* * File : PolygonDrawPanel.java * Created : 17-may-2002 10:20 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import edu.xtec.util.StrUtils; /** * * @author allastar * @version 1.0 */ import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; public class PolygonDrawPanel implements java.awt.event.MouseMotionListener, java.awt.event.MouseListener{ private Vector vShapes; //Vector that contains the polygon currently being modified private static Vector vCopied; private Vector vRedrawingLines,vRedrawingLinesBeforeModify,vShapeBeforeModify; private Vector vPointListeners; private double iniX,iniY,finX,finY,lastFinX,lastFinY; private Point2D iniPoint=null,lastPoint=null; private boolean bSelectedPoint=false; private double zoomX=0,zoomY=0,zoomH=-1,zoomW=-1; private boolean creatingRect=false,creatingEllipse=false, creatingPolygon=false, bRedrawingLines=false, bSelectingArea=false; private boolean bResizing=false; private int resizingDirection=NO_RESIZING; private boolean bSpecialLine=false; private boolean bMoving=false; private EditableShape specialLine=null; private int drawingMode=SELECTING; static double defaultSensibility=1.5; private AffineTransform at; private Vector vDrawnBorders=null; private Shape current=null; private JComponent container; private short INITIAL=0; private short END=1; public static final int SELECTING=1; public static final int MOVING=2; public static final int NEW_POINT=4; public static final int DRAWING_RECT=5; public static final int DRAWING_ELLIPSE=6; public static final int DRAWING_POLYGON=7; public static final int ZOOM=12; public static final int NO_RESIZING=-1; public static final int EAST=0; public static final int SOUTH=1; public static final int SOUTH_EAST=2; private int backgroundComposite=0; protected HolesEditorPanel hep; protected boolean canResize; protected Rectangle lastPreviewArea; static Cursor[] cursors=null; public static final int PEN_CURSOR=0; public static final int CIRCLE_CURSOR=1; protected Shape esborram=null; /** Creates new PolygonDrawPanel */ public PolygonDrawPanel(int width, int height, HolesEditorPanel hep, boolean canResize) { this.hep=hep; this.canResize=canResize; vShapes=new Vector(); if(vCopied==null) vCopied=new Vector(); vRedrawingLines=new Vector(); vRedrawingLinesBeforeModify=new Vector(); vPointListeners=new Vector(); at=new AffineTransform(); initDrawnBorders(); if(cursors==null){ cursors=new Cursor[2]; Toolkit tk=Toolkit.getDefaultToolkit(); cursors[PEN_CURSOR]=tk.createCustomCursor(edu.xtec.util.ResourceManager.getImageIcon("cursors/llapis.gif").getImage(), new Point(12,24), "pen"); cursors[CIRCLE_CURSOR]=tk.createCustomCursor(edu.xtec.util.ResourceManager.getImageIcon("cursors/cercle.gif").getImage(), new Point(16,16), "circle"); } hep.addKeyListener(new PolygonDrawPanel.KeyHandler()); } public void setDrawingMode(int drawingMode){ if(this.drawingMode!=drawingMode){ this.drawingMode=drawingMode; if(creatingPolygon) joinPolygon(); if(drawingMode!=NEW_POINT && drawingMode!=SELECTING) { endPolygon(); } hep.repaint(0); } } public int getVisibleWidth(){ return hep.getPreviewPanel().getWidth(); } public int getVisibleHeight(){ return hep.getPreviewPanel().getHeight(); } public void initDrawnBorders(){ if(vDrawnBorders!=null) vDrawnBorders.clear(); else vDrawnBorders=new Vector(); for(int i=0;i0){ move(hep.previewArea.x-lastPreviewArea.x,hep.previewArea.y-lastPreviewArea.y,false,false); } try{ lastPreviewArea=(Rectangle)(hep.previewArea.clone()); } catch(Exception e){ System.err.println("Error updating view:\n"+e); } } public void setShapeData(ShapeData sd, double x, double y, double scaleX, double scaleY){ //x,y indicate the current position clean(); current=(sd!=null)?sd.getShape(hep.previewArea):null; double firstX=-1,firstY=-1; if(sd.primitiveType>=0 && sd.primitivePoints!=null && sd.primitivePoints.length>3){ EditableShape es=null; double xTr=(sd.primitivePoints[0]*hep.previewArea.getWidth())+hep.previewArea.getX(); double yTr=(sd.primitivePoints[1]*hep.previewArea.getHeight())+hep.previewArea.getY(); double wSc=sd.primitivePoints[2]*hep.previewArea.getWidth(); double hSc=sd.primitivePoints[3]*hep.previewArea.getHeight(); switch (sd.primitiveType){ case ShapeData.RECTANGLE: es=new EditableRectangle((int)xTr,(int)yTr,(int)wSc,(int)hSc); vShapes.add(es); break; case ShapeData.ELLIPSE: es=new EditableEllipse2D((int)xTr,(int)yTr,(int)wSc,(int)hSc); vShapes.add(es); break; } } else{ Shape s=sd.getShape(hep.previewArea); if(s instanceof GeneralPath){ GeneralPath gp=(GeneralPath)s; PathIterator it=gp.getPathIterator(new AffineTransform()); double[] coords=new double[6]; while (!it.isDone()){ int type=it.currentSegment(coords); switch (type){ case PathIterator.SEG_MOVETO: x=coords[0]; y=coords[1]; if(firstX==-1){ //To close firstX=x; firstY=y; } break; case PathIterator.SEG_LINETO: vShapes.add(new EditableLine2D(x,y,coords[0],coords[1])); x=coords[0]; y=coords[1]; break; case PathIterator.SEG_CUBICTO: vShapes.add(new EditableCubicCurve2D(x,y,coords[0],coords[1],coords[2],coords[3],coords[4],coords[5])); x=coords[4]; y=coords[5]; break; case PathIterator.SEG_QUADTO: vShapes.add(new EditableQuadCurve2D(x,y,coords[0],coords[1],coords[2],coords[3])); x=coords[2]; y=coords[3]; break; case PathIterator.SEG_CLOSE: if(firstX!=-1 && (x!=firstX || y!=firstY)){ vShapes.add(new EditableLine2D(x,y,firstX,firstY)); x=firstX;y=firstY; } break; default: break; } it.next(); } if(firstX!=-1 && (x!=firstX || y!=firstY)){ // That's to be sure that the shape is always closed vShapes.add(new EditableLine2D(x,y,firstX,firstY)); } } } removeDrawnBorders(sd); } public void clean(){ vShapes=new Vector(); vRedrawingLines=new Vector(); vRedrawingLinesBeforeModify=new Vector(); } public boolean selectDrawnShape(Point2D p) { endPolygon(); for (int i=0;i The two following lines are necessary in order to grant the connection of the resulting shape // Dividing two times in the same point can create an independent line out of the shape Vector vCheckPoint=new Vector(); vCheckPoint.addAll(vShapes); vShapes.remove(specialLine); for (int i=0;i0)) return vGpaths; EditableShape current=(EditableShape)shapes.get(0); shapes.remove(current); currentPolygon.append(current,true); short notUsedPoint=END; //indicates the side of the last shape non-adjacent to anyone while (shapes.size()>0){ EditableShape shape=getAdjacent(shapes,current,notUsedPoint); if(shape!=null){ currentPolygon.append(shape,true); notUsedPoint=getNotUsed(current,shape); //returns the point of the shape non-adjacent to "current" shapes.remove(shape); current=shape; } else{ vGpaths.add(currentPolygon); currentPolygon=new GeneralPath(); notUsedPoint=END; current=(EditableShape)shapes.get(0); shapes.remove(current); currentPolygon.append(current,true); } } vGpaths.add(currentPolygon); return vGpaths; } private short getNotUsed(EditableShape current, EditableShape shape){ //returns the point of the shape non-adjacent to "current" if(shape.getInitialPoint().equals(current.getInitialPoint())||shape.getInitialPoint().equals(current.getEndPoint())) return END; else return INITIAL; } private EditableShape getAdjacent(Vector shapes, EditableShape sh, short notUsedPoint){ java.util.Enumeration e=shapes.elements(); Point2D p; if(notUsedPoint==INITIAL) p=sh.getInitialPoint(); else p=sh.getEndPoint(); while(e.hasMoreElements()){ EditableShape shape=(EditableShape)e.nextElement(); if(shape.isAdjacentTo(p)) return shape; } return null; } public boolean hasSelectedDrawnShape(Point2D p) { for (int i=0;i=4){ //Avoid to delete objects when there are only 3 or less elements, unless is a "cut" vShapes.remove(current); if(!isCut) joinAdjacentsTo(current,vShapes); } } } //allSelected indicates if all the object was selected if(allSelected || noneSelected){ vShapes.clear(); this.current=null; hep.getHoles().removeShape(hep.currentShape); hep.setCurrentShape(hep.getHoles().getNumCells()); } } } private void joinAdjacentsTo(EditableShape current, Vector vShapes){ //All the shapes in vShapes will converge in one of the "current" points. EditableShape s1=getAdjacent(vShapes,current,INITIAL); if(s1!=null){ //Always s1.hasClickedBorder(current.getInitialPoint().getX(),current.getInitialPoint().getY(),false); //hasClickedBorder marks the shape corner nearest to the supplied point. Calling //changeBorder this corner will be modified to the new point. s1.changeBorder(current.getEndPoint().getX(),current.getEndPoint().getY()); } } private void joinAdjacentsToSelectedPoint(){ EditableShape current=null, other=null; if(vShapes.size()!=1 && vShapes.size()<=3) return; java.util.Enumeration e=vShapes.elements(); int count=0; boolean bFinish=false; while (e.hasMoreElements() && !bFinish){ current=(EditableShape)e.nextElement(); if(current.hasSelectedBorder()){ if(current instanceof EditableRectangle){ Point2D p=current.getNotSelectedBorder(); convertToSimpleShapes(); selectBorder(p.getX(),p.getY()); joinAdjacentsToSelectedPoint(); bFinish=true; } else{ count++; if(count==1) other=current; else{ Point2D p1=current.getNotSelectedBorder(); Point2D p2=other.getNotSelectedBorder(); vShapes.add(new EditableLine2D(p1,p2)); vShapes.remove(current); vShapes.remove(other); } } } } hep.repaint(0); } private void setEndToVector(double finX, double finY, Vector vRedrawingLines){ //approach of all the lines of vRedrawingLines to the point finX, finY EditableShape current=null; java.util.Enumeration e=vRedrawingLines.elements(); while (e.hasMoreElements()){ current=(EditableShape)e.nextElement(); current.aproximateNearestBorder(finX,finY); } } public boolean hasSelectedPoint(){ return bSelectedPoint; } public Vector getSelectedShapes(){ Vector v=new Vector(); java.util.Enumeration e=vShapes.elements(); EditableShape current; while (e.hasMoreElements()){ current=(EditableShape)e.nextElement(); if(current.isSelected()) v.add(current); } return v; } public int getNumShapes(){ return vShapes.size(); } public void deleteCurrent(){ clean(); current=null; } public ShapeData getShapeData(){ ShapeData sd=null; AffineTransform at=AffineTransform.getScaleInstance((1/hep.previewArea.getWidth()),(1/hep.previewArea.getHeight())); at.concatenate(AffineTransform.getTranslateInstance(-hep.previewArea.x,-hep.previewArea.y)); if(getNumShapes()==1){ //Is a rectangle or a ellipse EditableShape es=(EditableShape)((EditableShape)vShapes.elements().nextElement()).clone(); es.transform(at); Shape s; if(es instanceof EditableEllipse2D) s=((EditableEllipse2D)es).getEllipse(); else s=es; sd=ShapeData.getShapeData(s, null, false); } else{ Vector v=getGeneralPath(); //Get only the first polygon found (should be unique) if(v.size()>0){ GeneralPath gp=(GeneralPath)(v.elements().nextElement()); Shape s=gp.createTransformedShape(at); sd=ShapeData.getShapeData(s, null); } } return sd; } public void endPolygon(){ endPolygon(false,true); } public void endPolygon(boolean changeShape, boolean updateList){ endPolygon(changeShape,updateList,-1); } public void endPolygon(boolean changeShape, boolean updateList, int iNextShape){ ShapeData sd=getShapeData(); addCurrentDrawnBorders(sd); endPolygon(sd,changeShape,updateList,iNextShape); if(sd!=null) clean(); bSelectedPoint=false; } private void addCurrentDrawnBorders(ShapeData sd){ if(sd!=null && hep!=null){ Shape s=sd.getShape(hep.previewArea); vDrawnBorders.addAll(getBorders(s)); } } private void removeDrawnBorders(ShapeData sd){ Shape s=sd.getShape(hep.previewArea); vDrawnBorders.removeAll(getBorders(s)); //removeAll removes all the instances of the elements passed over the Vector (only one instance is needed) } public void endPolygon(ShapeData sd, boolean changeShape, boolean updateList,int iNextShape){ //Save the created/modified polygon. changeShape indicates if we "come" from a tab key. if(sd!=null){ addCurrentDrawnBorders(sd); if(hep.currentShape=0) iCurrentShape=iNextShape; else iCurrentShape=iCurrentShape%hep.getHoles().getNumCells(); } else iCurrentShape=hep.getHoles().getNumCells(); //Next one will be new if(hep.currentShape!=iCurrentShape) hep.setCurrentShape(iCurrentShape); } private void aplicateTransformation(AffineTransform aTransf, boolean needSelected){ EditableShape current=null; java.util.Enumeration e=vShapes.elements(); while (e.hasMoreElements()){ current=(EditableShape)e.nextElement(); if(!needSelected || current.isSelected()){ current.transform(aTransf); } } } public void move(int xInc, int yInc, boolean needSelected, boolean moveAll){ //moveAll indicates if we want to move also the inactive objects AffineTransform aTransf=AffineTransform.getTranslateInstance(xInc,yInc); aplicateTransformation(aTransf, needSelected); hep.repaint(0); } public void scale(double xInc, double yInc, boolean needSelected, boolean scaleAll){ Point2D center=getCenter(scaleAll); AffineTransform aTransf=AffineTransform.getTranslateInstance(center.getX(),center.getY()); aTransf.concatenate(AffineTransform.getScaleInstance(xInc,yInc)); aTransf.concatenate(AffineTransform.getTranslateInstance(-center.getX(),-center.getY())); aplicateTransformation(aTransf, needSelected); hep.repaint(0); } public void rotate(double theta, boolean needSelected, boolean rotateAll){ convertToSimpleShapes(); //If it is a triangle, it will be necessary to convert it to lines in order to rotate the shape Point2D center=getCenter(rotateAll); AffineTransform aTransf=AffineTransform.getRotateInstance(theta,center.getX(),center.getY()); aplicateTransformation(aTransf,needSelected); hep.repaint(0); } private Point2D getCenter(boolean cellCenter){ //Returns the central point of the edited shape when cellCenter==false, otherwise, returns the center of the cell if(!cellCenter){ EditableShape current=null; GeneralPath gp=new GeneralPath(); java.util.Enumeration e=vShapes.elements(); while (e.hasMoreElements()){ current=(EditableShape)e.nextElement(); gp.append(current,false); } Rectangle2D r=gp.getBounds(); //to calculate the central point return new Point2D.Double(r.getCenterX(),r.getCenterY()); } else return new Point2D.Double(hep.getPreviewPanel().getX(),hep.getPreviewPanel().getY()); } private void convertToSimpleShapes(){ //If the edited shape is a rectangle or a ellipse, transform it to a set of segments or cubic lines EditableShape current=null; java.util.Enumeration e=vShapes.elements(); while (e.hasMoreElements()){ current=(EditableShape)e.nextElement(); if(current instanceof EditableRectangle){ //Rectangular shapes must be converted to simple shapes in order to rotate it vShapes.remove(current); EditableShape[] lines=((EditableRectangle)current).divide(-1,-1,false); //Do no add any point for (int i=0;i=2){ vShapes.add(new EditableLine2D(lastPoint.getX(),lastPoint.getY(),iniPoint.getX(),iniPoint.getY())); } else vShapes.clear(); creatingPolygon=false; lastPoint=null; iniPoint=null; if(bSelectedPoint) deselectBorder(); bSelectedPoint=false; hep.setDrawingMode(SELECTING); } public void mouseDragged(java.awt.event.MouseEvent mouseEvent) { if((mouseEvent.getModifiers()&java.awt.event.MouseEvent.BUTTON1_MASK)==0) return; //Button 1 was not pressed Point2D mousePoint=getTransformedPoint(mouseEvent.getPoint(),true); if(bMoving) hep.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); if(mousePoint.getX()hep.previewArea.x+hep.previewArea.getWidth() || mousePoint.getY()>hep.previewArea.y+hep.previewArea.getHeight()){ return; } vShapeBeforeModify=(drawingMode==SELECTING && !bMoving)?cloneVector(vRedrawingLines):cloneVector(vCopied); EditableShape near=null; Point2D nearDrawn=aproximationToDrawnBorder(mouseEvent.getX(),mouseEvent.getY()); if(nearDrawn!=null && EditableShapeConstants.pointsOnGrid){ finX=nearDrawn.getX(); finY=nearDrawn.getY(); } else{ finX=mousePoint.getX(); finY=mousePoint.getY(); } if(creatingRect||creatingEllipse){ near=aproximationToLine(finX,finY); hep.getPreviewPanel().repaint(0); } else if(bRedrawingLines){ redrawingLines(finX,finY); near=aproximationToLine(finX,finY,vRedrawingLines); //we are over a shape corner not selected near (at less)... hep.repaint(0); } else if(bMoving || esInterior(finX,finY)){ near=nearestLine(finX,finY); if(near!=null){ double d=near.distanceTo(finX,finY); if(!bMoving && d>(EditableShapeConstants.selectLength/2)) cut(finX,finY); } hep.repaint(0); } if(creatingRect||creatingEllipse||bRedrawingLines){ if((near!=null || nearDrawn!=null) && EditableShapeConstants.pointsOnGrid) hep.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); else hep.setCursor(cursors[PEN_CURSOR]); } boolean b=isIntoArea((drawingMode==SELECTING && !bMoving)?vRedrawingLines:vCopied,(bMoving)); if(!b){ if(drawingMode==SELECTING && !bMoving){ undoLastMove(vRedrawingLines,vShapeBeforeModify); finX=lastFinX; finY=lastFinY; } if(bMoving){ finX=lastFinX; finY=lastFinY; } } else { lastFinX=finX; lastFinY=finY; } if(bResizing) setResizingCursor(resizingDirection); } protected boolean esCantonada(double x, double y){ EditableShape near=aproximationToLine(x,y); return (near!=null || aproximationToDrawnBorder(x,y)!=null); } protected boolean esSobreFigura(double x, double y){ int minimumDistance=Math.max(Math.max(2,EditableShapeConstants.selectLength/2),EditableShapeConstants.gridWidth); double dist=distanceToNearest(x,y); return (dist>=0 && disthep.previewArea.x+hep.previewArea.getWidth() || y>hep.previewArea.y+hep.previewArea.getHeight()) return; if(drawingMode!=NEW_POINT){ if(esCantonada && (!creatingPolygon || EditableShapeConstants.pointsOnGrid)) hep.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); else if(creatingPolygon) hep.setCursor(cursors[PEN_CURSOR]); else if(!bMoving && esSobreFigura(x,y)) hep.setCursor(cursors[CIRCLE_CURSOR]); else if(esInterior(x,y)) hep.setCursor(Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR)); else hep.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } if(drawingMode==NEW_POINT){ if(esSobreFigura(x,y)){ bSpecialLine=true; //temporally paint it in another color specialLine=nearestLine(x,y); hep.setCursor(cursors[PEN_CURSOR]); hep.repaint(0); } else{ boolean willRepaint=bSpecialLine; bSpecialLine=false; hep.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); if(willRepaint) hep.repaint(0); } } if(bMoving){ if(iniX==-1){ deleteSelected(true); iniX=x; iniY=y; } finX=x; finY=y; hep.repaint(0); } if(creatingPolygon) { finX=x; finY=y; hep.repaint(0); } if(canResize){ if(!bResizing){ int resizing=getResizing(mousePoint); if(resizing!=NO_RESIZING) setResizingCursor(resizing); } else setResizingCursor(resizingDirection); } } protected int getResizing(Point2D mousePoint){ if(!canResize) return NO_RESIZING; ShapeData sd=hep.getHoles().getEnclosingShapeData(); Rectangle r=hep.getPreviewArea(); double width=r.getWidth(); double height=r.getHeight(); AffineTransform at=AffineTransform.getTranslateInstance(-hep.previewArea.x,-hep.previewArea.y); at.transform(mousePoint,mousePoint); if(mousePoint.getX()==(width-1) && mousePoint.getY()==(height-1)) return SOUTH_EAST; else if(mousePoint.getX()==(width-1)) return EAST; else if (mousePoint.getY()==(height-1)) return SOUTH; else return NO_RESIZING; } protected void setResizingCursor(int resizing){ if(resizing==EAST) hep.setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR),false); else if(resizing==SOUTH) hep.setCursor(Cursor.getPredefinedCursor(Cursor.S_RESIZE_CURSOR),false); else if(resizing==SOUTH_EAST) hep.setCursor(Cursor.getPredefinedCursor(Cursor.SE_RESIZE_CURSOR),false); } protected void selectBorder(double x, double y){ java.util.Enumeration e=vShapes.elements(); while (e.hasMoreElements()){ EditableShape s=(EditableShape)e.nextElement(); s.selectBorder(x,y); } } protected void deselectBorder(){ java.util.Enumeration e=vShapes.elements(); while (e.hasMoreElements()){ EditableShape s=(EditableShape)e.nextElement(); s.deselectBorder(); } } protected boolean removeNullLines(java.util.Vector vRedrawingLines){ //Removes from vRedrawingLines all the lines having the two points in (approximately) the same co-ordinates boolean canRemove=false; java.util.Enumeration e=vRedrawingLines.elements(); while (e.hasMoreElements() && !canRemove){ EditableShape s=(EditableShape)e.nextElement(); if(s instanceof EditableLine2D){ Point2D [] p=s.getBorders(); if(p.length>1){ Rectangle r=new Rectangle((int)(p[0].getX())-(EditableShapeConstants.selectLength/2),(int)(p[0].getY())-(EditableShapeConstants.selectLength/2),EditableShapeConstants.selectLength,EditableShapeConstants.selectLength); if(r.contains(p[1].getX(),p[1].getY())){ //This line is prescindible if(vShapes.size()>=4){ //Do not delete any element when there are only 3 or les (except if it's a cut) canRemove=true; vShapes.remove(s); joinAdjacentsTo(s,vShapes); } } } } } return canRemove; } public void mouseClicked(java.awt.event.MouseEvent mouseEvent) { Point2D mousePoint=mouseEvent.getPoint(); boolean bSobreFigura=esSobreFigura(mousePoint.getX(),mousePoint.getY()); if(drawingMode!=NEW_POINT && drawingMode!=DRAWING_POLYGON && !bSobreFigura && selectDrawnShape(mousePoint) && !creatingPolygon){ notifyShapeChanged(); hep.repaint(0); } else if(drawingMode!=NEW_POINT && bSobreFigura && !creatingPolygon){ EditableShape line=nearestLine(mousePoint.getX(),mousePoint.getY()); if(line!=null){ //The caller wants to select a fragment of the polygon if(esCantonada(mousePoint.getX(),mousePoint.getY())) { Point2D p=line.getNearestBorder(mousePoint.getX(),mousePoint.getY()); deSelectAll(); bSelectedPoint=true; selectBorder(p.getX(),p.getY()); hep.repaint(0); } else{ if(bSelectedPoint) deselectBorder(); bSelectedPoint=false; if(line.isSelected()) line.setSelected(false); else{ if((mouseEvent.getModifiers()&java.awt.event.MouseEvent.SHIFT_MASK)==0) deSelectAll(); line.setSelected(true); } notifyShapeChanged(); hep.repaint(0); } } } if(creatingPolygon){ if(mouseEvent.getClickCount()==2) joinPolygon(); else{ mousePoint=mouseEvent.getPoint(); EditableShape near=aproximationToLine(mousePoint.getX(),mousePoint.getY(),vRedrawingLines); Point2D nearDrawn=null; Point2D nearDrawnOther=aproximationToDrawnBorder(mousePoint.getX(),mousePoint.getY()); if(near!=null){ // if the ending point is near the mouse, approximate to it nearDrawn=near.getNearestBorder(mousePoint.getX(),mousePoint.getY()); } if(nearDrawnOther!=null && EditableShapeConstants.pointsOnGrid){ finX=nearDrawnOther.getX(); finY=nearDrawnOther.getY(); } else{ mousePoint=getTransformedPoint(mouseEvent.getPoint(),true); finX=mousePoint.getX(); finY=mousePoint.getY(); } if(lastPoint!=null){ // isn't the first point if(nearDrawn!=null && iniPoint.getX()==nearDrawn.getX() && iniPoint.getY()==nearDrawn.getY()){//Has clicked over the starting point of the polygon if(vShapes.size()>=2) joinPolygon(); } else{ if(nearDrawn==null){ //Points cannot be repeated vShapes.add(new EditableLine2D(lastPoint.getX(),lastPoint.getY(),finX,finY)); lastPoint=new Point2D.Double(finX,finY); } } } else { //it's the first point iniPoint=new Point2D.Double(finX,finY); lastPoint=iniPoint; } } } } public void mouseEntered(java.awt.event.MouseEvent mouseEvent) { } public void mouseExited(java.awt.event.MouseEvent mouseEvent) { } public void mousePressed(java.awt.event.MouseEvent mouseEvent) { Point2D mousePoint=getTransformedPoint(mouseEvent.getPoint(),drawingMode!=SELECTING); //when selecting, the point doesn't must be in the grid int x=(int)mousePoint.getX(); int y=(int)mousePoint.getY(); if(canResize){ int resizing=getResizing(mousePoint); if(resizing!=NO_RESIZING){ if(drawingMode!=SELECTING) hep.setDrawingMode(SELECTING); bResizing=true; resizingDirection=resizing; } } if(xhep.previewArea.x+hep.previewArea.getWidth() || y>hep.previewArea.y+hep.previewArea.getHeight()) return; if(bMoving){ //CTRL+X has been pressed while moving a shape paste(finX-iniX,finY-iniY); bMoving=false; } iniX=x; iniY=y; if(drawingMode==SELECTING && !bMoving){ clicatISeleccionada(x,y,false); //false: drag is possible despite of having the shape selected or unselected if(vRedrawingLines.size()>0) bRedrawingLines=true; //Redraw lines when clicking on a corner } else if((drawingMode==DRAWING_RECT || drawingMode==DRAWING_ELLIPSE || drawingMode==DRAWING_POLYGON)&&!hasSelectedDrawnShape(mouseEvent.getPoint())){ if(drawingMode==DRAWING_RECT) creatingRect=true; else if(drawingMode==DRAWING_ELLIPSE) creatingEllipse=true; else creatingPolygon=true; EditableShape near=aproximationToLine(x,y); Point2D pNear=aproximationToDrawnBorder(x,y); if (near!=null){ pNear=near.getNearestBorder(x,y); } if (pNear!=null){ iniX=pNear.getX(); iniY=pNear.getY(); } else{ iniX=x; iniY=y; } finX=iniX; finY=iniY; hep.repaint(0); } else if(drawingMode==NEW_POINT){ EditableShape lineToDivide=specialLine; EditableShape near=aproximationToLine(x,y,null); Point2D nearDrawn=null; boolean isSelect=false; if(near!=null) nearDrawn=near.getNearestBorder(x,y); if(drawingMode==NEW_POINT && (lineToDivide!=null && bSpecialLine && (nearDrawn==null || lineToDivide instanceof EditableEllipse2D || lineToDivide instanceof EditableCubicCurve2D || lineToDivide instanceof EditableQuadCurve2D))){ //A point is added only when the current point is not over another one divideShape(lineToDivide,x,y); } else{ isSelect=selectDrawnShape(mouseEvent.getPoint()); } if(!isSelect){ //A point has been added, or a click has been done out of any shape hep.setDrawingMode(SELECTING); } } } public void mouseReleased(java.awt.event.MouseEvent mouseEvent) { if((mouseEvent.getModifiers()&java.awt.event.MouseEvent.BUTTON1_MASK)==0){//The button 1 was not pressed return; } if(bMoving){ paste(finX-iniX,finY-iniY); bMoving=false; deSelectAll(); } Point2D mousePoint=mouseEvent.getPoint(); EditableShape near=aproximationToLine(mousePoint.getX(),mousePoint.getY(),vRedrawingLines); Point2D nearDrawnPropi=null; Point2D nearDrawn=aproximationToDrawnBorder(mousePoint.getX(),mousePoint.getY()); //Corner of a non-active polygon if(near!=null || nearDrawn!=null) hep.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); else hep.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); if(near!=null){ // if there is any nearest point, approximate the ending point to it nearDrawnPropi=near.getNearestBorder(mousePoint.getX(),mousePoint.getY()); //Corner of the active polygon } mousePoint=getTransformedPoint(mouseEvent.getPoint(),true); if(!(mousePoint.getX()hep.previewArea.x+hep.previewArea.getWidth() || mousePoint.getY()>hep.previewArea.y+hep.previewArea.getHeight())){ if(nearDrawn!=null && EditableShapeConstants.pointsOnGrid){ //Only when approaching finX=nearDrawn.getX(); finY=nearDrawn.getY(); } else{ finX=mousePoint.getX(); //This point is maintained as long as the pointer remains into the drawing area finY=mousePoint.getY(); } } if((drawingMode==SELECTING && !bMoving && nearDrawnPropi!=null)|| (!creatingPolygon && vShapes.size()>1 && !validateShape())){ boolean canRemove=removeNullLines(vRedrawingLines); if(!canRemove){ undoLastMove(vRedrawingLines,vRedrawingLinesBeforeModify); finX=iniX; finY=iniY; } } else if(bRedrawingLines){ setEndToVector(finX,finY,vRedrawingLines); bRedrawingLines=false; vRedrawingLines.clear(); vRedrawingLinesBeforeModify.clear(); } if(creatingRect){ creatingRect=false; vShapes.add(new EditableRectangle((int)iniX,(int)iniY,(int)(finX-iniX),(int)(finY-iniY))); if(hep.currentShape>=hep.getHoles().getNumCells()){ //Reserve space for the new rectangle when confirmed(in order to give it a name) ShapeData sd=new ShapeData(); sd.comment = ""+hep.currentShape; hep.getHoles().addShape(sd); hep.updateList(); } } if(creatingEllipse){ creatingEllipse=false; vShapes.add(new EditableEllipse2D((int)iniX,(int)iniY,(int)(finX-iniX),(int)(finY-iniY))); if(hep.currentShape>=hep.getHoles().getNumCells()){ //Reserve space for the new rectangle when confirmed(in order to give it a name) ShapeData sd=new ShapeData(); sd.comment = ""+hep.currentShape; hep.getHoles().addShape(sd); hep.updateList(); } } if(bResizing){ if(resizingDirection!=NO_RESIZING){ double x=mousePoint.getX(); double y=mousePoint.getY(); double xInc=x-iniX; double yInc=y-iniY; if(resizingDirection==EAST) yInc=0; else if(resizingDirection==SOUTH) xInc=0; hep.incDrawingArea(xInc,yInc); } bResizing=false; } ShapeData sd=getShapeData(); current=(sd!=null)?sd.getShape(hep.previewArea):null; //Update the modifications to the shape bSelectingArea=false; hep.repaint(0); if(!creatingPolygon) notifyShapeChanged(); } public class KeyHandler extends KeyAdapter{ public void keyPressed(KeyEvent e){ if(e.getKeyCode()==e.VK_DELETE){ deleteSelected(false); hep.shapeChanged(); } } } private double viewIniX=-1; private double viewIniY=-1; } jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/PointListener.java0000644000175000017500000000174611377161311022773 0ustar /* * File : PointListener.java * Created : 26-feb-2002 09:57 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; /** * * @author allastar * @version */ public interface PointListener { public void pointMoved(java.awt.geom.Point2D p); public void shapeChanged(); } jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/EditableEllipse2D.java0000644000175000017500000001043511377161311023404 0ustar /* * File : EditableEllipse2D.java * Created : 28-feb-2002 09:45 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; import java.awt.geom.*; import java.awt.*; /** * * @author allastar * @version 1.0 */ public class EditableEllipse2D extends EditableRectangle implements Cloneable{ public EditableEllipse2D(Point2D ini, Point2D end){ super(ini,end); } public EditableEllipse2D(int x, int y, int width, int height){ super(x,y,width,height); } public void paintWithColor(java.awt.Graphics g, int drawingMode, java.awt.Color c) { g.setColor(EditableShapeConstants.BORDER_COLOR); drawBorders(g); if (selected){ paintSelection(g); } else if (drawingMode==PolygonDrawPanel.NEW_POINT){ g.setColor(Color.red); drawBorders(g); g.setColor(c); } else g.setColor(c); g.drawOval((int)getX(),(int)getY(),(int)getWidth(),(int)getHeight()); } public boolean contains(double x, double y){ return new Ellipse2D.Double(getX(),getY(),getWidth(),getHeight()).contains(x,y); } public boolean contains(double x, double y, double w, double h){ return new Ellipse2D.Double(getX(),getY(),getWidth(),getHeight()).contains(x,y,w,h); } public PathIterator getPathIterator(AffineTransform at){ return new Ellipse2D.Double(getX(),getY(),getWidth(),getHeight()).getPathIterator(at); } public boolean intersects(double x, double y, double w, double h){ return new Ellipse2D.Double(getX(),getY(),getWidth(),getHeight()).intersects(x,y,w,h); } public EditableShape[] divide(double x, double y, boolean b){ return divide(x,y); } public EditableShape[] divide(double x, double y) { //The ellipse will be converted to an array of Bezier curves EditableShape[] shapes=new EditableShape[10]; int currentShape=0; double currentX=0, currentY=0; PathIterator pi=getPathIterator(new AffineTransform()); while (!pi.isDone()){ double[] points=new double[6]; int type=pi.currentSegment(points); switch (type){ case PathIterator.SEG_MOVETO: currentX=points[0]; currentY=points[1]; break; case PathIterator.SEG_LINETO: shapes[currentShape]=new EditableLine2D(currentX,currentY,points[0],points[1]); currentShape++; currentX=points[0]; currentY=points[1]; break; case PathIterator.SEG_CUBICTO: shapes[currentShape]=new EditableCubicCurve2D(currentX,currentY,points[0],points[1],points[2],points[3],points[4],points[5]); currentShape++; currentX=points[4]; currentY=points[5]; break; case PathIterator.SEG_QUADTO: shapes[currentShape]=new EditableQuadCurve2D(currentX,currentY,points[0],points[1],points[2],points[3]); currentShape++; currentX=points[2]; currentY=points[3]; break; } pi.next(); } return shapes; } public Ellipse2D getEllipse(){ return new Ellipse2D.Double(getX(),getY(),getWidth(),getHeight()); } public Object clone(){ return new EditableEllipse2D(getLocation(),new Point2D.Double(getLocation().getX()+getWidth(),getLocation().getY()+getHeight())); } } jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/HolesEditorPanel.form0000644000175000017500000012477711377161311023431 0ustar
jclic-0.2.1.0.orig/src/shapers/edu/xtec/jclic/shapers/EditableShape.java0000644000175000017500000001607711377161311022671 0ustar /* * File : EditableShape.java * Created : 25-feb-2002 08:55 * By : allastar * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ package edu.xtec.jclic.shapers; /** * This interface defines a {@link java.awt.Shape} that implements specific methods * to be modified (edited) in a graphic environment * @author allastar * @version 1.0 */ public interface EditableShape extends java.awt.Shape{ /** * Selects/unselects the shape * @param b The state (selected/unselected) of the shape */ public void setSelected(boolean b); /** * Checks if the shape is selected * @return true if the shape is selected, false otherwise. */ public boolean isSelected(); /** * Draws the shape with the default colour * @param g The graphic environment where to draw the shape * @param drawingMode The drawing mode. Squares are drawed in red when this value is ShapeGenPanel.NEW_POINT */ public void paint(java.awt.Graphics g, int drawingMode); /** * Draws the shape with the indicated color. * @param g The graphic environment where to draw the shape * @param drawingMode The drawing mode. Squares are drawed in red when this value is * ShapeGenPanel.NEW_POINT * @param c The color to be used to draw the shape */ public void paintWithColor(java.awt.Graphics g, int drawingMode, java.awt.Color c); /** * Draws squares in black and the remainder objects in the selection color * (EditableShapeConstants.selectedColor) * @param g The graphic environment where to draw the shape */ public void paintSelection(java.awt.Graphics g); /** * Draws the shape with dragable sides * @param g The graphic environment where to draw the shape */ public void drawBorders(java.awt.Graphics g); /** * Checks if the specified point lies within a side of the shape * @param x The horizontal co-ordinate of the point to check * @param y The vertical co-ordinate of the point to check * @param needSelected When the value of this param is true, the side must be selected. * @return Returns true when a side of the shape is near the point defined by x and y. */ public boolean hasClickedBorder(double x, double y, boolean needSelected); /** * Selects the side of the shape that lies with the specified point (if any). * @param x The horizontal co-ordinate of the point to check * @param y The vertical co-ordinate of the point to check */ public void selectBorder(double x, double y); /** * Rerturns the starting point of the side of the shape nearest to a specific point. * @param x The horizontal co-ordinate of the point * @param y The vertical co-ordinate of the point * @return The starting point of the side nearest to the point */ public java.awt.geom.Point2D getNearestBorder(double x, double y); /** * Moves towards a specific point the side of the shape that is located nearest it. * . * @param x The horizontal co-ordinate of the point * @param y The vertival co-ordinate of the point */ public void aproximateNearestBorder(double x, double y); /** * Computes the distance between a supplied point and the nearest limit of the shape. * @param x The horizontal co-ordinate of the point * @param y The vertical co-ordinate of the point * @return The distance between the point and the shape */ public double distanceTo(double x,double y); /** * Checks if the shape is into the limits of a specific {@link java.awt.Rectangle}. * @param r The rectangle to be checked * @return true if the shape intersects with the rectangle, false otherwise. */ public boolean isInto(java.awt.geom.Rectangle2D r); /** * Changes the co-ordinates of the previously marked corner to (x, y) * @param x The horizontal co-ordinate of the point * @param y The vertical co-ordinate of the point */ public void changeBorder(double x, double y); /** * Unselects the selected border of the shape, if any. */ public void deselectBorder(); /** * Gets the starting point of the first non-selected side of the shape * @return The starting point of the side */ public java.awt.geom.Point2D getNotSelectedBorder(); /** * Checks if the shape currently has a selected side. * @return true if the shape has a selected side, false otherwise. */ public boolean hasSelectedBorder(); /** * Applies an affine transformation (rotation, trnaslation, scale...) to the shape * @param aTransf The affine transformation to be applied */ public void transform(java.awt.geom.AffineTransform aTransf); /** * Divides the shape taking (x,y) as the "significant" point of the division. * @param x The horizontal co-ordinate of the point * @param y The vertical co-ordinate of the point * @return An array with the two shapes resulting of the division. */ public EditableShape[] divide(double x, double y); /** * Checks if the shape is adjacent to a specific point. * @param p The point to be checked * @return true if the shape is adjacent to the point, false otherwise */ public boolean isAdjacentTo(java.awt.geom.Point2D p); /** * Returns the point of the shape that acts as "starting" point. It is needed * to establish the path that draws the shape. * @return The starting point of the shape */ public java.awt.geom.Point2D getInitialPoint(); /** * Gets the point of the shape that is considered as "ending" point. * @return The ending point of the shape. */ public java.awt.geom.Point2D getEndPoint(); /** * Gets an array with all the corners and other special points of the shape. * @return The array of the points used to build the path that draws the shape. */ public java.awt.geom.Point2D[] getBorders(); /** * Makes a copy of the shape. * @return The copy of the object */ public Object clone(); } jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/0000755000175000017500000000000011377161311016602 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/0000755000175000017500000000000011377161311017715 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/line.gif0000644000175000017500000000152311377161311021334 0ustar GIF89a 𠠤! ,0H 4p!F1bEfD`G%XÐ;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/rotate_right.gif0000644000175000017500000000050611377161311023100 0ustar GIF89a֪~~~>>>:::888777111000///!&,c@pH,FcD%Ņd4xCQJ>H%c&1.6B- PM$0s${ B{i&!m DRF P! m##{tA;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/rect.gif0000644000175000017500000000153611377161311021346 0ustar GIF89a 𠠤! ,;H@*TxРA Ĉ/R(qŁ?V1dIQvTp—E ;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/add_point.gif0000644000175000017500000000015711377161311022350 0ustar GIF89afff!,4H 9@ Ʒ1US( ,+!1.s}+y`-S]$$;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/zoom.gif0000644000175000017500000000016711377161311021374 0ustar GIF89af!,paYC~g:v@s5HdJ('tZ) ;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/contract.gif0000644000175000017500000000017311377161311022222 0ustar GIF89affff!,@H:0J؎11tPc 籭HF8m@0[ D#Xݘ @n9C;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/bezier.gif0000644000175000017500000000153211377161311021665 0ustar GIF89a 𠠤! ,7HDP`…BHѠ!f$`G?.)bɉ'QVr%ŀ;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/expand.gif0000644000175000017500000000017111377161311021662 0ustar GIF89af!,>H 0J؂\ Adbjv tMÄ0케뼝/3 K.eM`jE;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/rotate_left.gif0000644000175000017500000000050411377161311022713 0ustar GIF89aի>>>;;;888666111...!!,apH,#jL,$C1HX?#!=tI!n`xgBWF D FjD FxkA;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/selectionMode.gif0000644000175000017500000000155511377161311023204 0ustar GIF89ad!,JA!<(! &|@ć+^Ę1D-N쨱!ȊE$B%\ѤA-eƼsM;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/vertex_off.gif0000644000175000017500000000011711377161311022552 0ustar GIF89afff!, ˝3FVVY!0R8vHB;rR;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/rodona.gif0000644000175000017500000000154211377161311021670 0ustar GIF89a 𠠤! ,?H &<(p!A"(qbÊ`qƎ?nbǒA4Xr`@;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/quad.gif0000644000175000017500000000153211377161311021337 0ustar GIF89a 𠠤! ,7\LȰÇ((pbdbF+6 r`ǒ#)T鑥ʀ;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/pent.gif0000644000175000017500000000155611377161311021361 0ustar GIF89a 𠠤! ,KHp ?~.B ,|D&G~8rÐO,9K[¤H`D ;a̚;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/imant.gif0000644000175000017500000000023311377161311021512 0ustar GIF89afffff33fff! ,HPIIEPc@XlI 9: P2B VMb8.S_7,QPI;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/icons/vertex_on.gif0000644000175000017500000000014211377161311022412 0ustar GIF89afff!,39 Bp%']"& +0"c.h(uz;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/cursors/0000755000175000017500000000000011377161311020302 5ustar jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/cursors/llapis.gif0000644000175000017500000000157711377161311022267 0ustar GIF89a 𠠤! , \H*\ȰÇ#JHŋ ؘq  td1dǍ&O.(2cɕ#Krt ʕ-1̩L,GyIH*]ʴӋ;jclic-0.2.1.0.orig/src/shapers/edu/xtec/resources/cursors/cercle.gif0000644000175000017500000000156711377161311022237 0ustar GIF89a  𠠤! , TH*\ȰÇ#JHŋ3jFAZTpȒ'`ˈ/ 2e0WƟ@ Jѣ ;jclic-0.2.1.0.orig/src/jclicPlayer/0000755000175000017500000000000011377161311013644 5ustar jclic-0.2.1.0.orig/src/jclicPlayer/edu/0000755000175000017500000000000011377161311014421 5ustar jclic-0.2.1.0.orig/src/jclicPlayer/edu/xtec/0000755000175000017500000000000011377161311015364 5ustar jclic-0.2.1.0.orig/src/jclicPlayer/edu/xtec/resources/0000755000175000017500000000000011377161311017376 5ustar jclic-0.2.1.0.orig/src/jclicPlayer/edu/xtec/resources/icons/0000755000175000017500000000000011377161311020511 5ustar jclic-0.2.1.0.orig/src/jclicPlayer/edu/xtec/resources/icons/logo_player.png0000644000175000017500000001363211377161311023540 0ustar PNG  IHDR|isBITOPLTEmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffmY3ffޅ؂{|xxuurrmlifc_\Y3fftńZtRNS"""333DDDUUUfffwwwCD pHYs  ~tEXtCreation Time09/05/04 tEXtSoftwareMacromedia Fireworks MX*$oIDATx]kCHE(((R ֶֶZZXG6H2$3@fΧ-{̽L9` ?"]\|a /xjyqal?yq3#ċ?4FFW,LCչq`c((06a}}5 #w8}) ߾}/}MIBh^~}bH2I0hKͯ+ЍQab|[ m|y*IBc? c Ѽ}ϓ(Ю@āH?@&@,`'& ~/T a:;n[mn }9i؏-I>->'CF||B(ЛIN.,\#7I>7ܘ NVT#@ɤ_NOp|/0%_-H/@7M ,;$?P @ނ%٤@v_4 l'.[`;kTG/U6f4A6ӲvDӕl67J,@_cNLMO%O[NZT$y H'j 3@coJ~vf` Ҝ@Ig =; G`V@l'=-50ll'O?Z|hfp0:>>Ȅÿ };y x1'^wowioab{wpxz޳h`BvϿo&w Ի*PʗTMKv-}'iOBëa'c?~g@&B[I>?N`( ]w;ۉ恐|8BJcV,e'Co|?b%qɤ|$_$t.5>"d- zboC2xe&%f'#A/C@\XJðg/@TR%2ZHR5 }܁_x ,/={o$M(ɺjXK-d'G%I3 W' dewgM~k)0/#ALv+CZvN%M(,-.m_j,i?=!JUDL4S$7G;G.aytoB$b?_>ET-J~-6Rs`-U-tϠ/B&onn.y[9(ѽW[H۩쫍7 p_d-O5M-Cm_D:Pv24${|%?0b|rvq57@BNCu0^LNϿ|ET {oK:H*]| vSd]OG.$tG@Q*oA{.{Hu*.c'LK+],S4y A^P:U'ˢ{"o! p}h;Y[-> Cԩja؇DF6 ;tpB#TMGo*hgbٹh Q Įh'[iPև9_UsB6@$i'k bo!} qCqC,R D,)`|ڔaƏINN ; 6eӺ$yBvu-:9'zԔڔxQCSTF:DTJ:VǞ˄W'Nxbn~lcB)s}i*U1[ڔuEW'NƢ:JC0NֲSY&;Ae~Gb*׮NNY8.@8/d'P7>}v1Ր~Ɏ0S S?3j0 [Sx`&Z5 das*d|D 誓^o!l(F~tk';k4xHsur#;9,PAY&^;mIəg~zK2ɓ^;98V'˖Մr1K N χ NZ?#/V2*$L~OB-Ҧ#vIʨ0Rvr(zyD9o!RpO?'u\MmȕO+Ddy6S~伅 s "JFB^66h@nbG{gEv{Ru sȗ,nb/m<+!\N&PԆ(XKϋBa@Nuȯr{vB|VgTu.&~-:|:W"+H,;(bY,1.O$9yuČ H/Į鱸%N~V3Rdvo6{nwkό|quNČ(U&("Hc31yn'$8_x:/("B2j.ެW>9%|JP:_jm*BCnbSN=EЕBr?CJ_3:jFב+ONki*˓)=НaO4)1X.7.#~Uy탢'\a8O~*?VǴWpaHӒ_V䇺E R3xi5V9%v J;3p#z˓Og!JU|.QM}gKօ/.\ӶkmgG4V'{E2Sh.3+zTv$S{]J?U|d F[쏉N=dgskd2ُ̥Il~oG[{}ؒȧɧLRx/2\it3Kr|3ʨɧL&زMCS҅5b/26:X/5p )A+.O^ kn30s39T7>/`tJs+ Cv : H ϰd{x_x|UX(mt;v Z]?n)'E;{ !l3%b)鷟/ $=8lxJ@,PjCN wjx-v|w hOnw1NTZu_掂:cYAz{qe{(ϱ]ْV-;t(PO珘L< 9'¸=_GDKo)ϩ_:$F;J=O6@7zG O_7u4ăaXy/~ZD8@q+Xӷ1y{'= sr @<0LW66pK7wȱJH's;8ÒZ 1)}#.ͳs3eB*D⤸S\ ;ߋwWpewFىv䷕?P?mb( 6I#%6Щ@#U+ Y,`ߞ+ߵ-VJPŠjs^3mO~ -*A>)rdQGz0*⃩Ӿ,tRA%z94_& eJ-3y,qP3*!;1&?@r#_]_ l69 )es_ 3Ke:Yl 6 <]p?0;gj?%u"E%%*GQD_̄aw_Cyп:;]16Pqdy0<^ؔ*grT1o׻8=w@}|&*V٤[}ouH܆qЏʏ=3{\ڼߒOV^IAZ~xwZ)R o&2s4ɆP!;1M< 煂'v+S a3akH'|Ngπ;1 ?1,ďG1E.p4wĠχVp#<$=2- _;^9z!jnFƦVWU!"S3QrUF7t' ټ=3s KKZmeeV[ZZy%Pm2ޮW&ZbTxgx]J߮RFz)Ae>"0^Y(?fgt?8j w.   ?ZUv|b aEɘ˹y#T!3E_^҉X踯w]45@-OnUp=7ō ӂ+x+n- I&n6UŌG>~y "5Vk I"Bp `𜅻Q ` ;ֳtǝ9qI%uQ? pm7&Nr)uP`\Tua!U2 IM_m|47C:RFd@HW!ҁ! Vu0EOw1li!L CRhET|r/1ݿ IvB;ATzK`H* ^U^| "=/1:38Ǫ6BHp4, N"#|nB bȹi ZQ0zJD[ U^We=\G~U~C|OYcA=) n [l *6)@N]Jh{k_|4 {&q%4؄?%_ 9]-?/D>C)?y{#H1&ɶsB-KURpRu˂KUw'JcaA~C.ڱtg R v\MfTu0{uA$9x1C6mq*Y6҉.vAI^o6ΒRT$, ^g(kRh;ޚO "f0_*3JӠnJ~XHhv+6Fs ,u$X'IENDB`jclic-0.2.1.0.orig/src/jclicPlayer/JClicInstaller.java0000644000175000017500000000623311377161311017355 0ustar /* * File : JClicInstaller.java * Created : 01-dec-2000 17:40 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ import edu.xtec.jclic.Constants; import edu.xtec.jclic.ExtendedPlayer; import edu.xtec.jclic.Player; import edu.xtec.jclic.PlayerSettings; import edu.xtec.jclic.SingleInstanceJFrame; import edu.xtec.jclic.project.ProjectInstallerDlg; import edu.xtec.util.BasicResourceBridge; import edu.xtec.util.Messages; import edu.xtec.util.Options; import edu.xtec.util.PersistentSettings; /* * JClicInstaller.java * * Created on 20 / febrer / 2004, 16:21 */ /** * * @author Francesc Busquets (fbusquets@xtec.net) */ public abstract class JClicInstaller { /** * @param args the command line arguments */ public static void main(String[] args) { boolean exit=true; try{ Options options=new Options((java.awt.Component)null); Messages messages=PersistentSettings.getMessages(options, Constants.DEFAULT_BUNDLE); messages.addBundle(Constants.COMMON_SETTINGS); messages.addBundle(ExtendedPlayer.MESSAGES_BUNDLE); String installer=SingleInstanceJFrame.loadArgs(args, options); if(installer==null){ System.err.println("Error: no installer file specified!"); } else if(!installer.endsWith(".jclic.inst")){ System.err.println("Error: "+installer+" isn't a JClic package install script.\nJClic package install scripts end always with .jclic.inst"); } else{ BasicResourceBridge rb=new BasicResourceBridge(options); PlayerSettings settings=PlayerSettings.loadPlayerSettings(rb); if(settings.promptPassword(null, null)){ settings.checkLibrary(); ProjectInstallerDlg pi=ProjectInstallerDlg.getProjectInstallerDlg(null, settings.libraryManager, installer); if(pi!=null){ pi.setVisible(true); if(!pi.cancel && pi.launchNow && pi.pathToMainProject!=null){ JClicPlayer.main(new String[]{pi.pathToMainProject}); exit=false; } } } } } catch(Exception ex){ System.err.println("Error installing:\n"+ex); } if(exit) System.exit(0); } } jclic-0.2.1.0.orig/src/jclicPlayer/JClicPlayer.java0000644000175000017500000000303211377161311016646 0ustar /* * File : JClicPlayer.java * Created : 01-dec-2000 12:34 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details (see the LICENSE file). */ import edu.xtec.jclic.SingleInstanceJFrame; /** * * @author Francesc Busquets (fbusquets@xtec.net) * @version 1.0 */ public abstract class JClicPlayer { public static final int INSTANCE_PORT=5872; /** * @param args the command line arguments */ public static void main(String args[]) { SingleInstanceJFrame jcp=new SingleInstanceJFrame( "edu.xtec.jclic.ExtendedPlayer", args, "JClic player", //"icons/logo_player.png", "icons/logo.png", //"icons/jclic_64x64.png", "icons/miniclic.png", INSTANCE_PORT); if(jcp.isArmed()) //jcp.show(); jcp.setVisible(true); else System.exit(0); } }jclic-0.2.1.0.orig/src/extra/0000755000175000017500000000000011377161311012526 5ustar jclic-0.2.1.0.orig/src/extra/edu/0000755000175000017500000000000011377161311013303 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/0000755000175000017500000000000011377161311014246 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/0000755000175000017500000000000011377161312016261 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/0000755000175000017500000000000011377161311020440 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/contentproviders_pt_BR.properties0000644000175000017500000000137511377161311027262 0ustar # List of currently registered types of content providers for JClic activities. # All JClic content providers must extend edu.xtec.jclic.automation.AutoContentProvider # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=content_provider_name[|content_provider_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.automation." # Example: # com.acme.jclic.TestContentProvider=Acme test content|This JClic content provider is just a test... #Tradu\ufffd\ufffdo para o Portugu\ufffds brasileiro #Author: Hugo Sunayama #Email: hugocogeae@yahoo.com.br #Creative Commons license @arith.Arith=Arith|Cria\ufffd\ufffdo autom\ufffdtica de exerc\ufffdcios de c\ufffdlculo mental jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/contentproviders_de.properties0000644000175000017500000000012111377161311026630 0ustar @arith.Arith=Arith|Arithmetik\ufffdbungen zum Kopfrechnen automatisch erstellen jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/contentproviders_ca.properties0000644000175000017500000000136511377161311026636 0ustar # List of currently registered types of content providers for JClic activities. # All JClic content providers must extend edu.xtec.jclic.automation.AutoContentProvider # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=content_provider_name[|content_provider_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.automation." # Example: # com.acme.jclic.TestContentProvider=Acme test content|This JClic content provider is just a test... @arith.Arith=Arith|Creaci\u00F3 autom\u00E0tica d'exercicis de c\u00E0lcul mental @tagreplace.TagReplace=TagReplace|Substitueix determinades etiquetes de text per valors especificats en un fitxer o font de dades externa jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/contentproviders_gl.properties0000644000175000017500000000012711377161311026650 0ustar @arith.Arith=Arith|Creaci\ufffdn autom\ufffdtica de exercicios de c\ufffdlculo mental jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/contentproviders.properties0000644000175000017500000000133611377161311026171 0ustar # List of currently registered types of content providers for JClic activities. # All JClic content providers must extend edu.xtec.jclic.automation.AutoContentProvider # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=content_provider_name[|content_provider_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.automation." # Example: # com.acme.jclic.TestContentProvider=Acme test content|This JClic content provider is just a test... @arith.Arith=Arith|Automatic creation of menthal arithmetics exercises @tagreplace.TagReplace=TagReplace|Replaces tags inside text expressions with values taken from a external file or data source jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/automation/contentproviders_es.properties0000644000175000017500000000137611377161311026664 0ustar # List of currently registered types of content providers for JClic activities. # All JClic content providers must extend edu.xtec.jclic.automation.AutoContentProvider # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=content_provider_name[|content_provider_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.automation." # Example: # com.acme.jclic.TestContentProvider=Acme test content|This JClic content provider is just a test... @arith.Arith=Arith|Creaci\u00F3n autom\u00E1tica de ejercicios de c\u00E1lculo mental @tagreplace.TagReplace=TagReplace|Substituye determinadas etiquetas de texto por valores especificados en un archivo o fuente de datos externa jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/0000755000175000017500000000000011377161312020425 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_ru.properties0000644000175000017500000001327311377161312026317 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=\u0421\u043B\u043E\u0436\u043D\u044B\u0435 \u0430\u0441\u0441\u043E\u0446\u0438\u0430\u0446\u0438\u0438|\u0412 \u044D\u0442\u043E\u043C \u0437\u0430\u0434\u0430\u043D\u0438\u0438 \u0442\u0430\u043A\u0436\u0435 \u0435\u0441\u0442\u044C \u0434\u0432\u0430 \u043D\u0430\u0431\u043E\u0440\u0430 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438, \u043D\u043E \u044D\u0442\u0438 \u043C\u043E\u0433\u0443\u0442 \u0438\u043C\u0435\u0442\u044C \u0440\u0430\u0437\u043D\u043E\u0435 \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E \u0447\u0430\u0441\u0442\u0435\u0439, \u0430 \u0442\u0430\u043A\u0436\u0435 \u043C\u043E\u0433\u0443\u0442 \u0438\u043C\u0435\u0442\u044C \u0440\u0430\u0437\u043D\u044B\u0439 \u0442\u0438\u043F \u0441\u0432\u044F\u0437\u0438 (\u043E\u0434\u0438\u043D \u043A \u043E\u0434\u043D\u043E\u043C\u0443, \u043C\u043D\u043E\u0433\u043E \u043A \u043E\u0434\u043D\u043E\u043C\u0443, \u043B\u0438\u0448\u043D\u044F\u044F \u0447\u0430\u0441\u0442\u044C \u0438 \u0442.\u0434.). @associations.SimpleAssociation=\u041F\u0440\u043E\u0441\u0442\u044B\u0435 \u0430\u0441\u0441\u043E\u0446\u0438\u0430\u0446\u0438\u0438|\u0415\u0441\u0442\u044C \u0434\u0432\u0430 \u043D\u0430\u0431\u043E\u0440\u0430 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u0438 \u0441 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u044B\u043C \u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E\u043C \u0447\u0430\u0441\u0442\u0435\u0439. \u041A\u0430\u0436\u0434\u0430\u044F \u0447\u0430\u0441\u0442\u044C \u0438\u0437 \u043E\u0440\u0438\u0433\u0438\u043D\u0430\u043B\u044C\u043D\u043E\u0433\u043E \u043D\u0430\u0431\u043E\u0440\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 \u043E\u0434\u043D\u043E\u0439 \u0447\u0430\u0441\u0442\u0438 \u0438\u0437 \u043D\u0430\u0431\u043E\u0440\u0430 \u0438\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0439. @memory.MemoryGame=\u041D\u0430\u0445\u043E\u0436\u0434\u0435\u043D\u0438\u0435 \u043F\u0430\u0440|\u041A\u0430\u0436\u0434\u044B\u0439 \u0438\u0437 \u043A\u0443\u0441\u043A\u043E\u0432 \u043F\u043E\u044F\u0432\u043B\u044F\u0435\u0442\u0441\u044F \u0434\u0432\u0430\u0436\u0434\u044B, \u043D\u043E \u0432\u0435\u0440\u0445 \u043D\u043E\u0433\u0430\u043C\u0438. \u041F\u0440\u0438 \u043A\u0430\u0436\u0434\u043E\u0439 \u043F\u043E\u043F\u044B\u0442\u043A\u0435 \u0434\u0432\u0430 \u043A\u0443\u0441\u043A\u0430 \u043F\u0435\u0440\u0435\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u0438, \u0435\u0441\u043B\u0438 \u043E\u043D\u0438 \u043D\u0435 \u043E\u0434\u0438\u043D\u0430\u043A\u043E\u0432\u044B, \u043F\u0435\u0440\u0435\u0432\u043E\u0440\u0430\u0447\u0438\u0432\u0430\u044E\u0442\u0441\u044F \u043D\u0430\u0437\u0430\u0434. \u041D\u0443\u0436\u043D\u043E \u043D\u0430\u0439\u0442\u0438 \u0432\u0441\u0435 \u043F\u0430\u0440\u044B @panels.Explore=Explore activity|An initial piece of information is shown and, upon clicking on it, a given piece of information is shown for each element. @panels.Identify=Identify cells|There is just one set of information and you have to click on those parts that meet a certain condition. @panels.InformationScreen=Information screen|One set of information is shown and there is the option of activating the multimedia content for each piece of information. @puzzles.DoublePuzzle=Double puzzle|Two grids are shown. One contains the disordered information and the other is empty. The object has to be rearranged in the empty grid by dragging the pieces one by one. @puzzles.ExchangePuzzle=Exchange puzzle|The information is swapped within the same panel. In each go two pieces swap position until the object is reordered. @puzzles.HolePuzzle=Hole puzzle|In the same panel one piece is missing and the others are shuffled. In each go one of the pieces next to the empty space is moved until they are back in the original order. @text.WrittenAnswer=Written answer|A set of information is shown and the corresponding text for each of its parts must be written. @text.FillInBlanks=Text: Fill-in blanks|The user has to complete certain words, letters and phrases that have been hidden or camouflaged in a text. The solution of each of the elements may be set up in different ways: writing in a blank space; correcting a phrase that contains errors; or selecting from a list of various possible answers. @text.Identify=Text: Identify elements|The user has to point out some words, letters, numbers, symbols or punctuation marks with a click of the mouse. @text.Order=Text: Order elements|When designing this activity some of the words or paragraphs of a text are selected to be shuffled around. The user has to put them back in order. @text.Complete=Text: Complete text|Various parts of a text (letters, words, punctuation signs, or phrases) are taken out and the user has to complete it. @textGrid.CrossWord=Crosswords|The word table has to be completed according to its definitions. The definitions may be text, graphics or sound. The programme automatically shows the definitions of the two words which cross in the cursor position. @textGrid.WordSearch=Word search|The hidden words have to be found in a grid of letters. The neutral cells in the grid (those with no word) are completed with characters chosen at random. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_pt.properties0000644000175000017500000001000511377161312026302 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Associa\u00E7\u00E3o complexa|Neste tipo de actividade dois conjuntos (pain\u00E9is) s\u00E3o associados entre si. Cada painel pode conter uma quantidade distinta de c\u00E9lulas e as rela\u00E7\u00F5es podem ser: um-para-um, muitos para um, partes sem uma rela\u00E7\u00E3o, etc. @associations.SimpleAssociation=Associa\u00E7\u00E3o simples|Dois conjuntos de informa\u00E7\u00E3o (pain\u00E9is) com a mesma quantidade de c\u00E9lulas. Cada parte do conjunto original corresponde a uma - e somente uma - parte do segundo conjunto. @memory.MemoryGame=Jogo de mem\u00F3ria|Cada uma das pe\u00E7as (de uma imagem escolhida) possui o seu par, todas com as faces voltadas para baixo. A cada tentativa, duas pe\u00E7as ser\u00E3o mostradas. Caso n\u00E3o formem um par (n\u00E3o sejam iguais), voltam-se de face para baixo. O objectivo \u00E9 encontrar todos os pares. @panels.Explore=Explora\u00E7\u00E3o|Clicar sobre partes do painel mostra informa\u00E7\u00F5es. @panels.Identify=Identificar c\u00E9lulas|Existe um painel de informa\u00E7\u00F5es. Clique nas partes que correspondem a determinada condi\u00E7\u00E3o. @panels.InformationScreen=Ecr\u00E3 de informa\u00E7\u00E3o|Um conjunto de informa\u00E7\u00F5es \u00E9 mostrado. Existe a op\u00E7\u00E3o de activar um conte\u00FAdo da mediateca para cada parte da informa\u00E7\u00E3o. @puzzles.DoublePuzzle=Quebra-cabe\u00E7as duplo|S\u00E3o exibidos dois pain\u00E9is. Um cont\u00E9m a informa\u00E7\u00E3o desordenada e o outro est\u00E1 vazio. O objecto deve ser reorganizado no painel vazio arrastando cada pe\u00E7a. @puzzles.ExchangePuzzle=Quebra-cabe\u00E7as de troca|A informa\u00E7\u00E3o \u00E9 baralhada dentro do mesmo painel. A cada tentativa, duas pe\u00E7as trocam de posi\u00E7\u00E3o at\u00E9 que o utilizador consiga colocar tudo em ordem. @puzzles.HolePuzzle=Quebra-cabe\u00E7as com lacuna|As pe\u00E7as (menos uma) surgem baralhadas num mesmo painel. Uma das pe\u00E7as cont\u00EDgua ao espa\u00E7o vazio \u00E9 movida at\u00E9 que todas sejam colocadas em ordem. @text.WrittenAnswer=Resposta escrita|Um painel de informa\u00E7\u00F5es \u00E9 mostrado e o texto correspondente para cada uma das partes deve ser escrito. @text.FillInBlanks=Texto: Preencher lacunas|O utilizador completa palavras, letras e frases que foram escondidas ou camufladas num texto. A resolu\u00E7\u00E3o de cada um dos elementos pode ser feita de diferentes modos: escrever num espa\u00E7o em branco (lacuna); corrigir a frase que cont\u00E9m erros; ou seleccionar a resposta correcta a partir de uma lista. @text.Identify=Texto: Identificar elementos|O utilizador destaca algumas palavras, letras, n\u00FAmeros, s\u00EDmbolos ou pontua\u00E7\u00E3o com um clique. @text.Order=Texto: Ordenar elementos|O utilizador ordena correctamente as palavras (ou par\u00E1grafos inteiros) de um texto previamente desordenadas. @text.Complete=Texto: Completar texto|V\u00E1rias partes de um texto (letras, palavras, pontua\u00E7\u00E3o, ou frases) s\u00E3o retiradas e o utilizador deve complet\u00E1-las. @textGrid.CrossWord=Palavras Cruzadas|Completar a grelha de acordo com as defini\u00E7\u00F5es. As defini\u00E7\u00F5es podem ser mostradas como texto, imagens ou som. O jClic exibe automaticamente as defini\u00E7\u00F5es de duas palavras que cruzam a posi\u00E7\u00E3o do cursor. @textGrid.WordSearch=Sopa de letras|As palavras escondidas devem ser encontradas numa grelha de letras. As c\u00E9lulas neutras na grelha (as que n\u00E3o t\u00EAm palavras) s\u00E3o completadas com caracteres escolhidos aleatoriamente ou definidos pelo autor. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_eu.properties0000644000175000017500000000707611377161312026306 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Elkarketa berezia|Honek ere bi informazio multzo ditu baina zati kopuru ezberdina izan dezakete eta zatien harteko lotura ere ezberdina izan daiteke: lehenengoko bati bigarreneko bakarra, lehenengoko bati bigarreneko hainbat, loturarik gabeak, e.a. @associations.SimpleAssociation=Elkarketa arrunta|Zati kopuru bera duten bi informazio multzo daude. Lehenengoaren zati bakoitzari bigarrenaren zati bakarra dagokio eta ez gehiago. @memory.MemoryGame=Bikoteak egin| Zati bakoitza bi aldiz agertuko da buruz behera. Bakoitzean bi zati giratuko dira gora eta berriz ere buruz bera jarriko dira ez badute bikotea osatzen. Helburua bikote guztiak aurkitzea da. @panels.Explore=Ikertu-jarduera| Informazioaren lehen zatia ematen da eta horretan sakatuta elementu bakoitzerako informazio zati zehatz bat erakusten da. @panels.Identify=Identifikazu atalak| Informazio atal batzuk daude eta berauetan sakatuta adierazi behar duzu zeintzuk betetzen duten baldintza zehatz bat. @panels.InformationScreen=Informazioa pantailan| Informazio atal batzuk daude eta aukera dago atal bakoitzerako multimedia edukia aktibatzeko bertan sakatuta. @puzzles.DoublePuzzle=Puzzle bikoitza| Bi taula erakusten dira. Lehenengoak informazioa nahastuta du eta bigarrena hutsik dago. Helburua hutsik dagoen taula osatzea da lehenengoko piezak banan banan arrastaka eramanda. @puzzles.ExchangePuzzle=Zatiak ordenatu|Informazioa nahastuta dago panel berean. Saiakera bakoitzean bi zati mugituko dira guztiak ordenatuta geratu arte. @puzzles.HolePuzzle=Puzzle mugikorra|Panel batean informazio-piezak nahastuta daude eta bat kanpoan dago gainera. Piezak hutsik dagoen tartea erabilita mugitu egin behar dira bere posiziora eramateko eta kanpoan dagoen piezarentzat bere lekua libre uzteko. @text.WrittenAnswer=Idatzi erantzuna|Informazio atalak erakusten dira eta horiei dagokien testua idatzi egin behar da. @text.FillInBlanks=Testua: hutsuneak bete|Erabiltzaileak testuan ezkutatu edo kamuflatu diren hitzak, letrak edo esaldiak osatu behar ditu. Elementu bakoitzaren soluzioa era ezberdinetan eman daiteke: hutsunea bete, akatsak dituen esaldia zuzendu edo erantzun multzo batetik aukeratu. @text.Identify=Testua: Identifikatu elementuak|Erabiltzaileak hitzak, hizkiak, zenbakiak, sinboloak edo puntuazio-markak identifikatu behar ditu saguarekin markatuta. @text.Order=Testua: Elementuak ordenatu|Jarduera hau diseinatzean, hainbat hitz edo paragrafo aukeratzen dira testutik eta nahastu egiten dira bertan. Erabiltzaileak berriz ere bere lekura eraman beharko ditu. @text.Complete=Testua: Testua osatu|Testuaren hainbat zati (hizkiak, hitzak, puntuazio-markak edo esaldiak) testutik ateratzen dira eta erabiltzaileak osatu egin behar du. @textGrid.CrossWord=Hitz gurutzatuak|Hitzen taula definizioen bitartez osatu behar da. Definizioa testua, grafikoa edo soinu bidezkoa izan daiteke. Programak automatikoki erakusten ditu kurtsorearen kokapenean gurutzatzen diren bi hitzen definizioak. @textGrid.WordSearch=Bilatu hitza|Ezkutuko hitzak letra taula batean daude. Taulako laukitxoetan dauden hizki neutralak (hitzarenak ez direnak) ausaz aukeratuko dira. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_gl.properties0000644000175000017500000001015011377161312026262 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Asociaci\u00F3n complexa|Neste tipo de actividade pres\u00E9ntanse tam\u00E9n dous conxuntos de informaci\u00F3n, pero estes poden ter un n\u00FAmero diferente de elementos e entre eles p\u00F3dense dar diversos tipos de relaci\u00F3ns: Un a un, varios a un, elementos sen asignar... @associations.SimpleAssociation=Asociaci\u00F3n simple|Pres\u00E9ntanse dous conxuntos de informaci\u00F3n que te\u00F1en o mesmo n\u00FAmero de elementos. A cada elemento do conxunto orixe corresponde un e s\u00F3 un elemento do conxunto imaxe. @memory.MemoryGame=Xogo de memoria|Cada unha das pezas que forman o obxecto pres\u00E9ntase d\u00FAas veces e ocultas na xanela de xogo. En cada tirada desc\u00F3brense un par de pezas, que se volven a ocultar se non foren id\u00E9nticas. O obxectivo \u00E9 destapar todas as parellas. @panels.Explore=Actividade de exploraci\u00F3n|M\u00F3strase unha informaci\u00F3n inicial e cando se fai clic nela aparece, para cada elemento, unha determinada peza de informaci\u00F3n. @panels.Identify=Actividade de identificaci\u00F3n|Pres\u00E9ntase s\u00F3 un conxunto de informaci\u00F3n e hai que facer clic nos elementos que cumpriren unha determinada condici\u00F3n. @panels.InformationScreen=Pantalla de informaci\u00F3n|M\u00F3strase un conxunto de informaci\u00F3n e, opcionalmente, ofr\u00E9cese a posibilidade de activar o contdo multimedia asociado a cada elemento. @puzzles.DoublePuzzle=Quebracabezas dobre|M\u00F3stranse dous paneis. Nun aparece a informaci\u00F3n desordenada e o outro est\u00E1 valeiro. Hai que reconstru\u00EDr o obxecto neste \u00FAltimo arrastando as pezas unha a unha. @puzzles.ExchangePuzzle=Quebracabezas de intercambio|Nun \u00FAnico panel mest\u00FArase a informaci\u00F3n. En cada xogada interc\u00E1mbianse as posici\u00F3ns de d\u00FAas pezas ata ordenar o obxecto. @puzzles.HolePuzzle=Quebracabezas de burato|Nun \u00FAnico panel faise desaparecer unha peza e mest\u00FAranse as restantes. En cada xogada p\u00F3dese desprazar unha das pezas vici\u00F1as do burato, ata telas todas na orde orixinal. @text.WrittenAnswer=Resposta escrita|M\u00F3strase un conxunto de informaci\u00F3n e, para cada elemento, hai que escribir o texto correspondente ou de resposta. @text.FillInBlanks=Texto: encher buratos|Nun texto esc\u00F3llense determinadas palabras, letras e frases que se ocultan ou camuflan. A resoluci\u00F3n de cada un dos elementos ocultos p\u00F3dese efectuar de xeitos diferentes: Escribindo nun espacio valeiro, corrixindo unha expresi\u00F3n que cont\u00E9n erros ou escoll\u00E9ndoa nunha lista entre distintas respostas pos\u00EDbeis. @text.Identify=Texto: identificar elementos|O usuario ten que sinalar cun clic do rato palabras, letras, cifras, s\u00EDmbolos ou signos de puntuaci\u00F3n. @text.Order=Texto: ordenar elementos|No dese\u00F1o da actividade esc\u00F3llense no texto palabras ou par\u00E1grafos que se barallan. O usuario ten de intentar volver a p\u00F3lo en orde. @text.Complete=Texto: completar texto|Nun texto fanse desaparecer alg\u00FAns elementos (letras, palabras, signos de puntuaci\u00F3n, frases) e o usuario ten de completalo. @textGrid.CrossWord=Encrucillado|Hai que ir enchendo o panel de palabras a partir das definici\u00F3ns. As definici\u00F3ns poden ser textuais, gr\u00E1ficas ou sonoras. O programa mostra automaticamente as definici\u00F3ns das d\u00FAas palabras que se cruzan na posici\u00F3n actual do cursor. @textGrid.WordSearch=Sopa de letras|Hai que encontrar as palabras escondidas nunha cuadr\u00EDcula de letras. As celas neutras desta grella (as que non pertencen a ningunha palabra) \u00E9nchense con caracteres escolleitos ao hazar en cada xogada. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_el.properties0000644000175000017500000004013011377161312026261 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=\u03A3\u03CD\u03BD\u03B8\u03B5\u03C4\u03B7 \u03C3\u03C7\u03AD\u03C3\u03B7|\u03A3\u03B5 \u03B1\u03C5\u03C4\u03AE \u03C4\u03B7 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03C5\u03C0\u03AC\u03C1\u03C7\u03BF\u03C5\u03BD \u03B4\u03CD\u03BF \u03C3\u03CD\u03BD\u03BF\u03BB\u03B1 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD, \u03B1\u03BB\u03BB\u03AC \u03B5\u03BD\u03B4\u03AD\u03C7\u03B5\u03C4\u03B1\u03B9 \u03BD\u03B1 \u03AD\u03C7\u03BF\u03C5\u03BD \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03CC \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC \u03C4\u03BC\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD \u03AE \u03BD\u03B1 \u03C3\u03C7\u03B5\u03C4\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03BF\u03CD\u03C2 \u03C4\u03CD\u03C0\u03BF\u03C5\u03C2 \u03C3\u03C7\u03AD\u03C3\u03B5\u03C9\u03BD, \u03B3\u03B9\u03B1 \u03C0\u03B1\u03C1\u03AC\u03B4\u03B5\u03B9\u03B3\u03BC\u03B1: \u03AD\u03BD\u03B1 \u03C0\u03C1\u03BF\u03C2 \u03AD\u03BD\u03B1, \u03C0\u03BF\u03BB\u03BB\u03AC \u03C0\u03C1\u03BF\u03C2 \u03AD\u03BD\u03B1, \u03C4\u03BC\u03AE\u03BC\u03B1\u03C4\u03B1 \u03C7\u03C9\u03C1\u03AF\u03C2 \u03C3\u03C7\u03AD\u03C3\u03B5\u03B9\u03C2, \u03BA\u03BB\u03C0. @associations.SimpleAssociation=\u0391\u03C0\u03BB\u03AE \u03C3\u03C7\u03AD\u03C3\u03B7|\u03A5\u03C0\u03AC\u03C1\u03C7\u03BF\u03C5\u03BD \u03B4\u03CD\u03BF \u03C3\u03CD\u03BD\u03BF\u03BB\u03B1 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03C0\u03BF\u03C5 \u03AD\u03C7\u03BF\u03C5\u03BD \u03C4\u03BF\u03BD \u03AF\u03B4\u03B9\u03BF \u03B1\u03C1\u03B9\u03B8\u03BC\u03CC \u03C4\u03BC\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD. \u039A\u03AC\u03B8\u03B5 \u03C4\u03BC\u03AE\u03BC\u03B1 \u03B1\u03C0\u03CC \u03C4\u03BF \u03B1\u03C1\u03C7\u03B9\u03BA\u03CC \u03C3\u03CD\u03BD\u03BF\u03BB\u03BF \u03B1\u03BD\u03C4\u03B9\u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF \u03C3\u03B5 \u03AD\u03BD\u03B1, \u03BA\u03B1\u03B9 \u03BC\u03CC\u03BD\u03BF\u03BD \u03AD\u03BD\u03B1, \u03C4\u03BC\u03AE\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03AC\u03BB\u03BB\u03BF\u03C5 \u03C3\u03C5\u03BD\u03CC\u03BB\u03BF\u03C5. @memory.MemoryGame=\u0395\u03CD\u03C1\u03B5\u03C3\u03B7 \u03B6\u03B5\u03C5\u03B3\u03CE\u03BD|\u039A\u03AC\u03B8\u03B5 \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03BF\u03BC\u03BC\u03AC\u03C4\u03B9\u03B1 \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03B4\u03CD\u03BF \u03C6\u03BF\u03C1\u03AD\u03C2, \u03B1\u03BB\u03BB\u03AC \u03B3\u03C5\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03BF \u03B1\u03C0\u03CC \u03C4\u03B7\u03BD \u03C0\u03AF\u03C3\u03C9 \u03CC\u03C8\u03B7. \u03A3\u03B5 \u03BA\u03AC\u03B8\u03B5 \u03B2\u03AE\u03BC\u03B1 \u03B4\u03CD\u03BF \u03BA\u03BF\u03BC\u03BC\u03AC\u03C4\u03B9\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B4\u03C5\u03BD\u03B1\u03C4\u03CC\u03BD \u03BD\u03B1 \u03B1\u03BD\u03B1\u03C0\u03BF\u03B4\u03BF\u03B3\u03C5\u03C1\u03B9\u03C3\u03C4\u03BF\u03CD\u03BD, \u03B1\u03BB\u03BB\u03AC \u03B1\u03BD \u03B4\u03B5\u03BD \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C4\u03B1 \u03AF\u03B4\u03B9\u03B1 \u03B5\u03C0\u03B9\u03C3\u03C4\u03C1\u03AD\u03C6\u03BF\u03C5\u03BD \u03C3\u03C4\u03B7\u03BD \u03B1\u03C1\u03C7\u03B9\u03BA\u03AE \u03C4\u03BF\u03C5\u03C2 \u03B8\u03AD\u03C3\u03B7. @panels.Explore=\u0394\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1 \u03B5\u03BE\u03B5\u03C1\u03B5\u03CD\u03BD\u03B7\u03C3\u03B7\u03C2| \u0395\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03B1\u03C1\u03C7\u03B9\u03BA\u03CC \u03C4\u03BC\u03AE\u03BC\u03B1 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2 \u03BA\u03B1\u03B9 \u03B1\u03BD \u03BA\u03AC\u03BD\u03BF\u03C5\u03BC\u03B5 \u03BA\u03BB\u03B9\u03BA \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC \u03B5\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03C4\u03BC\u03AE\u03BC\u03B1 \u03B4\u03BF\u03C3\u03BC\u03AD\u03BD\u03B7\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2 \u03B3\u03B9\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF. @panels.Identify=\u03A4\u03B1\u03CD\u03C4\u03B9\u03C3\u03B7 \u03BA\u03B5\u03BB\u03B9\u03CE\u03BD|\u03A5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03BC\u03CC\u03BD\u03BF \u03AD\u03BD\u03B1 \u03C3\u03CD\u03BD\u03BF\u03BB\u03BF \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD, \u03CC\u03C0\u03BF\u03C5 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B3\u03AF\u03BD\u03B5\u03B9 \u03BA\u03BB\u03B9\u03BA \u03C3\u03B5 \u03BA\u03AC\u03B8\u03B5 \u03AD\u03BD\u03B1 \u03C4\u03BC\u03AE\u03BC\u03B1 \u03C4\u03BF\u03C5 \u03C3\u03C5\u03BD\u03CC\u03BB\u03BF\u03C5 \u03CE\u03C3\u03C4\u03B5 \u03BD\u03B1 \u03B1\u03BD\u03B1\u03B4\u03B9\u03B1\u03C4\u03B1\u03C7\u03B8\u03BF\u03CD\u03BD \u03CC\u03BB\u03B1 \u03C4\u03B1 \u03C4\u03BC\u03AE\u03BC\u03B1\u03C4\u03B1 \u03C3\u03C4\u03B7 \u03C3\u03C9\u03C3\u03C4\u03AE \u03C4\u03BF\u03C5\u03C2 \u03B8\u03AD\u03C3\u03B7. @panels.InformationScreen=\u03A0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B5\u03C2 \u03BF\u03B8\u03CC\u03BD\u03B7\u03C2|\u0395\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03C3\u03C5\u03BD\u03BF\u03BB\u03BF \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD, \u03CC\u03C0\u03BF\u03C5 \u03C5\u03C0\u03AC\u03C1\u03C7\u03B5\u03B9 \u03B7 \u03B4\u03C5\u03BD\u03B1\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1 \u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7\u03C2 \u03C0\u03BF\u03BB\u03C5\u03BC\u03B5\u03C3\u03B9\u03BA\u03BF\u03CD \u03C0\u03B5\u03C1\u03B9\u03B5\u03C7\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B3\u03B9\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03C4\u03BC\u03AE\u03BC\u03B1 \u03C4\u03B7\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2. @puzzles.DoublePuzzle=\u0394\u03B9\u03C0\u03BB\u03CC \u03C0\u03B1\u03B6\u03BB|\u0395\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B4\u03CD\u03BF \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03B1. \u03A4\u03BF \u03AD\u03BD\u03B1 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03C4\u03B1 \u03C4\u03BC\u03AE\u03BC\u03B1\u03C4\u03B1 \u03C4\u03B7\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2 \u03B1\u03BD\u03B1\u03BA\u03B1\u03C4\u03B5\u03BC\u03AD\u03BD\u03B1, \u03B5\u03BD\u03CE \u03C4\u03BF \u03AC\u03BB\u03BB\u03BF \u03B5\u03AF\u03BD\u03B1\u03B9 \u03AC\u03B4\u03B5\u03B9\u03BF. \u03A3\u03BA\u03BF\u03C0\u03CC\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B7 \u03B1\u03BD\u03B1\u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C4\u03C9\u03BD \u03C4\u03BC\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD \u03C3\u03C4\u03BF \u03AC\u03B4\u03B5\u03B9\u03BF \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1 \u03BC\u03B5 \u03BC\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03AE \u03C4\u03BF\u03C5\u03C2 \u03C3\u03B5 \u03B1\u03C5\u03C4\u03CC. @puzzles.ExchangePuzzle=\u03A0\u03B1\u03B6\u03BB \u03B1\u03BD\u03C4\u03B1\u03BB\u03BB\u03B1\u03B3\u03AE\u03C2|\u03A4\u03B1 \u03C4\u03BC\u03AE\u03BC\u03B1\u03C4\u03B1 \u03C4\u03B7\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03BD\u03B1\u03BA\u03B1\u03C4\u03C9\u03BC\u03AD\u03BD\u03B1 \u03C3\u03C4\u03BF \u03AF\u03B4\u03B9\u03BF \u03C0\u03BB\u03B1\u03AF\u03C3\u03B9\u03BF. \u03A3\u03B5 \u03BA\u03AC\u03B8\u03B5 \u03B2\u03AE\u03BC\u03B1, \u03B4\u03CD\u03BF \u03C4\u03BC\u03AE\u03BC\u03B1\u03C4\u03B1 \u03B1\u03BD\u03C4\u03B1\u03BB\u03BB\u03AC\u03C3\u03C3\u03BF\u03C5\u03BD \u03C4\u03B9\u03C2 \u03B8\u03AD\u03C3\u03B5\u03B9\u03C2 \u03C4\u03BF\u03C5\u03C2 \u03BC\u03AD\u03C7\u03C1\u03B9 \u03BD\u03B1 \u03B2\u03C1\u03B5\u03B8\u03B5\u03AF \u03B7 \u03C3\u03C9\u03C3\u03C4\u03AE \u03C4\u03BF\u03C5\u03C2 \u03B8\u03AD\u03C3\u03B7. @puzzles.HolePuzzle=\u03A0\u03B1\u03B6\u03BB \u03BC\u03B5 \u03AD\u03BD\u03B1 \u03BA\u03B5\u03BD\u03CC|\u039C\u03AD\u03C3\u03B1 \u03C3\u03C4\u03BF \u03C0\u03BB\u03B1\u03AF\u03C3\u03B9\u03BF \u03C4\u03B7\u03C2 \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03AF\u03B1\u03C2 \u03BB\u03B5\u03AF\u03C0\u03B5\u03B9 \u03AD\u03BD\u03B1 \u03C4\u03BC\u03AE\u03BC\u03B1 \u03C4\u03B7\u03C2, \u03B5\u03BD\u03CE \u03C4\u03B1 \u03AC\u03BB\u03BB\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03BD\u03B1\u03BA\u03B1\u03C4\u03C9\u03BC\u03AD\u03BD\u03B1. \u03A3\u03B5 \u03BA\u03AC\u03B8\u03B5 \u03B2\u03AE\u03BC\u03B1 \u03AD\u03BD\u03B1 \u03B1\u03C0\u03CC \u03C4\u03B1 \u03BA\u03BF\u03BC\u03BC\u03AC\u03C4\u03B9\u03B1 \u03C0\u03BF\u03C5 \u03B2\u03C1\u03AF\u03C3\u03BA\u03BF\u03BD\u03C4\u03B1\u03B9 \u03B3\u03CD\u03C1\u03C9 \u03B1\u03C0\u03CC \u03C4\u03BF \u03BA\u03B5\u03BD\u03CC \u03BC\u03B5\u03C4\u03B1\u03BA\u03B9\u03BD\u03B5\u03AF\u03C4\u03B1\u03B9, \u03BC\u03AD\u03C7\u03C1\u03B9 \u03BD\u03B1 \u03B2\u03C1\u03B5\u03B8\u03B5\u03AF \u03B7 \u03C3\u03C9\u03C3\u03C4\u03AE \u03B8\u03AD\u03C3\u03B7 \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C4\u03BC\u03B7\u03BC\u03AC\u03C4\u03C9\u03BD. @text.WrittenAnswer=\u0393\u03C1\u03B1\u03C0\u03C4\u03AE \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7|\u0395\u03BC\u03C6\u03B1\u03BD\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03AD\u03BD\u03B1 \u03C3\u03CD\u03BD\u03BF\u03BB\u03BF \u03C0\u03BB\u03B7\u03C1\u03BF\u03C6\u03BF\u03C1\u03B9\u03CE\u03BD \u03BA\u03B1\u03B9 \u03B3\u03B9\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03C4\u03BC\u03AE\u03BC\u03B1 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03BF\u03B8\u03B5\u03AF \u03B7 \u03B1\u03BD\u03C4\u03AF\u03C3\u03C4\u03BF\u03B9\u03C7\u03B7 \u03B3\u03C1\u03B1\u03C0\u03C4\u03AE \u03B1\u03C0\u03AC\u03BD\u03C4\u03B7\u03C3\u03B7. @text.FillInBlanks=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: \u03C3\u03C5\u03BC\u03C0\u03BB\u03AE\u03C1\u03C9\u03C3\u03B7 \u03BA\u03B5\u03BD\u03CE\u03BD|\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C3\u03C5\u03BC\u03C0\u03BB\u03B7\u03C1\u03CE\u03C3\u03B5\u03B9 \u03BF\u03C1\u03B9\u03C3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2, \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1 \u03AE \u03C6\u03C1\u03AC\u03C3\u03B5\u03B9\u03C2 \u03C0\u03BF\u03C5 \u03BB\u03B5\u03AF\u03C0\u03BF\u03C5\u03BD \u03AE \u03B5\u03AF\u03BD\u03B1\u03B9 \u03C0\u03B1\u03C1\u03B1\u03BB\u03BB\u03B1\u03B3\u03BC\u03AD\u03BD\u03B5\u03C2 \u03C3\u03B5 \u03AD\u03BD\u03B1 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF. \u0397 \u03BB\u03CD\u03C3\u03B7 \u03B3\u03B9\u03B1 \u03BA\u03AC\u03B8\u03B5 \u03AD\u03BD\u03B1 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03BF \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03BF\u03C1\u03B9\u03C3\u03C4\u03B5\u03AF \u03BC\u03B5 \u03B4\u03B9\u03B1\u03C6\u03BF\u03C1\u03B5\u03C4\u03B9\u03BA\u03BF\u03CD\u03C2 \u03C4\u03C1\u03CC\u03C0\u03BF\u03C5\u03C2: \u03BC\u03B5 \u03B3\u03C1\u03AC\u03C8\u03B9\u03BC\u03BF \u03C3\u03B5 \u03AD\u03BD\u03B1 \u03BA\u03B5\u03BD\u03CC \u03B4\u03B9\u03AC\u03C3\u03C4\u03B7\u03BC\u03B1, \u03B4\u03B9\u03CC\u03C1\u03B8\u03C9\u03C3\u03B7 \u03BC\u03B9\u03B1\u03C2 \u03C6\u03C1\u03AC\u03C3\u03B7\u03C2 \u03C0\u03BF\u03C5 \u03C0\u03B5\u03C1\u03B9\u03AD\u03C7\u03B5\u03B9 \u03BB\u03AC\u03B8\u03B7, \u03B5\u03C0\u03B9\u03BB\u03BF\u03B3\u03AE \u03B1\u03C0\u03CC \u03BC\u03B9\u03B1 \u03BB\u03AF\u03C3\u03C4\u03B1 \u03BC\u03B5 \u03C0\u03B9\u03B8\u03B1\u03BD\u03AD\u03C2 \u03B1\u03C0\u03B1\u03BD\u03C4\u03AE\u03C3\u03B5\u03B9\u03C2. @text.Identify=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: \u03C4\u03B1\u03C5\u03C4\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD|\u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B4\u03B5\u03AF\u03BE\u03B5\u03B9 \u03BC\u03B5 \u03BA\u03BB\u03B9\u03BA \u03C4\u03BF\u03C5 \u03C0\u03BF\u03BD\u03C4\u03B9\u03BA\u03B9o\u03CD \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2, \u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1, \u03B1\u03C1\u03B9\u03B8\u03BC\u03BF\u03CD\u03C2 \u03AE \u03C3\u03B7\u03BC\u03B5\u03AF\u03B1 \u03C3\u03C4\u03AF\u03BE\u03B7\u03C2. @text.Order=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: \u03B4\u03B9\u03AC\u03C4\u03B1\u03BE\u03B7 \u03C3\u03C4\u03BF\u03B9\u03C7\u03B5\u03AF\u03C9\u03BD|\u039A\u03B1\u03C4\u03AC \u03C4\u03BF \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03BC\u03CC \u03B1\u03C5\u03C4\u03AE\u03C2 \u03C4\u03B7\u03C2 \u03B4\u03C1\u03B1\u03C3\u03C4\u03B7\u03C1\u03B9\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2 \u03BC\u03B5\u03C1\u03B9\u03BA\u03AD\u03C2 \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2 \u03AE \u03C0\u03B1\u03C1\u03AC\u03B3\u03C1\u03B1\u03C6\u03BF\u03B9 \u03C4\u03BF\u03C5 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 \u03B5\u03C0\u03B9\u03BB\u03AD\u03C7\u03B8\u03B7\u03BA\u03B1\u03BD \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03B1\u03BD\u03B1\u03BA\u03B1\u03C4\u03B5\u03BC\u03AD\u03BD\u03B5\u03C2. \u039F \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B9\u03C2 \u03B2\u03AC\u03BB\u03B5\u03B9 \u03C3\u03C4\u03B7 \u03C3\u03C9\u03C3\u03C4\u03AE \u03C3\u03B5\u03B9\u03C1\u03AC. @text.Complete=\u039A\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF: \u03C3\u03C5\u03BC\u03C0\u03BB\u03AE\u03C1\u03C9\u03C3\u03B7 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5| \u03A4\u03BC\u03AE\u03BC\u03B1\u03C4\u03B1 \u03B5\u03BD\u03CC\u03C2 \u03BA\u03B5\u03B9\u03BC\u03AD\u03BD\u03BF\u03C5 (\u03B3\u03C1\u03AC\u03BC\u03BC\u03B1\u03C4\u03B1, \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2, \u03C3\u03B7\u03BC\u03B5\u03AF\u03B1 \u03C3\u03C4\u03AF\u03BE\u03B7\u03C2, \u03C6\u03C1\u03AC\u03C3\u03B5\u03B9\u03C2) \u03AD\u03C7\u03BF\u03C5\u03BD \u03B5\u03BE\u03B1\u03B9\u03C1\u03B5\u03B8\u03B5\u03AF \u03BA\u03B1\u03B9 \u03BF \u03C7\u03C1\u03AE\u03C3\u03C4\u03B7\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C4\u03B1 \u03C3\u03C5\u03BC\u03C0\u03BB\u03B7\u03C1\u03CE\u03C3\u03B5\u03B9. @textGrid.CrossWord=\u03A3\u03C4\u03B1\u03C5\u03C1\u03CC\u03BB\u03B5\u03BE\u03B1|\u03A4\u03BF \u03C3\u03C4\u03B1\u03C5\u03C1\u03CC\u03BB\u03B5\u03BE\u03BF \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03C3\u03C5\u03BC\u03C0\u03BB\u03B7\u03C1\u03C9\u03B8\u03B5\u03AF \u03C3\u03CD\u03BC\u03C6\u03C9\u03BD\u03B1 \u03BC\u03B5 \u03C4\u03BF\u03C5\u03C2 \u03BF\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD\u03C2 \u03C4\u03C9\u03BD \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD. \u039F\u03B9 \u03BF\u03C1\u03B9\u03C3\u03BC\u03BF\u03AF \u03BC\u03C0\u03BF\u03C1\u03B5\u03AF \u03BD\u03B1 \u03B5\u03AF\u03BD\u03B1\u03B9 \u03BA\u03B5\u03AF\u03BC\u03B5\u03BD\u03BF, \u03B3\u03C1\u03B1\u03C6\u03B9\u03BA\u03CC \u03AE \u03AE\u03C7\u03BF\u03C2. \u03A4\u03BF \u03C0\u03C1\u03CC\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1 \u03B4\u03B5\u03AF\u03C7\u03BD\u03B5\u03B9 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B1 \u03C4\u03BF\u03C5\u03C2 \u03BF\u03C1\u03B9\u03C3\u03BC\u03BF\u03CD\u03C2 \u03C4\u03C9\u03BD \u03B4\u03C5\u03BF \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD \u03C0\u03BF\u03C5 \u03C4\u03AD\u03BC\u03BD\u03BF\u03BD\u03C4\u03B1\u03B9 \u03C3\u03C4\u03BF \u03C3\u03B7\u03BC\u03B5\u03AF\u03BF \u03C0\u03BF\u03C5 \u03B2\u03C1\u03AF\u03C3\u03BA\u03B5\u03C4\u03B1\u03B9 \u03BF \u03BA\u03AD\u03C1\u03C3\u03BF\u03C1\u03B1\u03C2. @textGrid.WordSearch=\u0391\u03BD\u03B1\u03B6\u03AE\u03C4\u03B7\u03C3\u03B7 \u03BB\u03AD\u03BE\u03B5\u03C9\u03BD|\u039F\u03B9 \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2 \u03C0\u03C1\u03AD\u03C0\u03B5\u03B9 \u03BD\u03B1 \u03B2\u03C1\u03B5\u03B8\u03BF\u03CD\u03BD \u03C3\u03C4\u03BF \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1 \u03C4\u03C9\u03BD \u03B3\u03C1\u03B1\u03BC\u03BC\u03AC\u03C4\u03C9\u03BD. \u03A4\u03B1 \u03BF\u03C5\u03B4\u03AD\u03C4\u03B5\u03C1\u03B1 \u03BA\u03B5\u03BB\u03B9\u03AC \u03C4\u03BF\u03C5 \u03C0\u03BB\u03AD\u03B3\u03BC\u03B1\u03C4\u03BF\u03C2 (\u03B1\u03C5\u03C4\u03AC \u03C0\u03BF\u03C5 \u03B4\u03B5\u03BD \u03AD\u03C7\u03BF\u03C5\u03BD \u03BB\u03AD\u03BE\u03B5\u03B9\u03C2) \u03C3\u03C5\u03BC\u03C0\u03BB\u03B7\u03C1\u03CE\u03BD\u03BF\u03BD\u03C4\u03B1\u03B9 \u03BC\u03B5 \u03C4\u03C5\u03C7\u03B1\u03AF\u03BF\u03C5\u03C2 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_pt_BR.properties0000644000175000017500000001056211377161312026675 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Associa\u00E7\u00E3o complexa|Nesta atividade h\u00E1 dois conjuntos de informa\u00E7\u00E3o, mas estes conjuntos podem ter um n\u00FAmero diferente de elementos e podem existir diferentes tipos de rela\u00E7\u00E3o entre eles, por exemplo: um-para-um, v\u00E1rios para um, partes sem uma rela\u00E7\u00E3o, etc. @associations.SimpleAssociation=Associa\u00E7\u00E3o simples|H\u00E1 dois conjuntos de informa\u00E7\u00E3o que possuem o mesmo n\u00FAmero de partes. Cada parte do conjunto original corresponde a uma, e somente uma, parte do segundo conjunto. @memory.MemoryGame=Jogo da mem\u00F3ria|Cada um dos peda\u00E7os (de uma imagem selecionada) aparece duas vezes, mas com a face voltada para baixo. A cada tentativa dois peda\u00E7os s\u00E3o revelados e t\u00EAm sua face novamente voltada para baixo se n\u00E3o forem iguais. O objetivo \u00E9 encontrar todos os pares. @panels.Explore=Atividade de explora\u00E7\u00E3o|Um peda\u00E7o inicial de informa\u00E7\u00E3o \u00E9 mostrado e, ao clique do mouse, uma pequena informa\u00E7\u00E3o \u00E9 fornecida para cada elemento. @panels.Identify=Atividade de identifica\u00E7\u00E3o|H\u00E1 somente um conjunto de informa\u00E7\u00F5es e voc\u00EA deve clicar nas partes que corresponderem a uma certa condi\u00E7\u00E3o. @panels.InformationScreen=Tela de informa\u00E7\u00E3o|Um conjunto de informa\u00E7\u00F5es \u00E9 exibido e existe a op\u00E7\u00E3o de ativar um conte\u00FAdo de multim\u00EDdia para cada parte da informa\u00E7\u00E3o. @puzzles.DoublePuzzle=Quebra-cabe\u00E7as duplo|Duas grades s\u00E3o exibidas. Uma cont\u00E9m a informa\u00E7\u00E3o desordenada e outra est\u00E1 vazia. O objeto tem de ser reorganizado na grade vazia arrastando-se as partes da informa\u00E7\u00E3o, uma a uma. @puzzles.ExchangePuzzle=Quebra-cabe\u00E7as de troca|A informa\u00E7\u00E3o \u00E9 embaralhada dentro do mesmo painel. A cada tentativa dois peda\u00E7os trocam de posi\u00E7\u00E3o at\u00E9 que o objeto estiver reordenado. @puzzles.HolePuzzle=Quebra-cabe\u00E7as de lacuna|Num mesmo painel um peda\u00E7o est\u00E1 faltando e os outros est\u00E3o embaralhados. A cada tentativa um dos peda\u00E7os pr\u00F3ximo \u00E0 lacuna \u00E9 movido at\u00E9 que todos os peda\u00E7os retornem \u00E0 ordem original. @text.WrittenAnswer=Resposta escrita|Um conjunto de informa\u00E7\u00F5es \u00E9 exibido e o texto correspondente para cada uma das partes deve ser escrito. @text.FillInBlanks=Texto: Preencha as lacunas|O usu\u00E1rio deve completar certas palavras, letras e frases que foram escondidas ou camufladas em um texto. A solu\u00E7\u00E3o para cada um dos elementos deve ser estabelecida de diferentes maneiras: escrita em um espa\u00E7o em branco; corrigindo a frase que cont\u00E9m erros; ou selecionando a partir de uma lista de v\u00E1rias poss\u00EDveis respostas. @text.Identify=Texto: Identifique os elementos|O usu\u00E1rio deve destacar algumas palavras, letras, n\u00FAmeros, s\u00EDmbolos ou pontua\u00E7\u00E3o com o clique do mouse. @text.Order=Texto: Ordenar elementos|Ao preparar esta atividade algumas das palavras ou par\u00E1grafos de um texto s\u00E3o selecionadas para serem embaralhadas. O usu\u00E1rio deve orden\u00E1-las corretamente. @text.Complete=Texto: Completar o texto|V\u00E1rias partes de um texto (letras, palavras, pontua\u00E7\u00E3o, ou frases) s\u00E3o retiradas e o usu\u00E1rio deve complet\u00E1-las. @textGrid.CrossWord=Palavras Cruzadas|A tabela de palavras deve ser completada de acordo com suas defini\u00E7\u00F5es. As defini\u00E7\u00F5es podem ser exibidas na forma de texto, imagens ou som. O programa automaticamente exibe as defini\u00E7\u00F5es de duas palavras que cruzam a posi\u00E7\u00E3o do cursor. @textGrid.WordSearch=Ca\u00E7a-palavras|As palavras escondidas devem ser encontradas em uma grade de letras. As c\u00E9lulas neutras na grade (aquelas sem palavras) s\u00E3o completadas com caracteres escolhidos aleatoriamente. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_nl.properties0000644000175000017500000000673411377161312026306 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Complexe associatie|In deze activiteit zijn er ook twee groepen informatie, maar deze kunnen verschillen in aantal en er kunnen verschillende type relaties zijn tussen de twee groepen zoals: een op een, verschillende op een, geen relatie, enzovoorts. @associations.SimpleAssociation=Simpele associatie|Er zijn twee groepen informatie, met evenveel elementen in elke groep. Elk element van de ene groep komt precies overeen met een element in de andere groep. @memory.MemoryGame=Duo's zoeken|Elk element komt twee keer voor, je ziet alleen de achterkant. Bij elke beurt worden er twee elementen zichtbaar gemaakt en terug onzichtbaar als ze niet gelijk zijn. Je moet alle duo's vinden. @panels.Explore=Exploreren activiteit|Er wordt een lijst met informatie getoond, en als je op een element klikt, wordt er bijkomende uitleg gegeven. @panels.Identify=Identificeer cellen|Er is een lijst met informatie en je moet op deze delen klikken die aan een bepaalde voorwaarde voldoen. @panels.InformationScreen=Informatie scherm|Er is een lijst met informatie en er is de optie om multimedia te vertonen voor elk element. @puzzles.DoublePuzzle=Dubbele puzzel|Er worden twee tabellen getoond. Een bevat de informatie die doorheen is geschud en de ander is leeg. Het doel is de lege tabel te vullen in de juiste volgorde door de stukken een voor een te verslepen. @puzzles.ExchangePuzzle=Verwissel puzzel|De informatie is in dezelfde tabel door elkaar gehaald. Bij elke beurt moet je twee delen omwisselen totdat de puzzel is opgelost. @puzzles.HolePuzzle=Gat puzzel|In dezelfde tabel ontbreekt een stukje en de andere zijn door elkaar geschud. Bij elke beurt wordt een stukje in de opening geschoven tot de puzzel gemaakt is.. @text.WrittenAnswer=Geschreven antwoord|Er wordt informatie getoond en de overeenstemmende tekst moet geschreven worden. @text.FillInBlanks=Tekst: Invuloefening|De gebruiker moet sommige woorden, letters en zinnen die weggelaten zijn vervolledigen. De oplossing kan op verschillende manieren gegeven worden: invullen op een lege plaats, verbeteren van fouten of kiezen uit een aantal oplossingen. @text.Identify=Tekst: Identifier elementen|De gebruiker moet sommige woorden, letters, cijfers, symbolen of leestekens aanklikken met de muis. @text.Order=Tekst: Elementen ordenen|Sommige woorden of alinea's zijn door elkaar gezet. De gebruiker moet ze weer in de juiste volgorde zetten. @text.Complete=Tekst: Vervolledig tekst|Verschillende delen van een tekst (letters, woorden, leestekens of zinnen) zijn weggelaten en de gebruiker moet de tekst vervolledigen. @textGrid.CrossWord=Kruiswoordraadsel|Het kruiswoordraadsel moet ingevuld worden door gebruik te maken van de definities. De definities mogen met tekst, afbeeldingen of geluiden. Het programma geeft de twee definities van de woorden waar er een letter wordt ingevuld. @textGrid.WordSearch=Woord zoeker|De verborgen woorden moeten gezocht worden in een rooster met letters. De cellen die geen letters van woorden bevatten, worden willekeurig opgevuld. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_es.properties0000644000175000017500000001027711377161312026301 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Asociaci\u00F3n compleja|En este tipo de activitat se presentan tambi\u00E9n dos conjuntos de informaci\u00F3n, pero \u00E9stos pueden tener un n\u00FAmero diferente de elementos y entre ellos se pueden dar diversos tipos de relaci\u00F3n: Uno a uno, diversos a uno, elementos sin asignar... @associations.SimpleAssociation=Asociaci\u00F3n simple|Se presentan dos conjuntos de informaci\u00F3n que tienen el mismo n\u00FAmero de elementos. A cada elemento del conjunto imagen corresponde s\u00F3lo un elemento del conjunto origen. @memory.MemoryGame=Juego de memoria|Cada una de las piezas que forman el objeto aparece escondido dos veces dentro de la ventana de juego. En cada jugada se destapan un par de piezas, que se vuelven a esconder si no son id\u00E9nticas. El objetivo es localizar todas las parejas. @panels.Explore=Actividad de exploraci\u00F3n|Se muestra una informaci\u00F3n inicial y al hacer clic en ella aparece, para cada elemento, una determinada pieza de informaci\u00F3n. @panels.Identify=Actividad de identificaci\u00F3n|Se presenta s\u00F3lo un conjunto de informaci\u00F3n y hay que hacer clic en aquellos elementos que cumplan una determinada condici\u00F3n. @panels.InformationScreen=Pantalla de informaci\u00F3n|Se muestra un conjunto de informaci\u00F3n y, opcionalmente, se ofrece la posibilidad de activar el contenido multimedia asociado a cada elemento. @puzzles.DoublePuzzle=Puzzle doble|Se muestran dos paneles. En uno aparece la informaci\u00F3n desordenada y el otro est\u00E1 vac\u00EDo. Hay que reconstruir el objeto en el panel vac\u00EDo arrastrando las piezas una por una. @puzzles.ExchangePuzzle=Puzzle de intercambio|En un \u00FAnico panel se mezcla la informaci\u00F3n. En cada jugada se conmutan las posiciones de dos piezas hasta ordenar el objeto. @puzzles.HolePuzzle=Puzzle de agujero|En un \u00FAnico panel se hace desaparecer una pieza y se mezclan las restantes. En cada jugada se puede desplazar una de las piezas que limitan con el agujero, hasta tenerlas todas en el orden original. @text.WrittenAnswer=Respuesta escrita|Se muestra un conjunto de informaci\u00F3n y, para cada uno de sus elementos, hay que escribir el texto correspondiente. @text.FillInBlanks=Texto: rellenar agujeros|En un texto se seleccionan determinadas palabras, letras y frases que se esconden o se camuflan. La resoluci\u00F3n de cada uno de los elementos escondidos se puede plantear de maneras diferentes: Escribiendo en un espacio vac\u00EDo, corrigiendo una expresi\u00F3n que contiene errores o seleccionando en una lista entre distintas respuestas posibles. @text.Identify=Texto: identificar elementos|El usuario debe se\u00F1alar con un clic del rat\u00F3n determinadas palabras, letras, cifras, s\u00EDmbolos o signos de puntuaci\u00F3n. @text.Order=Texto: ordenar elementos|En el momento de dise\u00F1ar la actividad se seleccionan en el texto algunas palabras o p\u00E1rrafos que se mezclar\u00E1n entre s\u00ED. El usuario ha de intentar volver a ponerlo en orden. @text.Complete=Texto: completar texto|En un texto se hacen desaparecer determinados elementos (letras, palabras, signos de puntuaci\u00F3n, frases) y el usuario debe completarlo. @textGrid.CrossWord=Crucigrama|Hay que ir rellenando el panel de palabras a partir de sus definiciones. Las definiciones pueden ser textuales, gr\u00E1ficas o sonoras. El programa muestra autom\u00E1ticamente las definiciones de las dos palabras que se cruzan en la posici\u00F3n donde se encuentre el cursor en cada momento. @textGrid.WordSearch=Sopa de letras|Hay que encontrar las palabras escondidas en una parrilla de letras. Las casillas neutras de la parrilla (aqu\u00E9llas que no pertenecen a ninguna palabra) se rellenan con caracteres seleccionados al azar en cada jugada. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_ast.properties0000644000175000017500000001011511377161312026450 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Asociaci\u00F3n complexa|Nesta triba de xera pres\u00E9ntense tami\u00E9n dos conxuntos d'informaci\u00F3n, pero \u00E9stos puen tener un n\u00FAmberu estrem\u00E1u d'elementos y ente ellos pueden dase delles tribes de rellaci\u00F3n: \u00DAn a \u00FAn, dellos a \u00FAn, elementos ensin asociar... @associations.SimpleAssociation=Asociaci\u00F3n simple|Pres\u00E9ntense dos conxuntos d'informaci\u00F3n que tienen el mesmu n\u00FAmberu d'elementos. A cada elementu del conxuntu imaxe correspuende nam\u00E1s qu'un elementu del conxuntu orixe. @memory.MemoryGame=Guetar pareyes|Cada una de las pieces que formen l' oxetu apaez anubrida dos vegaes dientro de la ventana de xuegu. En cada xugada dest\u00E1pense un par de pieces, que se'escuende otra vuelta si nun son id\u00E9ntiques. L'oxetivu ya atopar toles pareyes. @panels.Explore=Xera d'esploraci\u00F3n|Amu\u00E9sase una informaci\u00F3n d'aniciu y al facer clic nella apaez, pa cada elementu, una determinada pieza d'informaci\u00F3n. @panels.Identify=Xera d'identificaci\u00F3n|Pres\u00E9ntase nam\u00E1s qu'un conxuntu d'informaci\u00F3n y hai que calcar naquellos elementos que cumplan un condici\u00F3n determinada. @panels.InformationScreen=Pantalla d'informaci\u00F3n|Amu\u00E9sase un conxuntu d'informaci\u00F3ny, opcionalmente, \u00FAfrese la posibilid\u00E1 d'activar el conten\u00EDu multimedia arrey\u00E1u a cada elementu. @puzzles.DoublePuzzle=Puzzle doble|Amu\u00E9sense dos paneles. N\u00FAn apaez la informaci\u00F3n desordenada y l'otru ta ermu. Hai que reconstruyir l'oxetu nel panel ermu arrastrando les pieces d'una nuna. @puzzles.ExchangePuzzle=Puzzle d'intercambiu|Nun panel \u00FAnicu m\u00E9cese tola informaci\u00F3n. En cada xugada se intercambien les posiciones de dos pieces fasta ordenar l'oxetu. @puzzles.HolePuzzle=Puzzle de furacu|Nun panel \u00FAnicu faise desapaecer una pieza y m\u00E9cense les dem\u00E1s. En cada xugada pue movese una de les pieces que llenden col furacu, fasta teneles toes nel orde orixinal. @text.WrittenAnswer=Rempuesta escrita|Amu\u00E9sase un conxuntu d'informaci\u00F3n y, pa ca\u00FAn de los elementos, hai qu'escribir el testu que correspuenda. @text.FillInBlanks=Testu: enllenar furacos|Nun testu escu\u00E9yense delles pallabres, lletres y/o frases que s'escuende o camuflen. La resoluci\u00F3n de ca\u00FAn de los elementos escond\u00EDos pue plantegase de menes estremaes: escribiendo nun espaciu ermu, corrixiendo una espresi\u00F3n que conti\u00E9n errores o seleicionando nuna llista ente posibles rempuestes. @text.Identify=Testu: identificar elementos|L'usuariu tien de se\u00F1alar calcando col mur determinaes pallabres, lletres, cifres, s\u00EDmbolos o signod de puntuaci\u00F3n. @text.Order=Testu: ordenar elementos|Nel intre de dise\u00F1ar la xera seleici\u00F3nense nel testu delles pallabres o p\u00E1rrafos que se van mecer ente ellos. L'usuariu tien de volver a ponelo n'orde. @text.Complete=Testu: completar testu|Nun testu faense desapaecer dellos elementos (lleters, pallabres, signos de puntuaci\u00F3n, frases) y l'usuariu tien de completalu. @textGrid.CrossWord=Crucigrama|Hai que dir enllenando el panel de pallabres a partir de les definiciones. Les definiciones puen ser testuales, gr\u00E1fiques o sonores. El programa amuesa autom\u00E1ticamente les definiciones de les dos pallabres que se crucen na posici\u00F3n onde s'atope'l cursor en cada momentu. @textGrid.WordSearch=Sopa de lletres|Hai qu'atopar les pallabres escond\u00EDes nuna caxella de lletres. Les celdes neutres de la caxella (les que nun pertenecen a pallabra denguna) enll\u00E9nense con carauteres seleicionaos al azar en cada xugada. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_cs.properties0000644000175000017500000000761711377161312026303 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Komplexn\u00ED asociace|V t\u00E9to aktivit\u011B jsou dv\u011B sady informac\u00ED, kter\u00E9 mohou m\u00EDt rozd\u00EDln\u00FD po\u010Det \u010D\u00E1st\u00ED a rozd\u00EDln\u00E9 vztahy mezi nimi nap\u0159.: jeden-k-jedn\u00E9, n\u011Bkolik k jedn\u00E9, \u010D\u00E1sti bez vztahu, apod. @associations.SimpleAssociation=Jednoduch\u00E1 asociace|V t\u00E9to aktivit\u011B jsou dv\u011B sady informac\u00ED, kter\u00E9 maj\u00ED stejn\u00FD po\u010Det \u010D\u00E1st\u00ED. Ka\u017Ed\u00E1 \u010D\u00E1st p\u016Fvodn\u00ED sady odpov\u00EDd\u00E1 jedn\u00E9 a pouze jedn\u00E9 \u010D\u00E1sti obr\u00E1zkov\u00E9 sady. @memory.MemoryGame=Hled\u00E1n\u00ED p\u00E1r\u016F|Pexeso. Ka\u017Ed\u00E1 z \u010D\u00E1st\u00ED se objev\u00ED dvakr\u00E1t, ale l\u00EDcem dol\u016F. V ka\u017Ed\u00E9m kole se obr\u00E1t\u00ED dv\u011B karty a oto\u010D\u00ED se l\u00EDcem dolu, kdy\u017E nejsou stejn\u00E9. C\u00EDlem je naj\u00EDt v\u0161echny p\u00E1ry. @panels.Explore=Explore activity|An initial piece of information is shown and, upon clicking on it, a given piece of information is shown for each element. @panels.Identify=Identify cells|There is just one set of information and you have to click on those parts that meet a certain condition. @panels.InformationScreen=Informa\u010Dn\u00ED obrazovka|Jedna sada informac\u00ED je zobrazena s mo\u017Enost\u00ED aktivace multimedi\u00E1ln\u00EDho obsahu ka\u017Ed\u00E9 \u010D\u00E1sti informace. @puzzles.DoublePuzzle=Double puzzle|Two grids are shown. One contains the disordered information and the other is empty. The object has to be rearranged in the empty grid by dragging the pieces one by one. @puzzles.ExchangePuzzle=Exchange puzzle|The information is swapped within the same panel. In each go two pieces swap position until the object is reordered. @puzzles.HolePuzzle=Hole puzzle|In the same panel one piece is missing and the others are shuffled. In each go one of the pieces next to the empty space is moved until they are back in the original order. @text.WrittenAnswer=Written answer|A set of information is shown and the corresponding text for each of its parts must be written. @text.FillInBlanks=Text: Fill-in blanks|The user has to complete certain words, letters and phrases that have been hidden or camouflaged in a text. The solution of each of the elements may be set up in different ways: writing in a blank space; correcting a phrase that contains errors; or selecting from a list of various possible answers. @text.Identify=Text: Identify elements|The user has to point out some words, letters, numbers, symbols or punctuation marks with a click of the mouse. @text.Order=Text: Order elements|When designing this activity some of the words or paragraphs of a text are selected to be shuffled around. The user has to put them back in order. @text.Complete=Text: Complete text|Various parts of a text (letters, words, punctuation signs, or phrases) are taken out and the user has to complete it. @textGrid.CrossWord=Crosswords|The word table has to be completed according to its definitions. The definitions may be text, graphics or sound. The programme automatically shows the definitions of the two words which cross in the cursor position. @textGrid.WordSearch=Hled\u00E1n\u00ED slov| Skryt\u00E1 slova lze nal\u00E9zt v m\u0159\u00ED\u017Ece dopis\u016F. Neutr\u00E1ln\u00ED bu\u0148ky v m\u0159\u00ED\u017Ece (ty bez slov), jsou dopln\u011Bny n\u00E1hodn\u011B vybran\u00FDmi znaky. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_de.properties0000644000175000017500000000743311377161312026262 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Mehrfache Zuordnung|Zwei Informationstafeln mit einer unterschiedlichen Anzahl von Elementen zwischen denen verschiedene Arten von Beziehungen bestehen. z.B: eins-zu-eins; mehrere zu eins; Elemente ohne Bezug usw. @associations.SimpleAssociation=Einfache Zuordnung|Zwei Informationstafeln die aus gleich vielen Elementen bestehen. Jedes Element auf Tafel 1 entspricht einem Bild auf Tafel 2 @memory.MemoryGame=Paare finden|Jedes Element kommt 2 Mal vor. Bei jedem Spielgang m\u00FCssen zwei verdeckte Spielkarten umgedreht und wieder zur\u00FCckgelegt werden, wenn sie nicht zusammenpassen. Ziel ist, alle zusammengeh\u00F6rigen Paare zu finden. @panels.Explore=Forschendes Lernen|Ein kleiner Teil der Information ist zu sehen, beim Anklicken jedes Elements wird ein weiteres Element angezeigt @panels.Identify=Such\u00FCbung|Eine einzige Informationstafel. Die \u00DCbenden m\u00FCssen die Teile davon anklicken, die eine bestimmte Bedingung erf\u00FCllen. @panels.InformationScreen=Darstellung von Information|Eine Informationstafel wird angezeigt. Zu jedem einzelnen Element k\u00F6nnen Multimediaelemente aktiviert werden. @puzzles.DoublePuzzle=Puzzle: Ordnen|Zwei Spielfelder werden angezeigt. Eines enth\u00E4lt vermischte Puzzlesteine, die andere ist leer. Das Bild soll auf dem leeren Spielfeld durch Ziehen der Steine mit der Maus richtig rekonstruiert werden. @puzzles.ExchangePuzzle=Puzzle: Austauschen| Die Puzzlesteine innerhalb selben Spielfelds sind ertauscht. Man muss so lange jeweils zwei Steine gegenander austauschen, bis das Bild richtig erscheint. @puzzles.HolePuzzle=Puzzle: Verschieben|Auf dem Spielfeld fehlt ein Stein, die anderen Steine sind vermischt. In jedem Spielgang muss einer der Steine neben dem Leerfeld verschoben werden, bis sich alle Steine wieder an der richtigen Stelle befinden. @text.WrittenAnswer=Begriff eingeben|Ein Informationsblock wird angezeigt. Fehlende Textteile m\u00FCssen schriftlich erg\u00E4nzt werden. @text.FillInBlanks=Text: L\u00FCckentext|Der Spieler/die Spielerin muss in einem Text fehlende oder verborgene W\u00F6rter, Buchstaben und S\u00E4tze erg\u00E4nzen. Es gibt verschiedene L\u00F6sungsm\u00F6glichkeiten: Fehlende Elemente eintragen, Fehler korrigieren oder Auswahl aus mehreren m\u00F6glichen Antworten auf einer Liste. @text.Identify=Text: W\u00F6rter finden| Der Spieler/die Spielerin muss W\u00F6rter, Buchstaben, Zahlen, Symbole oder Satztzeichen mit der Maus anklicken. @text.Order=Text: W\u00F6rter ordnen| Beim Erstellen dieser \u00DCbung werden W\u00F6rter oder Abs\u00E4tze vertauscht. Die Spieler/in muss sie wieder in die richtige Reihenfolge bringen. @text.Complete=Text: Text erg\u00E4nzen|Verschiedene Elemente eines Textes (Buchstaben, W\u00F6rter, Satzzeichen oder S\u00E4tze) fehlen. Der/die \u00DCbende muss sie erg\u00E4nzen. @textGrid.CrossWord=Kreuzwortr\u00E4tsel|Das R\u00E4tsel muss anhand von Definitionen gel\u00F6st werden. Diese k\u00F6nnen aus Text, Grafiken oder Sounddateien bestehen. Die Definition der beiden Begriffe, die sich an der Stelle, wo sich der Cursor befindet kreuzen, wird vom Programm automatisch angezeigt. @textGrid.WordSearch=Wortsuch\u00FCbung|In einer Tabelle m\u00FCssen versteckte Begriffe gesucht werden. Leerzellen (ohne Worter) in der Tabelle werden mit durch Zufallsprinzip ausgew\u00E4hlten Buchstaben gef\u00FCllt. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities.properties0000644000175000017500000000702711377161312025611 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Complex association|In this activity there are also two sets of information, but these may have a different number of parts and there may be different types of relation between them e.g.: one-to-one, various to one, parts without a relation, etc. @associations.SimpleAssociation=Simple association|There are two sets of information that have the same number of parts. Each part from the original set corresponds to one, and only one, part of the image set. @memory.MemoryGame=Finding pairs|Each of the pieces appear twice, but face down. In each go two pieces are turned over and are turned back over if they are not the same. The objective is to find all the pairs. @panels.Explore=Explore activity|An initial piece of information is shown and, upon clicking on it, a given piece of information is shown for each element. @panels.Identify=Identify cells|There is just one set of information and you have to click on those parts that meet a certain condition. @panels.InformationScreen=Information screen|One set of information is shown and there is the option of activating the multimedia content for each piece of information. @puzzles.DoublePuzzle=Double puzzle|Two grids are shown. One contains the disordered information and the other is empty. The object has to be rearranged in the empty grid by dragging the pieces one by one. @puzzles.ExchangePuzzle=Exchange puzzle|The information is swapped within the same panel. In each go two pieces swap position until the object is reordered. @puzzles.HolePuzzle=Hole puzzle|In the same panel one piece is missing and the others are shuffled. In each go one of the pieces next to the empty space is moved until they are back in the original order. @text.WrittenAnswer=Written answer|A set of information is shown and the corresponding text for each of its parts must be written. @text.FillInBlanks=Text: Fill-in blanks|The user has to complete certain words, letters and phrases that have been hidden or camouflaged in a text. The solution of each of the elements may be set up in different ways: writing in a blank space; correcting a phrase that contains errors; or selecting from a list of various possible answers. @text.Identify=Text: Identify elements|The user has to point out some words, letters, numbers, symbols or punctuation marks with a click of the mouse. @text.Order=Text: Order elements|When designing this activity some of the words or paragraphs of a text are selected to be shuffled around. The user has to put them back in order. @text.Complete=Text: Complete text|Various parts of a text (letters, words, punctuation signs, or phrases) are taken out and the user has to complete it. @textGrid.CrossWord=Crosswords|The word table has to be completed according to its definitions. The definitions may be text, graphics or sound. The programme automatically shows the definitions of the two words which cross in the cursor position. @textGrid.WordSearch=Word search|The hidden words have to be found in a grid of letters. The neutral cells in the grid (those with no word) are completed with characters chosen at random. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_it.properties0000644000175000017500000000664611377161312026313 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Associazione complessa|In questa attivit\u00E0 ci sono due serie di informazioni, ma queste possono avere un diverso numero di parti e possono esserci differenti tipi di relazioni tra esse; es.: uno ad uno, vari con uno, parti con una relazione, etc. @associations.SimpleAssociation=Associazione semplice|Ci sono due serie di informazioni che hanno lo stesso numero di parti. Ciascuna parte della serie originale corrisponde a una, e solo una, parte dell'altra serie. @memory.MemoryGame=Memory|Ciascuno dei pezzi appare due volte, ma in fase di preparazione basta specificare una sola volta il contenuto di ogni cella. L'obiettivo del gioco \u00E8 trovare le coppie. @panels.Explore=Esplorazione|Un pezzo iniziale dell'informazione \u00E8 mostrato e, cliccando su essa, un atro pezzo di informazione \u00E8 mostrato per ciascun elemento. @panels.Identify=Identificare celle|C'\u00E8 una sola serie di informazioni: bisogna cliccare su quelle parti che rispondono a specifiche condizioni. @panels.InformationScreen=Schermata informativa|Una serie di informazioni viene mostrata e si possono attivare contenuti multimediali per ciascun pezzo di informazione. @puzzles.DoublePuzzle=Puzzle doppio|Sono mostrate due griglie. Una contiene le informazioni in disordine e l'altra \u00E8 vuota. L'obiettivo del gioco \u00E8 ricostruire le informazioni nella griglia vuota trascinando i pezzi uno ad uno. @puzzles.ExchangePuzzle=Puzzle a scambio|Le informazioni sono inserite in un unico pannello. I pezzi vengono scambiati di posizione, fino al riordino completo delle informazioni. @puzzles.HolePuzzle=Puzzle a buchi|Trascinamento di pezzi tagliati dal pannello originale. @text.WrittenAnswer=Scrivi la risposta|Una serie di informazioni viene mostrata e deve essere scritto un testo corrispondente per ciascuna parte di essa. @text.FillInBlanks=Testo: Riempi gli spazi|L'utente deve completare determinate parole, lettere e frasi che sono state nascoste o camuffate in un testo. La soluzione di ciascun elemento pu\u00F2 avvenire in diversi modi: scrittura nello spazio bianco; correzione di una frase con errori; selezione da una lista di possibili risposte. @text.Identify=Testo: Identifica gli elementi|L'utente deve cliccare su parole, lettere, numeri, simboli o segni di punteggiatura. @text.Order=Testo: Ordina gli elementi|L'utente deve mettere in ordine le parole o i paragrafi presentati in disordine. @text.Complete=Testo: Completa il testo|L'utente deve completare un testo nel quale alcune parti (lettere, parole, segni di punteggiatura o frasi) sono state tolte. @textGrid.CrossWord=Cruciverba|La tabella delle parole viene completata secondo le relative definizioni. Le definizioni possono essere testi, immagini o suoni. Il programma mostra automaticamente le definizioni alla selezione delle caselle. @textGrid.WordSearch=Crucipuzzle|Ricerca di parole nascoste in una griglia di lettere. Le celle neutre della griglia vengono completate con caratteri scelti a caso. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_fr.properties0000644000175000017500000001005711377161312026275 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Association complexe|Dans cette activit\u00E9 il y a aussi deux jeux d'information, mais ils peuvent avoir des nombres de cases diff\u00E9rentes et peuvent avoir des relations diff\u00E9rentes entre elles ex : un vers un, plusieurs vers un, parties sans relations etc... @associations.SimpleAssociation=Association simple|Il y a deux jeux d'information qui ont le m\u00EAme nombre de cellules. A chaque partie correspond une et une seule concordance dans le second jeu. @memory.MemoryGame=Jeu m\u00E9mory|Chaque pi\u00E8ce appara\u00EEt deux fois, mais face cach\u00E9e. A chaque fois que deux pi\u00E8ces sont retourn\u00E9es and are turned back over if they are not the same. L'objectif est de retrouver toutes les paires. @panels.Explore=Activit\u00E9 d'exploration|Une pi\u00E8ce initiale d'information est montr\u00E9e et, en cliquant dessus, une pi\u00E8ce donn\u00E9e d'information est montr\u00E9e pour chaque \u00E9l\u00E9ment. @panels.Identify=Identification de cellules|Il y a juste un jeu d'information et vous avez juste \u00E0 cliquer sur les parties qui remplissent certaines conditions. @panels.InformationScreen=Ecran d'information|Un jeu d'information est mmontr\u00E9 et il y a une option d'activation de contenu multim\u00E9dia pour chaque pi\u00E8ce d'information. @puzzles.DoublePuzzle=Double puzzle| Deux grilles sont montr\u00E9es. Une contient les informations en d\u00E9sordre et la seconde est vide. L'objectif est de r\u00E9arranger la grille vide en prenant les pi\u00E8ces une \u00E0 une. @puzzles.ExchangePuzzle=Puzzle d'\u00E9change|The information is swapped within the same panel. In each go two pieces swap position until the object is reordered. @puzzles.HolePuzzle=Puzzle \u00E0 trou|In the same panel one piece is missing and the others are shuffled. In each go one of the pieces next to the empty space is moved until they are back in the original order. @text.WrittenAnswer=R\u00E9ponse \u00E9crite|Un jeu d'information est montr\u00E9 et le texte correspondant \u00E0 chaque partie doit \u00EAtre \u00E9crit. @text.FillInBlanks=Text: Remplir les blancs|L'utilisateur doit compl\u00E9ter certains mots, lettres et phrases qui ont \u00E9t\u00E9 cach\u00E9s ou camoufl\u00E9s dans le texte. La solution pour chaque \u00E9l\u00E9ment peut \u00EAtre d\u00E9finie de diff\u00E9rentes mani\u00E8res : remplir un champ vide, corriger une phrase contenant des erreurs, ou en s\u00E9lectionnant une r\u00E9ponse dans une liste de r\u00E9ponses possibles. @text.Identify=Text: Identifier des \u00E9l\u00E9ments|L'utilisateur doit pointer ceratains mots, lettres, nombres, symboles ou marques de ponctuation en cliquant avec la souris. @text.Order=Text: Mise en ordre d'\u00E9l\u00E9ments|Dans cette activit\u00E9, certains mots ou paragraphes d'un texte sont s\u00E9lectionn\u00E9s et m\u00E9lang\u00E9s. L'utilisateur doit les remettre en ordre. @text.Complete=Text: Texte \u00E0 compl\u00E9ter|Diff\u00E9rentes parties d'un texte (lettres, mots, signes de ponctuation, ou phrases) sont retir\u00E9es et l'utilisateur doit le compl\u00E9ter. @textGrid.CrossWord=Mots crois\u00E9s|Le tableau de mots doit \u00EAtre compl\u00E9t\u00E9 en accord avec les d\u00E9finitions. Les d\u00E9finitions peuvent \u00EAtre du texte, graphique ou son. Le programme montre automatiquement les d\u00E9finitions des deux mots qui croisent une position du curseur. @textGrid.WordSearch=Recherche de mots|Les mots cach\u00E9s doivent \u00EAtre trouv\u00E9s dans une grille de lettres. Les cellules neutres dans la grille(celles qui n'ont pas de mots) sont compl\u00E9t\u00E9es avec des lettres choisie au hasard. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/activities/listactivities_ca.properties0000644000175000017500000001012011377161312026240 0ustar # List of currently registered types of JClic activities. # All JClic Activity classes must extend edu.xtec.jclic.Activity # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=activity_type_name[|activity_type_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.activities." # Example: # com.acme.jclic.TestActivity=Acme test activity|This JClic activity is just a test... @associations.ComplexAssociation=Associaci\u00F3 complexa|En aquest tipus d'activitat es presenten tamb\u00E9 dos conjunts d'informaci\u00F3, per\u00F2 aquests poden tenir un nombre diferent d'elements i entre ells es poden donar diversos tipus de relaci\u00F3: un a un, diversos a un, elements sense assignar... @associations.SimpleAssociation=Associaci\u00F3 simple|Es presenten dos conjunts d'informaci\u00F3 que tenen el mateix nombre d'elements. A cada element del conjunt origen correspon un i nom\u00E9s un element del conjunt imatge. @memory.MemoryGame=Joc de mem\u00F2ria|Cada una de les peces que formen l'objecte apareix amagat dues vegades dins de la finestra de joc. En cada tirada es destapen un parell de peces, que es tornen a amagar si no s\u00F3n id\u00E8ntiques. L'objectiu \u00E9s destapar totes les parelles. @panels.Explore=Activitat d'exploracio|Es mostra una informaci\u00F3 inicial i en fer clic damunt seu es mostra, per a cada element, una determinada pe\u00E7a d'informaci\u00F3. @panels.Identify=Activitat d'identificaci\u00F3|Es presenta nom\u00E9s un conjunt d'informaci\u00F3 i cal fer clic damunt aquells elements que acompleixin una determinada condici\u00F3. @panels.InformationScreen=Pantalla d'informaci\u00F3|Es mostra un conjunt d'informaci\u00F3 i, opcionalment, s'ofereix la possibilitat d'activar el contingut multim\u00E8dia que porti cada element. @puzzles.DoublePuzzle=Puzzle doble|Es mostren dos plafons. En un hi ha la informaci\u00F3 desordenada i l'altre est\u00E0 buit. Cal reconstruir l'objecte en el plaf\u00F3 buit portant-hi les peces una per una. @puzzles.ExchangePuzzle=Puzzle d'intercanvi|En un \u00FAnic plaf\u00F3 es barreja la informaci\u00F3. En cada tirada es commuten les posicions de dues peces, fins a ordenar l'objecte. @puzzles.HolePuzzle=Puzzle de forat|En un \u00FAnic plaf\u00F3 es fa desapar\u00E8ixer una pe\u00E7a i es barregen les restants. En cada tirada es pot despla\u00E7ar una de les peces ve\u00EFnes al forat, fins tenir-les totes en l'ordre original. @text.WrittenAnswer=Resposta escrita|Es mostra un conjunt d'informaci\u00F3 i, per a cadascun dels seus elements, cal escriure el text corresponent. @text.FillInBlanks=Text: Omplir forats|En un text se seleccionen determinades paraules, lletres i frases que s'amaguen o es camuflen i l'usuari ha de completar. La resoluci\u00F3 de cadascun dels elements amagats es pot plantejar de maneres diferents: escrivint en un espai buit, corregint una expressi\u00F3 que cont\u00E9 errades o seleccionant en una llista de diverses respostes possibles. @text.Identify=Text: Identificar elements|L'usuari ha d'assenyalar amb un clic de ratol\u00ED determinades paraules, lletres, xifres, s\u00EDmbols o signes de puntuaci\u00F3. @text.Order=Text: Ordenar elements|En el moment de dissenyar l'activitat es seleccionen en el text algunes paraules o par\u00E0grafs que es barrejaran entre si. L'usuari ha de tornar a posar-ho en ordre. @text.Complete=Text: Completar text|En un text es fan desapar\u00E8ixer determinades parts (lletres, paraules, signes de puntuaci\u00F3, frases) i l'usuari ha de completar-lo. @textGrid.CrossWord=Mots encreuats|Cal anar omplint el tauler de paraules a partir de les seves definicions. Les definicions poden ser textuals, gr\u00E0fiques o sonores. El programa mostra autom\u00E0ticament les definicions de les dues paraules que es creuen en la posici\u00F3 on es trobi el cursor en cada moment. @textGrid.WordSearch=Sopa de lletres|Cal trobar les paraules amagades en una graella de lletres. Les caselles neutres de la graella (aquelles que no pertanyen a cap paraula) s'omplen amb car\u00E0cters seleccionats a l'atzar en cada jugada. jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/0000755000175000017500000000000011377161312017410 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/empty.xml0000644000175000017500000000074311377161312021274 0ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/simple.png0000644000175000017500000004656211377161312021424 0ustar PNG  IHDRO,ϦQ,tEXtCreation Timemar 15 may 2001 16:21:55 +0100tIMEd( pHYs  ~gAMA aLIDATx tTUzUIHH* $e3Qt[mVpVrzltvdm42DT[Q@'j֫T U=/n{KI`z]4)Gdw༣KtQQQQQQQQQQQQQQQ5k7%3'vr1I @vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@"Ʌ <Q{G  @"}M B%yGy[$2yDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDj@vDA>0ѝG"j߿DwpA&(خ]ѺDwF nR5k7%/ѱpߏ,e__Q?)~"ÞCώpNO[:M;dGM9.P; P; P; P; P; P;T`vؓcY#A*zߧyBOE.Jti߮mB9yDj@vDj@vD!v"icmޚfTr2%ۓA*Zv M&МJ&E 4j5hTk4ȣ>ٝR]S&IA/1sҸETt埪o.&9]ۖs3ҝ/]5h 2H-:[o(r}XWlc̲X3uɗW|5笩h1)/ms{ҎIv:[:;kg"TuUdqSFmgM-A^7Ww6LܮuRrmC'0)Qi6vS\0d-ilRe 5RNRQ[x/fPZDGKC}fa|HEVCmδrӯp27J]z #|}zht9Zg 1(;X^/ - ZCQQ~C%#_wq (81dRѲc8P^ga7f&"mtP?F^6%zİ1@R_|<5cm$QGń]ùnjЎji-땥ƊS=2fϱ^BplCɳ7f>`>arSL[v>}Xa0Jfe-{ڣAĪ,?Qžtˬ4UT ~|ulfVz.;s˷juNe6vf9a#؊?Wēiɯf΁f5ϣGb~ tW^qhSk4;sw'CwWUG-dNY喬U=m:=K3ʊ8 ʇM˟O6[k/m{>xgËG٠#Dps-l7YN)7Yϯ!U/Xc;x4a9W}z$cG=vح\^g {3rwuiONVdb>~??ƣh٨-6ryݦJeuGFqNΥu`=d.^N?TTFe}5;S5 A;D|>b~=Uu 7Yϻ}ӝy%lύ1ۢF*#'m4۝RUMTi{Dn}-xp2l2Qg6vi3 Y&%#zYC_Zjz\=4Wi ӛ+y2?R'*SLŶ OfsNU2NRyIl6x{D/{as4t-w>tOS/Ll1#G%FbR嶮C.)YHcEEjiyyyF+[3%BȶD?lg(#$)옭Zp:v-SlE,Ie9N2ճLǵ9i37f;Iz8t._Ȟ{O=fsob}V̏DGeEzhh[5}ίtK&;t-+7rhՊ73{[H.<2U𪼗,y~'OPr=hɧG}+h]EduvC/:fr' giYTk{ӲNUfv<oق_1*d n~)IA./EgWrٌe?P qJCZ:/E EBUv55V۵mɒ{cږZ&N´\NC!Z-4r%ocgwT!"=͕ntC]viigm+CZHwŔ0>g{#T[VH`tN oM:9f;g哅]w/fA邥 'Ks̹ORycs4]9dU+8@Isu[SHuܭ5=7嬵d VVf'\gAț#/w2M}%m+"'#9I5ud\.G4?k{tg2EnT"V/ys mTXBg"[!+9?cKHL<]NQ]S? I+_d{:o/s$<,B< ks*j)a*ٙ^f+[_$\E=,gg:2PG ȸl8^?Gs2SS}JQ 늆\lA[GhPOW/Ӈ Qv&- oLeHaX&uRO6Z=#ݗt Y6.l3:cuaV[R&YWsHb.K5/ϢֹeFmϝ݇d;RfA|+51Օ{ͦ`nvcvva v#6&tښ-lҕjڹh+x\sfy'GV .-r*jչ.k3`-_ -jYOPi-P 5ֆCz zIg U מq'k;TNx?uF'RמxE>(A)AL3z",)*U'vX{A}6pM&SLxOkLkLɗ"z(m֖Z[ Y)hD= ?zuW+WtBj'/bI[YG؃A zNG`ȳ}׫46ԗq`aKL,-*~$"4>fk<^d~oB!e7N't48$Knذn 9[[@{r7:+B^(INKǚ.gW w2nqڰЦ35i]gSj`01k0Cqפm\xrܩSs+Gb?S%%%/oow59\r[=f;;fɲCr_IEDMcå`SlנMdn@^'~h<0yjO.Ydoྚkk\ںS:3Rm04,|6NU56z]0=Qq\PvSn4("5kVqqqii)L7@ /VOu;b{҂xg ؎ړxUlvfkLoh <Œ7OT,;]i fl2/y!Q#ݹgGky"<ۓ3ySm]ѲtWI")JP>O<#ucR2<ȱUF9RSUfcvw%QTYVWu4 YD!UDQPpx<.3uPsAE2;8(dQBHYHKR]թtNDI3:}*W/{R =5Uqظjj)JFz̔$ɖ^RS8l9N4HT] ;v~eGȎSs/y0P~S)$)G;:J)f[I =^vn'b ~? =Ty^_KFfYRka^ Ǒ*[ê!,*1e?P?7M/ܳ7Sag,H:Vհ};z@]:,ٰF4UB) =2J\, _|NO3;7d] 2*WOennkNF?P_z.9rp@gjNs·߆k?g$ySHE! Vr0cؔ1v- A꬞7+V_W_;!̑ƀZྪ@uU_Clln/a';G.HJf#rba|ud N^K9ɘ _~Iݡ-#r+;ax(."?""il~`1ydXmXKά:~.n>Q`gopOV )d%EDFI[ 3Fx~~&qn(-rxer(-%x-F#I1sjoݖh.m`ȞrI9w,/=rܱS^]dђV`|j}X!*iί p$9 Qwaz0!FM?WB`VR rb dp eI5}2ą x11u:JDqd^h~ d:z7s|g/^Lf.CPkYVZ,:X?0dViaVJI9$jS[(z=<8)} + @@xee5ޞ 8ΛJ2&N xQlctl?yJ1̽xM:DE$*ۣN\W͛a|%ۈ=,5흁Ŭ#$}UU arKRwBT6%T@{ǘ2 O@I"!Z,n'6+ai}7!ĘkAYCuEek  | )𶂵K؏\HVy;_0S}!*N28<+`oã]wK/`g.+g=$ѣ7-k yC48Bd 7jf%KgЃ ̥Fc2Eweׁ,c]Ə9$d$#"&2dރXkZE/O7}h*+DvBhХԃ!w>KӲBh<"sD sp/C)/cŐbP㍅1|2 $u4C尬P"ՆvX  W(Ɓ$go7{%#w!?0Dž=,V?*{Co?Z6?|\vtVV$c/ÃѣjG j4^/q:y OaY>$f,_`/-2[r Ukj"xH0X k(lN15O? B>osl+dBҭ0%.ynΜ'vX,q>׭#辽D^yIrmYVϰOfLÓ d!3+ w3r]-3`?GIƎ_*V,ڮ.ќ'ho ^5=>Xk`bblZ6~FJ<6rw܎'k֐77nIѲ`Hh"V󼏢IBh22k[r>X/m75cgWiOQnt:WqaӘS&'H!鐀$q;>tyq{) åyL&WlsAֿ6;Ѧ5] f#'[h;-dF Iij"0Д^GYymm#C#NkY#d@J5[RH kZ[px^p &N˳&1`0UY.o833O;.;̝]!jkZ#dѮ;FxOꁧADృ" 8&c O^;:=%yJf 2Ӹnjqnr4 @;?eL9#iH!_O9אupt=r#vBi&-f&A~ `>w$, R˱Z:RNh &üW?H/]eW@g#O5jў}$C+v.xC+J.gF*>bjau\-~;г/ tԑ7RX"mxrͬ곳2hkFjO6-MՒɈSgekJL_˰s*m0 #FqH<< |&r˖~Wkd3%hD+:)F2eW@4X "x2^-vCfܴ$f,o(˜2 iA|UD?{^+'sqO~β0DKgGLV<1k±Mpa0LxFՃgԗ4k_x Vɷ¢^X|D}_K„gN,@Z:he!%n0Z04&v{Ma]ylysEqyI"%R"[DQ,V2j1mm N4EAFѴI`K-ۭ%d("%޳s{vggwy,e1ƪb9o}ޛM юPq&y"ߵsEQ0ÃEd4>#F6c䚣cX;{!X; MH_pw¯8T]5^gnk-6'HٟB@׼ YEҿ2ApXX|R̟qcQ^5LWO8 ws]zuN"[ MǛHF ÀTޫFh>3h3McrO!lXpQeN;@1̼=S ·>[. Wgjb*o 2-ݢ)5^~m&''~CǯE""k_J|>n^ȏq9WMծc;/kq</[,v̌ MOR8h܂i 1:Bvfb%pifo-NЂyǾ{=k9>YMC/,#x++LYL|/m^A=G, m!@q]h$j"|ܥZЗ!|iQȱvVO|@Tef 䨚橞X &d1O_la7nlj\cNV4<62$&>OxBAHs{gjWO\+إOZaYRF%)U4zr0-\GMB(u@Dݓm!)jkܽ{7+\_\"&,byJt=e}]6+WL_t)*Y&2J,s+eۓ 8~Ƒk!OXo5^KNe2{n=:4Yq@w;#Xvk^vC{T1$E)-~y/)m*4 #m?6ulwT6UT5'fDr`tP<4ey% H,q磶ވ!lyh'2J30ēo]x> ^?afe}460y}8iktpu{~)XY9R%'L#:d ϱy8jnAP$0So1#:5\L 40EK _U[5j4(!UQIFG;?w10 !V~WtMڣLQ;ZtJ15^KKeZ9Q4-V@4[֕2(+:Q[gnb4ϲ^<^Go$nB+Cݘz}ye6us(⩪U3Ȇ={##r2 «X"}SYQ_`<%'2J!+HԤqdpQn'5gG&'C=wl+Ȇv;F˹2CB1jO,GfeS˗OfqqA x/,z׮-[*LA>uw; ッ]Qyѽ|6,YXA<viܶ(uv-ܹ$.Fv`!q<'[7{_͌Kk$gϒQ`xҊD4&T㲦lgcڷ W\;~Hf+<}Z>٤yU=opFw>&!49iZDU֬YUL+suu{nUE1::qr.ԑӯ厅Bq +?@c<<^/ҍKI. (d&\^U_g vS{vfEOf̦nKEf̎?\n#1#%5YCsXySu6oyQߞ{mw(@0 \Qʕu˖)2̍,$F"NԚ^bz/O9,9+<s>YySMM5c޴_߂[kڰz^O=VT+wG<+ٷA|̒"ޱ7 F\; }@}@>}mmwjrcY,z/_Wg@_4 ko]x׿nٶmWD Awl&Wn޴qC\9nje$'n~Mr@&uLS}e'|RRM,L6<\vH$aY8JJ ڣ33q)bKőP 3R!OE0';[2M8Mm{qlڻ.Wق,Tmͫ:mTAX鋡]zO;B N޽{->=Lk1muNNS4 :@ ?:,C{!PXCf3QȱvZ =I*ԙ-Ԩĉ.<kL13;dN0ڂ-DTTUj~4RG*RWQ6U_ZUTMNc'N`al ^ dϙv< b-ssf=sιsz!o W8!%rI"$R No7 Z)~Y;A+ xJ %|$ l,ׅno"tqN14tM{[D?4dŹA3azC!H yjRm0߹3r<\fp\g4 iN kkw zQBSz ZѨPҐ99nWPk@o3K پcεk)h|Y͏7WhFv#y |X Ѝ^~,L,Jt2drT%_.Lб, ١S% cN"ڣh^A)&C띛KRjCUs6Ӗt -zgp#!)*ML<❆G鑑B[vi N.$ꫮ \\5#;~Otez{ -3!\`-'O"A3FO=`5vժШ̭=_{mŖS/{ 5C0@6'0 -ry{LC[,N'^/ɩWk45mUk<)vV3*3#C~+Cg>nQWԪ]jҍCe,--0U#Gs,i6R Ejk>YoۛѬkC$kuHwc˚-l}bѣvػo݂V+jލުL;#Jg֩un uiaBbI&%'^V6а5iÜ9f^me/=M*"Jܓ/~;wy ^JB!f3{{z=U1-9C:=ۻu #m Y3@:rHF+U <ZO׀Wp8 @kW__J?K6bBSgԚGOLE)i!6& !+겙:]<ΦRwd2l2CZAY[)j֮H mEϱxd[Z%- CΝOf|>Mc {WkVh5jnaj&K(-55a9֫==R}ZnlڣۤvQJH2Jb,|Υx>clX|Zt59 I0tZj)& !0Ė z=mZ!TJ4k8s}Lr5;n2%?Lд9!G6ۤgYRf3g:ZK֥[)F6z4e_8ʀdJBEQQ lEը::S_WO!]a}I ɤ'Bp80:D.ϿiC Sc>g3L4Tj1JYJR(66_[): Ƈg{U垩,WX.e "M':NTWWUWẂ]{cf'%~H.Ks3,FbQh$]u508p҈.L/OMtKA(TAw?/}r㭷Z~_jBJ7/mi9~#[N=ݸ{ Ro|vϞ:cNOӪz8/QI魾У$_kXֶJӗ?G$IS}eYn^Yѱ#A]ָr9cݵ'ZsZ)̅Hӏ7HSO/ EnRcFcY>A %/k'ǎ;bȗ=]MM+*4M&JAtұ3폺K ;v-?$=|6=~jlD*p+J7/՗6!ð=>1JY"o_4\2LMM+J7)lAs#HAll桻R:5ah"A^%djiwG_x[4rL*a,pʤ?*6\:_K1eRyRh}}_{Z-"7β:'[J*35PURZ1"j h"D,#X@kG֎ bAZ;v h"D,#X@kG֎ bAZ;v h"D,mIENDB`jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/green.png0000644000175000017500000006461111377161312021226 0ustar PNG  IHDRr,ޠ8-tEXtCreation Timedl. 12 mar 2001 10:01:12 +01002tIME  ,`6 pHYs  ~gAMA ahIDATx }w6P FX8$^Bpc(.IZ*P"a5miP#*6X" mj#; HJ\@F̛3yݭc=Tus* q:mbRepg`ByQil%ȨP)//x?Rτ)IUV+@ZKEV|ԃ;xH >YC|L׷j}PB๚T*"t\QYPqG#1"+杉0Xx:[ք켦"KN*IݭYܔSHeԈ z8S_^֚󫪄lDnD#(J@/j\YcG dߖa]KӘ0o:S%p1 Q=YlBzɸH8?JDT{a^eCWJ)15F^rX f 8E%!n0"aUIXWΌ=pqZFэq [(;\"D aanK0~0u:!^VO3r);&fWB R DM8zT5 1n<u۝SknO=˞P/lw #qBcQy0ndO{`Z.]{Wxh;9|3s:OQۚx%7a |Jxʣ4t~oсt+F;T fj/,ŎMU(3fc~iNmՏ:3Hh2GS4~TV1S#|Lxiwzu5c3Ć-?^|674T2YZ C͌H=>?9߉5Ɖ&M+W([cg=50(7V+g=x2Me "vijt3~3m Q9+n)i#F9=;0DN Nx STCf$n<F4jwN˻ySN }CB΁gzmत CdyuC̔U*+2b15匆LM=[- zA9G9δKu<]izQGv21vv2br # r9r # r9r # r9r # %kʹwF$SH{E`1 _}&jdHjw_-kňRPr]7mn_3E@ . g?$(~l< J+xqňR Ve5:$jb ~]-FJ}zqJ53 RPVw/drIr(@ 퐁6bxoΎbD))|TߚpO9dDs&rwhD5 O7d gȺ]qp>t T8ф Xpa8_j?4zR\{_G#Nô7 ( Qy3tRx2~y=Dm1"xe4r=  3!n*!8OƮfm/tWZi]׵!xXGDG8"=ec~$3\rs36,q/z-9& @o݌Ma`SZ_eo~ξ@GqLM-:\ rE)%gm;B9}߱#b.Z2T+'[@ƌ9Gʀ @rT-07@vJ¼rn 6FgUmtPΕx&\'wA;JJ/=ȴTgr}\ PCEJz`:i\sk--w@sRf;/l4U )75KU{3w%R zy4R{7NPW` 9bB_Te/-K +ziwAY1#qɲˀO0g 9LjRP9{>Oňr9݈{$xL#r78rz9b۞k rHYڇ$y]&w]9Fdm=u׿ob\`k'ȁ6x$kѨeMuB*GO9Fdm=u׿,Q)vJ j"Q7N;l" Ee:j ^]jGmpxUQ9H"^vQ9H;fL?%9]0"# r9r  ^s3  %\/dN5$xD𕓥z5v6F/xcG)o[oC([di%~q~rH97rQZF]Y^mpJ{?C*??mُG;=keyO j@bYΣߚˎK'__Eܼ5>pWfASE j,}/|@vW>~Y7>ya}6mkγEmeG?[US9kS;lU܌O}^ %й,8yy9{(Km??ZzT/e 7+[U&̭h fDntF)|Qwm}|o^;R%eoM֚K8HQ͈Ћ#p37!^ynwH>SS ׂ'IV䫥&uyMEytrOXTOXrrkM% 䡭 dO*Kw*'i9LMܔSH܄[+UuξДeI9K8dM}YKԾC'xwҮDm1RP8xL?\dmMǑaޑRd.yd߬`gM :QKdryCI w%j7+Q ~z4c&{'*K#]1k###288(׾"\4.$~@_ΧeOHߟKSHԎу1~op X%kWIOi~ao.* eğjov ٥&d)?fA1cطJ9DWeguX3N>f3=7lB~r|~{KK;,~؟l524RUܱgElחY9T.OOV@Sa㤿2k͟ڤ.XuK,gZ1Kz ugax!JR9w2$oKɑìYC mYvj2rC\XSr^6mk HL}w?Ηn'nq?WSӂd_@90-?>&Qrƨ+0, -Vb<ǩ#1vvH‚ /,ܹ @0O2PxS(xエ)tlIt+߄#c:U2`+S09əŰAhٲC?Gt|vŒ%0qr,Z4 FѪSCf 2d!ň 0׷rxWsZ{ڴ/vO Fvvxƒӧ]x]X5,+#ѣǎ9IGp}1ey-fL8VEC/3F /ov„B oш|ܤ/C9#n11 Õ%Ofjp$ <|[lPS}PM6XtƘq93B77I"ǪT"u ΊO2]}WEgrOe--RSXx LZөs6\,D` VW7c<IJ~ ŋqZ;w57{o_+0}z)-0=1s4ڵǨ3Y$Z*c|Jaky S&-MGmG>λgO-.īDN+B+1xOVaɭ[Ort" ןSOmΝ焏3Oz v*E52;Ng*}>ߥC >/{7/k|-~ mDx775&cVw||ш<>o+*l=A]ܻ8f,A`JLk$I+]=QjP4zV|IKUW6, #F`ҤB˺Lܛg_7$ߣroc0ܙ3xQwII:ɯV3J6 +|^wwu$HRP`i{؟0s)Y c;P{mؿ|L0Jw!JSzj\SͦJ[_/FsѰi UD`t5<2l sdP^ah`G nf4q-@0gA{ѢEF'ҕ3r7.,)RKrLkdQOK2jk`?)SzCmqbㆫl &\_wV/>?L-RDr>L3St;xY̟N]n>>R,^*\XLXiUWsmO^}:Yp7\Rb>>SB8Z2 x}7iםq#!z(tѡl$)?$+A[ٶDQ<g|(5yh@Mʄ(Pq C/ɔ+Fӏ+_F u@!Pgm V_\lvu ,>￷tM>CQTh џ\QZޅ)8@N?l!oř8i7^cΣPw7d vE13lvz1=/'ǧ<9w ye/6e$*ؓ2db/ Fət/Qs%#WwWVa5{WVi$\]e2x lCnnj@)R hl_d {{6%YGؒuƘP8P?R&n Pn/>B:Z0s:4;K:QӰ!':W#z-F~YNJO3!˪#N>%['ƇN2zؓ"=cuH/ Z|C|\w'^晸D HG3b'>7!kUa[UMi- M mӪCi!2T{lxe.NUvCTE gP߇e+;4$7PA$FWTG\>,01K,HlTUNA]Wn'07EDH^7UU T(*m4노Bi%SISsihw1|_R;{vCkx? Lg  |k#WOQwٔ啇WK8z'`7ɗؙ߈_9񋃏d_6Qa3;D,7f.J^yFI{6,&^x#0CyjJz0b :~YdM[kQuԉpɠLJyzkP= .'j'JS)k3(A _: Aژ$AJЎC5_‚%Kp;|0U!e5u2o`yib:WĻj{X<ƔNft&{=0)C#8&΄u(X1<57yi(O T$)7e ؒQҘD ;k6yL/|iV#Q*7"GHdǸ]jP/VQ@.lm߇䗧<9k7ZjBNsIi#0Q݌ac,eez <cKo7ၽ7pco]نm{mNɌ[e]cE.(Q%/\.f, ,CwlV#moXu Y|^:&9t䬷%4Xጌ72pF1QvvX$̷022(;Ov fp;)yQВ)b[zɨEY*˧8줭죛/:r3r}  Fg[zc]iͮIX_x1f̘Ł`ޝ%lqO( -u:٤Z$ٸ+}UG|d|OB'||ɧ0iZ+љ_Fe5gIfWsl:|Z÷]mɌ&'ZeÐ :-HuU-al;rW^T5cgWOH>&llgb<kpˎAiI6g11Bx 16:7cgSKvUazs6¦q350~ʘ;;%ד|n 2Z0) ۸"꒽h0yQI->)|:d{ѝ<. BDFufȦ<4i?vR>7ߌ8po9_紕<.loO.x,1eZŒWC-0+H!eH ^t6%*|n䬌{>:|lI<{/b weJ7O w/QyLf4ʊ͡ 6 m7J:θ; 'sӘѬZ86i ݻkʏ63vv3 ×moI,mG|e'q. avX e<0e7Lx 3 f# ˕LN8}g|ȇ$KڪZn-[-~~-?W_}U]]~L[}gygpm,wC#Q~>x1gAĄʜ]چs08 %1PKShYp&Ӏ\¨8ȯ:07{:fT>ԏ?3O\H0NdaqC&4t1#Yߒ[ZSIsml0_/|URM]{kI!hxM5}x ;kQkY^\ nEF~#&Mbù.츥UW&g.}/;-mv,LوhF;j,V+g~FڇLHE`]z 6-GqJ"RiܝK: &E%\dQjCeZv،;TLɵ|@r+[0mUoe@!,8|$q_ލOFlg%ނ\#%]]) HLk5{CL޽r}vBexZq4۽8tzH~9kƒ$h8; Z Z{yܙͅ)AkVI읨R$5ٝ'BkgvIQ0 c JF&f:*>0❿EeaXx+4sn<=P|_ϻ+l3fMy(?Oҩ+Ђ'Ux-v.ܹs?Hy{j<9.ע"aXd6F]HmB8i"|tk1\_]߀#w߄)0hE?]ol*RW7v޺ YK#MŃ խPS+ <ЌN̕Zi=;A|٣p0|UHxqbϹF#9ˏ/͘ՠí@r]sSoSA^#7Lڝ ]K4SeF;$1]`6cN-?.ĚЎIv; >X~\Ӓ c:A3 W xcrӮ';Wը 9΍G$Ou̳`?NN&16Dsxg|T̒߾cm#"r{}GOf!H^{93cѩ~IO:txq~!ߊpW]t} MG.yac<D4+6IKa0>w\E~L46dr_F83 sα$,/Ԏ8Ik+!`4,;9# |塐JI+DcG`RYG[3\*xAqJVP4>s*hpA鈓Aן9toyOXEa˱-\'KI6_|ҡCB_&AvM/A쓙a5ܺV gjGw$}!Hka^c14<F$u ]Z2qh0zB 9nRn 1\4,o?gɼ-'HEx0q$Pqт}ЁG/8r[,~s(h|s{xXD;|ޘ3L,A.b|6U)*5*$yg{Eu+t\wxR^٦P:|V|, ֻ^7=u+gfs{GNǓ_=(XgҌݥ#*#S(Qf|=@a!ʤm|g1jzQ> ' Qd3+۪xs wp&)lf5G6946|bydTUsZ8+@<e cIv?R$^2:ndP-=iPtwPWL>nJ"öbĨU(h>Q~x,C#7 1B2>-plĩTVuuô$M}E&t;#}>xA%Wp T-E"ȣ;UЙ5D <mVBÏNE\~hKbsRt+I!'⌆!T;8 )sH$aϜ0d9&U?ُUԟ`#?է?0;H#q廡(U{e h]/5p{r2!ďvtb$yR+qf}E_?#h/Y{Ge"1m4qkp>L2VD*<:61|0à I&,Κn0-~[g_ 0&AZ`yJR܉l>^f,rKQ!v5L*xyە|1n!f j:A;]We6sgp?ɸiG5]0.tQoz\ 3H3,0@9`/zffc>Ш^pdOܞAفqѭQTh gAKLGpr8م5@$44]I`]]X@ ;kQ30{W1'&^mc9_eONΙKk<ぐkۥKX(IzillK8_*Z39ݶ!ҟWvSj*,(D* ى9_&e }Vv5<%'c}Z2>Q}T%QY\nY̫4=v<>on}W F Aec]_s(ٌ|ctlV*@%l1Th;gHPQlH ?697^DpκatM[q[Z]8V &~8hCXD7(M؂H]nK[6J`s-⅂XtB?uߺ$4>ri+f|Th@?RD4(/G+V੼yxZDT7#]-{gLfp 6._ KcT7n󨌜'jORP_N"d,/nS1X̮۳O) NK}ǎۖܐ2꺎~IкZP?0rhtؤ&#`xӻ_뮠.&NzvtpPHA~`pFc l^ A|!WЀ~|q'[9QłM99IS^Ʊn4 q-Ңx8K8ؾxZR_4yzu6ȽM ?:t?Wԡ՛MT`I+vPT;ŠoV!C tO=$IŪPHTXK3 Vs57Հg*~*3?#7}DhS&1ʂTFPLO$4wR|rn9e _ɶ3'7#oH,)2QYg }֡ IeGXR!)ҥƷڐCA(FTIv-&ۈ};#D+M.0tOFcߓQ+:t?W b:㛈s[ڽB3,7`gRi^VI׆|тvFvs9#$s3'*> er=Ӆ_:Fغ`)}bs zuZ Ճ]ڈl# ZIyʢ$\O,ŃǓ8*rf]( x, |7'e9.+3..&fʰő+SW3y{2r,J&êA|Mv|="Ad~ JIz(M|M ݁VjoAݠpsJE4hpZX8C(nĞ;Ъ> DxF]"q8uB c|cMJs"qL,- 0{oiF43L@~HmX#s_$]*MCB8!ej;gh*ew6hsѲtQ"4S'ZѫR/J>1OKǚ}?E8>uКVEXgk{pEg X 󅒏cd$W#m.wF0z艱.Ljyq8p:|ArH )HaWM5)ˍHՃ0_/|1 #3uZPtЫX"CnqMeG=ELi  Ms>!NrȬ"+a" ~|aIr:Z$1vz=Q,6 Q앻Ϲ- bPbAޏzm?)ʄ~ݡ0_/|LPA}h6My|aM&Եa,Lk"X=Tu2H]0Y)5JӉIo$|aPQY=IcIB w&Q^ҝNB4 dՇ0O#μ6.Dž#>gGQ:"O*k e߷r}Uu{;KwsoW嗯nU*ڇ%{Mx_=ڬHĢٸODJ5> EE!f#oEd+Ux/,weu9]wa]1Rd@JA:Ct \>S R8ԃ۰8x /><e@&er݋bK.>3:P>~w?SΞ_߷j* )=|V*|<\Q+ #U3:O ǣX~dʈejW;Α9eDA|_~[Gܖrp$rJ,l Ƙ:d(;3:ߏEbݑ}iT))XAjBs Oq,xrc[HJTbÚKqӻPy9W|OX2˄9͠d|/0#'Nn';b#s`LHf -6?FMmg21uI?3>>Ԅ8 1x&up7>> 3 TfHlr7gYآ>۞ !3^Ԙra2"UKrPɕ6ħ!1Kg;/)M쩙y($>rQ>eFL|qif91x:.Mc57Apz BtwZ N.|mmqy1%%F-nj<̜#ud//Pwۿǣ/s]棢XZ;($wh}M.C`Χ682"Y0¾[qϾ^6UJ &U%Hkk2(ьM;`ゥ؟gS_fxxS}?Ĝp>B : >M/7$i1Ƅe>+)oϿYŎ'%ޛ'ILqskFk=V=o>0'($m^_H: bCIceA 2"IN%>oSzP^?jV./6/O|*>09yctM}Hj'è;8Ћ4Ʊ禒g#"_]x9E?gVOZK#ՠ]CT @Aceˇؽh'W!3UIOTK K;Ǯ~Nu2>렳ʘ&Tt,]CL@H:d>6$Kps{rP vXEm^t?0#Hl!e|X`Au417 C"#Ql}8x;F/@ 4uIs6GY:$pZ:}`FgnJ' S \b4|,߸pypMJ=QG*I2$'~|]?BOñ*[p34} 2%Hz M@(mb3ABA B%|OʯA4;ljIK'(d6)5IGlAAEHc:Wix5c0 HP\a!;qvXǁܖ 4AaGґiSv ZF`Ӷ@ D;ފ˧⼔K]GZ151"ķ9^ҭ&ˌ^t.pΫ&tRތ>|J9<=,Luq ,,$&EW&`#rFIA'n<{t<>vԫ: N6)xx>8Bi_,<vS%̟ۨPvW+G{j!]uõAXaɰ Ky#|Bauqű{ljd}q qyB#(Ho@Qm:K/Wz83%&9>0kD&5kyv$z=Ǟx!|>I f>nS20,Vq/L3yy:܈+Ғ c=>:[FXrӰvU))YDAAeH[KY!4\>**MBpq&=xv}d.LZhr} ޏ|sMGb6b@ݬ}A|= N{F,y+@.m_9V6qa;r+mV+ףL0I'~@\^|.w_)Yo*fhqd9ġvWIN/!CSq:^kaI7ZІJWOIFof 'km>%(/LՒml"@ .1G6CТd ӈ7>$4Z0SLIƧWMńL^> Y+ x;j[-:ր LwLkw]IM+pՊ)9thalpptƮB㋋(Rϱ,9h\(W=U z^1W~^>S<;9s`ˁ7c&a\v: dhQA0Zx+@Eq;T0b].G:DA{"2L2 $CnJjp cY<$fj'ZRbFEI;ja_E Й%' T{bteES* |*{4:rYJ; Iwxۑ%)Gn%Mz̨OEnV,FB6w߶L'p*یCݨ5X7|qh1FyZLnIBY]r[50.)YXL!gs8ًCcPdc/d4/<1>=ˎb$nZ2ːZRM=䴫ڭb1%LCggf4FIMh%zdYca@}Ht!'l#GM1 2d_rRѿ}9lZ.O2˰'פicB"5&Ei')98_/|Q|X,ƨQFJOMalŪ\\ːёN_mŤC32_3Ͻw&qi>;WhqqpH9 .Ңղfv5jf# H3e찰 1G290rعl'Ͼ{[U}w?nvw{-گ_zUV(ڲpqE .x5다>$2d2NFf7L h(.pvbޑӉ;Y|^ exHˮE;v .\@ww7A@NNiS-% `}Cpp NF'D4elv^|'hjjb45 a̔ 5 D?~Djj*˱~zTUA_O$7(Z'X0ZfL$8љֆ3%ЕqwLѮ/iGԢVJp_ }e+PZZUVBC}/qM&M[|ӎ> >(Yk7NnDee%{l!0*pF-AgI@Y.XuGzMľ}X/?<6l؀NV"ۣ+ 9bopm,/ Zb.=]&Hc qG1<,$s=(?c:h2 ~))HK&ϣ1;+[~GzXn&+*RGp!, Dܲ/[^9LR_,OcةԢ+qP*_YDRd֠kn駟b۶mX6}8klΝ;,ܔGZX9P}^QԕJ65i}V+P#_*8LimPt!N>qy<_ #h!" >MM~oǁs󝖖l2eJtT7ނcl~؀_/3}t3Ν?/5vEectMĆcm6 ǙZFRfr|W&f>m>}d,o&g- X+]; PydM|MFP ~{jh42jkk Ze9s)WT(lꫯ1}Jt9G$=y!~l+Wǥ}s *n5kHwAłrCFAK n7 `6Ǚz҉Z Bм@x6X| ޿eMW^Z;ユ.G Eٝ&\+x)|}¸J;{'୷N Á͛7&r$_CģwI =7NQW[UUW_}_ s9㟷!fP_M{qqOX>_ 9{M6a%R~0݉N'.]15tjAۄMĆ㎬aC*Skې;;PvN-y%dЌŠoug_xlTbA}]׽eWñ!9lF'k֧dΟolj'ؤ֭[czI9]h%)ע2Lh".s(ja}qYhZW3IeԏF0o<@8K"ofDmθ[a1Iwʊ+?ډgB5ڈF[cOі5&o6 ' $O ZACX3E[tEjݯeŖ%w#$[l`ħ Þhʖ@!~z)n}*`Hå,KQ^`}?233*LدxV$ѡ(2Z짔Jytb r\} :"Xo$'[GC:IMѡ!$4Zl*ٙ&éiLH_x6BA-z%CGёIaE€^)}:K ݨ]>)y]rI8)T#=!=ݵv{޼yxEId-jhT[OOb|jO-{xW9ÈEY:ӌ֢VqMUڒ"$ƲG&6Pt 6iEvϼ8&)˖U/ (0d;ޖe!&,VIack%Mb^B8un-I={:)dsiH+tQE[9C׷˲_Wۯ^ťz }JCNfC^sN,]-[Gr[Q9ٽE ȎEjKmK.6!mDw!ɿ/nukCb"eeMOaC?̆ dž/y Ԇi;{У3匹p 8d@%5$h.v%Utz.O ]+J8]|GxgD)$U$EFz I ѭ[SC,~H[3/=E," D1S:QK ]-)Qh[ׅ׊%)G"Fs,IU1n2&4#F-TPJ6TǙ:tqtUWؗ4u˂":/-iU2VzJp+Wģۖ8>㘗Q+qEpKACkΡ?;` d2I Dt?A+6}osDN/! '@[k"o,/긧JũjjcCTcf}qF: 2QkԒ 5g1ScL~H3>?K>*@VOdvxCfdѱ\: Nt}lZbS VN8jp{E&L>FWUiA'p;&뻷>>8|LSn؉cj\Մ[?lbh4kKX(k-GQz+s)*{W5z&%#9==ˢ@"xq։k PtSDYʛahGNQK*:*\%Dj_Q7|pto ;ĪV/jDojos}\_$4Y뷜h̹I5&NF Ru+n7?m26n}ʬr4)Cdug!34)$UrX̦.3|#z0Xp1<다>F;8 9yHNؕBFA6krA/Ɯa46f#mH6"T΁; דtLMfUo`Fzw1oq}hM@zw6ј$Q7t VؒFa]pezmYȕ^5D"x5Ehfhwh<=>/Dh Dup8N$᎜pb9'᎜pbiY™=Ùxpb9'᎜pb9'Q|9$rӽo!NDAz:3qN Oгk!TG:5O8#đ6Qg?-/^ήս}u6Ksmb1JK^:ÙM8R9܎T c$ NPiT3hIL.eIDe4 hW'a'LEow6l| t8ynĶ<],;u/H;38F'76Cu@> dc!7Gx]t'NDNpfP21JKˡV~nhAuu Tu2xK7*#amp:rG2vn} 5>X0fgA֐ttl>6|jjjYN8qq03i7K >>t! pf#R,ZC! jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/blue.xml0000644000175000017500000000702511377161312021065 0ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/listskins.properties0000644000175000017500000000057211377161312023555 0ustar # List of currently registered JClic skins. # All JClic skins must be defined in an XML file located in edu.xtec.jclic.resources.skins # and must be accessible to the JVM classloader. # List format: # skin_name=xml_file # Example: # Test skin=test.xml Standard = default.xml Blue = blue.xml Orange=orange.xml Green=green.xml Simple=simple.xml Empty=empty.xml Mini=mini.xml jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/mini.xml0000644000175000017500000000326711377161312021076 0ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/empty.png0000644000175000017500000000031611377161312021254 0ustar PNG  IHDR<sBITOPLTEU|l pHYs  ~%tEXtSoftwareMacromedia Fireworks MX 2004vtEXtCreation Time02/13/05 IDATxc`5IENDB`jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/orange.png0000644000175000017500000005657711377161312021415 0ustar PNG  IHDRr,Q¯,tEXtCreation Timelun 12 mar 2001 10:01:12 +0100$tIME ~jy pHYs  ~gAMA a\IDATx}}g|~/lll0BD(VmJTH@U"*Z*` RiRp o }3<ä>HH9#'{bVμOdLyyrD}Evxu ?z$ 1u=Eeq:?F#G*.MDmI}j)a9#;M)*S6$hLЈPէV"_tk,tΊMf㖭>2%-hHuB4Zռ 1|kpr6,7\[r{D:@:"m5"%R<;%p  L&Lz !'^5Lh19^e40-(5xY[fmr55D ,ORmQP9Ȫ[Ш%F-+9GS 0cg \@I0Ճfٻ6*UĊʔTF22mSY9Ւ]vwײG;:d_<LIUH'ƼHZUĊLʈSV8ޗB}Yÿ;n$UsQ*YIk(J֖)*SbRSn2~S =E) | !/aapq r#O,xxNSTde֝AEO4P[%EV!cn1/WdD + >Ef`1C=$+zW+Gd{|teX i4V412һlHIEs\bm]_M$}F:Tn=/ X)<{'44N 2s%p6;'PO)VԩG^uUo؛;Oq ^ /;z{:tJs\&]v _u]hge5R;Ͳos@q\nL!I4vs qyn4VLDiV49f@+2 !C@+2 !C@+2 !C@+7KyH.w-i sI!V28f2$-Ih@eΗ^Ğvq^wE T&ֵz 8?οwE42Zv$TIJ"]ĺlj#;_[)cXۢ4M*Y@l>6@1~VQ[)=޲W+ճNߵlhMeN368x3{s̉]'dd;jKj4@8 "ֶKQpc+Vݷ"݇ )PY=@+;dލSb}{nYì?"V2~ʊ=džtg ͽ +LLzjW`X$}HM.ۆ?ƘS߬w`NW<"VX!PkDqU+,,gp,_aié]RmZ&'kկd |Z'^|~XUSǪ7G ޙf|gĹR/Yto&gűkՁ?E¹:fy1ýŝb 'DNgY߷`nxGVɏZg@QElql1)hqo+&Ѥݛ;ղ}n臘_+U$LfFTh؍R)kIoɋg낐c%_'N.Jȅ {` 4ѧ`'+P?^vS1k0;TfֵR7.ʿV26?yۤR-ޫ^]~yڵ+ -G;꯫_&9A TסS]j9B44UOQoh*t\$0la\V|~V`mٻT|=o_60SnMX\viwEV`nX0{b}`mz6#!'+8G #}[)l.\|"[B@<28w[*&XihuY({BsA4<_g\5o*[VR?rB}A?2dyڊ21qI4>֙RXfKU=kT!Vm !Ŗ@xTb"S=dxL:DUUl9i9&"YQriquXZm+Fs ??d!VrƅrΤլ E%K:Vd! AIݷReRO:yb> bK :S3v(VFGtT=E"m\1p~dlK{ +rC5l:aOG2&2^ݽ /ÖUꀷSIa@3[8#|LϫH;%TeJTVUnzʔ[/Ij炎hyQ9;BVYlUkh ٚ>wE dgs-'c+~C?z!E5{77;,_ 0 m!Ha97i'w̿G^Ik_ߩH}qYrTSg] }+2 !C@e >X!bl"[Bm'ִxb\Y5=4ŅծX)JK'AܹtqI+P2H+"V[@z mØAU& 񃮨PWl`b+ \4pԻ![~_o&WIV{Tcw,Mzݰn\ses#|~244,+wjiXs xMU[3Rh8!#`ۧbB6Fib+9/-%el}gfGs\hS,9j4"r>y٥T+ :ڨ+IKҒjS=} Rih`D?idlru1JE/%IjK+4h l舨-P{[ob4{A݋hM7ꦮ {ٲdkA>:zΦ4ʝzE/[DkU& e/>.GRn9/SFFF:::K^Sr?7Bv]$V'TZ.ZM-&TAq:K{0Hrɭ&7 TщHC'rD垣4SnSWo_{_?YBR>x_jҴ%=kok7cڊjQ/Z@WMS[K;+s}?l-l+n>Rc(wKsU q-βhF j-_J-F+'QieG˺뮻#xg_X#)A6侽LfSNJiڶ_?TIGS;ouΝ/]fqj5uѻSp9)ۖ]7r;;|&,7;W;re 7ܹsmKq^r3|~%} Yfѝ-tlwss=^_,*GnV勗2qUKb}~[ԓb=秈A,PbW}*clϞ<]g?-[:GO}k<,ѝ>B }cCCg{[(r3<=;vL?~ݏ~tΝo|AAԏMݶaŊàU矿7N}Pաj%uxq}z}睾ݷ:=r۲NڶcBѣVOψhN/~q$X{KݒRXHgӃX σdc08d}饲13g&:D;jN3';p@#qK6@n 2 +l+ƍK3'yc~ۯs'[m;aI/T;L Kt~.ոl>╹D`O)+k''&9zӦS7z , >7}yҥs|SE@-r0W =֭x_QQ ~݄F yǢˊ;Vp3'l.{ lR;wnpĉ 'n)577F02 ^Ѿe'y G†L/kq]?.Yzt4MoRy}WL`Z0k3zoee-Tvj(,:Ѳ{7`o?xsѦi]K^D0qhU{s`FuԊŏ?ȥUҶ!WǓY{O_mn6u`0NDcQKq}W,K—hcGx _Yo(qUUj&3U[^EX GpyXy)TӳW'OU KJ t*_ iu:پo4'/ZRɕ%/=qWvZd_q3)ơ%yV#.ry ' o۳#Auà$nZح(W'9j۵#cFI7ީNv "sCsM8u 2xVV ).XP=ݴZsm6~67E+R l@ݬ0vr~v7ڷOV!Va6)1qϪ/{NpoۻڏSa? xn*2G(%/Ñü"%<70,Uerz\wpD߼%:-\IHcW9l<85)M&2*ŕ HKӖm:.\1LG~FBJMҼ8{}gő_m~gb⧥:@2em_7ؖVGmU Ίzm ߓU[7ˣ5M%ryD@nN:2=ۧ44|?҄qe+5LRB'貵9=Hw e ӑ! wvk_ yWRydn ߡ8;K;Xk3]V0'>0ur陏Wqy9~G^ROO; V:߭s禂spOQ?N#YWNQیך&ݛ힦1ծ z1geal79Z>(+ Z"nXɲ'?)fNTgםt sI:Wm~zy~cUTJPz IpFn=vǬ҈.I8PEQgo9ѣs8{:Wusg%κswܘJY4'sG~1NiU K ny2AV6(^Ǩihqq=媄Ki}=dˋ;e\SV;mGɍqU{4D?O=tohLJs'zث{x nʇs rb@KBdjqă  ;aRTTtCͳPF f$=T yaH'85$hAùBB͜y}Cnxr͉M<>"!:M73IivO) +&W{+'OXbH6X%9p񩾡%jiӪFLHyG?vOuklZf\}ZK*^h%%9Ŭ6%(ъ7:Q(-[dr1QOdnI)ZSj6GzUq [;fZpD9kgQϔM`k~SƏhoő#'_Y5:'S퍵{,'c$VOΉf5*KYg}1yqu~Y8{7H܋, Dψ@~rִw ̈́Xq+lU{12卖152p }ʐV{V(L$8 7/ *[T*ag'-\oP8!Hy2tC\ 2<ٓde h !p؝@%++K,LjInB]; KDfPN@!Ht3p|':IPݦil'̽ wTv@҈ FH/A =X\PCah0ֲjuDV)ΡU05Iƅ+8t6ny~a_ {{ist[7Xl&E1Z#иX(UݒHAR # hSK$Uv e ={8%plJ5UJuӪVE+d˛xX$gh vG*\[ VttYzr[EuSBAnBܭ9zM;+̀ $Vx?.0,SH#n)yegƪ>6A{*iOu}'Yɉ d^a>W7@] P^D$niߧݱ^̉GbY[Г{y&BgG.A]02Jg]*inx4ޯ5uZrչ/FR v3엳Y|գ 'I z^>z5ɿ13դQ7t[yԂ+;B' דNT*&&yg@8nVfo>K.Ag28G&.|e>H]O4X0)EE/v{?^gf /W6p~FN]( Y琗yŮW_;}N;~ymc䲍X=iC_;xx`Bc5rVٵ1S$&luzj2j$nc~iiv˜E#r4*)pi:̓r庽5 ?M3@UO8ZNNvo pS˪k% | mu8;WpJX9]Z@[qHOq/7? GtH(Y\)[¼0[q-⍢8_%2 ٳLSuݏe+'9C}ӎ,yY'g6n".#$]sp53%\flV sU˞lnYSq盽R9S;U^n.R1qs7(*"bw持<Ao:vz5j#˲Kw6 >/Zx֝o諽}}t PܾD`&|nۧxWmxi= ̍ Tȿh Bd0yTVqte~\)&%&LNNiXZ!FP \shě() ,qc= :vVn +,)IR)s@4cg_cT*5{<\﯎54R˶2q]]D3sI6@wJoh$FXk%޹@GU ?gfμ'<@ B%h](.+ZV.`i½^AVR^47Q 3I duggޓ0C0&3ߏOq䲨 5ORTǏE:=7ʱInZGǜwƠOɧk8o>i.{|P-?RXH.aV(ܔDey%,cᝨm}C;1@EU_]؞%WiP|;@p8+jA}Sx]kyMU|V{onzVCZwn"n&^?gjA?.PWLrtdE]&̦I1^8Mr۬Mw^Y_>@,_" 7ʩ$ڒnyϾqH>bL$~tRwt/!BWF%Tz]cs @c?(Q^vOY"=t$ms.v.PK&EE6ܸT|'|fV|%!G\xŠel;\韖~-*Qg8pQM)6LRQg˥x *7X>(RfYYrdJ (fУ` *̂ҭ=2j6ytp-UG^pїgj\(wJZP@, c5JmIק8r~T &*_%qӨ<@SG~:[I0#SN /ykEA Bל=(*w52 S,/<% (Ѧ3)& 7NryOѳrĥ8i41lX6wV ;$#57ΦozYT^vd)~`h;.2UXuc+P獳|8t<+Ԥlǣ%{Ss3,oe_SWfɎ<ʷtaE]a<[-fÍ٥_D[\c W&9*Ehxh!n8sf^m2mjhfA1/E7};KJL-%YȖ+5usAFhpwۜſ8Z]nS'rV׶ YBSKó/A=|#u/w8m` !G E%-؝8 N's-Oa׆*̬7!TȭloVTMhגWQEMģ`@ 4%0AėqhB(vz%]fiYKטOa瘳?z\e.}{]q#h ؗaBbt A|ׁdVPPg[8J%1ֲ&f~'t7Û*F\D7€ m[!GAw+ZVy׍w+0FpG9h$:RHI+-j֛|;L7Jǂ=h3r(CG+t5Awq3IVhEe#pbˬOmvS;4k! ?U„c]R5pDێ [.c']ksŚ]h6Y7dxqۧ{vtF xT?섄&w>=Z+TTCqnh"{I b(6J& ۸f[&;^{$/m?~ϜU# ?&ΒʭVmm_OL2d?!ho'I2G.|}ƽbPٹ'k,{ Ze>M^LI~,??iAqDz"`R TN";P A:^,Nj0b||>iY/Ǧsܹx.^[ZZгN|%MHBjPPJ@hkp?)R;os$~lm]Y%_Npiǿ߶[c-%:wi7~,>iG~,CvtDp0j\|Nxp1gCqcv&nQklNV=N̔rC"@:=z?7w{?;߃ܲ~T3cD)xB( 3$XU3jlFÏMqE?a5kWMy̗m8ܓ[n\Fç;ej 7iɍGcp-k0 lI[9Mn&'Ï=`Jgo낇֧KK}%O΀XXBSY٪,^ǒVPZ>?q 6}dP4}_f9I1QX U毽wLO>@[E`oWD1~LA)CHD.k53ًߨ ‰3.TQ&@Y΃r\][Wn8Ec@z^ETc>)PT|t(Yh LaFnZcAY^ǒVUJ(Z(:I!~ ?Wn}}sC @$Z^HJ?M[("<5/?J/?+2hCe(םt-^UN&C-=rʽПKn䧆R山>&y,.c;5izM-E^I‹_:ؼU~Դ_Ip?M+w;$W2ўN VT2LEo8K6 KAqF׾z$s-vήl" yTVyQ:5ȒWrm>~T[uh+\c[Ӣf5l(36s˕m<T@ȟC"mEt ˦Ja҆zM| ,7C'/a/I^a]Ȥp.yfyhNB&nj-1\%MIJGQO5ʨ铆*a j!C(Q76[ۼ -$d-HxC.^cR~.GRLOrob ?F9tjtسHVm>~+P]AE8Nq $F/7nQ@5zy]&*l~^,Pte<+qp@ lTv*d dvggjv*Lfv+5{&0)WBHc -ξ[G-ٲb0[م$}tzޤܚ7:ޚ\nU^`Su~Ny ~,()B>bPEBHFWK_lR ?6)ir?%[w>16<_m:ORVG:񸃫.Tcp($V|u(n+emvAs2+`?%*AfJr^][mJk!wOZS> 8 _&+`Ѭ4Cqҿ4|%fy_̯Q~~//̪qʶ)з}DgF,`%EC=(/L{WI1~OYFM1;~lRwVut{k&n)3jr^~db]qChw'rЯ, Ip}=utz4:}A )Wŝ\ ies Ŏmdqtm[L>i5)(X- 4 _PsMNtR᷊pV92TVsov@bA{7, .jB>b ?Va/,{iݑUfݛ!q||?| %r<&~t@K@Y /W)-wW`fܐdڕ@5I5^y3?_jJ;pg}&^#Wɕ.![0Z& ɖ#ayfEh #Žw$~ "=Ylm [Q|^y֣KbF5[' =zhOfr[ YbTBCP(DY~{#rS3 ߿qS*x!8M~Huۈߟ==h'/`&ՄQQ+j~F ;/-)!R.8,i&iǕ3^Ņp{rV@!LW::X :܍Žd07 evB5b0B~2--I D:6rNH1 =(ay麑.jmQ z@&'wyYHZBzqn{iƨӚE]k nHՄ#`6 &(x5J :~{pet^Zۮӥ L:1-… b3nE~TM'}<2E9K~Ҏ9 ZAk:z1NC`%+O+QZ,0 x XqoosG7H|ޣ5Xofci׊pna=RܛFh'Jki;=q C'iIXXMdER y),&F{ }+L$碑+u]z3"i ձ\Sa,0)6wtsBs#r7g}%Xl`NEC5+|5Ggm~g >rZeNhOZC ״Y=<1uiB5' :p}F{SsJ@i9^&G`Uަ4X ߓᾔw.%hZ0uKݖ&2z;RЎ!rHgg'EQ MME eL3jݚt8нm۶QfϞ=cƄܜpRʪ;wn}`H!7r~5Soҹ2as%ݚ^dw,#½E{iK:3k>^ݭׯZ˗/EK4U:uj۶VkEA!}L>LʤLfΖƹL[9ԗ8w׮k׮t 8CTaQł2ǽNo]wGM>cS;(ʲ$.r޹S,,R,}/t\)]RE҈F[zܹ4{*ǒXhrk6s.GܔK㚤]%6b=9siJh8,#+/Ӷ}+WZU{\}N= "",/"ic2X9^ Ϟ}^z޼yW^rJC]y2QeM颶osg}b[fH(;?m]}}bEEVd..P7m:u)Wmn>}Ң(s62ι5e.QV+i$z{}'NtTTd&6]߮apŮB s!JwLVu9bx',^xLps΁+'o*Zlٻˋ3`@ q%;`VOϟ2%@Gdrӧ~2aǾ曖6\B={7onmmUS+vhDž_tgS -'K~O<ϯy衟٥k7kk7-]⫯nݮ{RK聹#SYɽEmVDJs9Ɲ9FX~O\Uٷo_^^ޜv9ǍWVV]؉.(Fud(e.2WcDD%ȕ[#͚5f3DNN%K8a_}Ur-};x 6RQ'Tɓ7nF)-USٮ'FrʼntaQي k. 38D=p6l̞6]mʥD)Lw.Awl5ltPキ1,XxqSa~pM=$˲bsơux ,N"~:~B: 'rds#mCTtUsDFEOan755!)(9y%g]x^;xG3E@>`*Mz]Ei(ωfEVkR> dl|@9 5u۰al<3 ˽T|zΡ e!'uu3YBWUn믽^޻Bd^υ{|)UcHreʙs B}V7n<9p0\k ru0֨(8mٲ)?]38h^Yy6ml޵kzpʺ ]i^V1*N*+Q)ji~q;=_3ŸOӤ39r 9C`?K8 xILbܨv\$ZUnn. E#D.CxM桂dK 4$%lV"h(W|1O3%Bt:eL:u?OET'FJ4ʃ&u뤌ިYbf[t9;!hO.*+ppw [&:|e>@ glJX*hOeZpMn3'''\FoXaʕ=zW*ihhXjEn6jqM'Ta,K__zkpn~|DqEC2RCh_VEYƾ4NJ ,*ŠލJ078J [f(x,.&Mݒ((BNtΚ臭R x$6 P`YbkvhEF8nXVW3r]&޽{MnR ǍǪjcǎM.7P/_(2J}0l\Y n&ma; Wx!)Y]]i&_I` ~رZet>!V+r8) 2pXEoFQtJ0MG~ȅEJΚ6 #L}}=sAd?8 G+a[i,P"N([& NLnݺ-Tr[ZZ ˏ?sI-XҸJiճ2,gϞ!!EKg˖-0~h\JOt_7==}=-?g]ӃnW1UBb&,`%|7%57ɲJ2 T|/M$IRzU$3k\),OOQHMbr+y=Շ+$@կqdG$kEݼPfl"#AկbX^yryX0` V0 b0`0+  K!ͮ_IENDB`jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/blue.png0000644000175000017500000006026311377161312021054 0ustar PNG  IHDRr,Q¯,tEXtCreation Timelun 12 mar 2001 10:01:12 +0100$tIME y pHYs  ~gAMA a` IDATxypU~_s$[bcp)RK(IH% PTnڭTmaf7VQ$dkc0!0ج .:FH{ahMon ѵU/o=3oLNm0N\}߿^dtyeIU(Hhl!LFRif"_;EۉEӃ~;, j(5t -"'Bd7Ff@jhU>/Z_Kn+#)XLm OZM=HfJuƲ [R5B={o5ch3zKDNT:2MR>1$FF+*T+3ƭQ#Z+;حd2'bE&0Ľ))$MgZĎX.4 9Պ+\&h!9džXv+"&5SX7Ao?G"Mw9]t8;/eU"3F󓪇r5"gפʃ^E&DNP4a(LBc4~ GNػ^%WXqBPlxnMPfBX"PJelivNLfʰym—˟h0d(du*bOD>C+m *XQ2_E.e+1b+Z R*b C+3 >C+3 >C+3 >Cp 1R[)E<ҿR+ZMtnJeQfO+HLid)}fZ`$¶U^ W4.b%DZ(x&^V jv%&EN]Q1.Pt\ )cB>׽FCň@ U⓻8nϔX5H\N- :AΨ*KyŦbwTʮPU'-HeROdи+iU K(ZH둒lFȜr#*383EjV%"+M!Dv'QΏS.UL) N=M++\*"MU$QYQU]GbdF+Yg*e'C$(XQ!Q-j}BQk3a !Y!=mvqL({.c؁Q/ݧbE6QՊf4vK:'[b A#&OI_v+QJn\ 1@~SkIR gp` tjQY]":A_bLڋM"bt9p[w4%Zg+= !!V`j<c+0Cr1934S(,l RJ6 lT!9<ʟUoN|YW0[ɊAo9csӆ~du]؊V*"ov.xűX ebVqKxg83n:?.!+Vce|'(d2 ׹%>b'UXi2'Ju;\p?1F#K=8n+u5Un$E09 ?!>E bW+?vdۤO ]Vt&yI"=S=,a* QgtZtعlPC]Ӽ!ѪTFyJřiZ(o?g"S+*J8_nv[2VhAsb%Rml!bAOYК!W905Xw\oQf蠕E9dE#)͏p54̋kcŊO|'A7sVg;A 񘞊ȀdI\M'Xxs[~CsL15QR\)K.}B/{{́(,V42u5hc}JW hb_G{םZޟ1WѮH|]MǶS7.fEc_CUvTӔܦ{Eы=m}?]w6Zy"VKdʾ}{x",2ʒW߫ |mYڹ9b e,#]˫][;jF >;C_t|_Ȧ#Mh=u/› Lzᅿ^>_X³yf {<V]%blޭhro=VDAxc]5ՆBvqƿG38r?}ឍq#"nWh Ⱥo]U]eδi~m5ohٶ;Y&SjkkEM曳OYƊ>L׽KjTYQǷ|X=- /w?睝3dEӵ;m[=pzh9bveӪܽRu̟oݲ3S -*rDɾ}sΑΜ9zp/4XYxʅmdTђڷ~rA;Ȕ /|Δk_ϚR);fvg!Y}oAMh-P﹵8p饗رWwӦ䭭{zw^};\ޱDsO'W73xo7vx~psss4%^y{]~ {l_(9r;kתTS ou9}{KοXQ^on|!B#:W>^\KoOkF۽)+Sgrȑ#vP.>]VQyԐbܾ[>$cf:m|a=_zi~{{9kuukяn޽_@5#cdrdbT<+;:/Ȕ-[xO%VxSW +x<_8u;xbݒ%QM˫zj[o2vejE'e򾝧TGǐpZoƦr;Wue_r!LseիsMEGBQ :Й%h `P W&ŞYC+1 jee3Ə wi .֝;k6o-0!Aᇓתr jըm*w]]{:lUc25gFNuEoz #`(M0<۷>3v+ pŊU<9lFbۻ݅@;m[.V`Vܒ\]О|Xtt/.{EmV=;;m̘q;!##s…)f'լ!'B{hfl  j ob1!oGRϕ+cc^ $m.?Ȱhqw7./[ٿ)!T*vO6jIUOp߬'0-rWqՎ!@Զ9À#zH;׹"SmESO7U:.' ߯Ϸ]?v/ݓcaV'PvMpUQ7[׾ZT5;kݶ[ieB$F.TN[.׆.鷩xpU_?;{Wj^B,(.Z+-.) M Ǘ8zG3OgrpZ}oKNJ^kȫpnEDs~F;]rSR He>\*;UۆH[,}k|)h(Wc=TN 1 MنaU> AVD:2F#.j_!<\aDb{wu~4?m\z_Jh%7+Wr&ܟvcgֿӧļzdz2X.TR@h! &F8ntW?| rc]+1pݳYޛI4FLaOZN^ernP 8oA}D}'dD7ϩ*4+|DϷe,tՑ={c=W-j] F0IBcӨ N!~rL=kJe@XOB~ߕQl PqQ?*ŧ3G>\ PyriZ~ft߽r~\οF nYU''dU_%GZ, /G@2?jiђ,Z>zw4>X71]扌5;=GO4B@Ce4)T&[/)?|wAJ_0CXa @>g%xD-^>~H,nHҶ Zp*%)Wsiyt}/xDY&,ۻ>.""~@)terj@Ԡ;DCslUk\)VN03*!IrFs fmZ&#ڻ?^?kFdhQ,G7@tar- ׳괓tٜX27)U/tb7~ dU ?:$##J3@{\YeS\!&YҌtpAxZ5py) >ƿ_q֔4XnSmۖdYZkL*Fؽ{7;y_!mr8]V[?^vM!7UO`}-p$ >AӼMӮ9oq\@ʾRIuFvAnw:Ot_N޲eʕ+Ŕ4ݴi藋BhyJ7 o/)剶LhIؑYp&l~H6dDZ raqr懍˿6dz[ܛˢI8a44Cǜs>h\0#FUTT(OX,\7 - ' {v5X={tɑe:eu$†u%B6xQG$3i*S=Y쳡*;zVAą;"KZ $:1ZWf9ؚ[m=P\0hB^f@vX@I򴗆*SqB[Q5SC9#SK;5:,uKbG\LQ4HZ-PBF5:uMPsc+/tUUUh;VPLI܃2P?t̂^"A=Uu&ZO/Ž鹽!@Pse;Qn~ orxP 9U=|9,1 \^?2"'6Qr Z[ܛFi'B m ڀrY Y|ZoQ¦`fÊj7aO|dsr)`ʜ";xJF٤PRCĝ$(.);*wD\閦拙TC R!FbJO*tUv1wdlc+5v\R~L6e.Wdf)23g6H5N)A"0)3rM ,1(FQqƎۂE[i]!T̪:sP P;Pwvv@ج{͛^ﷃoSq4,,]M77IcQqnt;8$Lfa]c~ŠI .6wPLqiDRF{,v@ np8vH[<-ٷ77E+M&jCnsv?uHc( MX ' gU pn@vhX3;Mg!' mG+;M.Y]w( @FdĂV"^% GIݟS # q):زh}FfާK>5A濔=Plũӓ*"\$ 1Xmo-h 8 uҺٺeۮ%$anC.ͲU1ŝ_|6i(-jc۫kw8I\7aORQC"o,?wf;Sn<3R 3?Z+4rQ]n&AI_o4j<A.~N'J!1,A(n bJaaaoDn|)p{@^?Pc,WuOPځ$$ɽwKN5Nc&muǺy?Xlz!o3,WjzGT`\TF[%g] fZ q\h4Y*Mu}NHN$ „# ȩ:xT~0,3Ȏή30x;Ȏ(M@r 4H;UU#t,W{}飯iTY) = .v72oZ0K :w+U,|wQ{͆!slCJ5(ۧ{jxܸ9Gz;^PUDͥI;֚à7ÿoxvLԷ?nܺķ~gsmӪ}?uރLM&qT¹ۧ02hV'س Ė Ά8 ?F[& M3Z-%铘=3)e2䤃s-{sw,x\)}O.Bud6%/Y R.>:%Og/ZRD‡si2Ė>TJ5(۞<e+cg. Y&k$SXaᓛjq 9pS!ȿ"~rZ$#s#QF.urkƧZ:DZ5E{|]4ᯱH!.XdPo| : 0ϻlSzsAb?YZ3+PҶPFgw7A `AJK b*Q+yl ;]n vdYӥ*s;+,^շ8?8dY{ǖ;d0?[U JK j$@7VJs1KGGg`-0'<v{ޗi:\2u2G,y+k;ym E϶4PJFFRy,Oeݦz;[lrouc ,̛@s Mx8׆#mJj~c@cOHFpCgͻ'+9GM[Q S &l{I{4ܠT?nt=U<)jTOrv_1+h|onRs;=1ªy_,Lk?ٖʕH[_IgL`3{Zn䀿:+tCF2zq[2} HH9 i@_5"VpQiH4` =&H\'}?WU-VNKcslkoEGW9 Vq<-(Nuq7U]ӽ2uj.hM 3â]R[' @#IT? Y`vy.&YAQLJԏphnj:f(<2As! N1<zܝ<:'qD酏B TT<<7J*}rɰ {.]r SHAeTw_8G q!K/0X@1>oID8I&xr U%Hs#pFdz*$ dꫩoH-R}/ ` Ml44\BQnsF_rkdfJ7zŰH!VAb5>CG=;D^z%'TAjznWut\쮔Gs< $ :ԫa'_r<{GYwbDEDž8$ Y pgҳ1npA.jmo碁SE;cy~цU9!JL`>E{j02cie(I==٥NcI FqrmE K?{`T/H ˠ}MlzH7g9&Dvq%WV}Y{ԭ0%+,S8-oj n0HKoCQ*HA͜77>@Ê+.?+w'M&}ڹMhЉ^}r 6@:ϞظF$k6iȳ 즌Kz 19I&Q# m,N6吢 Lqt{}s,Un8w>ڦLjM Y4ʲdE\%O(Ք+w+} k=[ R sPK;ѫsCec0dz~YYWopo.IPPK'ޭsBѣ\AOU6Jj="*'{$Sd׭\ @D50Cpu{r#Q'IIV,.QpjTDb^\Z;UuhBn KϽdrԚ D]RSס8蛚| kjmμ 언atBA+8_ԕ!؎m6ɦ?m3C$Xb׷D~ ?DZ[N T$p s;,vranpk.$:Opv$'Ul|ӯV |925atWSݱbY ]:SX"Z߻ 0l_Y,Bh<@Ԩefͪ> lUtt09'Q"c ^} rp[~16q;p>Q»v%,W~77B2s5B;˶ .ҏ~,AD5VsI 0c/vyC-F:XY*Bb.+wpc!;Qrcg6l9tsyʟ4Œ$0\ΈЙ^=E#^XZuEq7\ "رH\xwSt1GSϏ7M$ʭ~ +?t־ajMMτ_נ8оtWO3~xZS׶OUiYǘDԉ8-NM'a{Eo[x N̍ㄱo˃NQ^ ÏŎ;4l^;o^y[Oذf}e;1⥷kVWd%ǃKߊ-IYlzϊl';یTt9\^őd}!˘ @թrDq+ͧa +EmҞdǎG1 _ykzp/yѻSԂ}ĜRMJO$,*Ε3HȘ`Qr5Uuܤz?>"\RhS%V[| ϛ],i&s wMiӨ Bc}Yyr:U'./PdXu[fIZqi4v驌}z}\50dyԶ?R}j< Y `fԫ<܄K & (\1nׯw='WF/Ï58ۻHǹV38_yL8o#WKT"6Wy:XjtݬbMA9<ĈKFC훞{Ïy@DF }eh4ǖ?D/U]/l>s&}rM5.Ke5i ~ nR6}?Os8]zmM~{^<=w1IH*8JJ3 T[ ̜zT"f38I➅z-qItt"-U3J.7 sPhQcu#~lY^?3v\*7.Syً;s[DԟmqЗe+T׳\L J SXt@'7}ֈ/*@uc>SB܈*D2MtNf 0ɼUs笔O>PskI<;^uŇez| @ͫe#c\|ӏy?qG]X8 aQ2.7FyBޝww[U]NthNR]__ު?4)ΖjWjfv4ӏ [wk3۾yZ:>ťxO?<&닓0 oZ }Hq[DcO^W7 kCR. XdHhBciO?̧Z~E;/ʿ~ɧ+NpBo"i](JOe_9jQswV&x#M:vrZ suӿϿͧmƒtacqnoV90u(h$M*ף.~o_Àܦ7*NB.dcN,jZ @Vj-WзM? }Y!{˯I[O͍YFbV<+ipZ|:BzV *~/Ss?])31n׺m3LꚆ1h$ܑU_Sr[ҏ(vEtшlSR}ݜ0sr5+PjDut{O?u?;\n>lc~"} z'CwH?O8icP92Z,B/OG(OUo:G{ǖN久qơuޘ(׏A% *. N=sGc(d;3΂ &F5لg40 veY+s4Юt}l$׉r;xPq +ܻ0?SYQ*3 ɱZδW1KK<#ra$"hJ~,J3hY;_|8FL?ff0WF`"F ~-]YLIG0[tONsyz}Dzyt#rGU98{8r*qd$nuY}UG|E_NvG{xHZm]wXbiA[+LKl)Ae+k".(J9khFŵ ~a(M'ؐs#eҧVes\G^a71Uބ($˲7i(G'}=sӵxYa.NK4Io2KÊǤ)qb4dkU6"6RWt*(6C.bqx\=?t+F?+4,I3Q c[lL,߀[H‚IZN%_x}hÜ77!w_?>Xl\* BR[1Y  2VrqRRT2 X+,Ƒ Xʄ VZW0H$QѪfn {\UOi-є:`MKOa],A]\<Ɋpq.c|x?־"8ȫOVkEp?ŭB6?լƍݬYI,JX3qPǦdLi曨 W>rD 9!<1q{ rt>Т-Ri͊h5[O fd1gdR/@{&䒫-x||&tmDjos\JV/;tCh{vAG$WeL ܊aE 0Mede4 q[t=k s5A$|+| F[QTVc2'mb[yUp }(1#lRՄ$8o܉UǙ;N2ưj'ޙp%> Y1Z6a 47)AiHYkG +FoEe8˾[lX!TKL dozB(RRtO 8d[e֨V: cr,|Nl-ih(RwhuQ-t|14"HǵH %iΕ5R^P)LuC!BV(b"ꇓoXߺ͝\,*KӯͿ=CL9u%Dp%C7,TǀfLI I(e7_nŰۇUw:omy~ i&1f`FjCNlBޣ hUԙ3gЉ`d raEF F ڄ=rH]]^'"))i٥ p s6bJ98і ɍqi+=pK %%%MCm?aQ]yQ]dIaNGwUߐs@pd`h $ 7RQV|St}1ߥB0_G9Ҽ{nN~g͚鲓#| CD #L:{>u [^ްk׮ׯ3 òlMM M)Y ܻ;㡇x҂|_|E?<9-(B>|[SR];ĉk-T%%8.q,gV(PٗBC#J:LtB.pq+!GX6G޲!8%gRj ^h;x 6n,hlӟ>1cOO?4%eFRfY$J0$Rh:O>7ӷnݺtҎٳHMPp+Z[[|ybZH &Orfg'J%!"[Iyyqnn 6ZTTFjƸhyiu}F;MP­C+Bu:Ҟ)0.RdXZZ[^8,\4o69f%wrmm-?II;wAY֭?;}Kr}577C_ە+WpD1f⹺.+z3l?7>ȯyfۃwkcZC]-U}GQهGSٕcϰBb٬>W#=qJeeebb]% L*x#{E:{Bx,[(X@]!/"HRtXP/^p:ł$K)… O<Z|9cµmw;x|^x>;w Т-ѻ9|nl}jW} v&q1LO玨Q wx>s!G톦i|rbYXGEEE,8{,K&jR:Y};JoG⎘f[bŪU)IP̟+ j-l29ȅ;wDlI@c n}q7HRL`v& "IԔn ǻ:WJKKJhbӓk o.]\y5׿Z퍞*m~T4ʘ[ ǫ, j@3(IC@yG{+O<ݥƼi{s=*:fVw'P%IKmN2L+W\zIJwع;5Ǚ`B& +޽{p}vy8pGjnYҬ,BB N\YYn(_6)^{Xy'q{j\؈[pu7V@w= wd}͇n+*83(EA q="hDX,m$qa9,9c meM@n\ϵS!q @ ;:~G_aʼnFq4 hv$ """SX/tphßͳkrCph5)ం BQM-r)0&x̌wG#{AH bx ;x7gf2ô8~͖ɒ oX6f!N!%0!/SL֧ftI:J L RpY 6Klc`-{$KƺB~3;w{t/y y Dtcd"Zx^4E\n^XrupD˨7n$+W5鬡q Ni+XH bSP%uf|>>>D?^1c %2nG!Z_,-iA1=Ne)քcz7ctmzi6x$o0- RREеp Jշ7 ɇ҆!uNc4Ǐ-LDWnjYdcܟ޺2C=VZuY);vD#۷o֭!^.pJ6Py1 X\5YMCCRɋTfDOYמ)tN>NM]Uz6ۻvIKX&Jx<ڋG}\SB ap/6vd1nˣh~#ˈ+%+.UBzМ۝.< t_W]?v gҼ5^⼟QYSO75LͰ"RloeF2eoĔMR_*׆ϗ<xCpVe4[5=)@wf*TJI4grgb\Ng%1\٠Dt?iO9E6./{ l]l(E [N ZBiRtq՟Kn Nd(q9Lo.$bAR@j@|tbᐐx,ݙJnEzAذgiCY^d{ JOtr9%iVFJ`( EӜ“7w3[tYRVQi%ݩ%BgS;3+ t :3uQ^j>& z+ t :aNW~#tQuT VćID{h78`t(eoUO+hŠ%=~ZWD޶_ Y8$$ .VD(9Y".99.Ollg;1o"&10i`j)[ѰhlζMB $p|`ʷ7eddigN߲#&h=w7Ou@ +B'rwt%k'YEW1Ň$ [O9> 0y|ugEEܹU #޻w[o,4t3y;:ꫬr5q7qs: Ê۰v0͞) #JpmnDnkփ[h~0 Y/Z4?uhMMәk6x^d2kR\>W79{G}=u7o:7 ԰[y,&zm /V$_ܦtu_ad2'w#I[Q Z~ozG1-ՙE+3&vq!sbϲ5qkP)xX$ s0Řt;Eӈ+C%`Md:St(YeB!I#Gq)s1bM^P.JE/t5;F5 ӋO5^VL 3V+ 1̭'[@g 3V+ tS,aIENDB`jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/simple.xml0000644000175000017500000000532511377161312021430 0ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/mini.png0000644000175000017500000002734011377161312021060 0ustar PNG  IHDRr,Q¯,tEXtCreation Timedc. 24 oct 2007 09:44:24 +0100҆mtIME  93Y pHYs  d_gAMA a.7IDATxyսgzx<3{lc61Ƙ=\#$)J"%!$BAEBB!n揀o%z~'d1b1fs0c{}g:gk=ߏLS]Su;NNhΝ!?} 7"BixcZ>#@񍮮@=n+zkǁ/b{{֐ąwR֐B !gh+B|B !gh+7SB[!d.V!nBtMB !gh+8w'F SN@݃h+ﳨmo&bBW;Aw!>C[! m3BV!i{M[! m9a m3BH&tV!>C[! m3BH8uV!>C[! m3BV!>C[! m3BV!>C[! m3BV!>C[! m3BV!Ŭ i+B|BF[!m3BH&v' !gh+B= !gh+Lp ph+Bfq.BV!>C[!dS-m3BHGąB.oUF+䛢#BV Xh+Y2; !P m(VgB|B !g5BKN8{!iEC1zJ(ޯBrNʀ%h&BH?sz !dtlE)I6BO!$Vl?;3H%! V!>C[! m3wLbgffJJJ'PVVVptiiC.kKAv0wy/:> RSD"rKKJJ5 *>O0?Auݻw_j>SSSxEYm jj67`6#<(@{[[m]]UUX]UӑTWWrII[Ad1ⶂKLJk, Ë ,4g/>6JJCC.RUva:xa۶QJ>y;bƈ)lpޞ몪qӧ{zz,X|r`r9VF#h\T! ]ݶ)F|<3squ7&'a'Oܷo86l[Gz!(CHJ &Zqcӓ⽵ 3ߓ<ъhUYy9Zn.-[^Gܹso{w}a >P5B1z ^ZVV/~?,>21>^tq[ZZfڵ7tvr޽;v̶BKKKcc*b˶mۄu|R8ă>Ǯ]pnxf{XA,)N]qg4` !8Mxիtҗ|"\|WX$W1Ztr!1IC2B1Jy7.cIlp9δܿEkP`f!v>O7o,>*6` OOːϞ=p둑s=zv]wͱ4,G5Bl0{a8[)+AEѱ{n[ggC4^_e˖GLM'WM[pG-kTTT">?뙙ܧ?FO:mܸӳn:J<׌*C;YD"ľV3G)%iZŝIaxkбTLOvCHJVAzf(k#(nh+`qssWggtl V><ZU]RU!$%pcO|<3 oŶ$@&t۶UWTV665j:$D_>Ho+-J991K#\=~j:gfR*X49X{Uӑ޽;#Gg'yъK#(+=2!⫭dt#;TF崻 SYo544}#$qBFWX~ORjo޼9 ?RDhxx8':L23BVIIl_z ?}*d?Hvø$] ! iioTsB V~>袋nf ޿EDVhb|ܶ O>u뭷 l(LIak׮]bUI̙3W\qG^'_ȑ#7n,ӧLVKR: (EZ)5?*cZV^^RRbDoٲ5 }93w#16bR@xJu]rJ,imm׿5S5(mũ 8jt?ՙ>r/vw,[8)1uYȁM } D"QAaKlgy'=fUlH$c\:҂7N7te޽;v>EtlV7x#;-=]LpY2Y$BNe={vvA r=477IXx 78aH8Q!AYb=)YZ7M4MDc Q'<86665梀j(饗^?mK u= wy'tY1ad 0SoߎK< {s=t)\gQA`5K'% ƃ*['N@%+%B Ç#N+ZF2RD%zR\aVh;^zHΎZBt*,tAáдj(G!:/sn?a۶mh5>uQ@bӦM&OYe Ywn ߷o_|Hnev׋/u…Ǵ$O.ٷ `>D%{A՚ĥGP.. ƭUA":8q凚ËZR~_׶6I:ʀo6Elo|fƍH{qUWSlقWŋ`̢(FO)ЛʶVHѺؽ{71Z ̗_~9jTMM׃THfR0%7oZu` uuu xT+WlÄrMm0 _gTpH4 O>?QàKJccc{4:91֫ ܺu+j2 ׯ,Y5s159YRZ5_z7-Z$ ywQ:ud ˀ%\V^hKI63SVZ%[TM&Szzz֭['Vm.ёIL r_gP__L.36jp1ݽ@1\_V||^![iZ5 =hб^gu + ր~T VTV !Rwt77WUW*> X +{W&8(P|*ܹSO|U8L-5ReTc׭??vaY8\QY$X3)0NcŗWT |իWY8gt'Kd"9&>dDTɉ}(x|Y!BO'PZWlɾ DY9r9]Tk a/{} ΢vJzb+[ Ul:,)5tyi)?)DLcU5f7>FYRD2ضE@yj X-eD.[Zr9TV2;ef@Afϑ{a  bF-8 bPb,;J,ON#()2_pU4}yߨ c4?%+\Yr2^MpN8MN:tM۷o>O}62]K(AO L8&!6O#0$ |ʹܥD+;>CLLLL8+6@ Bz3#z1rS f{gt:Gl*ъ8_cW_}=\ve7Ϝ9#?d"q*v޽9 zzzlb12hzm뭷z)e`ClnkN 'NO~%ǎw/%Ï?G̤{J,yz mvUxʿ>cwͷn.tI3D[17۷c[n_">9mkV[[ oF{챋.ܹsϟ7+b.e@sС|#2H!6H<77&sNDmX299ݤѣG;::L ie/)"x+eKWvtyȂ*6F1 .m#555h}Ǐ?<+cuި]Ś{Œ?uuMMM^|7|Sh D9D eqR+3<Yaxկ~֓cfnbz>SEtISc2Roc/ .Y/-q[d6 Gw GӲ˼)|[OqFS8pv|:a(66 7oъR}+[˪D+2|JP{ۜpB\CDֳ !{_^ CJHA h+]puppz7ki}h4͗?M:Фfb*ъYo\zaO?K/}ݲvY[GGG7he:yvBȪPQQq{Kcux),wWCИV~gvE?@EM)Z [@\Hj<(#3A_7~Ohe/wUk3g|߸ktuu:_y˱o+S*%SObk b:^ Ρ-[<4>L(Ĥγ;wXG?BTtRD%h֢0x{n*ʼOØA8ᣇeJwF[1?v}722r_W8{;vE{:< `?Ə<*[oGBlV"iiikKE_7k֬&r&xμOTD:V$: jok)ڵ'ܼyJ)/[\61L ׿7v 3xW>z,Ë/x7Yet) 1%F(++S}&HKމ7mj*}'Hdlڴ?D/V2Pfsz}ݙedžQjVH|D]LԌSP)8//U gΜφF]7+JːZaj*I6e DAe1WъZ:;cc*B%7aWF"2(d``l@?[}S7?V*Cz5Cpe Dh\8>`9~Lz-!n+EsM9) $Xra+Ќ#-R)DTcFGg˸j]$8X̤04CTU-X e $KprDyy@cw6Cbpii]})< #2[,#}+%%sz#h6|4JB!qNYoQ1דBeȧ!J"D_xŠM[hQEEL.mU@ӝ\[ZZVX+d_<+"ъ8җ%AsuN̆#'7*LNN?~ u|ʕXEDT+6@ !WT___߇~nk׮&C>^ gΜ,ZK/Eg϶'R*HP;::.2r }Qss… 022`~kk+$8  E+-a|,[/?}4*m6[pؘިZ~z\kjjˠZSDd4 Ar` d(^lڴ 1נm۶!BPc^{ Eھ}QG=tyUle&++-M; RI"~23UXŋWVVJwpW/AȘ0 HY.KP bnJ׶6qb_ -%b+KYRw:uĚ;% vИ*3$^K(>cR@]={4b W ]DnR[[7]]]GKEd1`:K8d 9#04MOhwEs@LVO7lb |Ѻu뚚D!k!SAn);)`> -W^yN`r}x]f ZUpٞZ QU}:dN044CdF?8DGhˆ5YM Q^Xti0̋^{СcTX_`_BR_zwSd*,߲e n+.Xd#FUtpرJl<5`"/T__KB 1q|(Ƥ`beTicã*93# 󭭭W^y%Tm¥|"<]{ >bJYB!Ǵ9^=0ԝ mmccczAcꫯ~7pGD/^lXYl(1) ǎF4T?0#bmݺMωAVX|rq%N u^:L0@H8*;qAD,YheժU֕ccXY XQeUh;{ɴ\|r`УBcֽ $XTy&H欟XhтZk5ɨuċV000033VB;yrW)A4T"gLy_bK4hzhtي>T_" |0g+*ؗ p8lRJUtXD`eU h+ꪪD j0嬷ͼBUؓ2PP)虙⦆$rc+pAggDRUѯie`KzJ!AS:oX[pDQ?E bPbr1cߋt|&Ht RkUvtt#ÆBT_!2_IoBHzfCCC ]UUe lbFyTMLc0knnWx賰a#RAfuRrی ?!Jr9M.]*oeѨ_UVﱤ{ѢEҚ-ki e\(D^ c񦯯O<̈́% ..H2)8Nmk׮\!|ĉ2{jR@/^:ZK]. y|'"7:A 9Dl[4 @ha!%0ox KULm * .0%K|SZlY[[bRlfxX} jlxYQM6hyW@',Z ljhI? * AJ_D/NQA΂(;vvvUEƏ ɖeVXDR΂*DēX(,1@NbRA=<6ͬh򞞞~TBѣS2R\t061vFdEFGG{{{kkkey/"gYAFfp5Ejc#EAnO k3IqMccV?evpE!}DsɡwʀW|*,Ooe ~]N=%S# E+gϞEr\/}}}X*ئ>XR :ЋjQeߊIKEeU@Q$Iܺ{Z:RF;(O0bǃ\SN<5䨯GY#D\ wL`C,rʅ`2J2~QAt V2yx#הE^ȉM &IA"!xDsB Ua\QYp!L$rD\ {L FStC24E. CCC `+FHWFð=Ϊ؊_{ŅZ ?<J]bcEK4\l\F:R*IA|dV 8%⤠"1ѳzgd0qW%k~' =o1l ٗ! ϞD/w*b+~=%_l4Jي(\~Nu 2{fʙl%S*OL[Cd`[?: hKn.ZN̜:y^_!1ݶyVr㸁Ғ^Mʳ֒#;FxdJcJßn0)a[ΓxԭE1` x e;JCRf i(3meπ%*yqi+q*i=e e; [Q[DA2ub}ޘ_8ab:g 9O$\g> xorV)>7B! FPV!i|0+RHއ& 9E\h"'}+V!Da4|A=eAyd+;AB|&.,Pe 0J&BS:"jCُ"]i/لu!HaطR|rxo0B|w!>C[! m3Bϔ#.!x"oBQB|B !gh+8X@IENDB`jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/skins/orange.xml0000644000175000017500000000703111377161312021406 0ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/0000755000175000017500000000000011377161312017726 5ustar jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_el.properties0000644000175000017500000000222111377161312025062 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=\u039F\u03C1\u03B8\u03BF\u03B3\u03CE\u03BD\u03B9\u03BF|\u03A4\u03C5\u03C0\u03B9\u03BA\u03CC\u03C2 \u03C3\u03C7\u03B5\u03B4\u03B9\u03B1\u03C3\u03C4\u03AE\u03C2 \u03BF\u03C1\u03B8\u03BF\u03B3\u03C9\u03BD\u03AF\u03BF\u03C5 @JigSaw=\u03A0\u03B1\u03B6\u03BB \u03BC\u03B5 \u03BF\u03C1\u03B8\u03BF\u03B3\u03CE\u03BD\u03B9\u03B5\u03C2 \u03B5\u03BD\u03CE\u03C3\u03B5\u03B9\u03C2 @TriangularJigSaw=\u03A0\u03B1\u03B6\u03BB \u03BC\u03B5 \u03C4\u03C1\u03AF\u03B3\u03C9\u03BD\u03B5\u03C2 \u03B5\u03BD\u03CE\u03C3\u03B5\u03B9\u03C2 @ClassicJigSaw=\u03A0\u03B1\u03B6\u03BB \u03BC\u03B5 \u03BA\u03B1\u03BC\u03C0\u03CD\u03BB\u03B5\u03C2 \u03B5\u03BD\u03CE\u03C3\u03B5\u03B9\u03C2 @Holes=\u03A4\u03BF\u03BC\u03AD\u03C2 jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_pt_BR.properties0000644000175000017500000000130511377161312025472 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Retangular|Formatador retangular padr\u00E3o @JigSaw=Quebra-cabe\u00E7as com uni\u00F5es retangulares @TriangularJigSaw=Quebra-cabe\u00E7as com uni\u00F5es triangulares @ClassicJigSaw=Quebra-cabe\u00E7as com uni\u00F5es curvas @Holes=Cortes jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_fr.properties0000644000175000017500000000127511377161312025101 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangulaire|Pieces rectangulaires classiques @JigSaw=Puzzle \u00E0 jonctions rectangulaires @TriangularJigSaw=Puzzle \u00E0 jonctions triangulaires @ClassicJigSaw=Puzzle \u00E0 jonctions arrondies @Holes=Formes personnalis\u00E9es jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_de.properties0000644000175000017500000000125711377161312025062 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Rechteckige Standardformen @JigSaw=Puzzle mit rechteckigen Verbindungsteilen @TriangularJigSaw=Puzzle mit dreieckigen Verbindungsteilen @ClassicJigSaw=Puzzle mit runden Verbindungsteilen @Holes=Einkerbungen jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_nl.properties0000644000175000017500000000122411377161312025075 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rechthoekige|Standaard rechthoekige vorm @JigSaw=Puzzel met rechthoekige gebieden @TriangularJigSaw=Puzzel met driehoekige gebieden @ClassicJigSaw=Puzzel met gebogen gebieden @Holes=Openingen jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_es.properties0000644000175000017500000000124311377161312025074 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Recortador rectangular est\u00E1ndar. @JigSaw=Encajes con uni\u00F3n rectangular @TriangularJigSaw=Encajes con uni\u00F3n triangular @ClassicJigSaw=Encajes con uni\u00F3n ovalada @Holes=Recortes jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_ru.properties0000644000175000017500000000256511377161312025123 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=\u041F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u044B\u0439|\u0421\u0442\u0430\u043D\u0434\u0430\u0440\u0442\u043D\u044B\u0439 \u043F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u044B\u0439 \u0444\u043E\u0440\u043C\u0438\u0440\u043E\u0432\u0430\u0442\u0435\u043B\u044C @JigSaw=\u041F\u0438\u043B\u0430 \u0441 \u043F\u0440\u044F\u043C\u043E\u0443\u0433\u043E\u043B\u044C\u043D\u044B\u043C\u0438 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F\u043C\u0438 @TriangularJigSaw=\u041F\u0438\u043B\u0430 \u0441 \u0442\u0440\u0435\u0443\u0433\u043E\u043B\u044C\u043D\u044B\u043C\u0438 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F\u043C\u0438 @ClassicJigSaw=\u041F\u0438\u043B\u0430 \u0441 \u0438\u0437\u043E\u0433\u043D\u0443\u0442\u044B\u043C\u0438 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u044F\u043C\u0438 @Holes=\u0420\u0430\u0437\u0440\u0435\u0437\u044B jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_gl.properties0000644000175000017500000000124611377161312025072 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Recortador est\u00E1ndar rectangular @JigSaw=Encaixes con uni\u00F3n rectangular @TriangularJigSaw=Encaixes con uni\u00F3n triangular @ClassicJigSaw=Encaixes con uni\u00F3n ovalada @Holes=Retrincos jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers.properties0000644000175000017500000000121011377161312024377 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Standard rectangular shaper @JigSaw=Jigsaw with rectangular unions @TriangularJigSaw=Jigsaw with triangular unions @ClassicJigSaw=Jigsaw with curved unions @Holes=Cuts jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_it.properties0000644000175000017500000000121411377161312025077 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rettangolare|Pezzi rettangolari standard @JigSaw=Puzzle con unioni rettangolari @TriangularJigSaw=Puzzle con unioni triangolari @ClassicJigSaw=Puzzle con unioni a curva @Holes=Ritagli jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_ca.properties0000644000175000017500000000124311377161312025050 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Retallador rectangular est\u00E0ndard. @JigSaw=Encaixos amb uni\u00F3 rectangular @TriangularJigSaw=Encaixos amb uni\u00F3 triangular @ClassicJigSaw=Encaixos amb uni\u00F3 ovalada @Holes=Retalls jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_ast.properties0000644000175000017500000000123211377161312025252 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Recortador rectangular est\u00E1ndar. @JigSaw=Encaxes con xuntura rectangular @TriangularJigSaw=Encaxes con xuntura triangular @ClassicJigSaw=Encaxes con xuntura ovalada @Holes=Recortes jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_pt.properties0000644000175000017500000000123211377161312025106 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Rectangular|Encaixe rectangular @JigSaw=Encaixes (conex\u00F5es) rectangulares @TriangularJigSaw=Encaixes (conex\u00F5es) triangulares @ClassicJigSaw=Encaixes (conex\u00F5es) curvos @Holes=Recortes jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_cs.properties0000644000175000017500000000137011377161312025073 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Pravo\u00FAhl\u00FD|Standardn\u00ED pravo\u00FAhl\u00FD tvar @JigSaw=Skl\u00E1da\u010Dka s pravo\u00FAhl\u00FDmi d\u00EDly @TriangularJigSaw=Skl\u00E1da\u010Dka s troj\u00FAheln\u00EDkov\u00FDmi d\u00EDly @ClassicJigSaw=Skl\u00E1da\u010Dka se zak\u0159iven\u00FDmi d\u00EDly @Holes=\u0158ezy jclic-0.2.1.0.orig/src/extra/edu/xtec/resources/shapers/listshapers_eu.properties0000644000175000017500000000124711377161312025102 0ustar # List of currently registered types of shapers for JClic activities. # All JClic shapers must extend edu.xtec.jclic.shapers.Shaper # and must be accessibles to the JVM classloader. # List format: # full_class_name_including_package=shaper_name[|shaper_description] # The symbol "@" can be used in place of the standard package name: "edu.xtec.jclic.shapers." # Example: # com.acme.jclic.TestShaper=Acme test shaper|This shaper is just a test... @Rectangular=Laukizuzena|Piezak laukizuzen estandarrak @JigSaw=Puzzle-piezak laukizuzenen bidez lotuak @TriangularJigSaw=Puzzle-piezak hirukien bidez lotuak @ClassicJigSaw=Puzzle-piezak kurba bidez lotuak @Holes=Errekorteak