From 9df1262e560586efa78a66ab97a9ecdc1623108d Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 13:16:08 +0100 Subject: [PATCH 01/35] Todo list updated --- TODO.md | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/TODO.md b/TODO.md index 1ef84af..a021c51 100644 --- a/TODO.md +++ b/TODO.md @@ -1,3 +1,31 @@ - * Logger button in menu - * DONE Splashscreen at the beginning +TODO +========== +Learning features +-------- + * Auto leveled progression + * Profile management + * Advises tools for learning + * Impro tool + * Chords learn tool + +Technical features +-------- + * Import other format in Exercice + +Debug features +-------- + + * Logger button in menu + * Log version runtime + +Eye candies +-------- + * Splash screen menu item in 'apropos' + * All colors in calao.properties + * Colors menu options + * A calao icon + * Ended calao picture for splashscreen + * Loader bar + * Own Calao font + * Own Soundfont From a0883928780724cc028e4b8d84f535029cf4f6c3 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 13:19:04 +0100 Subject: [PATCH 02/35] Default properties updated to use new key/value for color conf & debug --- calao.properties | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/calao.properties b/calao.properties index 9002042..4ae24d7 100644 --- a/calao.properties +++ b/calao.properties @@ -1,38 +1,43 @@ -#Tue Jul 21 00:45:30 CEST 2015 +#Sat Feb 20 12:51:58 CET 2016 +inputDevice=MIDI,0 ClefC3Lower=47 ClefC5Lower=47 -inputDevice=MIDI,0 ClefG2Upper=77 ClefC2Upper=71 ClefF4Upper=57 ClefC4Upper=64 -3_4_Note=0 -timeSignature=0 -quarterNote=0 +colors.button.label=\#000000 +colors.button.background=\#b77128 +colors.button.mouseover=\#d28331 +colors.foreground=\#000080 +colors.background=\#b3a88f +colors.menutitle=\#999999 +3_4_Note=1 3_8_Note=0 +timeSignature=0 +quarterNote=1 language=fr -halfNote=0 +halfNote=1 wholeNote=1 -ClefG2Lower=64 +accidentals=6 outputDevice=Java +ClefG2Lower=55 ClefC2Lower=55 -accidentals=0 ClefF4Lower=43 ClefC4Lower=50 -color=\#-16645630 saveStats=0 -voice3=C4 +voice3=NONE voice2=G2 clickAccents=0 transposition=0 eighthNote=0 -voice1=G2 -voice0=C1 +voice1=C3 +voice0=G2 instrument=0 latency=0 -keyboardlength=73 -ClefC1Upper=67 tripletNote=0 +ClefC1Upper=67 +keyboardlength=73 clefsMask=127 ClefC3Upper=67 ClefC5Upper=62 @@ -40,3 +45,5 @@ silenceNote=1 showBeats=0 ClefC1Lower=59 keyboardsound=1 +calao.debug=true +# B8D8FF \ No newline at end of file From 38e0b244d58f45b70d3a51e31d73c62554918532 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 13:27:59 +0100 Subject: [PATCH 03/35] remove unused item in resources/calao/old/* --- docs/setup-calao.nsi | 285 ++++++++++++++++++++ src/main/resources/calao/old/about.png | Bin 920 -> 0 bytes src/main/resources/calao/old/correct.png | Bin 827 -> 0 bytes src/main/resources/calao/old/edit.png | Bin 3254 -> 0 bytes src/main/resources/calao/old/exit.png | Bin 814 -> 0 bytes src/main/resources/calao/old/home.png | Bin 3365 -> 0 bytes src/main/resources/calao/old/icon.png | Bin 312 -> 0 bytes src/main/resources/calao/old/internet.png | Bin 1050 -> 0 bytes src/main/resources/calao/old/language.png | Bin 903 -> 0 bytes src/main/resources/calao/old/listen.png | Bin 3081 -> 0 bytes src/main/resources/calao/old/microphone.png | Bin 884 -> 0 bytes src/main/resources/calao/old/midi.png | Bin 724 -> 0 bytes src/main/resources/calao/old/playback.png | Bin 3412 -> 0 bytes src/main/resources/calao/old/prefs.png | Bin 967 -> 0 bytes src/main/resources/calao/old/refresh.png | Bin 2618 -> 0 bytes src/main/resources/calao/old/stats.png | Bin 590 -> 0 bytes src/main/resources/calao/old/stop.png | Bin 2998 -> 0 bytes src/main/resources/calao/old/warning.png | Bin 953 -> 0 bytes src/main/resources/calao/old/wrong.png | Bin 958 -> 0 bytes 19 files changed, 285 insertions(+) create mode 100644 docs/setup-calao.nsi delete mode 100644 src/main/resources/calao/old/about.png delete mode 100644 src/main/resources/calao/old/correct.png delete mode 100644 src/main/resources/calao/old/edit.png delete mode 100644 src/main/resources/calao/old/exit.png delete mode 100644 src/main/resources/calao/old/home.png delete mode 100644 src/main/resources/calao/old/icon.png delete mode 100644 src/main/resources/calao/old/internet.png delete mode 100644 src/main/resources/calao/old/language.png delete mode 100644 src/main/resources/calao/old/listen.png delete mode 100644 src/main/resources/calao/old/microphone.png delete mode 100644 src/main/resources/calao/old/midi.png delete mode 100644 src/main/resources/calao/old/playback.png delete mode 100644 src/main/resources/calao/old/prefs.png delete mode 100644 src/main/resources/calao/old/refresh.png delete mode 100644 src/main/resources/calao/old/stats.png delete mode 100644 src/main/resources/calao/old/stop.png delete mode 100644 src/main/resources/calao/old/warning.png delete mode 100644 src/main/resources/calao/old/wrong.png diff --git a/docs/setup-calao.nsi b/docs/setup-calao.nsi new file mode 100644 index 0000000..a2baf64 --- /dev/null +++ b/docs/setup-calao.nsi @@ -0,0 +1,285 @@ +Name Calao +BrandingText "$(BRANDING_TEXT)" + +# Directories +#!define FILES_DIR "${NSISDIR}\..\tmp\${LOWERNAME}" +#!define DIST_DIR "${NSISDIR}\..\dist" +#!define RESOURCES_DIR "${NSISDIR}\..\resources" + +# General Symbol Definitions +!define COMPANY Colombbus +!define LOWERNAME calao +!define URL www.colombbus.org +!define REGKEY "SOFTWARE\${COMPANY}\$(^Name)" +!define REGKEY_LAUNCH "${COMPANY}.$(^Name).1" +!define VERSION ${VERSION_NUMBER} +!define EXTENSION ".tgr" + +# MUI Symbol Definitions +!define MUI_ICON "${RESOURCES_DIR}\${LOWERNAME}.ico" +!define MUI_UNICON "${RESOURCES_DIR}\${LOWERNAME}_uninstall.ico" +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_LICENSEPAGE_CHECKBOX +!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM +!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup +!define MUI_STARTMENUPAGE_DEFAULTFOLDER $(^Name) +!define MUI_UNFINISHPAGE_NOAUTOCLOSE +!define MUI_ABORTWARNING +!define MUI_LANGDLL_REGISTRY_ROOT HKLM +!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY} +!define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "${RESOURCES_DIR}\header.bmp" +!define MUI_HEADERIMAGE_UNBITMAP "${RESOURCES_DIR}\header.bmp" +!define MUI_FINISHPAGE_LINK http://${LOWERNAME}.colombbus.org +!define MUI_FINISHPAGE_LINK_LOCATION http://${LOWERNAME}.colombbus.org +# Ne marche pas ?? +!define MUI_WELCOMEFINISHPAGE_BITMAP "${RESOURCES_DIR}\side.bmp" + +# Included files +!include Sections.nsh +!include MUI2.nsh + +# Reserved Files +!insertmacro MUI_RESERVEFILE_LANGDLL + +# Variables +Var StartMenuGroup + +# Installer pages +!insertmacro MUI_PAGE_LICENSE "$(LICENSE_TEXT)" +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH +# Uninstaller pages +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +# Installer languages +!insertmacro MUI_LANGUAGE English ;first language is the default language +!insertmacro MUI_LANGUAGE French +!insertmacro MUI_LANGUAGE Spanish + +# License texts +LicenseLangString LICENSE_TEXT ${LANG_ENGLISH} "${RESOURCES_DIR}\license-en.txt" +LicenseLangString LICENSE_TEXT ${LANG_FRENCH} "${RESOURCES_DIR}\license-fr.txt" +LicenseLangString LICENSE_TEXT ${LANG_SPANISH} "${RESOURCES_DIR}\license-es.txt" + +# Texts +LangString FINISH_TITLE ${LANG_ENGLISH} "Setup completed" +LangString FINISH_TITLE ${LANG_FRENCH} "Installation terminée" +LangString FINISH_TITLE ${LANG_SPANISH} "Instalación finalizada" +LangString UNINSTALL_LINK ${LANG_ENGLISH} "Uninstall $(^Name)" +LangString UNINSTALL_LINK ${LANG_FRENCH} "Désinstaller $(^Name)" +LangString UNINSTALL_LINK ${LANG_SPANISH} "Desinstalar $(^Name)" +LangString FINISH_CONTENT ${LANG_ENGLISH} "To start $(^Name), click on the Start menu -> $(^Name).$\r$\nYou can also click on the shortcut $(^Name) on the desktop.$\r$\nFor more information, you can go on our website : http://${LOWERNAME}.colombbus.org" +LangString FINISH_CONTENT ${LANG_FRENCH} "Pour lancer $(^Name), cliquez sur $(^Name) dans le menu Démarrer -> $(^Name).$\r$\nVous pouvez aussi cliquer sur le raccourci $(^Name) sur le bureau.$\r$\nPour d'autres informations, vous pouvez aller sur notre site http://${LOWERNAME}.colombbus.org" +LangString FINISH_CONTENT ${LANG_SPANISH} "Para iniciar $(^Name), clic en el menú Inicio -> $(^Name).$\r$\nUsted tambi�n puede hacer clic en el atajo $(^Name) en el escritorio.$\r$\nSi desea obtener más informaciones, usted puede ir a nuestro sitio web http://${LOWERNAME}.colombbus.org" +LangString FINISH_BUTTON ${LANG_ENGLISH} "Finish" +LangString FINISH_BUTTON ${LANG_FRENCH} "Terminer" +LangString FINISH_BUTTON ${LANG_SPANISH} "Terminar" +LangString BRANDING_TEXT ${LANG_ENGLISH} "$(^Name) Setup" +LangString BRANDING_TEXT ${LANG_FRENCH} "Installation de $(^Name)" +LangString BRANDING_TEXT ${LANG_SPANISH} "Instalación de $(^Name)" +LangString LICENSE_TOP ${LANG_ENGLISH} "Please read and accept the following license:" +LangString LICENSE_TOP ${LANG_FRENCH} "Merci de lire et d'accepter le texte ci-dessous :" +LangString LICENSE_TOP ${LANG_SPANISH} "Para instalar $(^Name), debe leer y aceptar las condiciones de la licencia:" +LangString START_MENU_TOP ${LANG_ENGLISH} "Select the Start Menu folder in which you would like to create the program's shortcuts:" +LangString START_MENU_TOP ${LANG_FRENCH} "Choisissez le répertoire du Menu Démarrer dans lequel vous souhaitez mettre le programme :" +LangString START_MENU_TOP ${LANG_SPANISH} "Seleccione la carpeta del menú Inicio en el que desea poner el programa:" + +!define MUI_FINISHPAGE_TITLE "$(FINISH_TITLE)" +!define MUI_FINISHPAGE_TEXT "$(FINISH_CONTENT)" +!define MUI_FINISHPAGE_BUTTON "$(FINISH_BUTTON)" +!define MUI_LICENSEPAGE_TEXT_TOP "$(LICENSE_TOP)" +!define MUI_STARTMENUPAGE_TEXT_TOP "$(START_MENU_TOP)" + + +# Installer attributes +OutFile "${DIST_DIR}\${LOWERNAME}_${VERSION_NUMBER}.exe" +InstallDir $PROGRAMFILES\$(^Name) +CRCCheck on +XPStyle on +ShowInstDetails show +VIProductVersion "${VERSION_NUMBER}.0" +VIAddVersionKey /LANG=${LANG_ENGLISH} ProductName $(^Name) +VIAddVersionKey /LANG=${LANG_ENGLISH} ProductVersion "${VERSION_NUMBER}" +VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyName "${COMPANY}" +VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyWebsite "${URL}" +VIAddVersionKey /LANG=${LANG_ENGLISH} FileVersion "${VERSION_NUMBER}" +VIAddVersionKey /LANG=${LANG_ENGLISH} FileDescription "" +VIAddVersionKey /LANG=${LANG_ENGLISH} LegalCopyright "" +InstallDirRegKey HKLM "${REGKEY}" Path +ShowUninstDetails show + +# Functions +Function "JVM" +ClearErrors +ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" +ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$1" "JavaHome" + + ${Switch} $LANGUAGE + ${Case} ${LANG_ENGLISH} + IfErrors 0 NoAbortEn + MessageBox MB_YESNO|MB_ICONQUESTION "Couldn't find a Java Development Kit installed. Before installing you must install the java environment : See www.java.com. Do you wish to continue ?" IDYES +5 + Abort + NoAbortEn: + MessageBox MB_YESNO|MB_ICONQUESTION "This will install $(^Name). Do you wish to continue?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_SPANISH} + IfErrors 0 NoAbortEs + MessageBox MB_YESNO|MB_ICONQUESTION "No se ha podido encontrar un kit de desarrollo de Java instalada. Antes de instalar debe instalar el entorno Java: www.java.com Ver. ¿Desea continuar?" IDYES +5 + Abort + NoAbortEs: + MessageBox MB_YESNO|MB_ICONQUESTION "Con esta acción se instalará $(^Name). ¿Desea continuar?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_FRENCH} + IfErrors 0 NoAbortFr + MessageBox MB_YESNO|MB_ICONQUESTION "Il n'y a aucun environnement JAVA sur votre ordinateur. Avant d'installer $(^Name), il est recommandé d'en installer un (que vous pouvez trouver sur www.java.com). Etes vous sûr de vouloir continuer ?" IDYES +5 + Abort + NoAbortFr: + MessageBox MB_YESNO|MB_ICONQUESTION "Ceci installera $(^Name). Voulez-vous continuer ?" IDYES +2 + Abort + ${Break} + ${EndSwitch} +FunctionEnd + +Function .onInit + InitPluginsDir + !insertmacro MUI_LANGDLL_DISPLAY + Call "JVM" +FunctionEnd + +Function un.onInit + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup + !insertmacro MUI_LANGDLL_DISPLAY + ${Switch} $LANGUAGE + ${Case} ${LANG_ENGLISH} + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_SPANISH} + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "¿Estás seguro de querer eliminar completamente $(^Name) y todos sus componentes?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_FRENCH} + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Etes-vous sûr de vouloir désinstaller complètement $(^Name) et tous ses composants?" IDYES +2 + Abort + ${Break} + ${EndSwitch} +FunctionEnd + +Function un.onUninstSuccess + HideWindow + ${Switch} $LANGUAGE + ${Case} ${LANG_ENGLISH} + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." + ${Break} + ${Case} ${LANG_SPANISH} + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) se ha eliminado de su ordenador." + ${Break} + ${Case} ${LANG_FRENCH} + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) a été enlevé de votre ordinateur avec succès." + ${Break} + ${EndSwitch} +FunctionEnd + +# Installer Sections +Section Files + # Copy any existing .properties files + SetOutPath $TEMP\${LOWERNAME}_installer + CopyFiles /SILENT /FILESONLY $INSTDIR\*.properties $TEMP\${LOWERNAME}_installer + + # Remove previous files + RMDir /r /REBOOTOK $INSTDIR + + # Write program files + SetOutPath $INSTDIR + SetOverwrite on + File /r "${FILES_DIR}\*" + + # Copy previously backuped properties files + CopyFiles /SILENT /FILESONLY $TEMP\${LOWERNAME}_installer\*.properties $INSTDIR + + # Remove temp directory + RMDir /r /REBOOTOK $TEMP\${LOWERNAME}_installer + + # Write uninstaller + WriteUninstaller "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "${REGKEY}" Path $INSTDIR + WriteRegStr HKLM "${REGKEY}\Components" Files 1 +SectionEnd + +Section Registry + WriteRegStr HKCR "${EXTENSION}" "" "${REGKEY_LAUNCH}" + WriteRegStr HKCR "${REGKEY_LAUNCH}" "" "$(^Name)" + WriteRegStr HKCR "${REGKEY_LAUNCH}\shell\open\command" "" '"$INSTDIR\${LOWERNAME}.exe" "%1"' + WriteRegStr HKCU "${REGKEY}" Version ${VERSION_NUMBER} + WriteRegStr HKLM "${REGKEY}\Components" Registry 1 +SectionEnd + +Section Shortcuts + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + SetOutPath $SMPROGRAMS\$StartMenuGroup + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\${LOWERNAME}.exe + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(UNINSTALL_LINK).lnk" $INSTDIR\uninstall.exe + !insertmacro MUI_STARTMENU_WRITE_END + CreateDirectory "$DESKTOP" + CreateShortCut "$DESKTOP\$(^Name).lnk" "$INSTDIR\${LOWERNAME}.exe" + #CreateDirectory "{userappdata}\Microsoft\Internet Explorer\Quick Launch" + #CreateShortCut "{userappdata}\Microsoft\Internet Explorer\Quick Launch\$(^Name).lnk" "$INSTDIR\${LOWERNAME}.exe" + WriteRegStr HKLM "${REGKEY}\Components" Shortcuts 1 +SectionEnd + +Section post + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe + WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 + WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 + System::Call "shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)" +SectionEnd + +#### Uninstaller sections #### + +Section un.Files + RmDir /r /REBOOTOK $INSTDIR + DeleteRegValue HKLM "${REGKEY}" Path + DeleteRegValue HKLM "${REGKEY}\Components" Files +SectionEnd + +Section un.Registry + DeleteRegKey HKCR "${EXTENSION}" + DeleteRegKey HKCR "${REGKEY_LAUNCH}" + DeleteRegKey HKCU "${REGKEY}" + DeleteRegValue HKLM "${REGKEY}\Components" Registry +SectionEnd + +Section un.Shortcuts + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(UNINSTALL_LINK).lnk" + RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup + DeleteRegValue HKLM "${REGKEY}" StartMenuGroup + #RMDir "{userappdata}\Microsoft\Internet Explorer\Quick Launch" + #RMDir "$DESKTOP" + DeleteRegValue HKLM "${REGKEY}\Components" Shortcuts +SectionEnd + +Section un.post + DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" + DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components" + DeleteRegKey /IfEmpty HKLM "${REGKEY}" + System::Call "shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)" + Push $R0 + StrCpy $R0 $StartMenuGroup 1 + StrCmp $R0 ">" no_smgroup +no_smgroup: + Pop $R0 +SectionEnd diff --git a/src/main/resources/calao/old/about.png b/src/main/resources/calao/old/about.png deleted file mode 100644 index e47886e651b5e2da8a3f2d11bb450a45eafe608f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmV;J184k+P)^Hb^DYhP6MHr9IJ7lVez zrwXI5zjvv>c=B?-FmfvESoFmVLaC^?d=8o(mGbt(gUv_Ro|NW3f4aJ`9lg~LaqP)= zFI^oxGX3$$(9o-sWBuA#Ax$x#B9(}v34v4+rCEcR$>XLK>ufF0F8~36(SvB|T;X_T zWb#U`KX=rzE&c4<$0!z3ScXmzN@~pxH)a=UwtPL|WX6Nx$t&qx;k(-Yb_tMCMXBkt zAAa;w@#MvnZE8v>nr@eSrA@w^Tf)#areDdEapKH9Tt_LTg_@mDq%sGai}&sWp3$3A z)<_nn3?cBlA%T?q{CF3o6x|?X{?R69PK{D)dTi`92*VI1G>l|n3djKUs5M8K&ajjc zuL~l8ddsKL_Gq+xE}S`m5P}=Czp}Mg2f#87(g|l6NJcXffT5HW?T(M@1yq|Jjh2U| z39f!H&HL|6@X5^weDmWfN`Vld>jI^uh!{~to^-3_ik75Scj*QafQ%F8-02BQtGnEs zU8Lg$e{Dw7uq+el?vw#9sz?Dfx4gD&*)Pw8@|kG6LCB|H|3bOiVz<)zJ8u~pv6x9? zV{I9z0ZQwEs!MmT-xBWAmA<$s4P66ZAe&&KnB~N1?wRZ@11Dk0u(7eSbocr#pc;Vy zJg?m-Reqnpt;^cB(`QOMW-yTL9X5KnV+%iZzar)D?#IJ6bSLSbf?M5kT?Xa@F zPJOSUBTXlh%_lR18GzsZ*k|GKE`A`f?HF$L$@26kOGQ8zIO+x13NuH u9qYll}xYSy0Y|QvauZrcUQHU(&fvM~bZoO8TG%K_qFS zA5u~wQBx!>b!yx0>#ohc_+A)BL4AuL$S}#UPX-0Ofm&0^A}b=2QVQIiJKejbnSIa? zhkMWA{(t8=&;1>sCbSUBw_raF~H^1sH(deYS)7R>Ac8N+@0BuTU?*&tQ2+}NoMu=E=b}opCvs4u+pwy58Shok z?dC%sC{TtmZsnt1 z#d|a}=_~T_ok-`%9O^PV0kCfASm9$8y1bO+>0Z*U)VXpHJ`i-hlC6evqGFHsj&9lb z-GGuOwH}pA=T=N4B5A+;E^D@kN0tEI8+PUJBRT5(k>G9p6zgsKs`ivkA3~Du@Y|_3 zGUlkoCY1hK%O}4{btgPkBN)U-3p$E|guVp`01O(~1_-vtR_=coj4a<&eBFnH)ia+p zo|BWg$gog@j?C-5n&}kJt{15Yt_D6Uv=qlV2pbS2fr*U<8__8-Fs&eQDr@v(p{V7H zhA)|qU#(ckHyW9|YYWei-q zfg5$-q%8p~!33IUGhlsTLxK}z6VohQBuXMQ?Z2=%eglA{reIT7CX@gG002ovPDHLk FV1iJCdHVnW diff --git a/src/main/resources/calao/old/edit.png b/src/main/resources/calao/old/edit.png deleted file mode 100644 index f492f4fa6ed100c2a5a8424df73d2b1344ebfff1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3254 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 diff --git a/src/main/resources/calao/old/exit.png b/src/main/resources/calao/old/exit.png deleted file mode 100644 index 8c5ab9d4ef3c050935e89005c107ec8a74ef2769..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 814 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 vBmf$z-z( diff --git a/src/main/resources/calao/old/icon.png b/src/main/resources/calao/old/icon.png deleted file mode 100644 index 7ce4b75af94b876cf1ac9040bc92e9f0fddb9aa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sDEfH31!Z9ZwB;8{->#}E(iwNoDoH5+g=AHVm1?)IzF)_rWV z9{gE;twta?YyJ7J9@A&W`v1AQi~aPc^bh|c*Pd$PTN-kBk&r;^va9;NybW4&!}u95 z{;n@6-15TjYbv|mtjkOOC2(|HT=OQ#!M$6=aLYEIz;`KJO|m7gCIL)0^id(}| z=g$xRML&c>*IF|LOcLQ>{qghX+)Z9JnGCNh{iIn^?mu>a_2LG@-2IdFZq){a?w+@K zZqDz9jm|HZurBzxVBY!Mt~*@U__A)4I_EMi`hM`she~Fp&P27nvDeao9%Jxy^>bP0 Hl+XkK+Bks3 diff --git a/src/main/resources/calao/old/internet.png b/src/main/resources/calao/old/internet.png deleted file mode 100644 index 4274140d41adc708c3ecb07c76079f195ac2a1d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1050 zcmV+#1m*jQP)xrBm41Ta{820sZ`HCcjDO#$B#{2F1pT`X&Qwf zlxZNezqGtMGwV2C2ZP>sy>`?8U(i^k^#1vCFMa&x#kUUECnxO@&jrKe;UFN4WLZVQ zl|u&`=f3&s%QK#L{L{7O-3=fIuy%lrsT1#Ax_tSwD_7sG)%VxUK&6NzXDiYqX->6N zq+Bj@?D%xq8yS6Zso8w`;ack&pdNwh&rF{__sXlEeDL8%Pwm=OB~Ei>lA|(6GsyCs zQP;*WO|l&J?3*w`A*Y&)iwiRJ=YiA$ytA*rarM&M?_AtppK$s^NxK^mV~}AGrx`|` zA*8|&1!*ZWwGgX^UfoEXD2acq-= zd&@*pV;E5MTn0gi(whDt7zGXho-KrQR~~GP96p)gcs90W;SVD+1Q-S-uRtWL#7TnE zF_F|L71Qtg{L%c=&hxYaxOS{nvcB1ge)?^0&ucHgK;yt}go>G4Y!gO`I7tx0Ax^<$ z-|i}gVUlDS58CTQ;V{dxGzTm*QNmX;T$NFj#Yuuxnu2XI-KgQ&5coc`cbfciW1hdd z1C-MELCE~V5;6?JELL40HPcvjgx{M91An;EY7<5RDK%M|GW30XKOhPthQp9fZwsL{ z!(l`u6r#VjlBdZspe#U1ziZ`&d0OC2xUNg3QsQB!%iViR1j7(11X2igS4$L&9yf2^ z;?}P}h^^M`?;-ydSpVm<^K47>H!4P9{n?*~8w<1d z6B&E~{0M9UiSbxwEuaBhu)WF|cW>jA?Ug63g6F1*PGjMB^5Jq3io79h9fmhT+>4ZEEH ULG6(13jhEB07*qoM6N<$g7Ww73IG5A diff --git a/src/main/resources/calao/old/language.png b/src/main/resources/calao/old/language.png deleted file mode 100644 index 10852d79dd5cc16f6fe950ea780cc8cb7f4be4a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 903 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 diff --git a/src/main/resources/calao/old/stats.png b/src/main/resources/calao/old/stats.png deleted file mode 100644 index 9ada52c7b072875a6e02de4b9e29f7c81959dfed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 590 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 diff --git a/src/main/resources/calao/old/warning.png b/src/main/resources/calao/old/warning.png deleted file mode 100644 index 57d568b0e68825ad2689660d1477a144bc4be2f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 953 zcmV;q14jIbP)As2M|axH(rNFD6X(CS)&-Qn#^?G9?UjX4#O^ z(h6Me`S09jFOF;<{>jOc=lPxA^AJgr$i1Ojs6=Fk7{5!{Pj(CL*jua71-)7p6eu62 z#36~g+I=o^+EZyc^@cUGR&d2?8bs^)9{`R0?2xFwR*=a_PgU8}XH~&Fz1zYqjn=X~ zc3Fey7efA}&WGdb>@L#USZNCNRzMkdVE(!dzjnNg;|(@by(sfuG44MMIFZJ}cNG_3 zYuVbR4%etRzu7tai?4c4@o!T5j+AzZlrEO2b`Scu#Xahxu107i#~jvtb)Xs}UscQ< z@OYTZ)93+bU4orD{xQ%NUCSA2V675cRoFv+Hnu=Z$_YvRWqPDrga!g*$R@nEM=xI)7 zDaH(}N;aX(y^OIh(lOP&PMK&+Mw{)?R(@=L15r<`(lOFaa|+P$ugHH5<@EPHyCljy&Sk~VZVQDQfD~iNAbS-CR<^yUH0h7+rsumKR28EqJdY~^tD_i zbTtoAe-6ekrsHJ&3Z9i1J^K)%m)0S8!Gx)ECMDFK%DmeR0|J!^`C7Cbie4^4Bv8Vp z{rTVkcGsVcvCcKHm90nRmI92N;ecKX2bfv#Y#L^`$*?N{2P^YmCo|`>5xKsNg$MF5 z?Js0OUoP;&v-qIVf(MhHz@i6CII(*bKcX2E=gr^%cIT9l&9)nvcdHI0(w@blH_8zi z-hk-PiwF-EVs5AaW4%wIs$?~+CCM1^uEc!*V~F%*;BKcGGu}rq`+f>O+#C<`kz7Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L04^f{04^f|c%?sf00007bV*G`2ipoB z7cVel_rrAn00TZrL_t(I%f*u0Ynyc(#-HEseRF(c)8@E#ZL+o^vkhqGr-D^C4}*zS#Llv1rcHWS+w_nuZ{93v z4)6Q>dNDWgFYvj29v*l;Jiz}g_S3FCC)*tMSD0eQMs#j`cpb*^zSq81e&&mEsrz`!DSRreZ#%i{$Kzg8%7C6A_^fH%-phr8glt?=anh(ddK7M zG7yG8KmT?^Q*GGX>V+Pk0U*N=`o9z6zQBaJzItC(tDDGX61=94m2RZ@Qf&D{62yZK zHuhLr-9l_E5%OiOMbnJt(Z<@C?P=fry~yNY*-+cfP76@X!PMY`;_*FJRquP$ zT5lz>wg91(xpsA(tqR-V#l4-qlfO+F03g|p^lhoieLq*n7Omz@HDs-_kjQ2r+ZklJ z46(if+R|C(+9tcn?8koS>Nt91=R?Kmi7x;E{L}6iMZxPT^pBtFTg+i7^;e2BgCN$| zNUS9RgOHiO#g?}CQ2)7)`|@sA;gkI@(_IEK0B``sxfm*n1I(`gdJ$y&lMy+!AJ_VT=-T=);O=U z^}JU3_56i91^buRyv++Y`|kJFyjAB{1TD@(lmuH@&ofOcF^4Qcx~-8?>jQLzOtFMX z6pEL>`*ZpZ!~+$K1)GB}1*&a?#2o2Goh6bQj|=NZDVWcI0Jt}>eP5GRCVo8zU90eDGRtQz%D~yt6TN3gPxQ`Ol!0h6%PU%i^XoBs zz+n|upZCB$2G8nr#Fx7*SjnKP*&I()IgiafxA#5wtxVCgydu&&0>6m(f~B0%LS80| za$04xsT4a`EF1*@eDFla8=u*obVjM65tsjXH Date: Tue, 23 Feb 2016 13:32:30 +0100 Subject: [PATCH 04/35] Gitignore up to ignore calao/resources/old --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2cc0379..e23c936 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ /logs/ /calao.properties /*.kls +/src/main/resources/calao/old From 2e296a026712022723c0714a3339e526422636ff Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 13:38:57 +0100 Subject: [PATCH 05/35] pom.xml up --- pom.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index e762001..25a885a 100644 --- a/pom.xml +++ b/pom.xml @@ -3,9 +3,8 @@ 4.0.0 Calao Calao - 3.3.2929 + 3.3.3061 - pom UTF-8 @@ -202,6 +201,12 @@ maven-core 3.0.5 + + org.apache.maven.plugins + maven-jar-plugin + 2.6 + maven-plugin + @@ -315,4 +320,5 @@ Régis Leloup + pom \ No newline at end of file From 22b107ef2a4bfb6549d961a9e61fe817c220d61e Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:09:14 +0100 Subject: [PATCH 06/35] Code format on DoubleFFT_1D.java --- src/main/java/calao/DoubleFFT_1D.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/calao/DoubleFFT_1D.java b/src/main/java/calao/DoubleFFT_1D.java index dae28a6..9921353 100644 --- a/src/main/java/calao/DoubleFFT_1D.java +++ b/src/main/java/calao/DoubleFFT_1D.java @@ -33,6 +33,7 @@ * ***** END LICENSE BLOCK ***** */ package calao; +import java.math.MathContext; import java.util.concurrent.Future; import org.apache.logging.log4j.LogManager; @@ -107,7 +108,6 @@ private static enum Plans { /** The Constant PI. */ private static final double PI = 3.14159265358979311599796346854418516; - /** The Constant TWO_PI. */ private static final double TWO_PI = 6.28318530717958623199592693708837032; From 4c9ce8f7ebe2697b380f3c6d20d61f13ff62398a Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:10:07 +0100 Subject: [PATCH 07/35] log4j up --- src/main/java/Log4j2.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/Log4j2.xml b/src/main/java/Log4j2.xml index 3643253..530cfeb 100644 --- a/src/main/java/Log4j2.xml +++ b/src/main/java/Log4j2.xml @@ -11,8 +11,8 @@ - - + + \ No newline at end of file From 36f14c3e5fb15c26215441a4098689fa592dbdfe Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:14:11 +0100 Subject: [PATCH 08/35] MANIFEST.MF moved in resources/META-INF/MANIFEST.MF --- src/main/resources/META-INF/MANIFEST.MF | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/main/resources/META-INF/MANIFEST.MF diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF new file mode 100644 index 0000000..3d55486 --- /dev/null +++ b/src/main/resources/META-INF/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 +Main-Class: calao.Calao From 593e7de7d88418bded8c7c75e3675fafa1e3c09d Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:16:56 +0100 Subject: [PATCH 09/35] Splashscreen added to menu item --- src/main/java/calao/LMenuBar.java | 530 +++++++++++++++++------------- 1 file changed, 304 insertions(+), 226 deletions(-) diff --git a/src/main/java/calao/LMenuBar.java b/src/main/java/calao/LMenuBar.java index 182224c..1cdf2ac 100644 --- a/src/main/java/calao/LMenuBar.java +++ b/src/main/java/calao/LMenuBar.java @@ -1,35 +1,41 @@ -/*********************************************** -This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). - -Calao 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 3 of the License, or -(at your option) any later version. - -Calao is distributed in the hope that 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 Calao. If not, see . - -**********************************************/ +/** + * ********************************************* + * This file is part of the Calao project + * (https://github.com/Neonunux/calao/wiki). + * + * Calao 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 3 of the License, or (at your option) any later + * version. + * + * Calao is distributed in the hope that 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 + * Calao. If not, see . + * + ********************************************* + */ package calao; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.util.ResourceBundle; +import javax.swing.BoxLayout; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; +import javax.swing.JButton; import javax.swing.JCheckBoxMenuItem; import javax.swing.JEditorPane; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; +import javax.swing.JPanel; import javax.swing.JRadioButtonMenuItem; import javax.swing.event.HyperlinkEvent; import javax.swing.event.HyperlinkEvent.EventType; @@ -38,112 +44,164 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - /** * The Class LMenuBar. * * @author Neonunux */ -public class LMenuBar extends JMenuBar implements ActionListener -{ - - - private static final Logger logger = LogManager.getLogger(MidiController.class.getName()); - - /** The Constant serialVersionUID. */ +public class LMenuBar extends JMenuBar implements ActionListener { + + private static final Logger logger = LogManager.getLogger(MidiController.class.getName()); + + /** + * The Constant serialVersionUID. + */ private static final long serialVersionUID = 1L; - - /** The app bundle. */ + + /** + * The app bundle. + */ private ResourceBundle appBundle; - - + private Preferences appPrefs; // Menu Bar entries: // Settings: - /** The config menu. */ + /** + * The config menu. + */ public JMenu configMenu; - - /** The midi menu. */ + + /** + * The midi menu. + */ public JMenuItem midiMenu; - - /** The stats check. */ + + /** + * The stats check. + */ public JCheckBoxMenuItem statsCheck; - - /** The lang menu. */ + + /** + * The lang menu. + */ public JMenu langMenu; - - /** The exit menu. */ + + /** + * The exit menu. + */ public JMenuItem exitMenu; - - /** The about menu. */ + + /** + * The about menu. + */ public JMenu aboutMenu; - - /** The website menu. */ + + /** + * The website menu. + */ public JMenuItem websiteMenu; - - /** The credits menu. */ + + /** + * The credits menu. + */ public JMenuItem creditsMenu; - - /** The rblanguageen. */ + + /** + * The rblanguageen. + */ private JRadioButtonMenuItem rblanguageen = new JRadioButtonMenuItem(); - - /** The rblanguagede. */ + + /** + * The rblanguagede. + */ private JRadioButtonMenuItem rblanguagede = new JRadioButtonMenuItem(); - - /** The rblanguagees. */ + + /** + * The rblanguagees. + */ private JRadioButtonMenuItem rblanguagees = new JRadioButtonMenuItem(); - - /** The rblanguageit. */ + + /** + * The rblanguageit. + */ private JRadioButtonMenuItem rblanguageit = new JRadioButtonMenuItem(); - - /** The rblanguageda. */ + + /** + * The rblanguageda. + */ private JRadioButtonMenuItem rblanguageda = new JRadioButtonMenuItem(); - - /** The rblanguagetr. */ + + /** + * The rblanguagetr. + */ private JRadioButtonMenuItem rblanguagetr = new JRadioButtonMenuItem(); - - /** The rblanguagefi. */ + + /** + * The rblanguagefi. + */ private JRadioButtonMenuItem rblanguagefi = new JRadioButtonMenuItem(); - - /** The rblanguageko. */ + + /** + * The rblanguageko. + */ private JRadioButtonMenuItem rblanguageko = new JRadioButtonMenuItem(); - - /** The rblanguageeo. */ + + /** + * The rblanguageeo. + */ private JRadioButtonMenuItem rblanguageeo = new JRadioButtonMenuItem(); - - /** The rblanguagepl. */ + + /** + * The rblanguagepl. + */ private JRadioButtonMenuItem rblanguagepl = new JRadioButtonMenuItem(); - - /** The rblanguagept. */ + + /** + * The rblanguagept. + */ private JRadioButtonMenuItem rblanguagept = new JRadioButtonMenuItem(); - - /** The rblanguagehe. */ + + /** + * The rblanguagehe. + */ private JRadioButtonMenuItem rblanguagehe = new JRadioButtonMenuItem(); - - /** The rblanguagehu. */ + + /** + * The rblanguagehu. + */ private JRadioButtonMenuItem rblanguagehu = new JRadioButtonMenuItem(); - - /** The rblanguageru. */ + + /** + * The rblanguageru. + */ private JRadioButtonMenuItem rblanguageru = new JRadioButtonMenuItem(); - - /** The rblanguagefr. */ + + /** + * The rblanguagefr. + */ private JRadioButtonMenuItem rblanguagefr = new JRadioButtonMenuItem(); + private String build = "0"; + + private Version appVersion; + /** * Instantiates a new l menu bar. * * @param b the b * @param p the p + * @param v */ - public LMenuBar(ResourceBundle b, Preferences p) - { + public LMenuBar(ResourceBundle b, Preferences p, Version v) { appBundle = b; appPrefs = p; + appVersion = v; + build = appVersion.getVersionString(); configMenu = new JMenu(); configMenu.setText(appBundle.getString("_menuPreferences")); - + midiMenu = new JMenuItem(new ImageIcon(getClass().getResource("midi.png"))); midiMenu.setText(appBundle.getString("_menuMidi")); midiMenu.addActionListener(this); @@ -151,125 +209,142 @@ public LMenuBar(ResourceBundle b, Preferences p) statsCheck = new JCheckBoxMenuItem(new ImageIcon(getClass().getResource("stats.png"))); statsCheck.setText(appBundle.getString("_menuSaveStatistics")); statsCheck.addActionListener(this); - if (Integer.parseInt(appPrefs.getProperty("saveStats")) == 1) - statsCheck.setSelected(true); - + if (Integer.parseInt(appPrefs.getProperty("saveStats")) == 1) { + statsCheck.setSelected(true); + } + langMenu = new JMenu(); langMenu.setText(appBundle.getString("_menuLanguage")); ButtonGroup bGroup = new ButtonGroup(); String lang = appPrefs.getProperty("language"); - - rblanguageda=new JRadioButtonMenuItem("Dansk"); + + rblanguageda = new JRadioButtonMenuItem("Dansk"); rblanguageda.setMnemonic(KeyEvent.VK_A); rblanguageda.addActionListener(this); bGroup.add(rblanguageda); langMenu.add(rblanguageda); - rblanguagede=new JRadioButtonMenuItem("Deutsch"); + rblanguagede = new JRadioButtonMenuItem("Deutsch"); rblanguagede.setMnemonic(KeyEvent.VK_D); bGroup.add(rblanguagede); rblanguagede.addActionListener(this); langMenu.add(rblanguagede); - rblanguageen=new JRadioButtonMenuItem("English"); + rblanguageen = new JRadioButtonMenuItem("English"); rblanguageen.setMnemonic(KeyEvent.VK_E); rblanguageen.addActionListener(this); bGroup.add(rblanguageen); langMenu.add(rblanguageen); - rblanguagees=new JRadioButtonMenuItem("Español"); + rblanguagees = new JRadioButtonMenuItem("Español"); rblanguagees.setMnemonic(KeyEvent.VK_S); bGroup.add(rblanguagees); rblanguagees.addActionListener(this); langMenu.add(rblanguagees); - - rblanguageeo=new JRadioButtonMenuItem("Esperanto"); + + rblanguageeo = new JRadioButtonMenuItem("Esperanto"); rblanguageeo.setMnemonic(KeyEvent.VK_N); rblanguageeo.addActionListener(this); bGroup.add(rblanguageeo); langMenu.add(rblanguageeo); - - rblanguagefr=new JRadioButtonMenuItem("Français"); + + rblanguagefr = new JRadioButtonMenuItem("Français"); rblanguagefr.setMnemonic(KeyEvent.VK_F); bGroup.add(rblanguagefr); rblanguagefr.addActionListener(this); langMenu.add(rblanguagefr); - rblanguagehe=new JRadioButtonMenuItem("Hebrew"); + rblanguagehe = new JRadioButtonMenuItem("Hebrew"); rblanguagehe.setMnemonic(KeyEvent.VK_H); rblanguagehe.addActionListener(this); bGroup.add(rblanguagehe); langMenu.add(rblanguagehe); - rblanguageko=new JRadioButtonMenuItem("Korean"); + rblanguageko = new JRadioButtonMenuItem("Korean"); rblanguageko.setMnemonic(KeyEvent.VK_K); rblanguageko.addActionListener(this); bGroup.add(rblanguageko); langMenu.add(rblanguageko); - rblanguageit=new JRadioButtonMenuItem("Italiano"); + rblanguageit = new JRadioButtonMenuItem("Italiano"); rblanguageit.setMnemonic(KeyEvent.VK_I); rblanguageit.addActionListener(this); bGroup.add(rblanguageit); langMenu.add(rblanguageit); - rblanguagehu=new JRadioButtonMenuItem("Magyar"); + rblanguagehu = new JRadioButtonMenuItem("Magyar"); rblanguagehu.setMnemonic(KeyEvent.VK_H); rblanguagehu.addActionListener(this); bGroup.add(rblanguagehu); langMenu.add(rblanguagehu); - rblanguagepl=new JRadioButtonMenuItem("Polski"); + rblanguagepl = new JRadioButtonMenuItem("Polski"); rblanguagepl.setMnemonic(KeyEvent.VK_O); rblanguagepl.addActionListener(this); bGroup.add(rblanguagepl); langMenu.add(rblanguagepl); - - rblanguagept=new JRadioButtonMenuItem("Português"); + + rblanguagept = new JRadioButtonMenuItem("Portugues"); rblanguagept.setMnemonic(KeyEvent.VK_P); rblanguagept.addActionListener(this); bGroup.add(rblanguagept); langMenu.add(rblanguagept); - - rblanguageru=new JRadioButtonMenuItem("Ã? ÑƒÑ�Ñ�Ã?ºÃ?¸Ã?¹"); + + rblanguageru = new JRadioButtonMenuItem("Russian"); rblanguageru.setMnemonic(KeyEvent.VK_R); rblanguageru.addActionListener(this); bGroup.add(rblanguageru); langMenu.add(rblanguageru); - rblanguagefi=new JRadioButtonMenuItem("Suomi"); + rblanguagefi = new JRadioButtonMenuItem("Suomi"); rblanguagefi.setMnemonic(KeyEvent.VK_F); rblanguagefi.addActionListener(this); bGroup.add(rblanguagefi); langMenu.add(rblanguagefi); - rblanguagetr=new JRadioButtonMenuItem("Türkçe"); + rblanguagetr = new JRadioButtonMenuItem("Turk"); rblanguagetr.setMnemonic(KeyEvent.VK_T); rblanguagetr.addActionListener(this); bGroup.add(rblanguagetr); langMenu.add(rblanguagetr); - if ("es".equals(lang)) rblanguagees.setSelected(true); - else if ("it".equals(lang)) rblanguageit.setSelected(true); - else if ("de".equals(lang)) rblanguagede.setSelected(true); - else if ("da".equals(lang)) rblanguageda.setSelected(true); - else if ("tr".equals(lang)) rblanguagetr.setSelected(true); - else if ("fi".equals(lang)) rblanguagefi.setSelected(true); - else if ("ko".equals(lang)) rblanguageko.setSelected(true); - else if ("eo".equals(lang)) rblanguageeo.setSelected(true); - else if ("pl".equals(lang)) rblanguagepl.setSelected(true); - else if ("pt".equals(lang)) rblanguagept.setSelected(true); - else if ("hu".equals(lang)) rblanguagehu.setSelected(true); - else if ("he".equals(lang)) rblanguagehe.setSelected(true); - else if ("ru".equals(lang)) rblanguageru.setSelected(true); - else if ("fr".equals(lang)) rblanguagefr.setSelected(true); - else rblanguageen.setSelected(true); + if ("es".equals(lang)) { + rblanguagees.setSelected(true); + } else if ("da".equals(lang)) { + rblanguageda.setSelected(true); + } else if ("de".equals(lang)) { + rblanguagede.setSelected(true); + } else if ("he".equals(lang)) { + rblanguagehe.setSelected(true); + } else if ("hu".equals(lang)) { + rblanguagehu.setSelected(true); + } else if ("fr".equals(lang)) { + rblanguagefr.setSelected(true); + } else if ("it".equals(lang)) { + rblanguageit.setSelected(true); + } else if ("fi".equals(lang)) { + rblanguagefi.setSelected(true); + } else if ("ko".equals(lang)) { + rblanguageko.setSelected(true); + } else if ("eo".equals(lang)) { + rblanguageeo.setSelected(true); + } else if ("pl".equals(lang)) { + rblanguagepl.setSelected(true); + } else if ("pt".equals(lang)) { + rblanguagept.setSelected(true); + } else if ("ru".equals(lang)) { + rblanguageru.setSelected(true); + } else if ("tr".equals(lang)) { + rblanguagetr.setSelected(true); + } else { + rblanguageen.setSelected(true); + } langMenu.setIcon(new ImageIcon(getClass().getResource("language.png"))); langMenu.addActionListener(this); langMenu.setMnemonic(KeyEvent.VK_L); - + exitMenu = new JMenuItem(new ImageIcon(getClass().getResource("exit.png"))); exitMenu.setText(appBundle.getString("_menuExit")); exitMenu.addActionListener(this); @@ -282,7 +357,7 @@ public LMenuBar(ResourceBundle b, Preferences p) configMenu.setMnemonic(KeyEvent.VK_P); configMenu.addSeparator(); configMenu.add(exitMenu); - + aboutMenu = new JMenu(); aboutMenu.setText(appBundle.getString("_menuHelp")); @@ -293,32 +368,31 @@ public LMenuBar(ResourceBundle b, Preferences p) creditsMenu = new JMenuItem(new ImageIcon(getClass().getResource("about.png"))); creditsMenu.setText(appBundle.getString("_menuAbout")); creditsMenu.addActionListener(this); - + aboutMenu.add(websiteMenu); aboutMenu.add(creditsMenu); - + add(configMenu); add(aboutMenu); } - + /** * Update language. * * @param bundle the bundle */ - public void updateLanguage(ResourceBundle bundle) - { - appBundle = bundle; - - configMenu.setText(appBundle.getString("_menuPreferences")); - midiMenu.setText(appBundle.getString("_menuMidi")); - langMenu.setText(appBundle.getString("_menuLanguage")); - statsCheck.setText(appBundle.getString("_menuSaveStatistics")); - exitMenu.setText(appBundle.getString("_menuExit")); - - aboutMenu.setText(appBundle.getString("_menuHelp")); - websiteMenu.setText(appBundle.getString("_menuWeb")); - creditsMenu.setText(appBundle.getString("_menuAbout")); + public void updateLanguage(ResourceBundle bundle) { + appBundle = bundle; + + configMenu.setText(appBundle.getString("_menuPreferences")); + midiMenu.setText(appBundle.getString("_menuMidi")); + langMenu.setText(appBundle.getString("_menuLanguage")); + statsCheck.setText(appBundle.getString("_menuSaveStatistics")); + exitMenu.setText(appBundle.getString("_menuExit")); + + aboutMenu.setText(appBundle.getString("_menuHelp")); + websiteMenu.setText(appBundle.getString("_menuWeb")); + creditsMenu.setText(appBundle.getString("_menuAbout")); } // Event handler for the whole Menu Bar. @@ -326,113 +400,117 @@ public void updateLanguage(ResourceBundle bundle) /* (non-Javadoc) * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent) */ - public void actionPerformed(ActionEvent ae) - { - //logger.debug("LMenuBar Event received !! (" + ae.getActionCommand() + ")"); - - if (ae.getSource() == rblanguageen) - this.firePropertyChange("langEN", false, true); - else if (ae.getSource() == rblanguagede) - this.firePropertyChange("langDE", false, true); - else if (ae.getSource() == rblanguagees) - this.firePropertyChange("langES", false, true); - else if (ae.getSource() == rblanguageit) - this.firePropertyChange("langIT", false, true); - else if (ae.getSource() == rblanguageda) - this.firePropertyChange("langDA", false, true); - else if (ae.getSource() == rblanguagetr) - this.firePropertyChange("langTR", false, true); - else if (ae.getSource() == rblanguagefi) - this.firePropertyChange("langFI", false, true); - else if (ae.getSource() == rblanguageko) - this.firePropertyChange("langKO", false, true); - else if (ae.getSource() == rblanguageeo) - this.firePropertyChange("langEO", false, true); - else if (ae.getSource() == rblanguagepl) - this.firePropertyChange("langPL", false, true); - else if (ae.getSource() == rblanguagept) - this.firePropertyChange("langPT", false, true); - else if (ae.getSource() == rblanguagehu) - this.firePropertyChange("langHU", false, true); - else if (ae.getSource() == rblanguagehe) - this.firePropertyChange("langHE", false, true); - else if (ae.getSource() == rblanguageru) - this.firePropertyChange("langRU", false, true); - else if (ae.getSource() == rblanguagefr) - this.firePropertyChange("langFR", false, true); - - else if (ae.getSource() == midiMenu) - this.firePropertyChange("midiOptions", false, true); - else if (ae.getSource() == statsCheck) - { - if (statsCheck.isSelected() == true) - appPrefs.setProperty("saveStats", "1"); - else - appPrefs.setProperty("saveStats", "0"); - appPrefs.storeProperties(); - } - else if (ae.getSource() == exitMenu) - this.firePropertyChange("exitProgram", false, true); - - else if (ae.getSource() == websiteMenu) - openURL("https://github.com/Neonunux/calao/wiki"); - else if (ae.getSource() == creditsMenu) - { - JEditorPane text = new JEditorPane("text/html","Calao v. 3.3
written by Neonunux

" - + "This is an open source musical educational software written in Java, inspired
" - + "by the ScoreDate project
" - + "Written by Massimo Callegari" - + "himself inspired
by the Jalmus project

" - + "It is distributed under the
" - + "GPL 3.0 license" - + "
"); - - // Link license URL support click - HyperlinkListener listener = new HyperlinkListener() { - public void hyperlinkUpdate(HyperlinkEvent e) { - java.net.URL uristring= e.getURL(); - if (e.getEventType() == EventType.ACTIVATED) { - openURL(uristring.toString()); - } + public void actionPerformed(ActionEvent ae) { + logger.trace("LMenuBar Event received !! (" + ae.getActionCommand() + ")"); + if (ae.getSource() == rblanguageen) { + this.firePropertyChange("langEN", false, true); + } else if (ae.getSource() == rblanguagede) { + this.firePropertyChange("langDE", false, true); + } else if (ae.getSource() == rblanguagees) { + this.firePropertyChange("langES", false, true); + } else if (ae.getSource() == rblanguageit) { + this.firePropertyChange("langIT", false, true); + } else if (ae.getSource() == rblanguageda) { + this.firePropertyChange("langDA", false, true); + } else if (ae.getSource() == rblanguagetr) { + this.firePropertyChange("langTR", false, true); + } else if (ae.getSource() == rblanguagefi) { + this.firePropertyChange("langFI", false, true); + } else if (ae.getSource() == rblanguageko) { + this.firePropertyChange("langKO", false, true); + } else if (ae.getSource() == rblanguageeo) { + this.firePropertyChange("langEO", false, true); + } else if (ae.getSource() == rblanguagepl) { + this.firePropertyChange("langPL", false, true); + } else if (ae.getSource() == rblanguagept) { + this.firePropertyChange("langPT", false, true); + } else if (ae.getSource() == rblanguagehu) { + this.firePropertyChange("langHU", false, true); + } else if (ae.getSource() == rblanguagehe) { + this.firePropertyChange("langHE", false, true); + } else if (ae.getSource() == rblanguageru) { + this.firePropertyChange("langRU", false, true); + } else if (ae.getSource() == rblanguagefr) { + this.firePropertyChange("langFR", false, true); + } else if (ae.getSource() == midiMenu) { + this.firePropertyChange("midiOptions", false, true); + } else if (ae.getSource() == statsCheck) { + if (statsCheck.isSelected() == true) { + appPrefs.setProperty("saveStats", "1"); + } else { + appPrefs.setProperty("saveStats", "0"); + } + appPrefs.storeProperties(); + } else if (ae.getSource() == exitMenu) { + this.firePropertyChange("exitProgram", false, true); + } else if (ae.getSource() == websiteMenu) { + openURL("https://github.com/Neonunux/calao/wiki"); + } else if (ae.getSource() == creditsMenu) { + JEditorPane text = new JEditorPane("text/html", "Calao v. " + build + "
written by Neonunux

" + + "This is an open source musical educational software written in Java, inspired
" + + "by the ScoreDate project
" + + "Written by Massimo Callegari
" + + "himself inspired
by the Jalmus project

" + + "It is distributed under the
" + + "GPL 3.0 license" + + "
"); + + JButton splashShow = new JButton(); + splashShow.setText("View splashscreen"); + splashShow.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + SplashScreen sp = new SplashScreen(-1, appVersion); + sp.setAlwaysOnTop(true); + logger.debug("Calao Splashscreen is displayed"); } - }; - text.addHyperlinkListener(listener); - text.setEditable(false); - - // show - JOptionPane.showMessageDialog(this.getParent(), text, - appBundle.getString("_menuAbout"), JOptionPane.INFORMATION_MESSAGE); - } + }); + JPanel panneau = new JPanel(); + panneau.setLayout(new BoxLayout(panneau, BoxLayout.PAGE_AXIS)); + + panneau.add(text); + panneau.add(splashShow); + + // Link license URL support click + HyperlinkListener listener = new HyperlinkListener() { + public void hyperlinkUpdate(HyperlinkEvent e) { + java.net.URL uristring = e.getURL(); + if (e.getEventType() == EventType.ACTIVATED) { + openURL(uristring.toString()); + } + } + }; + text.addHyperlinkListener(listener); + text.setEditable(false); + + // show + JOptionPane.showMessageDialog(this.getParent(), panneau, + appBundle.getString("_menuAbout"), JOptionPane.INFORMATION_MESSAGE, new ImageIcon(getClass().getResource("internet.png"))); + } } - + /** * Open url. * * @param uristring the uristring */ - public void openURL(String uristring) - { - if( !java.awt.Desktop.isDesktopSupported() ) - { - logger.error( "Desktop is not supported (fatal)" ); + public void openURL(String uristring) { + if (!java.awt.Desktop.isDesktopSupported()) { + logger.error("Desktop is not supported (fatal)"); return; } java.awt.Desktop desktop = java.awt.Desktop.getDesktop(); - if( !desktop.isSupported( java.awt.Desktop.Action.BROWSE ) ) - { - logger.error( "Desktop doesn't support the browse action (fatal)" ); + if (!desktop.isSupported(java.awt.Desktop.Action.BROWSE)) { + logger.error("Desktop doesn't support the browse action (fatal)"); return; } - + try { - java.net.URI uri = new java.net.URI( uristring ); - desktop.browse( uri ); - } - catch ( Exception e ) { - logger.error( e.getMessage() ); - } + java.net.URI uri = new java.net.URI(uristring); + desktop.browse(uri); + } catch (Exception e) { + logger.error(e.getMessage()); + } } - } From 92e815f36e4708b597f2ff8f057835b2437e2d86 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:21:08 +0100 Subject: [PATCH 10/35] Debug mode, color pref management in Calao.java --- src/main/java/calao/Calao.java | 86 ++++++++++++++++++++-------------- 1 file changed, 51 insertions(+), 35 deletions(-) diff --git a/src/main/java/calao/Calao.java b/src/main/java/calao/Calao.java index 05e6fd5..eb0b8ad 100644 --- a/src/main/java/calao/Calao.java +++ b/src/main/java/calao/Calao.java @@ -20,7 +20,6 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.awt.Color; import java.awt.Dimension; import java.awt.Font; -import java.awt.MediaTracker; import java.awt.dnd.DropTarget; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -37,7 +36,6 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.util.PropertyResourceBundle; import java.util.ResourceBundle; -import javax.imageio.ImageIO; import javax.sound.midi.MidiDevice; import javax.sound.midi.MidiMessage; import javax.sound.midi.MidiUnavailableException; @@ -57,7 +55,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * Main Class. * * @author Neonunux - * @author Massimo Callegari + * @author Massimo Callegari * * @link https://github.com/Neonunux/calao/wiki */ @@ -144,6 +142,10 @@ public class Calao extends JFrame implements ActionListener { /** The transposition. */ private int transposition = 0; + private String background; + + private boolean isDebugged = false; + /** * Instantiates a new main Calao class. */ @@ -168,6 +170,7 @@ public Calao() { .getImage()); prefs = new Preferences(); language = prefs.getProperty("language"); + background = prefs.getProperty("colors.background"); // if no language is set yet, try to set the system one if (language == "") { Locale locale = Locale.getDefault(); @@ -198,16 +201,22 @@ public Calao() { bundle = ResourceBundle.getBundle("translation.language", new Locale(language)); } - - setTitle("Calao - " + version.getMajor() + "." + version.getMinor() + " - build " + version.getBuild()); + String title; + isDebugged = Boolean.parseBoolean(prefs.getProperty("calao.debug")); + if (isDebugged) + title = "Calao - " + version.getMajor() + "." + version.getMinor() + + " - build " + version.getBuild(); + else + title = "Calao - " + version.getMajor() + "." + version.getMinor(); + setTitle(title); Dimension wSize = new Dimension(800, 600); setSize(wSize); // default size is 0,0 setMinimumSize(wSize); - setBackground(Color.white); + // setBackground(Color.white); + setBackground(Color.decode(background)); setLocationRelativeTo(null); // Center the window on the display setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // exit when frame // closed - midiControl = new MidiController(prefs); int midiError = midiControl.checkError(); if (midiError == 2) { @@ -257,7 +266,7 @@ public Calao() { audioControl = new AudioInputController(prefs); // TODO: AUDIO // unfinished - menuBar = new LMenuBar(bundle, prefs); + menuBar = new LMenuBar(bundle, prefs, version); setJMenuBar(menuBar); menuBar.setVisible(true); menuBar.addPropertyChangeListener(new PropertyChangeListener() { @@ -266,7 +275,7 @@ public void propertyChange(PropertyChangeEvent evt) { } }); - homePanel = new HomePanel(MusiSync, bundle, wSize); + homePanel = new HomePanel(MusiSync, prefs, bundle, wSize); getContentPane().add(homePanel); homePanel.inlineBtn.addActionListener(this); @@ -725,31 +734,31 @@ public void close() { } } - /** - * Displays splash.png during the loading - * @return - */ - public SplashScreen displaySplashScreen() { - ImageIcon splashScreenImage = new ImageIcon(); - try { - splashScreenImage.setImage(ImageIO.read(getClass().getResource( - "splash.png"))); - } catch (IOException e1) { - e1.printStackTrace(); - } - // while the image is not on screen - while (splashScreenImage.getImageLoadStatus() == MediaTracker.LOADING) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - System.out.printf("splash screen loading interrupted", e); //$NON-NLS-1$ - } - } - // should normally be run in the EDT, but launched at once in order to - // display the screen as soon as possible - return new SplashScreen(splashScreenImage, 2000, version); + + public boolean isDebugged() { + return isDebugged; + } + + public void setDebugged(boolean isDebugged) { + this.isDebugged = isDebugged; + } + public Version getVersion() { + return version; + } + + public void setVersion(Version version) { + this.version = version; + } + + public Preferences getPrefs() { + return prefs; + } + + public void setPrefs(Preferences prefs) { + this.prefs = prefs; } + /** * The main method. * @@ -757,11 +766,18 @@ public SplashScreen displaySplashScreen() { * the arguments */ public static void main(String[] args) { + Boolean isDebugged = false; Calao app = new Calao(); - SplashScreen splashscreen = app.displaySplashScreen(); - app.setAlwaysOnTop(true); + isDebugged = app.isDebugged(); + app.setAlwaysOnTop(isDebugged); // true if debug mode + app.setAlwaysOnTop(false); + // if (!isDebugged) { // ----> commented for splashscreen debugging + // purposes + // SplashScreen splashscreen = new SplashScreen(2000, app.getVersion()); + SplashScreen splashscreen = new SplashScreen(-1, app.getVersion()); splashscreen.setAlwaysOnTop(true); - + // } logger.info("Exiting Calao"); } + } From 2715234ea5b2c341bfb1675f415faf7a95176e1a Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:24:34 +0100 Subject: [PATCH 11/35] pictures up in project --- src/main/resources/calao/accueil.png | Bin 0 -> 48456 bytes src/main/resources/calao/eartrain.png | Bin 0 -> 5390 bytes src/main/resources/calao/icon.png | Bin 399 -> 11521 bytes src/main/resources/calao/lecture.png | Bin 0 -> 3562 bytes src/main/resources/calao/lessons.png | Bin 0 -> 4023 bytes src/main/resources/calao/logo - Copie.png | Bin 0 -> 34398 bytes src/main/resources/calao/logo_calao.png | Bin 0 -> 7060 bytes src/main/resources/calao/rythm.png | Bin 0 -> 5383 bytes src/main/resources/calao/score.png | Bin 0 -> 5351 bytes src/main/resources/calao/splash.png | Bin 31794 -> 96347 bytes src/main/resources/calao/splash.xcf | Bin 0 -> 76230 bytes src/main/resources/calao/splash2.xcf | Bin 0 -> 495406 bytes src/main/resources/calao/splash3.png | Bin 0 -> 31794 bytes 13 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/calao/accueil.png create mode 100644 src/main/resources/calao/eartrain.png create mode 100644 src/main/resources/calao/lecture.png create mode 100644 src/main/resources/calao/lessons.png create mode 100644 src/main/resources/calao/logo - Copie.png create mode 100644 src/main/resources/calao/logo_calao.png create mode 100644 src/main/resources/calao/rythm.png create mode 100644 src/main/resources/calao/score.png create mode 100644 src/main/resources/calao/splash.xcf create mode 100644 src/main/resources/calao/splash2.xcf create mode 100644 src/main/resources/calao/splash3.png diff --git a/src/main/resources/calao/accueil.png b/src/main/resources/calao/accueil.png new file mode 100644 index 0000000000000000000000000000000000000000..c05f08919205de03e9120934a6516f5539de8a34 GIT binary patch literal 48456 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�PtHC21qctnAq%}3)tesLC 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 M07*qoM6N<$f}2YGD*ylh literal 0 HcmV?d00001 diff --git a/src/main/resources/calao/eartrain.png b/src/main/resources/calao/eartrain.png new file mode 100644 index 0000000000000000000000000000000000000000..4f3109f9afa3593ae3210ddf9e37de884d295d2b GIT binary patch literal 5390 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 Xxs1l2rCqXI8DOYu3jch|Ire`6Dg%U0 delta 349 zcmV-j0iynaT8{%EiBL{Q4GJ0x0000DNk~Le0000O0000O2nGNE0N{5$_>mzR3jn{@Q-^#BrkU`T#>~sHbyZR?!sV`fual+ zo6$eOMkx!$qF5L(xC1FK``rv8gNbBThI`bn+ocS)-!q->dCqyBbIz9(DN=kRgBfgK z1wFsit^HLPwvmtK5{e1FJyBnWp~Sld4ON<1G$j+=xT;})-ike}hiNXFOTjOxY!hAC2{_-}jx;QcRLngb`U00000NkvXXu0mjf@vDrg diff --git a/src/main/resources/calao/lecture.png b/src/main/resources/calao/lecture.png new file mode 100644 index 0000000000000000000000000000000000000000..266a1761d6e7e9f58313b7ace342fcb08c9b2f80 GIT binary patch literal 3562 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 L$qUou7?uAYeZGO2 literal 0 HcmV?d00001 diff --git a/src/main/resources/calao/lessons.png b/src/main/resources/calao/lessons.png new file mode 100644 index 0000000000000000000000000000000000000000..2b15b142df3e5af7f7435ad6fb2c4a70e1b666b6 GIT binary patch literal 4023 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/calao/score.png b/src/main/resources/calao/score.png new file mode 100644 index 0000000000000000000000000000000000000000..1858ae7e3824942902aaea33d7c5f6c68a7e8714 GIT binary patch literal 5351 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 OA}%5=TqLOL`~LuG>+=}^ literal 31794 zcmXtf1yozj^EPd9D;k`ZP~3|YE2Sa0ySuv;w<5u{#kDvDin~KdaV;L)-K~Yfm-qKS z-#v$u!%cQ}?(Xc&Gc(VPQc;q|!=}VWK|#Tjl>w`vpuCDeL3t^PiH^JjN?T1vexSO8 zWHm66mp`UOB=UbO7a3i5Wi1DnKDtZA zEZSAT*<1P6Q#^mIcZ3F_4dA?bDaH0Pf@|HOF$d!E_0_pJ{UFLozU>IdH(-0kC4g{( z9a!+5mF5cC1Q6(mkrL*)OinZb~a8Y(I=r~5tH$EB*3>C3aR zf6r1)3%7V=g#TSaGPF;kO+gNbl6CJp)eW9P7iQpp7e=k_B;w0aX!1iZkEKbk>V^vV zzw2~}Em-UyZty@G8Q{RxMnjO~KOqz~)2S-m*Q!FMpK#t)zBHe{=_z~D_MZZS;>jT< zLb&*iK%IzWc5cQm-0ZB>(f@sOtzqkDJpjFye(3k(;Eg5BIT;XcW=-Q!>LUj^+ z$^Rx4W_=y{VhOk;$wKf-UYj)$n~e9K z7k{m#eR4JwQlTn{Ad2C8U1Y9^aGk4;Q?*9z!EN3cF(0~9f}+!P^3WXpEWq)s*Q*LPr~zPxrk=%L zk9@2ArnC5vbA*FQnABT$#}@p8ASLiq(fpa)4v(cfgDWB^t!j;gQnJXYcrjG?6SGHs z+0e?6Y9EAojNrWc9xDuFtyo<;LVD*~EtN8ZdoJN5nRS@3RmAv{Q%Zo$fVlPtiF zH#+f8x?zEU&~`|V++YpJI;*!9sJ9wEyp+el%pE=WLW7QEpvXeA|NC0^f4fAfW~Xi> z=BH+0I(OtMBA`k2CfgVstO|C+4%-xzpR3$0iZ9WNjf|WbTs@Q1#)m-h+p4KaVjRoh zsWU)!Ew^71;N=o=W-5p5gZ2&goyFd)UCen)r@C-{X;q|sl~0BX>&fveW)wLZunA)o3<&VPK*6JH7D}pp=@w6H?F0a5)(bPyS0+4xu3LjH3(}!9#DW=S z^UX3)U5CUrqjQZ#?{BGpKBsLvP>1xvrFohTA3IWSFf#JEmX4s$?sGods9Us~j=_)N z0vU59108uU5>xI|dGh6*LHAm}iMNMXbilgLw&|{e|4z-IL~=B9&H0=|Aq8#u(HcKy z95s*%4HV!w?EIYC@fcym`EHoJEE7XTm}Fq9{QMU{|2lHAsj!MgxQDcxGspsVcE`ay z%rX4oUz=Q3(+_BC++fo2A-~~@)I%|5SS@G4M~nIa|Nh&`4+sH_|4uu)v$VCap{1wx z)XR=#Z2y0AMSdLP^G@)*9H_r$hm8|&7Elc{m zR125UmtIk8xZuR-<>b5_rmKCtSoo^#@F`AJg``zlv(Jc?GoIr{*ejC;p~#^t-r;qj zhVzDyB3Uhk+u(s7(&y<&`EnUf;2n*@+ay>yt%C}0PmByHz>S55b!v9xIxhcZ9vI1E zqdzqk^_lF|zkUlbXT?0VdD~>9w>g-h+Ivck@d0(_^ z9lw-c&E5>L9h+;}=e7>5ilA_Wfr|z_vl-q!2ZS}f;g>W$_xF;>TBHHYS41tvGj!&+ zhIJM?7IM^7@T<7G?wmg6BaQ5OJlCCRHU86gyA;?DfZHrv1YA*Hm7^jtJ&~g;HS$aB zFO}WIfEbP=k z1$j_;fV%=Izk385?#Jnag&im6R3|g~7?}y$N*8?f4052d8lVTbf%%ZEpK90%pMM?(xWjzVy008Nu{qKzLQP+B_U`*SU%P}W%oI4FQ zWdUBOT8D45dp6cfkX`(hAWQU>aee}B#?p(-lrJiHM2nZP<|lJp>br8fLT|6!V%5G= zINqHlT+X>8MNSiIg7v(%Ni8|}poQaK>y-Nr+0EpdPOhb5K#TCzwb}gn!@xU&S!Jm=FfBXU5|srmVRb=qJ)0;QdL;wVdkaIE8$AzU z2&jCxq{YNZi>u2#1DO6z3Oj7H`3@cPUPx!$-N*)W zu=~kvG5gBrt03KM5v{d>>KtJDs_d$4#_=ESX4AxgMGDwM@FYr<*ek z>9MLlQbpWJuv!k~`W=xuflqBdGXj~)f6xV2N##kcNW&Rebj6o%_IL$8v`l)cV=T@- z>N;MWk@06Gg)&n|52_-)`Fc4iTU@E2qK{Znq`ZI!7YBlr;PYN?wo0#kdkYKtE;huC znPVKh{g#yfol4`mclfbi6@JwwG>rZ6r0!?%*xznm?ScN?#p4?WP&H3LK@6uGQ72~P zppvI%t?=G))Honl%KT#y4!eur`Wk|a;IrcmRiT|Jmu_7Q`%)DL(^QBAxT&r}ZcV6~ zbPs)mj+GT6d_`|qTfw8anE!(CixgDr&mst^bsE~DkkLo$Z42Me1W6dIdVDrc8yC^z z)qitk=SPJ))La$BHN4=IWyH2;Hu6mxQpoi^%@#^6P(aWn6yg_6dt~iWp1LWBhdE4% z%>OCB+8#jtWkY3aY{MR_p@j2+kOhECKmM8t-dzY8Fpak2Z42Qt^l}gkgHbM4s_(&x z7iSlpPZaheAVaxcz!Wt>5{ee=W-?na+*QLcMNG&_-&QyKxp`nx>o@%l8443K`E4+z zfb7o(WaTh@5I>dsIn5S7f`9kbijR3w5C$s6Cw}d9k7hapuy?;yURmR4e;7hZpxQAVQ zrnI7_=jjld>A}LSPI@7hrHR`ppWpuFmlkEIWX>SU!mLjZl-2*x(~BI<=AfMw8m{@I z4+ZY>RTcbhfN1CyqQ%H0EY52Ef{woetejpi)#}%JXur_=d%SG7#;B=5hY3%C{ z`w%!N`z2UHuNW;?MtPB)Kufn#jnv^242n}Ovo==NRi~=C-eB>2y0_i( zoQ%I8Pj5TwI@XXss=Url6OP;8rS6?dS60a)+LRu2YPfS4zWqH~AnEN%7EfJsZ3G4-frJIFKbPHi@Zz zfoaFS$0IEY8Q5c^`&{!+e;+TqPS19EJnJIjFSGhZp>|M!odVqRKiy}(G`f6exY5vM z=RWxjGSrvLDGukIW`R;ie~C2Yk1YRtSkolyq#XtdaJFDpt5ewrxnK{zG@E@fi$aX3 zmTdRrYq54&aVySZM}^xXqn?cPwl+jsj9wwZF}1b!9!f=E*P;K0RX97z;f-oI5c#8nLr~MoD{Z`%)*4( zGV{l}RMK7*7&R{yBL}h+Z^AlboRJvJl{vgt~-DbL8#+ zQ37Iztc0SeCAL_KVxob)o%31{3BrMymN*ivJpe-?N6~u{EZw)qcA7AHzpgnNn^!pI zXkZ}~InSoao5S|OkAH+DUPsQq>DD8N66~*n`g&;8%y{p1B_8_$$GBtXptJ7mD^Md3 zMLAE&mP6fOM=aYCVPc(h@^pdoM(9jLo@-i}9&?VxS;DTbORoNgN30H zv&N>xxdTG6jTOf`z%H7JjINn(qM1yFdB&05Bi3I4=E%!T{n!T@+{l0jpLRLeadEwz zB<5F(-xRtzLPWN@V+fg9Z!0)`1qtiBdCRZ?(ibm2TkG#`RO0?7S_^)gQvP_`%a9j?*-y;^n& z!hvX<5Q>q7h2d$MJIm^92fL=5PSs(DVf}j@W{Hz&ob3gCyUTGf;JB8MJI(EP(9l8P z+H0qnPT8_@?G@2wLt?8qrtLGE#8)^)a>HY=DWhkx;gih4 zoktaQZ6IpzCnCOzPWG`DaqqL+2CLE}$6Aieo}!N$uBqA74}UefgXY`iUx$o&k|fV( z4^>^wAk762`ae14(znmXV@=RKPv+&KGS)7}Q*jlAA&|+1D$evtrkI!anSHzHwy3l6 zTFzcs7T>6muek&_YRk&3itL6;5uK;zRK<~xwl)8>hp@Iz-YKL{aTz;$$FTs4OIsc1 z9)TtgAjnx>%JKqcHw1hVc93m?=#W_#T{Ri7>rtkk{XIhldCEy~vQ{kEvYdrZT*>5- z?rarS%iBZCXP7=wYQMj<+&`RNHv$D$KAkTzpmsd7CIL5>;IVOD_()TXstvLWhRh|e)sgk2EP ztD!HSumt=m-EaO0JSgRDnnv}UP8{69!f>5z0hb}4@N_iU)xeBeHot&uZE6<1i zfZ~s}+CJc~+k|F5Iy^`s?h0T1wwQOI!WA~B#h5`QqQ(XFOrJh-r6GyXDm+#nFX_MZ0Jsof2J?S~!mk3A&#@Uz< zTug@K3n$LmhE05b;Yhav-;OiG1tgG2L`%yl^m+CBE5cc6K#Uh?vvC&#eALZcMz z{N^?oF&d+s)t+cQde4pY`H{ObQst|BEDUhF^t{XO)QQyC{Z9z!@FQ%25z@!lV93FD z2e7_9b z)@)?n9b=I;COI;OrAnomZv51_GbjaEczlZXF_hynXEgVZjTXJujB=)IBldbVsgpy= zPP|?z1|#Vejn4Qd?Yt1vH=vECA8Aha1_<0ULf6?Wi19N8d-W+aN|@e*It`XzKP#~> zi8l2O%|(0HAbMtVFvm_BuWe0oLuDHUuQTJ8f!w!poTRN%r-k&h^S{FHIPGx_aSact z?;b^X)N?X~6Gt`(SPjZ%^YdeJJSG8Z6k+reSlVs+pEp!262g)5XHK*Lu;*dMgpX}x zPo6%ZiPkwm$1FV8B;KWm-!JJGdcmW*Kt;hA6>H}GXh6}fO2$9c`Vt;^$Ybp*m#C>T26m^&lX$z;x zc;-$F#s9E(YWpI_`8ta5g!;9NE~IbVe*!%2x_NuL6hbGxN|^N7hM64wOFhL`A0s5APC3YYqoS7Gnp zSvwpk4H{|N>2tAAM<+9rJ85=A=KSqs=`$9>9M0$D>4593$n4|_rE0TdEOl5(eQ2Wg zw6Z@C_ye4qaHcJdfL}T#g7u{=%f@ZcHT}3zk=RTG4-K}7mMw>Gx8<5h;*$kf;#B|<~Sxc~eCXhZLkA4y$WaKVl9 z8>GF<$*v`7H>JYO*MoYOXTQT)gdOVG+Ox&+3;Dn)N7@m;t72=Ji%RrUln8}XAzLPT z2-hEIk+|Q+a$6L$cQRGR79!e6PKE<6JvaA9O++})|A^678l@FW{lkoMZ~H)7pniof zxh?2ZpTWATtzY+x_ord@JP?e|^oeA-pE-)>W;{Yzx>n{wm8|u){34dmksrM-{Y9wgO9_DpW)d?JLu#z^_z#l$XR%7<@6eRdziAX3-{7dnaO_&dA6YMeZS&T|tXtd&k7gzipg@7lqSCQJ1avs9E02`)GMbS=y@Nm=riNpF}qs4wCoW7%b;S zVwh<^Jamcb{OWqyTD;OSqSSJ|eIk!{DV*FoMub;8oiPfW>CP&SY%t2k;OxXcloN3BTW+yoHQ+2IXKdiCUfLu$q)457{k==JA z7C4a-%^f5wn|wsQ9GRxfFts3=x7W5$u874w z|FyjJ_iypyE6WOBD9Qn_6LcTT4q~%#Cn)U0^KsQa($ya6%h8G0&m6cr(TLf5$D2Kr zL!)UDy(l>PO!UdDMRYmXe;26v=JzI%syM#NG-rcABCVRnhk20BPSccIf#>d*(J@u9 zsT>YjDEv1_O0Vwi4yk+>^c{hR$9ce_V;Wh^WI2AZhny}1-f;Bkch$&zVBo==RaLD8 zVxav=uh@lo#acV1gOQbA6H=!xk>8ZmcDS%{i)BQ6i);IIw0Y+-_Ib3={31oGdDE^X zZH+hy`k!x-cT!#@T8eJ~Ctm5zh>bv2{I?x3N(xXVrPy&m4EATj@VRiyoxK^Hi$X%r;eM zniSem1l8jhdIV40QLNzj^N0Zw-aRjng_GnVyBSKind#2DF7A`&rDU2Cb@g`j$gn3w z>2N!zeGs0dY14rdyojdJ9BQJ=6uy`zx1l0ju>rf-%jQ)W(yPgHvy?^17z)s>Kg3@C z%~V#Htl(}*7@~LaRM$y{by^Lj`Rz529}H|()Ena9;KfH$Qp&Tir+&I+5nOuMsJ_=( zZnJv9{&0PzTk67`Gvo3qQ{5Um=N$`C3--EjdZYM4c4Vki2m?Hdk@>|VC1y|deH_tpCsnTxz<-% zvvD(qVhI`NWl6OxE2)l^9IP>&K@us%95R1i$(ML(f^ZZL27sfKEw&Fz*&|kacpikK zj!oB7PJbS&o~yF4MpGvo|N5`Nk@?zhGVgevqBm97VAx3mm*A<7n^WUtq9%?9WR4^J zn1{?|ERqTPRGPO4wI4gWZWd}gmK^B71aWv+6e7dU`Jq(&UcA#mz#a4BRIxgx7)g)= zak@L@xVWdLXKZd7Ckx0Fle`Lx6qhYglf>NdV+sbyEOq&k-~DMJCI+)!jPIw4VDbwJ zgJPGQwl{Lt+k3cK*x_OkpFWNM1bhqP@Cb2_pu-8Pcw1(olS7h6lE<)4yw}{@MJPXR z(rOYMF`>>$UcZe4a9sPzyC8-tkrYhs&&grJpCgY-7TAEf&dU0CkB9*BX;NGSX`PA;^;azSUl>o> z-3+_U);T9ma$J;CBz$`+zCb!Zr^5hC3=Rdj?H|u+bCK{|^R@Xp3xv!>tMAV%h|@v` zq~V9jK0c)XiL&0rZTsuJlLPDZ zKwWy~0?sM2L*wMRc0q5Gknx*sMX*|Q>;H2B+9i-FMKgsO2yp*XJI*4@q356fUQ0Ao zq4qIo^iRnJYhS}zN(^8%PZAqSAOPM_$)4`>RLdKqSs4FlUiORkM5NNLqN?a$K5Ic% z6JATTzQAok`7iEHdr-Y1OvKM(K~0Mkgw_|11efZ1g6Coz8(GUjhO)EXzwjb79Z7K? zq^${8%xXl0njkGYg&Bu0
Dpi|@w|N)c4*S{z3R6Oj!@8$}v9vh2AKgE;G@y(Bc)KZFk{ZUmf((aj3o=(*9O>s)2liC1w5 z8Xj8tWntFegr+c2!lvCunweVe$N_-;fge)-+ZUFe{=4dlwh5wo_~qVnRSZochOVC; zRZSFx3kXe+{^MsVBP$an-<;1=1RnLkueB1x(x$l=)1Dvu;(~lKmbb(Bk{;Zj5t1Uv zj81QMbGhhpz9Cy6%MO8wYdgMy@M)*UmB4*L%R>8tR*bfnVj@Eb3kyq~XjFW)1}`-- zuk&S6UiW3XqoVWEfT{)Q>_@$mYx0GkA);W z-g&_OPPn#LA$8q&`TEV9*Uy!2Ta-b=+1>=7r%bRi>}ky)ZE76LyK6e zUHr-+TXfT1$+KEhpS7nRkfx*eyH5cI`h&gqZL8`DN?%U(mkjrn|1Z3-Uc=o#=rgtx zYunNs@ml*aRa!V7e8#>_;0L}TpIL}DU!1kCU!{ML)tAH&S2nU$jM1iuLB?q(CQWIz z57etDgEuBE*kQr$cW$3YV_VX!NgCnTqK4G~CpT}V-x>KB!7WltR!eNyp|6T0s~QU6 zbZt9};k@{3=&s(ya)&ejOvu-HfhIFa5OvUSh~*hH3OjOuSBEp5_~y7)W#J8h$M`v> z=Z){rMk}v($uIN!*0~R`*nZaN-c-f$`bm0Cq2lLy6|0gu?K^Sfo~N&yW74!~4;<<9 zPbI$hG?8gP!c8TV-`fSunfi&(2*HTAHT$`{ZO0B$&F=l9$8qJNa?7S$Ql+#>qJMHm z2;@(dVSk`DY7LMY><`Y%fO9jNfG3wI`r1Zi(}{`iOn5euxG8rDu0q554Qj|WAUCG} z3FY0P;{p0{oXsDZdX=#E-S* z2QOqe7VbqN`-WcvM{Ik(xu9s)ntK-+y!Y}<4_G1u|gV6Bys&pg>7QsKmM_6$;kTc$c!#XR7Xo0_0bL5W?1!EJ1f?uN0 zvJeA0KWcl&23Zb~b-ds2`%H5gze5LQ%pF$4{#qGg^1(P1PT~7r&Rmb$+gQNNYgVOq zk|yGreF;1K1+Do@pk{h-WyDrC1Mj9%ct2f2%l>a0q=S;Vm+#{5))1`JrzHt}EV)}F z9r;I~^SA`1WcE-MO#UUP!XI|5XpO*uT9LQy)HrrJqQa^?s2yP;=|b|UG}!tQ4l0Ez zEg1-9)qrcZa);x>p`}KS~uHHB2Tg z2^sN=3XoTI6IKQ}{a(|5u9wJo6=?X>srzu#6f|Oqo?dhI6o2mX&@%-n)#J~Yit1yv zH0MrLnvgr*^2W&v6-5nFcqb)LHLXlH_m7a4cLkIGs#rtJt~+a6N!uVnBjjiU24Up|~R`f={Er@-#X*lGS!$v;jgT(NN2$LDv7z= z%3QZ7pawx{Cb3qF`8@dAnchG5J+ShgpUs}HkQY+r;;3Xs291Cco=nq%7bMv|x~;4_hlg3O>y0_p&oc;a(WDtmep`ByWLbzgoS z1}H8c8PWkv7!qG6qQqC^C5wzTgp&2PuOc|d@0rvtTcrjxFq)Ui&?LO#7H;cX`_E%# zX>ljEwyw(fI>cBYQu^3QJ)PVvPLZ|Cb#I+miX=zR^`QhlMd1D=0liu#_CKG|5Fq3C z{CUD|7vkWemwMdthDzm>t9WfIUY_TXK`wn=Q<&3$gtpKPUuJ`Vz-Q1WoVdG+1h{|} z+MpF0IV}&6ZYNxFiuGiyI^&+*6n4j^&P}6xFn; zx%Y}0J&Az@Aaq9FSax6D$CPBwX$Z{~l;MZJ3wuYYvX&?uLRaR?4D2j`M{1mY{h5tb zQ)YLxzcer4P%RTB!s&hg*WHMln%GToaxqb}3UtW6yXOC?f#fOPH7fG;OF%;cT}u#9kBZqZX~vQ1aX>mQ4;_Wo)i9eUfQ_T`ktUSsZ~ zooh_q{rCOFD6J<77V|KRsRk>hz7Vt#%9pyejSZNWMo+vqSI{4taCc~Nz9b>gCs*(`X(tC@&&)QG1SPAj>i<0EPf~Bmn>^>7L*-PywW6Lz!Vv;Xs5+Q2d8-bT2ACQ&d zlTVQhoOXm#%UND7hOZtrj~*_8^!{dIhp)JG+ud`TSG|5*EGFl~Y!S9qkPCQ8B-QVg z@>!eI)I&ib+BA6LeKjlK^uvOXlF!jm33S`HW|@?A0xuhVgkOw|9KfEji{q(|?Z1PJ zKY?o#TyVjEyr~aWkyJS0D0##xTlf@&NsLGom=ZmpuFw?MFejNDV!F3{rjm&UgF%C~ zI$qiCi>C}vSWmWUQHX{|SSt8)F^^+TU|a5?jhyxjbBzreOi3?}Oo)%%iOOuP;qBS`#k*Y~53T!4z{gG(L8e{( zRO^4Z)ft|*1wAU@qDK$;LI%Do6|its9uA7F0qxwbhci7#00$b(N!Oz`Ac0WZFT_+` z;@Im#mZF||M&+`SvTgkv8jk-i>RnTg=St+)()+unOj`S>YL|U(q`S;$^nFd~{RYXB zjOokQ0Iq?cCd>$nJ=A)WmIn`Og@vV7P-rJkSU?p4EpV8vSkqC&Lo$-?UEhH9_~r4> zlFj(G@Z~pKYG;bbjY1+&3heM4z&Y*IxXC^tvZ;jZqD0bCtR!=V%Cr4EVq)gI{Z!4FzD2%|g1d&hN@z%jEByDKjPNs# zlWTg2=|F(^AeF)LgF)ng`Y!__egH0Bs{F2~DY7vhC(2I7?$ehnzl%!q&nSYt3bWNh zq2ZRi)4|&*_xLsz?Mz7U%ab{hMR35Wi4T{>4yU=x{^}KZ&$(uoZswi+y3Tnz49y&a zEFoY%LaCHklu_Z7a?aqrIt=)~^CHbhWH+5g<5w9InT$-@Dt;l?Q5}FQT|`dg|I3Hj z!41b2Ji0w(I)NynP!lZb0L6W_NO0$K3 zy8sCdREe+2k)^RzCm=gyVL}@+@c9MH3l=hVS)P9HKVwX;=b%Jo-w#(rCjDVl00mMx zJrBvz*Cf9s!G{INl)6?IuF_i*6Kx{cOF&S&{;j1~vb!nKGa{lB;VVbmG#or-rnC9M z$n;tkOQtFQL+d*;g&sV2KpV0rO#m@|+FgXN^EUTGkZ;k|RMsU)g>%v1*;N zXq|d2tRQ&hNxN&!#D65Z_GOVhy3p?!Fe{9Fd493C+f1UnLraT&j7{H--fMFwV{~-9 z*Xf#tuU|!C5qAd8G6GLDkSwUS5TV&BN@E9Gd^iBWf~-a#3>+(G9;0L(_u&3& zRp}MP<$~~UE+g6Hv}q|(GJoiJf6+YTK7~+844l?S$|xc3i}(d90IcMmW5h25d&2I> zopHnAJ~hIq?+m=Qmy>W~diOH1XmOlo$PXOEn!fj*lWO%Mr&T~EaY-1k|Co01=jgP~ z+?zC@)xkY-C$;%hH6$5yzL=ab_WazZIEI|*s`fG6b`J?(d2>FICOIL2-mk@D*HV)O zn(#No7wKOy6NchVFl#FFDaIJC3Nyb&HrRs2zm_JEG3~o?qk31)vk)E#{FiLd;v#7r zuZ1SvU(yot^ltaMD709Q*vxLI^s2PU&~wGl-IjAALwW94+1XeraGTPGik)@6PbQSS?KA+`)htkbl5T>T zg^`%InMn~0n3|>!d@_*BAU-M>pm{Tr=T*aYz)1hkK(goo*$2=P$SM~4%*(%`DWA)RkH~zm_Amq8+b3*+Fgt%|+w*NexQJMmQE67Sxqbm28Wh!s~!AKj}ew2C$ow(aB zd5runcKEa(TnL#7weRb5`$PEipl;0n8{k1Hp~!o-OUdPa%LyWt{%ZUo^k8N!E z7R+q`+mWMo~DLGok8R=Pf90b;l5;)S5CrF(t#*ia6uC4gQSkl;){yIyx zjSp-o{tDf|86H=9(fG`oU5_m&{cYLB;Sg{_k^Z?xkD`X&?N*r-MsmKxNEbZ zzj@8|Yy=@!!~J|<9@|*~EdKM%jx`djks4mMZ-HIEir(La4vWpiiTdCCmJYYxl#KzO z!YUU>c?9}D!7;@27PPlhDFcVS566{D}k$mB6o4=?g1tbY zhiwU`P_mPKT!`M;`|P42LB7mT!TA?_|3_dZT?k87nQUEx$n2b)*K+CBP)L6*l&&Z1 zqc;sPAaNc8^Qb}(Qhck?PhN*V(Cijv0^ zt8~iQHpKHh7bdwEl0Q@tx^0bVxU+-M)arDOQC0LizL`IS~ z5DB4(@a5)>N&KQL)cX!qSMD$vEWg*&D%Uic?wyVQhz)7ocfr!(DVrr;(`Yb*Qq8cyds}gDTrH*YJcgV2_9&A7&UB7=Hb0<77bsJNyR}NwLrD z%coYT$E8x!WJXOVcyIf5^bDaTY`QV3^=p&eR4|csgHu%upPpeSoP5g#g`%z&w&7ya zd+rF>g|MCir;V{A+z60%CZ3W{fUFBIs-$>n?@XpJ@`#1%&S zg7eZU$^C(%fOyC^WYFOMagtJ9^Vru*LjVMlstG1{UM7*6f01gWRle|vsi{-J5rIM+O(IQ!UbE?g$^G+A%k(a5W*ilXw7p@0WA`K>(=dX6dgEeF%Eow;c zcL*qTRU?E!bUpm^Qh1-5y)^L=P)fa*oPIMN4YJr#r>#9+CH4oTJfF-~Z&z$)nw(h9DGhH%#}()@9eb9+7-HJ z+D_`*m31ydgZV95doF``f3H#yQoQs6B)!hadk$OA`b2O}{zm6KqtEm^d)VaqTz?>M zhw>m5YGWAaD;BX-JX!%`MR-7#^8Pn7EwkuqIkOm`=q6wdBZ3_FMVGm0Y}5DXL2f}Z z{Gh+;AXw!IGk+u#NG3-;V?5JssIQxZ}TF!gQVoIm9yVCESTj2f9mi|crQw2s0L z{veejJ7IPI^(#|Yqb3#(OL(cmInDC92C{gSU-NM%QP8qnC<-r%TS5Q6?d<(tXRr~b zw`fg$3h=%6&u|#odcafme!YAMn@N+U&qeoh?oN>XWjtQG@b}ye7O^veb96D;S8Lsv z30UTRsXj@Z1?T|=yVPE*Yvu8&BSQd|Hu(ibdud>_!>x{>U_*1ycqcHg2YA7AG7+lt(#6<_5S1H^OOg>8L!P&3c}nB`qd1F(Y=Z-w+zc zVOmQ+MLc=ES{a|N>39)`$dO&^Ij1x40`3||mWwcp!S{&ra5{z~X7cR7{l%e$l5-Ul zQyCKo0;DVW!Ron(hH9{0|86d}AO9Q)V_3FcMEK+t`{c(=1K%4oa&{Sgy;DBp&WKa0 zXz+i^PM@ggRCY7ArkwOw946&CBf8)u#8ET)<|5Jep(vXcfTw)X@@wm5_090QKw4~u zAd#9^RHSkhQ85y{pHt)ZxV523h?h}B#Uo2uboHMxVCgfDAcU->#eyA9#HVLuN?(5k zRqcLiWR1YvS9+BhWGV~p$?^t!`@epD`IZOn76XS7eY@mXh9no%d87m>@WfuUgh;hT z=N6t&gb!dV`;Y$(i^V#pe)btW;CtHi_i&uZNj%r4Zf`9$=BzQmd-Qt?1SxKuTfgD? zYvs8*`#h3`-h_{Dz(h6qm`g#XK&x@bm_EJdUxk0)Y+#%TppiAqHr3HGs-bN!)~Lsh zDBX8}mhcbg&zyI*0e7XLsjkKD;Xt5@1biPUvQ5|m45yvS8s}OO84F23;Mp|Q`hWO( zyZNH)cOk2QPzhmN!T_2%5Qqi~jy|X0*$A0j9B;3}V#DW}&|xMo_)iprrdHf2(;2Uo z##n3FU0|V$PTI5(%;|4-I*(X_h}Mnh48sfJ0V-5Sx53nD5*Q?NOeRWt5bXtve2(<8 zxsmD4x#4a{>DdQ*qN~@~gFqkzTD4%^d+y5L>vC*vY;zuv!`QO=)hci8z4a7qV9>lk z30-2LyLg6a8_OI`!sl%d0ikOz`S0Lg@{YP%=b6Yt@7IhFxFnm&UYx1}W-!Jl0luoDEr2pdj|FQ7?^PSRlmZctIAMVe|0gST$QZmi(Z$uD6w} zKbj)k+145#h1crW_4Y?FxCm$+5tbLwUp9<%*1nZ4IuZVp0e5`^p2%+DhS%fR$G$C= z?@F=I1*_kwYM~Qo=2ae5D)A&6S7AJX)kf9h?oM9wX5kx&5r{PS=vXQC5D<7YzO;HX zGyt9<5a_D@P(AEnHu;aGi*ZLD(D8ff*;#ihL$#E0!a;3S4N7;b1|j*bofQz*h2k`E z|6ENGe)orcj7z5}-~$+J@a1yzWbYH*qm`C&^N90*JMrocVj%TR z=CXepV>Ya_74G2(|K5;!npPr%Y_4MoZgwQjjGmzzd}A)LY}eMG`(^bUOCAmOEj?Lz z_Nx@wBJDeCM7K}EgG8_|4z?KmcA_>vRL05@0*KDh&PzK zCkB7B1VsW2o(Zk$&Kkw9q*Ri*w=X%AX=Ai2c{E z{3lPk3)&d5r`~C;Asgt;{kv~w%QeB?_*R_r>dKN|dwq@zGwdGM?#JylC4o{}ah_W;?R|3VDXv{-*_e)#d(WN7l$L6urJm zTTjoTK8X~1?r^EU`)D7Bh*86xkM*9u;31_8k0eZsJ@-}dNischBXw;pv_qD;5%8kN z&=BPNx#hR$Q4@Jb$9iPj=4{vXOFK9KZ=Kbj_YWlN?u(&T+;vQWiF7B#XS0 zh}+XB>=JJzE=g+-r};NKveZ$3(vkVMU;|3mL+oh$F{SA{?WVELrHGXV&--Go**-Iz zgCdMEcVDyoJc*kQd`&`R5Bj=R*tkUkfLoer$qaPM&2j$bsDWoa(ZDRM)s@qLuwKr* z#>48i{B<4sb)WD&S+-PKM**jpj}Txy^>$x2^l0Nhr#9{s5pwL4{) z@b>?60UlC^B;_d4^tR`Qcj_anFHg=OSW)9-rxz2WB)F1bXf6L^z^$tvY0^Z)$4heT z@Y4E6uad`|;Cg}w?q+Ua54{G4n%8o_cThSJ9BcK8%?djl@8Z10qCZZ;op7(esQB;) zQrevW?-kCs|K%sf4xM(wPv(9Ir`)Ih-ilWII^9>4nt}gW`XeG9P3P-`Ij8W)=E(v2 zNgM1mcC(J4EZ)EKLR*4x(V%{f-WpT5L4Ty`(S+k``Rs1|KRRM2B_=J>qstwWTKa@Z ztd5oVPb47%6HgpneHhYJ+rn}yvTV0p>^_Qp53w2B3I8w?63c$`;;7?l`!uR#*U0d! zm7uPT*5}D4e(MSv6J7dnY;Z`tvBhIG{t}@^dPpi?qQm&^5zYOVujnxe?}zRg;m_bA zJ1W@5)gI~x#kKF>ssT`HT5*JI#VtRJG4Ia*YwxSt+F+h|p~cn=PR7M|4nj}XLo1jH$J-&v_d{L~T-Sn2!ip;_?MIz#`TDa$(3Qu8F$f;eIgwN?Pu49Kj# zmeId5t@rKLot{X6slv>B!}oGZHW-`r+_{ILF;Q|x6mW6SsN0pG*@VOQ$zpO$Y>sqC zFq7wqxUfV-i?dy&FW6iPEXH6Cy{2=2e^35k9O=7bArW=(C-C%FCec|esZ6zb4|nzY z0ORgh6}ao*;73Y58bWReoWcqrqongas&hm9HH@gjRpRhcCn*h0;4Kv#YiG}1U3}Z; zwQbaZ@lCt;=xx>ixX{k9F2NyiSL;P;iamUazVdSW_uo4lxxemi32f32JlV_ebKOPK zf$^?3!Vla3kmsuDN=+ex9aS8*mlz$(x*p>NL7oi45aO^Q6XzgWIZd2lJLD2A`DbC z{I-8yL@CmAhJiq&DE)Gp5@^E$nGC6{ho(Ou)skF}@8yBH+n>|?pV*G4g* zrv(*rh&D}lsJWB`S~)`W0h)_yy=^tw0k7m5d!`;KM6{J{NVmKb z0Zu8p_*kIwhc=tZqq|d;s1*FQ8?p+o0X_b=O|s2U_}KSjeI{5}1gJgjoA()XwArO= zOsEl4Z+iV_JcaQ4ZgQfLt+e~vP&4@DajrLrwvk=Dkg177xPJ>LxA{DpWYzir`y6~8 zwDc{;j{7UuEaJQi2;ftj_z;WDmo8{BZ}LPkV~BN?LYF*gVJa_?CqHkD0u8l({%SjX znabU~s_SIK8@Vukm{)UM_Kknb`9j*#c9m=&iP6@6Zykjh^pmdsK1WI#kl9z;R;1Xd>0phh=`%pGNnOjUaB8z{F_`Iric^=O#&_56dUKF1BFNzroo*0!IgX zY5TTk%CEa=G?wH^KihtQyJw{i=&kdC)RK&$4TNLW6b-k~@A?frO_L3U5^q_b8Si}{ ziiv7CWhFBnIk!iS)Cf3>QFHZwG(Wf$pw7i)BhyF9Pc}eiSs>$UJF@QVUWDK#vJvBY zTtfB&VUg#Saj=tcI0QNSSUBR4Yke#UCB4LUEr!EFzNd*czaI58nG9uHNSJ}v18tC3 z$+@8S0b!Bkkgt}&;V`k?pkt&6YA%m%)8=nb_ZfwHN+6OOptut+Unr2{-OaDeQ4i)n zAJgSWcl_~nB#4)=Wg)+T?DaH|n*r^v$@HEr?)#nX(>7Wd^)@5y(EFeWJ7ZEOhlEYP zamBl55OKbi^y_;spK;mz%wOb+|tiLpSA#n6@+LVkI z`Nzo(i@mX;g$l+8cGU(S(mO#mR|##_u`^c$K&S6jzD$#O z$()-aFhhP%zmi+9`f(OeFKuS95LguaEMyRVm&Ov`{{eNj=`yDR>H87>5RI-N340>? z+mX<5j)Plw+Z0q{A<9e@e$rUXI`EkIShaxuvGIv8 z)U{4wT@h^!Dh?D|Q?JGyn0u^dZV!!tU;JQ3>@F+Jrm`(G>@mJX)&!45S^6{l8NIv! z<8u71EJPNC#V$cyva4(;5B=4t)YRkp%LULs&;~XyLG6hi+bm?VwilkFmZrmMLH(kq zRg;msfio1&h{~*C4cEJH@)-xcg%I0K8RmR;$eysQFx*WQCE`nDw$}Ns{|g1S$*maK zq#|xck%t2vlC$~iw_h&;j9(OR`IwTnvr*7tQLBh=*kN=wmQkz?QPP$qtU~pe&rM3; zs`uaq%-J92mNj^?=zNCgx|axtSBW`vwulFRM0OS6>{~FQhO~tfITP1ztDr>qzX^u_ zFU<3b`v711jN@J`uFO^=i^oM=ikj7u3_)(tKtVz9kif(5r&yBLgEn?sL07M-PO5b= zzv(5H2s8CX<3nsyWGw;5*?@$*Gt?fJyDS$T#({0Kx_cj7TvqdEO3}?-aS%zR{w-N;n3XN#aq58J zyWRYq!+`wsv3paUjRJnAV(`gX?RbV7uaZ*GtU#tkB65 z$)L}g5_0ZW=GRN)sfls}+)Dd<_llcenMWY>;M22TT}G(Ro|m=5;5D8?VzWz@ZApFv zH~!q>htz?NsHm1<7^vAEa|yy3Yx%&J_v_B4c^Iroq3ze)aUEA-hQ|Dag~V6Oc7D%5 zpN$kXm{6lzDsN8r+Cp`oSdF~3emywsO%VK$vHqm;JqQx>AZI4Wt7nc3Hk)H5D=GpU z_V^Ck*uAQ~NyKv(-X}LOV3oL8X%B74Ic<5iw#M&)pxy-1N~vS5vag!)PND9j*%{$a z0yHrjiFI4sj}m5bzso|gGPg@B3MfW`ek=$N1mNQaJn?K?4yP#x8(Owe1wAA1oyCul z^w0*T!S_6bnd-`Yw;!NB=S96LFd=l8mU{e`B{Ee!K3UA-RNT94R^O_6lhj&N$hTOFs3CP+4F%A;0ExCbd_t9 zZ3PO^2_FUIqlMAYSq_*F_WuGC37y;P4KF{d6Y5Gywe~y>>FlxCTGab*{~n&!naQ97 zueA??ZzKD4%+@x=5S-B!-wK#$x>uNrzdY9=!2~F>?cL!_J^G>4mZ;<5@b1phdNs$v zsrRaDE1QrjCK<>X(|{IS?-{|p$qJSTs^0Smt}zqQKWz%+Sdnh5I&v7v5-6}H1)y@o ztkQMDfw%T9^X;G_j^y#Ce@fe)Vr%tp>a~vl(xhc#VQS{5O8yh{;x7YW(VPkpR`2<_ zBAdy6&OxM=#b9_>N@vE|JM|#3FjNB&Fpu36otze;gw*T*ZPMUO6`nHnD#})B$UluFlbOY1Obr-6tlqIg&99AWG03!%=bjShGw2h!@n8s>OT|Upu_-Y6do~^# zta4WEf&d4jm??Bp0y=fDn|$~E{Qgh>To#aB^ccOmii5!4qa@U}z9OG`NuuJ4n4vCr z{fgScc?{_@t24QXY^X~3SZE&Vl5%WS;S{5|k&bMPQ<1{D>{!dox!-y=z^XX~I;+;h zwbq-qtm%=sjF)^F%)!IMn}>`2&Dy8_`j7M$9%S4UXqi6bMSmGp(5#1a7P3OHMX5!BLiqjk72#IZxS^SI zaAy(BLH8KVg%dDsvj5ELSQgx$QJQ6M8!Zl?&99kHqZ%<$XyFe_T^pah*56%>V-$Z~ zz$0xS!q}*aJs^Xx>8>%o7fAMpb=&{qN}320Ha9&xm5%({Y=XVYd(HKs>D#+@F0F@nG^Ov@*T>8`W0TK?ZG;H=VeuqhkF?P!T7CUS%f zHs2qUc$*TrDfSysaQb*R<5AZ88te}lJTGPJ;!sE|$?bfIpaZ@?QwuC3vyXt*V5rE* zFt&&ZxBj}#yeI6XhFJpzJi>E%VANvY;s&fPe%9up-yvmA*Ud@3)H@gxMd<7~Kdidk zzCd!HY(Y_w+YUlp8vXDw7Qsc7?zuVK_K`(Ac}Zq2wfS48cmMH2aags;W`tnI=<(!D z1UCoc8HdnKDAb5~42o}@&&zOoLt4yg6<2;t#zUgA?K15wj@P(os2y*VrQjgJ{&$nK zbJ@EOFaFMM%2Jk`zNsHlD~hzswM2R|GQ3c4f5(3r$yQ@WIXC_N6+K;z>A^~|GxR|E zz0;=<#IF?0R|;eaoJR{KkkLEP1Nw1k^{5{7H7ZxxUYL zy9K5xPkVCgv0RakUc29|dP?bb&{52az~&%D=-ZmFL~1f9cv6YF^KoCYoyU^82~tI4 zFyqL$NSO?CD$-Gp$u*?*R{CmOQCOUlB`2zcOkUWpd?L!r0Fs~l7hNB9sw8Q5n8h#p zc?Ao^;2~Shms8c4vYqaNYalHQe+H^ofap5q*K_7sE6U0p=4J3@BJ?oO7DV1mj5;-8 z8<9?EPKoJ|hwt2d;ow)b5*}@w;o0Z~k{)0p;LSaylf9)rK@d|&5+EIT6BVSrnK%1AbwAxc> z>pNnRKvyq0Xb?v(Obe`Jy6DY!UTRnnK`~I;D}2Hy z4x`g$`-aO7uo$q}7!B=+p>m1t6zNCV05-r+c(wvXz4 z*F0P&2I9CNMM^8ND-x02CFkzA-cMVQbe3=fMzs-Pb0D!_nT%ic|aIwc(OOZck z1Wcq;1NGb2XZ^1id>)j{Q?c%jwp6@?2{&BLTV!9ljs7W(4p!R`dyvCIaNp0S7adgO z4K9YxISqGTIWQ0eipZ+*!X+yBsVVxC|HGVPtg7nT6puG^A-%$7 zqeww3O}oit8xizI7o%9G9EY%crDB8uzLbDYVeVOz6EL73l4QMtWnjmc~O z&)=}0bRD9=NeQ^F#}G%C`xqFX(5nbn<=%}HYB%dNR;pPkL#kqZ(2+p+1lYBWPSD|` zp!%|inpM6ao?<6)mQj>s)U-y99XXnsdgC&;b{e_|oMwXp8H(9219=DiRXXqUIKY8# z_m~)sk%GypJRu^Q%H`iNPyVbw&30?Pk%#qcUFmL@3!j`V<;eq-sH4u$Iv zG|S|;*^OQkI^UbVm55|ivdlOv$*ELO7sy(o9um80OKeQnHKq7huhThs zSQPlU)&+W0VquilMV)p>J>~{VHy-@zv*4iWTn!^Hkfq)j6)49Lt*%09b^s}G%*aT1 zZu3qigL8BoqaDSKI9YhmZ`5-b1G25M)b%ysa#_0lFoBbkD55XnmO{a9`-(UqkCnfp z#y{2h0|qQI6kIe6l!RMP={X?xmY8(b_FpPlOMVt4D)dMnQwS@mkZiWnwPdLpQL2s> z#a{z3n)2wSvbL&UCiMpn3L_gGS&DPmQUK)Yu2=LIjZbW=ak(Bu=$}MrO1oOu;!0-v z8mr4hGJSkjSZG!mEE=Tvwo7Xc%~N~UH5agsoBCeTyl9JZ97qp<+)`*rjL}Zw*@X#d z*6NIgX(C?-u~k)BflrlBsB}PCtmV)sQZ~CCp$&Etb~1_-kv#tzXI0@J#iZ)*xlBCW zYLpsckaVcgC^U7#RjBk)%d1N@&#KjO^r35O!i9%N^b<$#+m94>4=ZoU{Bh zo#Md<74@R>Qn$Nr^-JIBjpm)^9$R~oX#i$G!XidA3-4RYRNU|0A1*c9okyQ4uvmQ( z-mQo|fcf4o>uNlPM$u11gR)=BtuP_uhjXeU+!~b-6Opt#j0P6?0RowJpV=(Q(E$hX zV3u3E7q1{2MalB8p&@nlW9Le1jKrsEcU9xzKdSqXj#%HE8a;+ zgspE(KM8LC)P-UuMm6LaR6G%A)th%tkPKTm}*_82#uh*{dvQpr%MHC&_7&S zxy1;}`NzbWm3G8xQ5DisQWfFE%R(4}ub{e!tH_ZjWa+E8J*a4S3u(er3aI zEOquRl7nKZaLr?O(%K*od+64IpPKldUrYQ69GHK*@?+{rrHd6=h3&rbEM_*_@#%bE z_iEmEJJ~*iJ}H%iE4)CB774dThV;ev_E3H-6}Cg1zfGKHPiX<`nx?g-SR~!4s9v2M zDFzu9mb!mCH(gCuK~}+kee2`b?mdwb)0z<1U2b*YBpN)77$nMrC2)7Qi4c*YYvHH6 zzWM;ei?CmZo$2z3ZE%Zt+Y8;vY>=sNIv?svDWGq#+EL~GdNOslPok?PZi;}}Dpory zT<2&%*it0Z#8%`;yDHvewnS^d&ef3~Vu(A;Bka{6<>Aqw>Cu-QEE?N}xM!y*sTg!v z?Vrmzf4Lt4u=9Esq9R7UFxu6%kkg+a84{pKXrsV6=?`y(y;6wiq2t%!FS)2dymFh~ zz?Ziqyfrg$N`OtgFoZB89H4k#2H+=pEyyr!qq0PL$kLWUqizL*B8K!21f-{+?;aLB zT_jz~+qW$lYQbG2*Rh zk#hTECDGlJJF`P`$s`kzfR@MV>SSXIR%g|btIdpcd6`!GF#7>`HN2@?npUo^HdVp6 zDKZJJ|Ducr6gFT+ZYkgT*s&lp)YCiC?|l{6;%xk!_t5GVf8VQcy$P>_f!Ue{vi^G+ zKI>b~)bo*gUvjE)U(~R)rPaADQ~T2pco(m;>sOm9$U{B{;dg+)=-T@2>}a=-7fXlG zUAYS++Rd0{EG+5?zP~W0Ab#`=eI+@f#r`gA11p1cj))Yk5l8-?26U2F z9Z~A!5*+xo>`*DxP!eaLzWg^FI=N4M*#ndN{UOKA5~EpHGZ`k`zlbJB+edOYEEW~5 ztD*t;iQWiHk)lzYMKMy|nG&1Y~roY}D{N_N#r#%ZS0VQgTiRT)ha z^>O1gP&#SYc7Do^lu&Akt|LC_Q6lltT>eH!=L3!og>9-P-u3P^yQMyh$9^2ZP8`a} zkuY2Z8~!AOEZvI!|Aax&0bQ$SVJTAgzt9ARRODY{+U<(yj(>XlmzkJ_Vw!9X=`s6! zfE}{%Pt)ay(`0YC!vxc`RLPKTj-%2M0&W50`O}?tI$RV1o}9n)^#E$N|p*`^Kay z*@T$iQvX`OgYWkJY@J`8T)u@AUo|Nt6O@v#{80n|ci;WUNLy1wXbv2w0qO^_Eh9ky)U2~nAg?A# z&cm#bd6xuzWh;zeBDHjj#n`|epD!9xgX7$EP9#_(4jFbv*g=`e3Gz5JE$!lNEQQbO z@A?zx%KT6h|4hC+QRj$#X~)Kgph~;W9dv?<>NmcUjv4UnbCghGf_G{qVcu+Eu(BOR znpuUNA+F)kxBjpNj8R|RZ*j6usegHk{22=8<;p}m<;)sYnW{@lgf{-gq(q>{m`(VffO!z6CPhrYcm6p0=oLfa;k$b<9PPmv6?)g8;dKX5owCbqGN}{Gj9&A;{HC9L z0CgcDZ*`E*RRAjEar3uVDr(3AJWA!)$v(F*Go>M3>6)E8F5u+D#boACCSP>*%AN$- z@awL3bJ1U%OTA#@g9a8(KnYXrP} zJTgJl>il~ul(dJdihq*lYcF)9FBu-QY($YBz7`JUqlq^e>!s8$>KeWsnPe9wF6b<6kb0nF;f9zR-3Iu{i@&F~kraQZ>mR+#=#Lpsq1!ozxZ;MDL` z*|s+NC)h9b+l<74fGl#v>DxkJ9UTnnOYWeb2FLi4Z**UUl-85?NNGM znEbTvH}{rdUSk!egWcjM?ejf8iOVX82Sl9-F`}Dj2s+Au8tjb?@SiDPk<(ifRt=4R z6_rC*!gmXdKWA_N5VB&C-x->#;l|m67*2)|*V~uWpO0maU##RLb15#&wVmY@O5g02 z*V_5-qLLl&ly0Z=c?FR6l!J?U@B?q}BZnaMIrYL}`m5Hz~l- z)z_FUXKvcfW4OO}lDIkO+j{BA5#qeCb2Q}%NO25b^y~z5IJRbSmunI*5>lE%QC-F> zzqgp_Mbw%m0V=X-FE7A)j-_;GIU1|JtkL0+w-}SLYh00wTKgp@ERuQuT=PBsf#3Yu zWIg~m=C>8U`4e*?3eoba6{a$B@{Tn=y2{vm z+<-yJ1RE_Gd&C41k`1|BA3KzK@y`!?E4EI+!*mVm3zCQe17(XP6 zM|KGwc`T@YpGPqfG^ftJQ9pCtUeLi;@CfPT!h<@XxerB8BSsV~mn5tFBj*EicwH(7 zhXPG$P1GW;pUbsX)NrL>JNW%C#>_cNo)F9C3m02H-Hq}6ae0Bq??;|9=We(r#>GmW zs-MwhxabP%$Al!dJx5BL4CeE9>3|ygaLP=TGifjm;#0$vY_H5mRSf*4;%u4`mG!-( zm0+%U)gKo~wUyyiK6E{aJ)8zVhca}pvG20TOyez!ZD2HkGC&;pdsP4+$m4#m%mRES zP%KClZ^k_~mqhTh40#f4NlRB{5c*=2R~61N*^((2 zUICDSbs0s1EUqxhNS4G*ZPgX8C0HMmVfs^+EMD$VRD4COPvxWCWjI4FWYFSAna|hsh<<;m z6e(`0YDY;WMqs&*l>FM&Zx8@jxjw$(dgO2!{H-o$q_z={Y81(dZAR|~`ocSXRkCD+ z1hgQxcK==|bGX_5wa2$#NrGxyh{jxkrl)kK-$>B>^MF)%QB#II2$1a}OMJY7{_c_h z!?(>pz(_WcgXINR*&;>xFRBd+CMk;hqS?r3R~z)K>4i*M5-Z|sA#V1iy zqmv(TS9K-viOr)ve^+{(J!}$*qC9cWZ9)B{t*D_OrR1t(F=HaBwWB z&JWjmVPNph@c4YpeN%YyF3-S6nY=w<|W7%==KQ*&I6-tLLxqT6I?Ws zpu)h6+wsJ2}RDLA;*@hZBcW&^)8mb0BK`umCFmOQFxdm%`HqOWW+t zIr9eG9tAzMBn4j#-tC97$cx%YDRqy2F|mWlVa@PJN?+OI-bdZ^d97rjOK%co{Oj=N-Q#O zI1SN~SX8g3PWrv9h@L(8@e5)tM4nt6u9CYR*8Z28c^s8i*v0p${ixxZ+5}K~2{v?p z<~O@&@Rb^h{4fZ0jGsm+*e%wA1fTkAFr05Wp@d!AJnEHB!}(`5=2>wKwcA zjfx^E-Xf;R&r7fQTCgM3wV|s)w89|t7`%s!`ESsJ6kX+Y#mM_Jg-i`_=rydkU0U&yrkEqR5en$;Zbhu-*y574<<&Tt(pt3=LArT)9(+ zrpT7n55B1W!XJPj>ythuagzY)hoM~TdRfEVO?xQj!2FcB=P=>%*m?RbVJPpfX35UUH1OD#JdpWsNq$U&;uv z{s#`U4^rg2N0BIIfy2wKGnF0v$#XLg2}*-5v7>FdZ9;o5SFu@Q##mX{-`;P*4;N%r zS|9*RpW*;=z%AVj+iEcly`Ip{1~=jii+FH6cXf0|0%!cs<1Cx0risRw55}2i@qsJQ zH?I7TN3VFU?b+b^m1s_J+*6|_ID*eGBl@wivg`kui_7}wDS1deUAsINK94{^pP<|t zE&V={@w83x0J*^}@KFp_J1N%CQzT1__Cl$Q+8a?=lG)?ufKI@^mO`QjGw((931B@G z^;KY74WtZnHSxA^(H8tV>slm#!_$NUZ4Gzr%BHC16?;sT6lCtMV=$-a1sf#?rR}T6 zYk(G1DF8dq;o~Mh+(nhSKagv3HOfi7z}2maC%8a4#^}3u&@FA|xy*58|rYL`yFEGOi&e6v2q7`)0g*s47VLaRUYF3$W&Ey(g>@2^p7pBrR z`GNFE6s4THQ=m!J@k>^vbMKs`G=QDf$aBfA4rP+aD3SHWrQ`1y$<~s>3jMK|Z2YND zy7AFAwRx{Kn@Ox|#Vr?zUc49d4?m8m)(NPwH~>YmJ_Wz;IUV4HGvYiK662n7Aw~Ia zB<~^{Jd!Kcfpc=x4Ji%B6Q9Gp2vWO)A2=u@c)G+UJb@rUi2V`fHGwbemCq*m^QO_G zTW+Ic_et^C(4fbPpq2UpO-q~~yxDi0Ie`nBRUx2~NW%O=>z3>5)v=vvyOf+Dax5m2 zUhaiID}$-rZw%_d(9+a_u#MV0+Wf-2!hEZjaBA02gSdhb9@7oa-x5e0mh&xQy(m}; zA|#=DV7;;7N-@)Mn(V(F9GqH4GMPJ5ccJ&^5pKH3S9vU{1u!6W9S!Zso#OU=65dOj z*qae>YUU@qFin)WZGX@91*rrg$y^UKTiC zJ($9N|8#Op&Oshrw1q5x&lxfS&v%nV1=;Qigxs@dMOhj0^9BMeAK72g_4qL8Aw@-EZO%paL+-9Tv3G)wY zT~;nfwwY_tShC3dOfz&0YHqh_Z!a$v$|t7-Lz(HFxgMwTY^B{G!=|ZNbLfolFZ`xN zn15OmC`1a1k;8C3l?@XA9AWzhzv8#Om0ExxSG%=-H!A99rUnM#I}h8A>#3!vOjJzp^))IF$Ez1M>9I^nHxN`Pl#=V;V{JB{h4Aj zjy)&*tOWsKEx7iI!-#CWpW29GvVS5d1laSESa{GS=IdKi&Uzd?f-v$rXpggf7(wNL ze3+JZiZmOc+6?FR4v>6=M73%%8pw*Fx@*z;8uD?pEW>606ha%b9<-*q+qqjs1RFtgmL$&mn z!NHh#^{6;3G!d#;nm9mQSW*11+3r{G{TypuI+WMe<{KMWrbie%x1JPp@4q*OEo< zHlzwdv17BQesNO3rVPctU~n2e**iz^UP-T@Z)!HMZ+`pTO zr0`AEvY55_v-X4h6DP*R3iOVM2D)Dhe6vlasJVP4@nuzIp2Rv0R0A*Y>2erTpoiXd zwqtUK`fxW0hDwir+*R$yy5UE=l0D?g+o!9NHuzM9<2MdWHO8g(mO4w0NP0P=mtBU7 z6R_Rg9FA;q7`@p5t&DNvy@MzunN?a0b=(l;>tucp#BuV63K;&!O&{5M%U$=+c-KNh8peaFx=@c!`SaF0?A-F}j{NH!6w;*FdoUup{Izl1pz zYV?X6cC=}BeU0!h4UUFN0fe!q7}*wj&Z2h&OI5F35!? zb?@wQw2@3MM{DKZ*pO|sM^C2gM1d3y*`NhgN^SmQyo{h zib%z2FvjC<(N{O0};A;kTl725s<+58zYdPt;*HzSS!~ z=?pf!gnN;|Z8=`XI)2ehg2i`6&7(C&NDk zZa1k{mOvv&(aoL%*9ER}rW&P(K(_bj zW?sj^bNFzjC;4v;fLD;0Lsx{Ymg<{5;6jUZsewl~nXD13f>js9rv&zU);gz zyBDxCOL1Gu#EWxw!jdcQ;>Ziix0K)s^m;e9( diff --git a/src/main/resources/calao/splash.xcf b/src/main/resources/calao/splash.xcf new file mode 100644 index 0000000000000000000000000000000000000000..0ccaf30982ee434cd6dbe9ce04404ce3e7559e1f GIT binary patch literal 76230 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/calao/splash2.xcf b/src/main/resources/calao/splash2.xcf new file mode 100644 index 0000000000000000000000000000000000000000..60af827062f4ebcebea7797cb7b9a981eee4e6bd GIT binary patch literal 495406 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%0DKsV#~hAVIo5G(%-|4${3Q#sC${4f7L@=v`H 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 literal 0 HcmV?d00001 From 3d319e43053d9c92e23e33a8b302561311ec18e0 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 14:25:19 +0100 Subject: [PATCH 12/35] unused files removed --- manifest.mf | 2 - src/main/resources/calao/logo.svg | 4523 ----------------------------- 2 files changed, 4525 deletions(-) delete mode 100644 manifest.mf delete mode 100644 src/main/resources/calao/logo.svg diff --git a/manifest.mf b/manifest.mf deleted file mode 100644 index 3d55486..0000000 --- a/manifest.mf +++ /dev/null @@ -1,2 +0,0 @@ -Manifest-Version: 1.0 -Main-Class: calao.Calao diff --git a/src/main/resources/calao/logo.svg b/src/main/resources/calao/logo.svg deleted file mode 100644 index bcfbb05..0000000 --- a/src/main/resources/calao/logo.svg +++ /dev/null @@ -1,4523 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - Gnu Lecture - - - - - - - - - - - - - - - From f796fb769e7e9cd6de9b5cb19db443fb5f260c02 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:13:32 +0100 Subject: [PATCH 13/35] gitignores removed in file tree, all changes moved in main 'gitignore' --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e23c936..53a9412 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,6 @@ /calao.properties /*.kls /src/main/resources/calao/old +/src/main/resources/calao/TimGM6mb.sf2 +/src/main/resources/calao/font/documentation_police.svg +/src/main/java/slider From 8edc4279b95773e9e7394138fe9a21138036809f Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:15:05 +0100 Subject: [PATCH 14/35] gitignore up --- .gitignore | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 53a9412..8ccfe72 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,9 @@ /logs/ /calao.properties /*.kls -/src/main/resources/calao/old +/src/main/resources/calao/old/ +/src/main/resources/calao/svg/ +/src/main/resources/calao/Exercices/ /src/main/resources/calao/TimGM6mb.sf2 /src/main/resources/calao/font/documentation_police.svg -/src/main/java/slider +/src/main/java/slider/ From ba7e87bb017cba8184299c5503e5e8e157a5d215 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:25:40 +0100 Subject: [PATCH 15/35] Nsis config file & templates moved in config/nsis --- .../main/config/nsis}/setup-calao.nsi | 0 src/main/config/nsis/setup.nsi | 285 ++++++++++++++++++ .../main/config/nsis/setup.orig.nsi | 0 src/main/config/nsis/silent.nsi | 63 ++++ src/main/config/nsis/solfege_simple.nsi | 54 ++++ 5 files changed, 402 insertions(+) rename {docs => src/main/config/nsis}/setup-calao.nsi (100%) create mode 100644 src/main/config/nsis/setup.nsi rename docs/setup.nsi => src/main/config/nsis/setup.orig.nsi (100%) create mode 100644 src/main/config/nsis/silent.nsi create mode 100644 src/main/config/nsis/solfege_simple.nsi diff --git a/docs/setup-calao.nsi b/src/main/config/nsis/setup-calao.nsi similarity index 100% rename from docs/setup-calao.nsi rename to src/main/config/nsis/setup-calao.nsi diff --git a/src/main/config/nsis/setup.nsi b/src/main/config/nsis/setup.nsi new file mode 100644 index 0000000..a2baf64 --- /dev/null +++ b/src/main/config/nsis/setup.nsi @@ -0,0 +1,285 @@ +Name Calao +BrandingText "$(BRANDING_TEXT)" + +# Directories +#!define FILES_DIR "${NSISDIR}\..\tmp\${LOWERNAME}" +#!define DIST_DIR "${NSISDIR}\..\dist" +#!define RESOURCES_DIR "${NSISDIR}\..\resources" + +# General Symbol Definitions +!define COMPANY Colombbus +!define LOWERNAME calao +!define URL www.colombbus.org +!define REGKEY "SOFTWARE\${COMPANY}\$(^Name)" +!define REGKEY_LAUNCH "${COMPANY}.$(^Name).1" +!define VERSION ${VERSION_NUMBER} +!define EXTENSION ".tgr" + +# MUI Symbol Definitions +!define MUI_ICON "${RESOURCES_DIR}\${LOWERNAME}.ico" +!define MUI_UNICON "${RESOURCES_DIR}\${LOWERNAME}_uninstall.ico" +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_LICENSEPAGE_CHECKBOX +!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM +!define MUI_STARTMENUPAGE_REGISTRY_KEY ${REGKEY} +!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup +!define MUI_STARTMENUPAGE_DEFAULTFOLDER $(^Name) +!define MUI_UNFINISHPAGE_NOAUTOCLOSE +!define MUI_ABORTWARNING +!define MUI_LANGDLL_REGISTRY_ROOT HKLM +!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY} +!define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_BITMAP "${RESOURCES_DIR}\header.bmp" +!define MUI_HEADERIMAGE_UNBITMAP "${RESOURCES_DIR}\header.bmp" +!define MUI_FINISHPAGE_LINK http://${LOWERNAME}.colombbus.org +!define MUI_FINISHPAGE_LINK_LOCATION http://${LOWERNAME}.colombbus.org +# Ne marche pas ?? +!define MUI_WELCOMEFINISHPAGE_BITMAP "${RESOURCES_DIR}\side.bmp" + +# Included files +!include Sections.nsh +!include MUI2.nsh + +# Reserved Files +!insertmacro MUI_RESERVEFILE_LANGDLL + +# Variables +Var StartMenuGroup + +# Installer pages +!insertmacro MUI_PAGE_LICENSE "$(LICENSE_TEXT)" +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH +# Uninstaller pages +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +# Installer languages +!insertmacro MUI_LANGUAGE English ;first language is the default language +!insertmacro MUI_LANGUAGE French +!insertmacro MUI_LANGUAGE Spanish + +# License texts +LicenseLangString LICENSE_TEXT ${LANG_ENGLISH} "${RESOURCES_DIR}\license-en.txt" +LicenseLangString LICENSE_TEXT ${LANG_FRENCH} "${RESOURCES_DIR}\license-fr.txt" +LicenseLangString LICENSE_TEXT ${LANG_SPANISH} "${RESOURCES_DIR}\license-es.txt" + +# Texts +LangString FINISH_TITLE ${LANG_ENGLISH} "Setup completed" +LangString FINISH_TITLE ${LANG_FRENCH} "Installation terminée" +LangString FINISH_TITLE ${LANG_SPANISH} "Instalación finalizada" +LangString UNINSTALL_LINK ${LANG_ENGLISH} "Uninstall $(^Name)" +LangString UNINSTALL_LINK ${LANG_FRENCH} "Désinstaller $(^Name)" +LangString UNINSTALL_LINK ${LANG_SPANISH} "Desinstalar $(^Name)" +LangString FINISH_CONTENT ${LANG_ENGLISH} "To start $(^Name), click on the Start menu -> $(^Name).$\r$\nYou can also click on the shortcut $(^Name) on the desktop.$\r$\nFor more information, you can go on our website : http://${LOWERNAME}.colombbus.org" +LangString FINISH_CONTENT ${LANG_FRENCH} "Pour lancer $(^Name), cliquez sur $(^Name) dans le menu Démarrer -> $(^Name).$\r$\nVous pouvez aussi cliquer sur le raccourci $(^Name) sur le bureau.$\r$\nPour d'autres informations, vous pouvez aller sur notre site http://${LOWERNAME}.colombbus.org" +LangString FINISH_CONTENT ${LANG_SPANISH} "Para iniciar $(^Name), clic en el menú Inicio -> $(^Name).$\r$\nUsted tambi�n puede hacer clic en el atajo $(^Name) en el escritorio.$\r$\nSi desea obtener más informaciones, usted puede ir a nuestro sitio web http://${LOWERNAME}.colombbus.org" +LangString FINISH_BUTTON ${LANG_ENGLISH} "Finish" +LangString FINISH_BUTTON ${LANG_FRENCH} "Terminer" +LangString FINISH_BUTTON ${LANG_SPANISH} "Terminar" +LangString BRANDING_TEXT ${LANG_ENGLISH} "$(^Name) Setup" +LangString BRANDING_TEXT ${LANG_FRENCH} "Installation de $(^Name)" +LangString BRANDING_TEXT ${LANG_SPANISH} "Instalación de $(^Name)" +LangString LICENSE_TOP ${LANG_ENGLISH} "Please read and accept the following license:" +LangString LICENSE_TOP ${LANG_FRENCH} "Merci de lire et d'accepter le texte ci-dessous :" +LangString LICENSE_TOP ${LANG_SPANISH} "Para instalar $(^Name), debe leer y aceptar las condiciones de la licencia:" +LangString START_MENU_TOP ${LANG_ENGLISH} "Select the Start Menu folder in which you would like to create the program's shortcuts:" +LangString START_MENU_TOP ${LANG_FRENCH} "Choisissez le répertoire du Menu Démarrer dans lequel vous souhaitez mettre le programme :" +LangString START_MENU_TOP ${LANG_SPANISH} "Seleccione la carpeta del menú Inicio en el que desea poner el programa:" + +!define MUI_FINISHPAGE_TITLE "$(FINISH_TITLE)" +!define MUI_FINISHPAGE_TEXT "$(FINISH_CONTENT)" +!define MUI_FINISHPAGE_BUTTON "$(FINISH_BUTTON)" +!define MUI_LICENSEPAGE_TEXT_TOP "$(LICENSE_TOP)" +!define MUI_STARTMENUPAGE_TEXT_TOP "$(START_MENU_TOP)" + + +# Installer attributes +OutFile "${DIST_DIR}\${LOWERNAME}_${VERSION_NUMBER}.exe" +InstallDir $PROGRAMFILES\$(^Name) +CRCCheck on +XPStyle on +ShowInstDetails show +VIProductVersion "${VERSION_NUMBER}.0" +VIAddVersionKey /LANG=${LANG_ENGLISH} ProductName $(^Name) +VIAddVersionKey /LANG=${LANG_ENGLISH} ProductVersion "${VERSION_NUMBER}" +VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyName "${COMPANY}" +VIAddVersionKey /LANG=${LANG_ENGLISH} CompanyWebsite "${URL}" +VIAddVersionKey /LANG=${LANG_ENGLISH} FileVersion "${VERSION_NUMBER}" +VIAddVersionKey /LANG=${LANG_ENGLISH} FileDescription "" +VIAddVersionKey /LANG=${LANG_ENGLISH} LegalCopyright "" +InstallDirRegKey HKLM "${REGKEY}" Path +ShowUninstDetails show + +# Functions +Function "JVM" +ClearErrors +ReadRegStr $1 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment" "CurrentVersion" +ReadRegStr $2 HKLM "SOFTWARE\JavaSoft\Java Runtime Environment\$1" "JavaHome" + + ${Switch} $LANGUAGE + ${Case} ${LANG_ENGLISH} + IfErrors 0 NoAbortEn + MessageBox MB_YESNO|MB_ICONQUESTION "Couldn't find a Java Development Kit installed. Before installing you must install the java environment : See www.java.com. Do you wish to continue ?" IDYES +5 + Abort + NoAbortEn: + MessageBox MB_YESNO|MB_ICONQUESTION "This will install $(^Name). Do you wish to continue?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_SPANISH} + IfErrors 0 NoAbortEs + MessageBox MB_YESNO|MB_ICONQUESTION "No se ha podido encontrar un kit de desarrollo de Java instalada. Antes de instalar debe instalar el entorno Java: www.java.com Ver. ¿Desea continuar?" IDYES +5 + Abort + NoAbortEs: + MessageBox MB_YESNO|MB_ICONQUESTION "Con esta acción se instalará $(^Name). ¿Desea continuar?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_FRENCH} + IfErrors 0 NoAbortFr + MessageBox MB_YESNO|MB_ICONQUESTION "Il n'y a aucun environnement JAVA sur votre ordinateur. Avant d'installer $(^Name), il est recommandé d'en installer un (que vous pouvez trouver sur www.java.com). Etes vous sûr de vouloir continuer ?" IDYES +5 + Abort + NoAbortFr: + MessageBox MB_YESNO|MB_ICONQUESTION "Ceci installera $(^Name). Voulez-vous continuer ?" IDYES +2 + Abort + ${Break} + ${EndSwitch} +FunctionEnd + +Function .onInit + InitPluginsDir + !insertmacro MUI_LANGDLL_DISPLAY + Call "JVM" +FunctionEnd + +Function un.onInit + !insertmacro MUI_STARTMENU_GETFOLDER Application $StartMenuGroup + !insertmacro MUI_LANGDLL_DISPLAY + ${Switch} $LANGUAGE + ${Case} ${LANG_ENGLISH} + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_SPANISH} + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "¿Estás seguro de querer eliminar completamente $(^Name) y todos sus componentes?" IDYES +2 + Abort + ${Break} + ${Case} ${LANG_FRENCH} + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Etes-vous sûr de vouloir désinstaller complètement $(^Name) et tous ses composants?" IDYES +2 + Abort + ${Break} + ${EndSwitch} +FunctionEnd + +Function un.onUninstSuccess + HideWindow + ${Switch} $LANGUAGE + ${Case} ${LANG_ENGLISH} + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." + ${Break} + ${Case} ${LANG_SPANISH} + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) se ha eliminado de su ordenador." + ${Break} + ${Case} ${LANG_FRENCH} + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) a été enlevé de votre ordinateur avec succès." + ${Break} + ${EndSwitch} +FunctionEnd + +# Installer Sections +Section Files + # Copy any existing .properties files + SetOutPath $TEMP\${LOWERNAME}_installer + CopyFiles /SILENT /FILESONLY $INSTDIR\*.properties $TEMP\${LOWERNAME}_installer + + # Remove previous files + RMDir /r /REBOOTOK $INSTDIR + + # Write program files + SetOutPath $INSTDIR + SetOverwrite on + File /r "${FILES_DIR}\*" + + # Copy previously backuped properties files + CopyFiles /SILENT /FILESONLY $TEMP\${LOWERNAME}_installer\*.properties $INSTDIR + + # Remove temp directory + RMDir /r /REBOOTOK $TEMP\${LOWERNAME}_installer + + # Write uninstaller + WriteUninstaller "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "${REGKEY}" Path $INSTDIR + WriteRegStr HKLM "${REGKEY}\Components" Files 1 +SectionEnd + +Section Registry + WriteRegStr HKCR "${EXTENSION}" "" "${REGKEY_LAUNCH}" + WriteRegStr HKCR "${REGKEY_LAUNCH}" "" "$(^Name)" + WriteRegStr HKCR "${REGKEY_LAUNCH}\shell\open\command" "" '"$INSTDIR\${LOWERNAME}.exe" "%1"' + WriteRegStr HKCU "${REGKEY}" Version ${VERSION_NUMBER} + WriteRegStr HKLM "${REGKEY}\Components" Registry 1 +SectionEnd + +Section Shortcuts + !insertmacro MUI_STARTMENU_WRITE_BEGIN Application + SetOutPath $SMPROGRAMS\$StartMenuGroup + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" $INSTDIR\${LOWERNAME}.exe + CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(UNINSTALL_LINK).lnk" $INSTDIR\uninstall.exe + !insertmacro MUI_STARTMENU_WRITE_END + CreateDirectory "$DESKTOP" + CreateShortCut "$DESKTOP\$(^Name).lnk" "$INSTDIR\${LOWERNAME}.exe" + #CreateDirectory "{userappdata}\Microsoft\Internet Explorer\Quick Launch" + #CreateShortCut "{userappdata}\Microsoft\Internet Explorer\Quick Launch\$(^Name).lnk" "$INSTDIR\${LOWERNAME}.exe" + WriteRegStr HKLM "${REGKEY}\Components" Shortcuts 1 +SectionEnd + +Section post + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}" + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\uninstall.exe + WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe + WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1 + WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1 + System::Call "shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)" +SectionEnd + +#### Uninstaller sections #### + +Section un.Files + RmDir /r /REBOOTOK $INSTDIR + DeleteRegValue HKLM "${REGKEY}" Path + DeleteRegValue HKLM "${REGKEY}\Components" Files +SectionEnd + +Section un.Registry + DeleteRegKey HKCR "${EXTENSION}" + DeleteRegKey HKCR "${REGKEY_LAUNCH}" + DeleteRegKey HKCU "${REGKEY}" + DeleteRegValue HKLM "${REGKEY}\Components" Registry +SectionEnd + +Section un.Shortcuts + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^Name).lnk" + Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(UNINSTALL_LINK).lnk" + RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup + DeleteRegValue HKLM "${REGKEY}" StartMenuGroup + #RMDir "{userappdata}\Microsoft\Internet Explorer\Quick Launch" + #RMDir "$DESKTOP" + DeleteRegValue HKLM "${REGKEY}\Components" Shortcuts +SectionEnd + +Section un.post + DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" + DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components" + DeleteRegKey /IfEmpty HKLM "${REGKEY}" + System::Call "shell32.dll::SHChangeNotify(l, l, i, i) v (0x08000000, 0, 0, 0)" + Push $R0 + StrCpy $R0 $StartMenuGroup 1 + StrCmp $R0 ">" no_smgroup +no_smgroup: + Pop $R0 +SectionEnd diff --git a/docs/setup.nsi b/src/main/config/nsis/setup.orig.nsi similarity index 100% rename from docs/setup.nsi rename to src/main/config/nsis/setup.orig.nsi diff --git a/src/main/config/nsis/silent.nsi b/src/main/config/nsis/silent.nsi new file mode 100644 index 0000000..d0492ce --- /dev/null +++ b/src/main/config/nsis/silent.nsi @@ -0,0 +1,63 @@ +# This example shows how to handle silent installers. +# In short, you need IfSilent and the /SD switch for MessageBox to make your installer +# really silent when the /S switch is used. + +Name "Silent" +OutFile "silent.exe" +RequestExecutionLevel user + +# uncomment the following line to make the installer silent by default. +; SilentInstall silent + +Function .onInit + # `/SD IDYES' tells MessageBox to automatically choose IDYES if the installer is silent + # in this case, the installer can only be silent if the user used the /S switch or if + # you've uncommented line number 5 + MessageBox MB_YESNO|MB_ICONQUESTION "Would you like the installer to be silent from now on?" \ + /SD IDYES IDNO no IDYES yes + + # SetSilent can only be used in .onInit and doesn't work well along with `SetSilent silent' + + yes: + SetSilent silent + Goto done + no: + SetSilent normal + done: +FunctionEnd + +Section + IfSilent 0 +2 + MessageBox MB_OK|MB_ICONINFORMATION 'This is a "silent" installer' + + # there is no need to use IfSilent for this one because the /SD switch takes care of that + MessageBox MB_OK|MB_ICONINFORMATION "This is not a silent installer" /SD IDOK + + # when `SetOverwrite on' (which is the default) is used, the installer will show a message + # if it can't open a file for writing. On silent installers, the ignore option will be + # automatically selected. if `AllowSkipFiles off' (default is on) was used, there is no + # ignore option and the cancel option will be automatically selected. + + # on is default + ; AllowSkipFiles on + + # lock file + FileOpen $0 $TEMP\silentOverwrite w + # try to extract - will fail + File /oname=$TEMP\silentOverwrite silent.nsi + # unlcok + FileClose $0 + + # this will always show on silent installers because ignore is the option automatically + # selected when a file can't be opened for writing on a silent installer + MessageBox MB_OK|MB_ICONINFORMATION "This message box always shows if the installer is silent" + + AllowSkipFiles off + + # lock file + FileOpen $0 $TEMP\silentOverwrite w + # try to extract - will fail + File /oname=$TEMP\silentOverwrite silent.nsi + # unlcok + FileClose $0 +SectionEnd \ No newline at end of file diff --git a/src/main/config/nsis/solfege_simple.nsi b/src/main/config/nsis/solfege_simple.nsi new file mode 100644 index 0000000..7b0d215 --- /dev/null +++ b/src/main/config/nsis/solfege_simple.nsi @@ -0,0 +1,54 @@ +; The name of the installer +Name "GNU Solfege" + +ShowInstDetails show + +; The file to write +OutFile "solfege-win32-@VERSION@.exe" + +; The default installation directory +InstallDir "$PROGRAMFILES\GNU Solfege" + +; The text to prompt the user to enter a directory +DirText "This will install GNU Solfege on your computer. The installer is still experimental and are missing some features. Most important is that if you upgrade Solfege, you must uninstall older versions of this program (select Uninstall on the Start Menu) before running the installer for the new release." + + +LicenseText "Copyright 1999, 2000, 2001, 2002, 2003 Tom Cato Amundsen" +LicenseData "COPYING.txt" + +; The stuff to install +Section "ThisNameIsIgnoredSoWhyBother?" + ; Set output path to the installation directory. + + SetOutPath $INSTDIR + ; Put file there + File /r "dist\solfege\*.*" + + SetOutPath "$INSTDIR\share" + File /r "share\*.*" + + SetOutPath $INSTDIR +; IfFileExists $SMPROGRAMS\NSIS 0 NoSourceShortCuts + CreateDirectory "$SMPROGRAMS\GNU Solfege" + CreateShortCut "$SMPROGRAMS\GNU Solfege\Solfege.lnk" "$INSTDIR\solfege.bat" "" "" 0 SW_SHOWMINIMIZED + CreateShortCut "$SMPROGRAMS\GNU Solfege\Solfege (with console).lnk" "$INSTDIR\solfegewithconsole.bat" + CreateShortCut "$SMPROGRAMS\GNU Solfege\Uninstall Solfege.lnk" "$INSTDIR\uninstallsolfege.exe" + CreateShortCut "$SMPROGRAMS\GNU Solfege\COPYING.lnk" "$INSTDIR\COPYING.txt" + CreateShortCut "$SMPROGRAMS\GNU Solfege\AUTHORS.lnk" "$INSTDIR\AUTHORS.txt" + CreateShortCut "$SMPROGRAMS\GNU Solfege\FAQ.lnk" "$INSTDIR\FAQ.txt" + CreateShortCut "$SMPROGRAMS\GNU Solfege\INSTALL.lnk" "$INSTDIR\INSTALL.txt" + CreateShortCut "$SMPROGRAMS\GNU Solfege\INSTALL.win32.lnk" "$INSTDIR\INSTALL.win32.txt" + CreateShortCut "$SMPROGRAMS\GNU Solfege\README.lnk" "$INSTDIR\README.txt" + CreateShortCut "$SMPROGRAMS\GNU Solfege\Online manual.lnk" "$INSTDIR\online-docs\C\welcome.html" + MessageBox MB_OK "You can now run GNU Solfege from the start menu." + +SectionEnd ; end the section + +UninstallText "This will uninstall GNU Solfege" +UninstallExeName "uninstallsolfege.exe" + +Section "Uninstall" + RMDir /r "$SMPROGRAMS\GNU Solfege" + RMDir /r "$INSTDIR" +SectionEnd +; eof \ No newline at end of file From 9de088b52e80ea9b85e45891856be4a430d1a558 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:26:29 +0100 Subject: [PATCH 16/35] doc added for compile & maven-plugins --- docs/compile.md | 4 ++++ docs/maven-plugins.md | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 docs/compile.md create mode 100644 docs/maven-plugins.md diff --git a/docs/compile.md b/docs/compile.md new file mode 100644 index 0000000..c7706cc --- /dev/null +++ b/docs/compile.md @@ -0,0 +1,4 @@ +## How to compile + * Eclipse + + \ No newline at end of file diff --git a/docs/maven-plugins.md b/docs/maven-plugins.md new file mode 100644 index 0000000..07b1b4e --- /dev/null +++ b/docs/maven-plugins.md @@ -0,0 +1,31 @@ +## Maven plugins infos + * [Apache Maven Source Plugin](https://maven.apache.org/plugins/maven-source-plugin/) + * The Source Plugin creates a jar archive of the source files of the current project. The jar file is, by default, created in the project's target directory. + * [Apache Maven Deploy Plugin]( https://maven.apache.org/plugins/maven-deploy-plugin/) + * The deploy plugin is primarily used during the deploy phase, to add your artifact(s) to a remote repository for sharing with other developers and projects. This is usually done in an integration or release environment. It can also be used to deploy a particular artifact (e.g. a third party jar like Sun's non redistributable reference implementations). + +### Artifact +A Maven build produces one or more artifacts, such as a compiled JAR and a "sources" JAR. + +Each artifact has a group ID (usually a reversed domain name, like com.example.foo), an artifact ID (just a name), and a version string. The three together uniquely identify the artifact. + +A project's dependencies are specified as artifacts. + +### Lifecycle (default) + * validate - validate the project is correct and all necessary information is available + * compile - compile the source code of the project + * test - test the compiled source code using a suitable unit testing framework. These tests should not require the code be packaged or deployed + * package - take the compiled code and package it in its distributable format, such as a JAR. + * integration-test - process and deploy the package if necessary into an environment where integration tests can be run + * verify - run any checks to verify the package is valid and meets quality criteria + * install - install the package into the local repository, for use as a dependency in other projects locally + * deploy - done in an integration or release environment, copies the final package to the remote repository for sharing with other developers and projects. + + stage + phase + goals + Un goal est une tâche précise que Maven est en mesure de réaliser à partir des informations qu'il pourra trouver dans le fichier pom.xml. + + A partir de la compréhension qu'il a du projet, il est capable d'exécuter énormément d'opérations dessus, chaque opération correspondant à un goal. + + \ No newline at end of file From 826d8a7895c6e73a09045515fe65ee6914b41bba Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:27:11 +0100 Subject: [PATCH 17/35] gitignore up & remove in file tree --- .gitignore | 9 ++++++--- src/main/resources/calao/.gitignore | 5 ----- 2 files changed, 6 insertions(+), 8 deletions(-) delete mode 100644 src/main/resources/calao/.gitignore diff --git a/.gitignore b/.gitignore index 8ccfe72..cfd8336 100644 --- a/.gitignore +++ b/.gitignore @@ -4,9 +4,12 @@ /logs/ /calao.properties /*.kls +/src/main/java/slider/ /src/main/resources/calao/old/ /src/main/resources/calao/svg/ -/src/main/resources/calao/Exercices/ -/src/main/resources/calao/TimGM6mb.sf2 +/src/main/resources/calao/Exercises/ /src/main/resources/calao/font/documentation_police.svg -/src/main/java/slider/ +/src/main/resources/calao/libs/ +/src/main/resources/calao/MusiSyncForCalao.ttf +/src/main/resources/calao/*.sf2 + diff --git a/src/main/resources/calao/.gitignore b/src/main/resources/calao/.gitignore deleted file mode 100644 index 9d2570f..0000000 --- a/src/main/resources/calao/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -/Exercises/ -/libs/ -/metronome.sf2 -/MusiSyncForCalao.ttf -/svg/ \ No newline at end of file From 4f754eb7cb8c8f9b6d20123c8f8c1a96a5472579 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:27:35 +0100 Subject: [PATCH 18/35] statistic.png picture --- src/main/resources/calao/statistics.png | Bin 0 -> 6752 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/resources/calao/statistics.png diff --git a/src/main/resources/calao/statistics.png b/src/main/resources/calao/statistics.png new file mode 100644 index 0000000000000000000000000000000000000000..049f81edf46d1ace679692ab40968f31b8473689 GIT binary patch literal 6752 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 Date: Tue, 23 Feb 2016 15:28:26 +0100 Subject: [PATCH 19/35] Unit test for Version, accidental, clefselector --- src/test/java/calao/AccidentalsTest.java | 40 +++++++++++------------ src/test/java/calao/ClefSelectorTest.java | 6 ++++ src/test/java/calao/NativeUtilsTest.java | 6 ++++ src/test/java/calao/VersionTest.java | 24 ++++++++++++++ 4 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 src/test/java/calao/VersionTest.java diff --git a/src/test/java/calao/AccidentalsTest.java b/src/test/java/calao/AccidentalsTest.java index 69f6ccf..88c7594 100644 --- a/src/test/java/calao/AccidentalsTest.java +++ b/src/test/java/calao/AccidentalsTest.java @@ -74,10 +74,10 @@ public void testGetClefOffset() throws Exception { Preferences appPrefs = new Preferences(); Accidentals acc = new Accidentals("b", 1, appPrefs); - assertThat(acc.getClefOffset(appPrefs.CLEF_F4)).isEqualTo(10); - assertThat(acc.getClefOffset(appPrefs.CLEF_G2)).isEqualTo(0); - assertThat(acc.getClefOffset(appPrefs.CLEF_C3)).isEqualTo(5); - assertThat(acc.getClefOffset(appPrefs.CLEF_C4)).isEqualTo(-5); + assertThat(acc.getClefOffset(appPrefs.F4_CLEF)).isEqualTo(10); + assertThat(acc.getClefOffset(appPrefs.G2_CLEF)).isEqualTo(0); + assertThat(acc.getClefOffset(appPrefs.C3_CLEF)).isEqualTo(5); + assertThat(acc.getClefOffset(appPrefs.C4_CLEF)).isEqualTo(-5); } @Test @@ -85,27 +85,27 @@ public void testGetXYAlterations() throws Exception { Preferences appPrefs = new Preferences(); Accidentals acc = new Accidentals("b", 7, appPrefs); - assertThat(acc.getXYAlterations(appPrefs.CLEF_F4)) - .containsExactly(0, 5, 9, -10, 18, 10, 27, -5, 36, 15, 45, 0, 54, 20); - assertThat(acc.getXYAlterations(appPrefs.CLEF_C4)) - .containsExactly(0, 5, 9, -10, 18, 10, 27, -5, 36, 15, 45, 0, 54, 20); - assertThat(acc.getXYAlterations(appPrefs.CLEF_C3)) - .containsExactly(0, 5, 9, -10, 18, 10, 27, -5, 36, 15, 45, 0, 54, 20); - assertThat(acc.getXYAlterations(appPrefs.CLEF_G2)) - .containsExactly(0, 5, 9, -10, 18, 10, 27, -5, 36, 15, 45, 0, 54, 20); + assertThat(acc.getXYAlterations(appPrefs.F4_CLEF)) + .containsExactly(54, 20, 45, 0, 36, 15, 27, -5, 18, 10, 9, -10, 0, 5); + assertThat(acc.getXYAlterations(appPrefs.C4_CLEF)) + .containsExactly(54, 20, 45, 0, 36, 15, 27, -5, 18, 10, 9, -10, 0, 5); + assertThat(acc.getXYAlterations(appPrefs.C3_CLEF)) + .containsExactly(54, 20, 45, 0, 36, 15, 27, -5, 18, 10, 9, -10, 0, 5); + assertThat(acc.getXYAlterations(appPrefs.G2_CLEF)) + .containsExactly(54, 20, 45, 0, 36, 15, 27, -5, 18, 10, 9, -10, 0, 5); } @Test public void testGetXYSharpAlterations() throws Exception { Preferences appPrefs = new Preferences(); Accidentals acc = new Accidentals("#", 7, appPrefs); - assertThat(acc.getXYAlterations(appPrefs.CLEF_F4)) - .containsExactly(0, -15, 10, 0, 20, -20, 30, -5, 40, 10, 50, -10, 60, 5); - assertThat(acc.getXYAlterations(appPrefs.CLEF_C4)) - .containsExactly(0, -15, 10, 0, 20, 15, 30, -5, 40, 10, 50, 25, 60, 5); - assertThat(acc.getXYAlterations(appPrefs.CLEF_C3)) - .containsExactly(0, -15, 10, 0, 20, -20, 30, -5, 40, 10, 50, -10, 60, 5); - assertThat(acc.getXYAlterations(appPrefs.CLEF_G2)) - .containsExactly(0, -15, 10, 0, 20, -20, 30, -5, 40, 10, 50, -10, 60, 5); + assertThat(acc.getXYAlterations(appPrefs.F4_CLEF)) + .containsExactly(60, 5, 50, -10, 40, 10, 30, -5, 20, -20, 10, 0, 0, -15); + assertThat(acc.getXYAlterations(appPrefs.C4_CLEF)) + .containsExactly(60, 5, 50, 25, 40, 10, 30, -5, 20, 15, 10, 0, 0, -15); + assertThat(acc.getXYAlterations(appPrefs.C3_CLEF)) + .containsExactly(60, 5, 50, -10, 40, 10, 30, -5, 20, -20, 10, 0, 0, -15); + assertThat(acc.getXYAlterations(appPrefs.G2_CLEF)) + .containsExactly(60, 5, 50, -10, 40, 10, 30, -5, 20, -20, 10, 0, 0, -15); } } \ No newline at end of file diff --git a/src/test/java/calao/ClefSelectorTest.java b/src/test/java/calao/ClefSelectorTest.java index ed4822d..ff91031 100644 --- a/src/test/java/calao/ClefSelectorTest.java +++ b/src/test/java/calao/ClefSelectorTest.java @@ -105,4 +105,10 @@ public void testPaintComponent() throws Exception { return; } + @Test + public void testInitIter() throws Exception { + //throw new RuntimeException("not yet implemented"); + return; + } + } diff --git a/src/test/java/calao/NativeUtilsTest.java b/src/test/java/calao/NativeUtilsTest.java index 8824cbb..d35f47d 100644 --- a/src/test/java/calao/NativeUtilsTest.java +++ b/src/test/java/calao/NativeUtilsTest.java @@ -49,4 +49,10 @@ public void testIsLinux() throws Exception { return; } + @Test + public void testGetSeparator() throws Exception { + //throw new RuntimeException("not yet implemented"); + return; + } + } diff --git a/src/test/java/calao/VersionTest.java b/src/test/java/calao/VersionTest.java new file mode 100644 index 0000000..dc44495 --- /dev/null +++ b/src/test/java/calao/VersionTest.java @@ -0,0 +1,24 @@ +package calao; + +import static org.assertj.core.api.Assertions.assertThat; + +import org.junit.Test; + +public class VersionTest { + + @Test + public void testParseAttributesFromVersionStringMinor() { + Version v = new Version("3.2.1"); + + assertThat(v.getMajor()).isEqualTo(3); + assertThat(v.getMinor()).isEqualTo(2); + } + + @Test + public void testParseAttributesFromVersionStringRelease() { + Version v = new Version("3.2.1150"); + + assertThat(v.getBuild()).isEqualTo(1150); + } + +} From afc9e0b018c735211335e396bff83a5b572e9071 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:29:29 +0100 Subject: [PATCH 20/35] d&d file format --- .../java/calao/CalaoDragDropListener.java | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/main/java/calao/CalaoDragDropListener.java b/src/main/java/calao/CalaoDragDropListener.java index c3ef32b..1ee2d90 100644 --- a/src/main/java/calao/CalaoDragDropListener.java +++ b/src/main/java/calao/CalaoDragDropListener.java @@ -19,14 +19,12 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; -import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.dnd.DnDConstants; import java.awt.dnd.DropTargetDragEvent; import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetEvent; import java.awt.dnd.DropTargetListener; import java.io.File; -import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -38,7 +36,6 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import org.apache.logging.log4j.Logger; class CalaoDragDropListener implements DropTargetListener { - public void drop(DropTargetDropEvent event) { final Logger logger = LogManager .getLogger(CalaoDragDropListener.class.getName()); @@ -48,14 +45,14 @@ public void drop(DropTargetDropEvent event) { // Get the transfer which can provide the dropped item data Transferable transferable = event.getTransferable(); - try { - List dropppedFiles = (List)transferable - .getTransferData(DataFlavor.javaFileListFlavor); - } catch (UnsupportedFlavorException e1) { - e1.printStackTrace(); - } catch (IOException e1) { - e1.printStackTrace(); - } +// try { +// List dropppedFiles = (List)transferable +// .getTransferData(DataFlavor.javaFileListFlavor); +// } catch (UnsupportedFlavorException e1) { +// e1.printStackTrace(); +// } catch (IOException e1) { +// e1.printStackTrace(); +// } // Get the data formats of the dropped item DataFlavor[] flavors = transferable.getTransferDataFlavors(); From 8b635ae4d0a26253453fba35853ac64b532a6f6f Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:33:00 +0100 Subject: [PATCH 21/35] CF --- src/main/java/calao/EarTrainingPanel.java | 8 +- src/main/java/calao/Exercise.java | 24 ++--- src/main/java/calao/ExerciseScoreEditor.java | 92 ++++++++++---------- src/main/java/calao/ExerciseWizard.java | 18 ++-- src/main/java/calao/Fluidsynth.java | 9 +- src/main/java/calao/Key.java | 2 + 6 files changed, 79 insertions(+), 74 deletions(-) diff --git a/src/main/java/calao/EarTrainingPanel.java b/src/main/java/calao/EarTrainingPanel.java index f5c9aee..da6ceb3 100644 --- a/src/main/java/calao/EarTrainingPanel.java +++ b/src/main/java/calao/EarTrainingPanel.java @@ -180,7 +180,7 @@ public void propertyChange(PropertyChangeEvent evt) noteContainer = new RoundPanel(Color.decode("0xFFFFFF"), Color.decode("0xB59CFF")); noteContainer.setLayout(null); noteContainer.setBackground(Color.white); - noteContainer.setBorderColor(Color.decode("0x7666A7")); + //noteContainer.setBorderColor(Color.decode("0x7666A7")); noteContainer.setBounds((getWidth() / 2) - 200, (getHeight() / 2 - 90), 400, 160); listenIcon = new ImageIcon(getClass().getResource("listen.png")); @@ -278,7 +278,7 @@ public void refreshPanel() { case 0: earNG.reset(); - earNG.addRange(appPrefs.CLEF_G2, 60, 71); // from C3 to B3 +// earNG.addRange(appPrefs.G2_CLEF, 60, 71); // from C3 to B3 gameTitle.setText(appBundle.getString("_earOctaves") + ": 1, " + appBundle.getString("_alterednotes") + ": " + appBundle.getString("_no") + ", " + appBundle.getString("_notes") + ": " + earNG.getNotesNumber()); buttonsContainer.setVisible(true); @@ -287,7 +287,7 @@ public void refreshPanel() break; case 1: earNG.reset(); - earNG.addRange(appPrefs.CLEF_G2, 48, 71); // from C2 to B3 +// earNG.addRange(appPrefs.G2_CLEF, 48, 71); // from C2 to B3 gameTitle.setText(appBundle.getString("_earOctaves") + ": 2, " + appBundle.getString("_alterednotes") + ": " + appBundle.getString("_no") + ", " + appBundle.getString("_notes") + ": " + earNG.getNotesNumber()); buttonsContainer.setVisible(true); @@ -296,7 +296,7 @@ public void refreshPanel() break; case 2: earNG.reset(); - earNG.addRange(appPrefs.CLEF_G2, 36, 84); // from C1 to C5 +// earNG.addRange(appPrefs.G2_CLEF, 36, 84); // from C1 to C5 gameTitle.setText(appBundle.getString("_earOctaves") + ": 4, " + appBundle.getString("_alterednotes") + ": " + appBundle.getString("_yes") + ", " + appBundle.getString("_notes") + ": " + earNG.getNotesNumber()); buttonsContainer.setVisible(false); diff --git a/src/main/java/calao/Exercise.java b/src/main/java/calao/Exercise.java index 05a1fbb..4fc4e72 100644 --- a/src/main/java/calao/Exercise.java +++ b/src/main/java/calao/Exercise.java @@ -425,18 +425,18 @@ public void loadFromFile(String path) nAlt = Integer.parseInt(alt); } - tmpNote = new Note(0, nClef, nLevel, nPitch, nType, false, 0); - if (nAlt > -3) - tmpNote.altType = nAlt; - tmpNote.setTimeStamp(nStamp); - tmpNote.duration = nDur; - if (seq == 0) - notes.add(tmpNote); - else if (seq == 1) - { - tmpNote.secondRow = true; - notes2.add(tmpNote); - } +// tmpNote = new Note(0, nClef, nLevel, nPitch, nType, false, 0); +// if (nAlt > -3) +// tmpNote.altType = nAlt; +// tmpNote.setTimeStamp(nStamp); +// tmpNote.duration = nDur; +// if (seq == 0) +// notes.add(tmpNote); +// else if (seq == 1) +// { +// tmpNote.secondRow = true; +// notes2.add(tmpNote); +// } } } diff --git a/src/main/java/calao/ExerciseScoreEditor.java b/src/main/java/calao/ExerciseScoreEditor.java index 2523bd5..3d32f41 100644 --- a/src/main/java/calao/ExerciseScoreEditor.java +++ b/src/main/java/calao/ExerciseScoreEditor.java @@ -163,7 +163,7 @@ public ExerciseScoreEditor(ResourceBundle b, Preferences p, Font f, MidiControll backPanel.setBackground(Color.white); backPanel.setBounds(0, 0, 700, 550); - RoundPanel notesPanel = new RoundPanel(Color.decode("0xFFFFFF"), Color.decode("0xA2DDFF")); + RoundPanel notesPanel = new RoundPanel(Color.decode("0xFFFFFF"), Color.decode("0xFFFFFF")); notesPanel.setLayout(null); notesPanel.setBackground(Color.white); notesPanel.setBounds(5, 5, 685, 112); @@ -356,7 +356,7 @@ public ExerciseScoreEditor(ResourceBundle b, Preferences p, Font f, MidiControll measuresNumber = getTotalMeasuresNumber(); scoreStaff.setMeasuresNumber(measuresNumber); - scoreStaff.setClefs(currExercise.clefMask); +// scoreStaff.setClefs(currExercise.clefMask); scoreStaff.setRowsDistance(rowsDistance); scoreStaff.setTimeSignature(timeNumerator, timeDenominator); scoreStaff.setOpaque(true); @@ -368,7 +368,7 @@ public ExerciseScoreEditor(ResourceBundle b, Preferences p, Font f, MidiControll notesEditLayer.setBounds(0, 0, staffW, scoreStaff.getStaffHeight()); notesEditLayer.setRowsDistance(rowsDistance); notesEditLayer.setOpaque(false); - notesEditLayer.setClefs(currExercise.clefMask); +// notesEditLayer.setClefs(currExercise.clefMask); if (e.type != 1) notesEditLayer.setEditMode(true, false); else @@ -592,53 +592,53 @@ private void addEditNote(double type, boolean isSilence) flatBtn.setVisible(true); flatBtn.setEnabled(false); normalBtn.setVisible(false); - tmpNote = new Note(0, notesEditLayer.getClef(selectedClef - 1), 12, pitch, 5, false, 0); - tmpNote.duration = type; +// tmpNote = new Note(0, notesEditLayer.getClef(selectedClef - 1), 12, pitch, 5, false, 0); +// tmpNote.duration = type; } else { - tmpNote = new Note(0, notesEditLayer.getClef(selectedClef - 1), 12, pitch, (int)type, false, 0); - if (exNotes.size() > 0 && currExercise.type == 2) - { - for (int i = exNotes.size() - 1; i >= 0; i--) - { - Note nNote = exNotes.get(i); - double timeDivision = (double)timeNumerator / (timeDenominator / 4); - if ((int)Math.floor(nNote.timestamp / timeDivision) != measuresNumber - 1) - break; - //logger.debug("note #" + i + " p: " + nNote.pitch); - //logger.debug("nNote.level: " + nNote.level + ", tmpNote.level: " + tmpNote.level); - if ((nNote.level == tmpNote.level || nNote.level == tmpNote.level - 7 || nNote.level == tmpNote.level + 7) && - nNote.altType != 0) - { - if (nNote.altType == 2) - tmpNote.pitch = exerciseNG.getPitchFromClefAndLevel(notesEditLayer.getClef(selectedClef - 1), tmpNote.level); - else - tmpNote.pitch += nNote.altType; - - logger.debug("[addEditNote] NEW pitch = " + tmpNote.pitch); - break; - } - } - } - } - if (selectedClef == 2) - tmpNote.secondRow = true; - - measureCounter -= tmpNote.duration; - tmpNote.setTimeStamp(timeCounter); - timeCounter += tmpNote.duration; - - if (selectedClef == 1) - { - currExercise.notes.add(tmpNote); - exNotes = currExercise.notes; - } - else if (selectedClef == 2) - { - currExercise.notes2.add(tmpNote); - exNotes = currExercise.notes2; +// tmpNote = new Note(0, notesEditLayer.getClef(selectedClef - 1), 12, pitch, (int)type, false, 0); +// if (exNotes.size() > 0 && currExercise.type == 2) +// { +// for (int i = exNotes.size() - 1; i >= 0; i--) +// { +// Note nNote = exNotes.get(i); +// double timeDivision = (double)timeNumerator / (timeDenominator / 4); +// if ((int)Math.floor(nNote.timestamp / timeDivision) != measuresNumber - 1) +// break; +// //logger.debug("note #" + i + " p: " + nNote.pitch); +// //logger.debug("nNote.level: " + nNote.level + ", tmpNote.level: " + tmpNote.level); +// if ((nNote.level == tmpNote.level || nNote.level == tmpNote.level - 7 || nNote.level == tmpNote.level + 7) && +// nNote.altType != 0) +// { +// if (nNote.altType == 2) +// tmpNote.pitch = exerciseNG.getPitchFromClefAndLevel(notesEditLayer.getClef(selectedClef - 1), tmpNote.level); +// else +// tmpNote.pitch += nNote.altType; +// +// logger.debug("[addEditNote] NEW pitch = " + tmpNote.pitch); +// break; +// } +// } +// } } +// if (selectedClef == 2) +// tmpNote.secondRow = true; +// +// measureCounter -= tmpNote.duration; +// tmpNote.setTimeStamp(timeCounter); +// timeCounter += tmpNote.duration; +// +// if (selectedClef == 1) +// { +// currExercise.notes.add(tmpNote); +// exNotes = currExercise.notes; +// } +// else if (selectedClef == 2) +// { +// currExercise.notes2.add(tmpNote); +// exNotes = currExercise.notes2; +// } if (isSilence == false) checkAlterationButtons(exNotes.size() - 1); diff --git a/src/main/java/calao/ExerciseWizard.java b/src/main/java/calao/ExerciseWizard.java index 7a5c5f7..27a74ad 100644 --- a/src/main/java/calao/ExerciseWizard.java +++ b/src/main/java/calao/ExerciseWizard.java @@ -469,24 +469,24 @@ else if (ae.getSource() == nextButton) { int clefMask = 0; if (trebleClefCB.isSelected() == true) - clefMask = appPrefs.CLEF_G2; + clefMask = appPrefs.G2_CLEF; else if (bassClefCB.isSelected() == true) - clefMask = appPrefs.CLEF_F4; + clefMask = appPrefs.F4_CLEF; else if (altoClefCB.isSelected() == true) - clefMask = appPrefs.CLEF_C3; + clefMask = appPrefs.C3_CLEF; else if (tenorClefCB.isSelected() == true) - clefMask = appPrefs.CLEF_C4; + clefMask = appPrefs.C4_CLEF; if (secondClefCB.isSelected() == true) { if (trebleClefCB2.isSelected() == true) - clefMask |= appPrefs.CLEF_G2; + clefMask |= appPrefs.G2_CLEF; else if (bassClefCB2.isSelected() == true) - clefMask |= appPrefs.CLEF_F4; + clefMask |= appPrefs.F4_CLEF; else if (altoClefCB2.isSelected() == true) - clefMask |= appPrefs.CLEF_C3; + clefMask |= appPrefs.C3_CLEF; else if (tenorClefCB2.isSelected() == true) - clefMask |= appPrefs.CLEF_C4; + clefMask |= appPrefs.C4_CLEF; } currExercise.setClefMask(clefMask); @@ -498,7 +498,7 @@ else if (tenorClefCB2.isSelected() == true) } else { - currExercise.setClefMask(appPrefs.CLEF_G2); + currExercise.setClefMask(appPrefs.G2_CLEF); } if (currExercise.type != 0) diff --git a/src/main/java/calao/Fluidsynth.java b/src/main/java/calao/Fluidsynth.java index bb564cc..e8b0cbe 100644 --- a/src/main/java/calao/Fluidsynth.java +++ b/src/main/java/calao/Fluidsynth.java @@ -407,14 +407,16 @@ private static native void setTuning(ByteBuffer context, int tuningBank, int tuningProgram, String name, double[] derivations); /** - * Get the available {@link #getAudioDriver()}s. + * Get the available + * @link #getAudioDrivers() * * @return possible options for audio drivers */ public native static List getAudioDrivers(); /** - * Get the available {@link #getAudioDevice()}s. + * Get the available + * @link #getAudioDevices() * * @param audioDriver * the audio driver to get possible devices for @@ -441,7 +443,7 @@ public static void loadLibraries() directory = new File(LIBS_PATH + File.separator + WIN64_ARCH_PATH + File.separator); else directory = new File(LIBS_PATH + File.separator + WIN32_ARCH_PATH + File.separator); - + logger.debug("directory : " + directory); try { NativeUtils.load(new File(directory, "libintl-8.dll")); NativeUtils.load(new File(directory, "libglib-2.0-0.dll")); @@ -473,6 +475,7 @@ public static void loadLibraries() logger.error("Fluidsynth error: " + error); throw new NoClassDefFoundError(); } + logger.debug("All librairies loaded successfully"); } } diff --git a/src/main/java/calao/Key.java b/src/main/java/calao/Key.java index 1d2939c..51457b0 100644 --- a/src/main/java/calao/Key.java +++ b/src/main/java/calao/Key.java @@ -36,6 +36,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). */ public class Key extends JButton { + @SuppressWarnings("unused") private static final Logger logger = LogManager.getLogger(Key.class .getName()); @@ -153,6 +154,7 @@ public void setXpos(int newx) { Rectangle b = getBounds(); b.x = newx; setBounds(b); + //logger.debug("Rectangle : " + b); } /** From 2fe0338427e24b4590f79cf535f85f40fe60399d Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:34:30 +0100 Subject: [PATCH 22/35] Mouse exit on click and duration management feature added on splashscr --- src/main/java/calao/SplashScreen.java | 211 ++++++++++++++++---------- 1 file changed, 128 insertions(+), 83 deletions(-) diff --git a/src/main/java/calao/SplashScreen.java b/src/main/java/calao/SplashScreen.java index e0a3f35..475ecf1 100644 --- a/src/main/java/calao/SplashScreen.java +++ b/src/main/java/calao/SplashScreen.java @@ -23,19 +23,27 @@ import java.awt.Dimension; import java.awt.Font; import java.awt.Graphics2D; +import java.awt.MediaTracker; import java.awt.RenderingHints; import java.awt.Toolkit; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.awt.image.BufferedImage; +import java.io.IOException; +import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JWindow; import javax.swing.SwingUtilities; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + /** - * This class enables to create a thread that displays the splash image of gnuLecture. - * It enables the software to load during this time + * This class enables to create a thread that displays the splash image of + * gnuLecture. It enables the software to load during this time * * @author Neonunux * @author gwenlr @@ -43,96 +51,130 @@ */ @SuppressWarnings("serial") public class SplashScreen extends JWindow { - + private static final Logger logger = LogManager.getLogger(SplashScreen.class.getName()); /** The Constant IMPORT_DEVELOPERS. */ - //private static final String IMPORT_DEVELOPERS = "starting.developers"; - + // private static final String IMPORT_DEVELOPERS = "starting.developers"; + /** The Constant IMPORT_DEVELOPERS_NAMES. */ - //private static final String IMPORT_DEVELOPERS_NAMES = "starting.developersNames"; - + // private static final String IMPORT_DEVELOPERS_NAMES = + // "starting.developersNames"; + /** The Constant IMPORT_COLOMBBUS. */ - //private static final String IMPORT_COLOMBBUS = "starting.colombbus"; - + // private static final String IMPORT_COLOMBBUS = "starting.colombbus"; + /** The Constant IMPORT_WEBSITE. */ - //private static final String IMPORT_WEBSITE = "starting.webSite"; - + // private static final String IMPORT_WEBSITE = "starting.webSite"; + /** The Constant marginLeft. */ - private static final int marginLeft = 40; - + private static final int marginLeft = 400; + /** The Constant marginText. */ private static final int marginText = 40; - + + private boolean chronoMode = true; + /** - * The Constant lineHeight. + * The Constant lineHeight. * - * @param imageIcon the image icon - * @param waitTime the wait time + * @param imageIcon + * the image icon + * @param waitTime + * the wait time */ - //private static final int lineHeight = 22; - + // private static final int lineHeight = 22; + /** - * Creates a new SplashScreen object by specifying the image to use and the time to wait. + * Creates a new SplashScreen object by specifying the image to use and the + * time to wait. * - * @param imageIcon the image icon - * @param waitTime the time to wait + * @param imageIcon + * the image icon + * @param waitTime + * the time to wait */ - public SplashScreen(ImageIcon imageIcon, int waitTime, Version v) - { + public SplashScreen(int waitTime, Version v) { super(); + + if (waitTime == -1) { + chronoMode = false; + } + ImageIcon imageIcon = new ImageIcon(); + try { + imageIcon.setImage(ImageIO.read(getClass().getResource("splash.png"))); + } catch (IOException e1) { + e1.printStackTrace(); + } + // while the image is not on screen + while (imageIcon.getImageLoadStatus() == MediaTracker.LOADING) { + try { + Thread.sleep(1000); + } catch (InterruptedException e) { + System.out.printf("splash screen loading interrupted", e); //$NON-NLS-1$ + } + } + this.addMouseListener(new MouseAdapter() { + public void mousePressed(MouseEvent e) { + logger.debug("Calao splashscreen will be closed"); + if (!chronoMode) { + setVisible(false); + dispose(); + } + } + }); + + // should normally be run in the EDT, but launched at once in order to + // display the screen as soon as possible + int width = imageIcon.getIconWidth(); int height = imageIcon.getIconHeight(); BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); - Graphics2D drawingGraphics = (Graphics2D) bufferedImage.getGraphics(); - drawingGraphics.drawImage(imageIcon.getImage(), 0, 0, null); - - //Color titleColor = new Color (50,10,10,0);//Configuration.instance().getColor("calao.title.color");//$NON-NLS-1$ - String title = "titre";//Configuration.instance().getString("calao.title");//$NON-NLS-1$ - Font titleFont = new Font("Arial", Font.PLAIN, 19);//Configuration.instance().getFont("calao.title.font");//$NON-NLS-1$ - - // draws the title - //drawingGraphics.setColor(titleColor); - drawingGraphics.setFont(titleFont); - - // Sets to on text anti-aliasing - drawingGraphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING,RenderingHints.VALUE_TEXT_ANTIALIAS_ON); - drawingGraphics.drawString(title, marginLeft, height/2-marginText); - - drawingGraphics.setFont(new Font("Arial", Font.PLAIN, 19)); - //String developersNames = "Régis LELOUP"; + Graphics2D drawingGraphics = (Graphics2D) bufferedImage.getGraphics(); + drawingGraphics.drawImage(imageIcon.getImage(), 0, 0, null); + + // Color titleColor = new Color + // (50,10,10,0);//Configuration.instance().getColor("calao.title.color");//$NON-NLS-1$ + String title = "Calao v." + v.getVersionString();// Configuration.instance().getString("calao.title");//$NON-NLS-1$ + Font titleFont = new Font("Arial", Font.PLAIN, 19);// Configuration.instance().getFont("calao.title.font");//$NON-NLS-1$ + + // draws the title + // drawingGraphics.setColor(titleColor); + drawingGraphics.setFont(titleFont); + + // Sets to on text anti-aliasing + drawingGraphics.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); + drawingGraphics.drawString(title, marginLeft, height / 2 + marginText - 10); + + String developersNames = "Régis LELOUP"; /* - String tokenSeparator = ","; - String developers = IMPORT_DEVELOPERS; - String colombbus = IMPORT_COLOMBBUS; - String webSite = IMPORT_WEBSITE; - */ - -/* - drawingGraphics.drawString(developers, marginLeft, height/2 + lineHeight); - int i = 1; - for (StringTokenizer namesTokenizer = new StringTokenizer( - developersNames, tokenSeparator); namesTokenizer.hasMoreTokens();) - { - String packageName = namesTokenizer.nextToken(); - drawingGraphics.drawString(packageName, marginLeft+150, height/2 + lineHeight*i); - i++; - } - i++; - drawingGraphics.drawString(colombbus, marginLeft, height/2 + lineHeight*i); - i++; - drawingGraphics.setColor(new Color(88, 2, 7)); - drawingGraphics.drawString(webSite, marginLeft, height/2 + lineHeight*i); -*/ - JLabel l = new JLabel(new ImageIcon(bufferedImage) ); -// Border border = BorderFactory.createEtchedBorder(EtchedBorder.RAISED,Color.DARK_GRAY, Color.BLACK); -// l.setBorder(border); + * String tokenSeparator = ","; String developers = IMPORT_DEVELOPERS; + * String colombbus = IMPORT_COLOMBBUS; String webSite = IMPORT_WEBSITE; + */ + drawingGraphics.drawLine(marginLeft - 99, height / 2, marginLeft + 216, height / 2); + + drawingGraphics.drawString(developersNames, marginLeft, height / 2 + marginText + 10); + /* + * int i = 1; for (StringTokenizer namesTokenizer = new StringTokenizer( + * developersNames, tokenSeparator); namesTokenizer.hasMoreTokens();) { + * String packageName = namesTokenizer.nextToken(); + * drawingGraphics.drawString(packageName, marginLeft+150, height/2 + + * lineHeight*i); i++; } i++; drawingGraphics.drawString(colombbus, + * marginLeft, height/2 + lineHeight*i); i++; + * drawingGraphics.setColor(new Color(88, 2, 7)); + * drawingGraphics.drawString(webSite, marginLeft, height/2 + + * lineHeight*i); + */ + JLabel l = new JLabel(new ImageIcon(bufferedImage)); + // Border border = + // BorderFactory.createEtchedBorder(EtchedBorder.RAISED,Color.DARK_GRAY, + // Color.BLACK); + // l.setBorder(border); getContentPane().add(l, BorderLayout.CENTER); pack(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension labelSize = l.getPreferredSize(); - setLocation(screenSize.width / 2 - (labelSize.width / 2), - screenSize.height / 2 - (labelSize.height / 2)); + setLocation(screenSize.width / 2 - (labelSize.width / 2), screenSize.height / 2 - (labelSize.height / 2)); setBackground(new Color(0, 255, 0, 0)); - //setOpacity(0.9f); + // setOpacity(0.9f); final int pause = waitTime; final Runnable closerRunner = new Runnable() { public void run() { @@ -140,21 +182,24 @@ public void run() { dispose(); } }; - Runnable waitRunner = new Runnable() { - public void run() { - try { - Thread.sleep(pause); - SwingUtilities.invokeAndWait(closerRunner); - } catch (Exception e) { - e.printStackTrace(); - // can catch InvocationTargetException - // can catch InterruptedException - } - } - }; setVisible(true); - Thread splashThread = new Thread(waitRunner, "SplashThread"); - splashThread.start(); + if (chronoMode) { + Runnable waitRunner = new Runnable() { + public void run() { + try { + Thread.sleep(pause); + SwingUtilities.invokeAndWait(closerRunner); + } catch (Exception e) { + e.printStackTrace(); + // can catch InvocationTargetException + // can catch InterruptedException + } + } + }; + + Thread splashThread = new Thread(waitRunner, "SplashThread"); + splashThread.start(); + } } } From e30ed4bd0f47f8b4e18b6d7f2fe9afc8df38f0a2 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:35:15 +0100 Subject: [PATCH 23/35] CF --- src/main/java/calao/MidiController.java | 2 +- src/main/java/calao/MidiOptionsDialog.java | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/calao/MidiController.java b/src/main/java/calao/MidiController.java index dd7ec02..1a32369 100644 --- a/src/main/java/calao/MidiController.java +++ b/src/main/java/calao/MidiController.java @@ -183,7 +183,7 @@ public boolean initJavaSynth() return false; } } - midiSynth.open(); + midiSynth.open(); } catch (MidiUnavailableException e) { diff --git a/src/main/java/calao/MidiOptionsDialog.java b/src/main/java/calao/MidiOptionsDialog.java index cb8c704..7ac7cdd 100644 --- a/src/main/java/calao/MidiOptionsDialog.java +++ b/src/main/java/calao/MidiOptionsDialog.java @@ -52,7 +52,6 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import org.jpab.PortAudio; import org.jpab.PortAudioException; - /** * The Class MidiOptionsDialog. * @@ -347,7 +346,6 @@ else if (midiSynth.split(",")[0].equals("Fluidsynth")) transpositionSpinner = new JSpinner(model); transpositionSpinner.setBounds(380, 12, 100, 25); - keyboardPanel.add(keyLabel); keyboardPanel.add(transpositionSpinner); tmpYpos+=55; From fc7a4f5941c5ce6ccf285e2c6f4bce6905cb6894 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:37:01 +0100 Subject: [PATCH 24/35] Colors on panel in properties file --- src/main/java/calao/HomePanel.java | 183 +++++++++++++++++------------ 1 file changed, 108 insertions(+), 75 deletions(-) diff --git a/src/main/java/calao/HomePanel.java b/src/main/java/calao/HomePanel.java index cec2150..f7aa263 100644 --- a/src/main/java/calao/HomePanel.java +++ b/src/main/java/calao/HomePanel.java @@ -14,7 +14,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; import java.awt.Color; @@ -37,121 +37,154 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * * @author Neonunux */ -public class HomePanel extends JPanel -{ - private static final Logger logger = LogManager.getLogger(HomePanel.class.getName()); - +public class HomePanel extends JPanel { + private static final Logger logger = LogManager.getLogger(HomePanel.class + .getName()); + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; - + /** The app font. */ Font appFont; - + /** The app bundle. */ private ResourceBundle appBundle; - + /** The Main pic. */ private BufferedImage MainPic = null; - + /** The ear train btn. */ - public RoundedButton inlineBtn, rhythmBtn, scoreBtn, statsBtn, lessonsBtn, earTrainBtn; - + public RoundedButton inlineBtn, rhythmBtn, scoreBtn, statsBtn, lessonsBtn, + earTrainBtn; + /** The home buttons. */ public JPanel homeButtons; - + /** The btn width. */ private int btnWidth = 220; - + /** The logo height. */ private int logoHeight = 160; + private String background; + + private Preferences appPrefs; + + private String labelColor = "0x000000"; + + private String buttonColor = "0xAFC6E9"; + + private Color buttonMouseOverColor; + /** * Instantiates a new home panel. * - * @param f the f - * @param b the b - * @param d the d + * @param f + * the f + * @param b + * the b + * @param d + * the d */ - public HomePanel(Font f, ResourceBundle b, Dimension d) - { + public HomePanel(Font f, Preferences p, ResourceBundle b, Dimension d) { appFont = f; appBundle = b; - try - { - MainPic = ImageIO.read(getClass().getResourceAsStream("accueil.png")); - } - catch(Exception e) - { - logger.debug("Cannot load logo image"); - } - btnWidth = 233; - //logger.debug("Buttons width = "+ btnWidth); - Color backgroundColor = Color.decode("0xAFC6E9"); + appPrefs = p; + try { + MainPic = ImageIO.read(getClass() + .getResourceAsStream("accueil.png")); + } catch (Exception e) { + logger.debug("Cannot load logo image"); + } + // btnWidth = 233; + background = appPrefs.getProperty("colors.background"); + buttonColor = appPrefs.getProperty("colors.button.background"); + labelColor = appPrefs.getProperty("colors.button.label"); + buttonMouseOverColor=Color.decode(appPrefs.getProperty("colors.button.mouseover")); + // logger.debug("Buttons width = "+ btnWidth); + + Color backgroundColor = Color.decode(buttonColor); // button color inlineBtn = new RoundedButton("RBL_INLINE", appBundle); inlineBtn.setFont(appFont); + inlineBtn.setButtonMouseOverColor(buttonMouseOverColor); inlineBtn.setBackground(backgroundColor); inlineBtn.setPreferredSize(new Dimension(btnWidth, 300)); - rhythmBtn = new RoundedButton("RBL_RHYTHM", appBundle); - rhythmBtn.setFont(appFont); - rhythmBtn.setBackground(backgroundColor); - rhythmBtn.setPreferredSize(new Dimension(btnWidth, 300)); - scoreBtn = new RoundedButton("RBL_SCORE", appBundle); - scoreBtn.setFont(appFont); - scoreBtn.setBackground(backgroundColor); - scoreBtn.setPreferredSize(new Dimension(btnWidth, 300)); - statsBtn = new RoundedButton("RBL_STATS", appBundle); - statsBtn.setFont(appFont); - statsBtn.setBackground(backgroundColor); - statsBtn.setPreferredSize(new Dimension(btnWidth, 300)); - lessonsBtn = new RoundedButton("RBL_LESSONS", appBundle); - lessonsBtn.setFont(appFont); - lessonsBtn.setBackground(backgroundColor); - lessonsBtn.setPreferredSize(new Dimension(btnWidth, 300)); - earTrainBtn = new RoundedButton("RBL_EARTRAIN", appBundle); - earTrainBtn.setFont(appFont); - earTrainBtn.setBackground(backgroundColor); - earTrainBtn.setPreferredSize(new Dimension(btnWidth, 300)); - - homeButtons = new JPanel(); - homeButtons.setLayout(null); - homeButtons.setBackground(Color.white); - homeButtons.setPreferredSize(new Dimension(d.width, d.height - logoHeight)); - homeButtons.setBounds(0, logoHeight, d.width, d.height - logoHeight); - homeButtons.add(inlineBtn); - homeButtons.add(rhythmBtn); - homeButtons.add(scoreBtn); - homeButtons.add(statsBtn); - homeButtons.add(lessonsBtn); - homeButtons.add(earTrainBtn); - - add(homeButtons); + inlineBtn.setLabelColor(Color.decode(labelColor)); + rhythmBtn = new RoundedButton("RBL_RHYTHM", appBundle); + rhythmBtn.setFont(appFont); + rhythmBtn.setButtonMouseOverColor(buttonMouseOverColor); + rhythmBtn.setBackground(backgroundColor); + rhythmBtn.setPreferredSize(new Dimension(btnWidth, 300)); + rhythmBtn.setLabelColor(Color.decode(labelColor)); + scoreBtn = new RoundedButton("RBL_SCORE", appBundle); + scoreBtn.setFont(appFont); + scoreBtn.setButtonMouseOverColor(buttonMouseOverColor); + scoreBtn.setBackground(backgroundColor); + scoreBtn.setPreferredSize(new Dimension(btnWidth, 300)); + scoreBtn.setLabelColor(Color.decode(labelColor)); + statsBtn = new RoundedButton("RBL_STATS", appBundle); + statsBtn.setFont(appFont); + statsBtn.setButtonMouseOverColor(buttonMouseOverColor); + statsBtn.setBackground(backgroundColor); + statsBtn.setPreferredSize(new Dimension(btnWidth, 300)); + statsBtn.setLabelColor(Color.decode(labelColor)); + lessonsBtn = new RoundedButton("RBL_LESSONS", appBundle); + lessonsBtn.setFont(appFont); + lessonsBtn.setButtonMouseOverColor(buttonMouseOverColor); + lessonsBtn.setBackground(backgroundColor); + lessonsBtn.setPreferredSize(new Dimension(btnWidth, 300)); + lessonsBtn.setLabelColor(Color.decode(labelColor)); + earTrainBtn = new RoundedButton("RBL_EARTRAIN", appBundle); + earTrainBtn.setFont(appFont); + earTrainBtn.setButtonMouseOverColor(buttonMouseOverColor); + earTrainBtn.setBackground(backgroundColor); + earTrainBtn.setPreferredSize(new Dimension(btnWidth, 300)); + earTrainBtn.setLabelColor(Color.decode(labelColor)); + homeButtons = new JPanel(); + homeButtons.setLayout(null); + homeButtons.setBackground(Color.decode(background)); + homeButtons.setPreferredSize(new Dimension(d.width, d.height + - logoHeight)); + homeButtons.setBounds(0, logoHeight, d.width, d.height - logoHeight); + homeButtons.add(inlineBtn); + homeButtons.add(rhythmBtn); + homeButtons.add(scoreBtn); + homeButtons.add(statsBtn); + homeButtons.add(lessonsBtn); + homeButtons.add(earTrainBtn); + + add(homeButtons); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ - protected void paintComponent(Graphics g) - { - ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - + protected void paintComponent(Graphics g) { + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + // logger.debug("[paintComponent] width = "+ this.getWidth()); - g.setColor(Color.white); + g.setColor(Color.decode(background)); g.fillRect(0, 0, getWidth(), getHeight()); btnWidth = 254; - int prefWidth = 800 ; + int prefWidth = 800; int btnHeight = 163; int margin = 10; - logger.debug("Buttons width = "+ btnWidth); g.drawImage(MainPic, (this.getWidth() / 2) - 300, 0, null); - homeButtons.setBounds(((this.getWidth() - prefWidth) / 2) + margin, logoHeight, prefWidth-(margin*2), margin + btnHeight *2 ); + homeButtons.setBounds(((this.getWidth() - prefWidth) / 2) + margin, + logoHeight, prefWidth - (margin * 2), margin + btnHeight * 2); inlineBtn.setBounds(0, 0, btnWidth, btnHeight); rhythmBtn.setBounds(margin + btnWidth, 0, btnWidth, btnHeight); - scoreBtn.setBounds(margin*2 + (btnWidth * 2), 0, btnWidth, btnHeight); + scoreBtn.setBounds(margin * 2 + (btnWidth * 2), 0, btnWidth, btnHeight); statsBtn.setBounds(0, margin + btnHeight, btnWidth, btnHeight); - lessonsBtn.setBounds(margin + btnWidth, margin + btnHeight, btnWidth, btnHeight); - earTrainBtn.setBounds(margin*2 + (btnWidth * 2), margin + btnHeight, btnWidth, btnHeight); + lessonsBtn.setBounds(margin + btnWidth, margin + btnHeight, btnWidth, + btnHeight); + earTrainBtn.setBounds(margin * 2 + (btnWidth * 2), margin + btnHeight, + btnWidth, btnHeight); } } From eb315e8dccba81db195fdfaeb0e546fd240e4c1b Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 23 Feb 2016 15:37:55 +0100 Subject: [PATCH 25/35] Color in properties for TimerPanel --- src/main/java/calao/Accidentals.java | 192 ++-- src/main/java/calao/AnswersPanel.java | 5 +- .../java/calao/ClefNotesOptionDialog.java | 112 ++- src/main/java/calao/ClefSelector.java | 314 +++--- src/main/java/calao/ExercisesPanel.java | 6 +- src/main/java/calao/GameBar.java | 1 + src/main/java/calao/InlinePanel.java | 100 +- src/main/java/calao/NativeUtils.java | 228 +++-- src/main/java/calao/Note.java | 6 +- src/main/java/calao/NoteGenerator.java | 302 +++--- src/main/java/calao/NotesPanel.java | 40 +- src/main/java/calao/Piano.java | 3 +- src/main/java/calao/Preferences.java | 39 +- src/main/java/calao/RoundedButton.java | 44 +- src/main/java/calao/ScorePanel.java | 8 +- src/main/java/calao/SmartBar.java | 28 +- src/main/java/calao/Staff.java | 951 ++++++++++-------- src/main/java/calao/TimerPanel.java | 13 +- 18 files changed, 1403 insertions(+), 989 deletions(-) diff --git a/src/main/java/calao/Accidentals.java b/src/main/java/calao/Accidentals.java index 3fe8f0b..35f3ad4 100644 --- a/src/main/java/calao/Accidentals.java +++ b/src/main/java/calao/Accidentals.java @@ -1,7 +1,7 @@ /** * Calao is an educational platform to get started with musical * reading and solfege. - * Copyright (C) 2012-2014 R. Leloup (http://github.com/Neonunux/Calao) + * Copyright (C) 2012-2016 R. Leloup (http://github.com/Neonunux/Calao) * * 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 @@ -33,7 +33,6 @@ * The Class Accidentals. * * @author Neonunux - * @author Massimo Callegari */ public class Accidentals { @@ -51,12 +50,9 @@ public class Accidentals { /** * Instantiates a new accidentals. * - * @param String t - * Type of Accidentals: # or b - * @param Integer count - * Amount of accidentals: 1 to 7 - * @param Preferences p - * The preferences configuration + * @param t Type of Accidentals: # or b + * @param count Amount of accidentals: 1 to 7 + * @param p The preferences configuration */ public Accidentals(String t, int count, Preferences p) { appPrefs = p; @@ -67,10 +63,8 @@ public Accidentals(String t, int count, Preferences p) { /** * Sets the type and count. * - * @param t - * the t - * @param count - * the count + * @param t the t + * @param count the count */ public void setTypeAndCount(String t, int count) { this.type = t; @@ -196,7 +190,7 @@ private void drawAlteration(Graphics g, Font f, int x, int y, String altType) { } /** - * Paint. + * Paint the accidentals on key * * @param g * the g @@ -212,128 +206,136 @@ private void drawAlteration(Graphics g, Font f, int x, int y, String altType) { public void paint(Graphics g, Font f, int xPos, int yPos, int clefMask) { String sharp = "B"; // # alteration String flat = "b"; // b alteration - + int clefOffset; - + Integer xPos2; Integer yPos2; - + clefOffset = getClefOffset(clefMask); String alteration = null; - + if (type.equals("#")) { - alteration = sharp; + alteration = sharp; } if (type.equals("b")) { alteration = flat; } - + for (int i = 0; i < amount; i++) { xPos2 = xPos + getXYAlterations(clefMask).get(2 * i); - yPos2 = yPos + getXYAlterations(clefMask).get(2 * i + 1) + clefOffset; + yPos2 = yPos + getXYAlterations(clefMask).get(2 * i + 1) + + clefOffset; drawAlteration(g, f, xPos2, yPos2, alteration); } } /** - * @param clefMask - * @param clefOffset - * @return + * @param clefMask voices settings + * + * @return int result */ public int getClefOffset(int clefMask) { int clefOffset = 0; // G2 ? - if (clefMask == appPrefs.CLEF_F4) { - clefOffset = 10; - } - // else if (clefMask == appPrefs.CLEF_C1) { - // clefOffset = ??; - // } else if (clefMask == appPrefs.CLEF_C2) { - // clefOffset = ??; - // } - else if (clefMask == appPrefs.CLEF_C3) { - clefOffset = 5; - } else if (clefMask == appPrefs.CLEF_C4) { - clefOffset = -5; - } - // else if (clefMask == appPrefs.CLEF_C5) { - // clefOffset = ??; - // } + // if (clefMask == appPrefs.CLEF_F4) { // OLD + // clefOffset = 10; // OLD + // } // OLD + // // else if (clefMask == appPrefs.CLEF_C1) { // OLD + // // clefOffset = ??; // OLD + // // } else if (clefMask == appPrefs.CLEF_C2) { // OLD + // // clefOffset = ??; // OLD + // // } // OLD + // else if (clefMask == appPrefs.CLEF_C3) { // OLD + // clefOffset = 5; // OLD + // } else if (clefMask == appPrefs.CLEF_C4) { // OLD + // clefOffset = -5; // OLD + // } // OLD + // // else if (clefMask == appPrefs.CLEF_C5) { // OLD + // // clefOffset = ??; // OLD + // // } + + if (clefMask == appPrefs.C1_CLEF) { // NEW + clefOffset = 25; // NEW + } else if (clefMask == appPrefs.C2_CLEF) { // NEW + clefOffset = 15; // NEW + } else if (clefMask == appPrefs.C3_CLEF) { // NEW + clefOffset = 5; // NEW + } else if (clefMask == appPrefs.C4_CLEF) { // NEW + clefOffset = -5; // NEW + } else if (clefMask == appPrefs.C5_CLEF) { // NEW + clefOffset = -10; // NEW + } else if (clefMask == appPrefs.F4_CLEF) { // NEW + clefOffset = 10; // NEW + } // NEW + return clefOffset; } Vector getXYAlterations(int clefMask) { Vector alt = new Vector(); if (type.equals("b")) { - if (amount >= 1) { - alt.add(0); // SIB - alt.add(5); - } - if (amount >= 2) { - alt.add(9); // MIB - alt.add(-10); - } - if (amount >= 3) { - alt.add(18); // LAB - alt.add(10); - } - if (amount >= 4) { - alt.add(27); // REB - alt.add(-5); - } - if (amount >= 5) { - alt.add(36); // SOLB - alt.add(15); - } - if (amount >= 6) { - alt.add(45); // DOB - alt.add(0); - } - if (amount >= 7) { + switch (amount) { + case 7: alt.add(54); // FAB alt.add(20); - } - } - - if (type.equals("#")) { - if (amount >= 1) { - alt.add(0); // SOL - alt.add(-15); - } - if (amount >= 2) { - alt.add(10); // RE + case 6: + alt.add(45); // DOB alt.add(0); - } - if (amount >= 3) { - if (clefMask == appPrefs.CLEF_C4) { - alt.add(20); // LA - alt.add(15); - } else { - alt.add(20); - alt.add(-20); - } - } - if (amount >= 4) { - alt.add(30); // MI + case 5: + alt.add(36); // SOLB + alt.add(15); + case 4: + alt.add(27); // REB alt.add(-5); - } - if (amount >= 5) { - alt.add(40); // SI + case 3: + alt.add(18); // LAB alt.add(10); + case 2: + alt.add(9); // MIB + alt.add(-10); + case 1: + alt.add(0); // SIB + alt.add(5); + break; } - if (amount >= 6) { - if (clefMask == appPrefs.CLEF_C4) { + } + + if (type.equals("#")) { + switch (amount) { + case 7: + alt.add(60); // DO# + alt.add(5); + case 6: + if (clefMask == appPrefs.C4_CLEF) { alt.add(50); // FA# alt.add(25); } else { alt.add(50); alt.add(-10); } - } - if (amount >= 7) { - alt.add(60); // DO# - alt.add(5); + case 5: + alt.add(40); // SI + alt.add(10); + case 4: + alt.add(30); // MI + alt.add(-5); + case 3: + if (clefMask == appPrefs.C4_CLEF) { + alt.add(20); // LA + alt.add(15); + } else { + alt.add(20); + alt.add(-20); + } + case 2: + alt.add(10); // RE + alt.add(0); + case 1: + alt.add(0); // SOL + alt.add(-15); + break; } } return alt; diff --git a/src/main/java/calao/AnswersPanel.java b/src/main/java/calao/AnswersPanel.java index 181e59b..96401f4 100644 --- a/src/main/java/calao/AnswersPanel.java +++ b/src/main/java/calao/AnswersPanel.java @@ -1,7 +1,7 @@ /** * Calao is an educational platform to get started with musical * reading and solfege. - * Copyright (C) 2012-2014 R. Leloup (http://github.com/Neonunux/Calao) + * Copyright (C) 2012-2015 R. Leloup (http://github.com/Neonunux/Calao) * * 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 @@ -79,6 +79,7 @@ public AnswersPanel() wrongImg = new ImageIcon(getClass().getResource("wrong.png")).getImage(); warnImg = new ImageIcon(getClass().getResource("warning.png")).getImage(); checkSurface(); + logger.debug("AnswersPanel thrown"); } /** @@ -105,7 +106,7 @@ public void clearSurface() if (bImage == null) return; Graphics2D g2d = bImage.createGraphics(); - g2d.setBackground(new Color(255, 255, 255, 0)); + g2d.setBackground(Color.cyan); g2d.clearRect(0, 0, currWidth, currHeight); g2d.dispose(); cursorXpos = -1; diff --git a/src/main/java/calao/ClefNotesOptionDialog.java b/src/main/java/calao/ClefNotesOptionDialog.java index 2db092c..3ce54bd 100644 --- a/src/main/java/calao/ClefNotesOptionDialog.java +++ b/src/main/java/calao/ClefNotesOptionDialog.java @@ -23,10 +23,9 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.ResourceBundle; -import javafx.stage.Modality; - import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JButton; @@ -56,6 +55,8 @@ public class ClefNotesOptionDialog extends JDialog implements ActionListener { /** The app bundle. */ ResourceBundle appBundle; + Voices voices; + /** The app font. */ Font appFont; @@ -66,7 +67,7 @@ public class ClefNotesOptionDialog extends JDialog implements ActionListener { /** The second Clef */ ClefSelector secondClef; - + /** The third Clef */ ClefSelector thirdClef; @@ -134,14 +135,19 @@ public class ClefNotesOptionDialog extends JDialog implements ActionListener { * @param p * the p */ - public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { + public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p, Voices v) { appFont = f; appBundle = b; appPrefs = p; int clefSelHeight = 205; int clefSelWidth = 170; - + + if (v == null) + voices = new Voices(f, b, p); + else + voices = v; + setModalityType(DEFAULT_MODALITY_TYPE); setLayout(null); setSize(700, 510); @@ -152,7 +158,7 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { setResizable(false); setLocationRelativeTo(null); // Center the window on the display - /* ***** First panel: Contains the ClefSelector objects to select clefs */ + /* *** First panel: Contains the ClefSelector objects to select clefs */ JPanel clefsPanel = new JPanel(); clefsPanel.setLayout(null); clefsPanel.setBackground(Color.white); @@ -161,20 +167,17 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { clefsPanel.setBounds(0, 0, (clefSelWidth * 2) + 15, (clefSelHeight * 2) + 20); - int clefsMask = Integer.parseInt(appPrefs.getProperty("clefsMask")); - if (clefsMask == -1) { - clefsMask = appPrefs.G2_CLEF; - } - - firstClef = new ClefSelector(appBundle, "G2"); + firstClef = new ClefSelector(appBundle, voices.getVoice(0)); firstClef.setPreferredSize(new Dimension(clefSelWidth, clefSelHeight)); firstClef.setBounds(5, 10, clefSelWidth, clefSelHeight); firstClef.setFont(appFont); - if ((clefsMask & appPrefs.G2_CLEF) > 0) { // NEW + String loadedClef = voices.getVoice(0); + if (loadedClef != "NONE") { // NEW firstClef.setEnabled(true); } else { firstClef.setEnabled(false); } + firstClef.setClef(loadedClef); NoteGenerator tmpNG = new NoteGenerator(appPrefs, null, false); // retrieve previously saved pitches and convert them into levels @@ -194,16 +197,18 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { .getIndexFromPitch(tmpNG.CLEF_G2_BASEPITCH, higherPitch, false)); - secondClef = new ClefSelector(appBundle, "F4"); + secondClef = new ClefSelector(appBundle, voices.getVoice(1)); secondClef.setPreferredSize(new Dimension(clefSelWidth, clefSelHeight)); secondClef .setBounds(clefSelWidth + 10, 10, clefSelWidth, clefSelHeight); secondClef.setFont(appFont); - if ((clefsMask & appPrefs.F4_CLEF) > 0) { // NEW + loadedClef = voices.getVoice(1); + if (loadedClef != "NONE") { // NEW secondClef.setEnabled(true); } else { secondClef.setEnabled(false); } + secondClef.setClef(loadedClef); // retrieve previously saved pitches and convert them into levels lowerPitch = Integer.parseInt(appPrefs.getProperty("ClefF4Lower")); if (lowerPitch == -1) { @@ -220,15 +225,17 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { .getIndexFromPitch(tmpNG.CLEF_F4_BASEPITCH, higherPitch, false)); - thirdClef = new ClefSelector(appBundle, "C3"); + thirdClef = new ClefSelector(appBundle, voices.getVoice(2)); thirdClef.setPreferredSize(new Dimension(clefSelWidth, clefSelHeight)); thirdClef.setBounds(5, clefSelHeight + 15, clefSelWidth, clefSelHeight); thirdClef.setFont(appFont); - if ((clefsMask & appPrefs.C3_CLEF) > 0) { + loadedClef = voices.getVoice(2); + if (loadedClef != "NONE") { // NEW thirdClef.setEnabled(true); } else { thirdClef.setEnabled(false); } + thirdClef.setClef(loadedClef); // retrieve previously saved pitches and convert them into levels lowerPitch = Integer.parseInt(appPrefs.getProperty("ClefC3Lower")); if (lowerPitch == -1) { @@ -245,16 +252,18 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { .getIndexFromPitch(tmpNG.CLEF_C3_BASEPITCH, higherPitch, false)); - forthClef = new ClefSelector(appBundle, "C4"); + forthClef = new ClefSelector(appBundle, voices.getVoice(3)); forthClef.setPreferredSize(new Dimension(clefSelWidth, clefSelHeight)); forthClef.setBounds(clefSelWidth + 10, clefSelHeight + 15, clefSelWidth, clefSelHeight); forthClef.setFont(appFont); - if ((clefsMask & appPrefs.C4_CLEF) > 0) { + loadedClef = voices.getVoice(3); + if (loadedClef != "NONE") { // NEW forthClef.setEnabled(true); } else { forthClef.setEnabled(false); } + forthClef.setClef(loadedClef); // retrieve previously saved pitches and convert them into levels lowerPitch = Integer.parseInt(appPrefs.getProperty("ClefC4Lower")); if (lowerPitch == -1) { @@ -296,9 +305,9 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { accidentalsPanel.setPreferredSize(new Dimension(getWidth() - (clefSelWidth * 2) - 40, 50)); - JLabel accLabel = new JLabel(appBundle.getString("_accidentals") + " "); - accLabel.setFont(new Font("Arial", Font.BOLD, 20)); - accidentalsPanel.add(accLabel); + JLabel acLabel = new JLabel(appBundle.getString("_accidentals") + " "); + acLabel.setFont(new Font("Arial", Font.BOLD, 20)); + accidentalsPanel.add(acLabel); accCB = new JComboBox(); accCB.setPreferredSize(new Dimension(150, 27)); @@ -492,7 +501,10 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { add(notesPanel); add(buttonsPanel); } - + public ClefNotesOptionDialog(Font f, ResourceBundle r, Preferences p) { + this(f,r,p,null); + } + /* * (non-Javadoc) * @@ -501,24 +513,29 @@ public ClefNotesOptionDialog(Font f, ResourceBundle b, Preferences p) { */ public void actionPerformed(ActionEvent ae) { if (ae.getSource() == okButton) { - int clefsMask = 0; + NoteGenerator tmpNG = new NoteGenerator(appPrefs, null, false); if (!firstClef.isEnabled()) { - firstClef.setChoosen("NONE"); + firstClef.setClef("NONE"); + voices.setVoice(0, "NONE"); } if (!secondClef.isEnabled()) { - secondClef.setChoosen("NONE"); + secondClef.setClef("NONE"); + voices.setVoice(1, "NONE"); } if (!thirdClef.isEnabled()) { - secondClef.setChoosen("NONE"); + secondClef.setClef("NONE"); + voices.setVoice(2, "NONE"); } if (!forthClef.isEnabled()) { - secondClef.setChoosen("NONE"); + secondClef.setClef("NONE"); + voices.setVoice(3, "NONE"); } - logger.debug("1rst:" + firstClef.getChoosen() + " / 2:" - + secondClef.getChoosen() + " / 3:" + thirdClef.getChoosen() - + " / 4:" + forthClef.getChoosen()); - if (firstClef.isEnabled() == true) { + + logger.debug("1rst:" + firstClef.getClef() + " / 2:" + + secondClef.getClef() + " / 3:" + thirdClef.getClef() + + " / 4:" + forthClef.getClef()); + if (firstClef.isEnabled()) { int lowerPitch = tmpNG .getPitchFromLevel(tmpNG.CLEF_G2_BASEPITCH, 24 - firstClef.getLowerLevel()); @@ -527,7 +544,7 @@ public void actionPerformed(ActionEvent ae) { 24 - firstClef.getHigherLevel()); logger.debug("Treble Clef pitches: " + lowerPitch + " to " + higherPitch); - clefsMask = clefsMask | appPrefs.G2_CLEF; + voices.setVoice(0, firstClef.getClef()); appPrefs.setProperty("ClefG2Upper", Integer.toString(higherPitch)); appPrefs.setProperty("ClefG2Lower", @@ -542,7 +559,7 @@ public void actionPerformed(ActionEvent ae) { 24 - secondClef.getHigherLevel()); logger.debug("Bass Clef pitches: " + lowerPitch + " to " + higherPitch); - clefsMask = clefsMask | appPrefs.F4_CLEF; + voices.setVoice(1, secondClef.getClef()); appPrefs.setProperty("ClefF4Upper", Integer.toString(higherPitch)); appPrefs.setProperty("ClefF4Lower", @@ -557,7 +574,7 @@ public void actionPerformed(ActionEvent ae) { 24 - thirdClef.getHigherLevel()); logger.debug("C3 Clef pitches: " + lowerPitch + " to " + higherPitch); - clefsMask = clefsMask | appPrefs.C3_CLEF; + voices.setVoice(2, thirdClef.getClef()); appPrefs.setProperty("ClefC3Upper", Integer.toString(higherPitch)); appPrefs.setProperty("ClefC3Lower", @@ -572,21 +589,30 @@ public void actionPerformed(ActionEvent ae) { 24 - forthClef.getHigherLevel()); logger.debug("C4 Clef pitches: " + lowerPitch + " to " + higherPitch); - clefsMask = clefsMask | appPrefs.C4_CLEF; + voices.setVoice(3, forthClef.getClef()); appPrefs.setProperty("ClefC4Upper", Integer.toString(higherPitch)); appPrefs.setProperty("ClefC4Lower", Integer.toString(lowerPitch)); } - if (clefsMask == 0) { - // if all clefs are disabled then set TREBLE - // clef by default - appPrefs.setProperty("clefsMask", "1"); - } else { - appPrefs.setProperty("clefsMask", Integer.toString(clefsMask)); + boolean checked = false; + // check one or more clef is set + for (int i = 0; i < 4; i++) { + if (voices.getVoice(i) != "NONE") { + checked = true; + break; + } + } + if (!checked) { + firstClef.setClef("G2"); } + appPrefs.setProperty("voice0", firstClef.getClef()); + appPrefs.setProperty("voice1", secondClef.getClef()); + appPrefs.setProperty("voice2", thirdClef.getClef()); + appPrefs.setProperty("voice3", forthClef.getClef()); + appPrefs.setProperty("accidentals", Integer.toString(accCB.getSelectedIndex())); @@ -646,7 +672,7 @@ public void actionPerformed(ActionEvent ae) { } appPrefs.storeProperties(); - + logger.debug("property fired"); this.firePropertyChange("updateParameters", false, true); this.dispose(); } else if (ae.getSource() == halfQuarterCB) { diff --git a/src/main/java/calao/ClefSelector.java b/src/main/java/calao/ClefSelector.java index bab7e0c..c8b1140 100644 --- a/src/main/java/calao/ClefSelector.java +++ b/src/main/java/calao/ClefSelector.java @@ -14,7 +14,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; import java.awt.Color; @@ -35,67 +35,65 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - /** * The Class ClefSelector. * * @author Neonunux */ -@SuppressWarnings({"unchecked","rawtypes"}) -public class ClefSelector extends JPanel implements MouseListener -{ +@SuppressWarnings({ "unchecked", "rawtypes" }) +public class ClefSelector extends JPanel implements MouseListener { /** The Constant serialVersionUID. */ private static final long serialVersionUID = -3872352788125977616L; - - private static final Logger logger = LogManager.getLogger(ClefSelector.class.getName()); + + private static final Logger logger = LogManager + .getLogger(ClefSelector.class.getName()); /** The app bundle. */ ResourceBundle appBundle; - + /** The clef symbol. */ String clefSymbol; - - /** The choosen. */ - String choosen; - + /** The selector up. */ JLabel selectorUp; - + /** The selector down. */ JLabel selectorDown; - + /** The clef text. */ JLabel clefText; - + /** The disabled text. */ JLabel disabledText; - + /** The enabled. */ boolean enabled = false; - + /** The lower level. */ int lowerLevel = 0; - + /** The higher level. */ int higherLevel = 0; - + /** The key list. */ private ArrayList keyList = new ArrayList(); - + /** The key iter. */ private ListIterator keyIter; + private int direction = 0; + /** * Instantiates a new clef selector. * - * @param b the b - * @param s the s + * @param b + * the b + * @param defaultClef + * the s */ - public ClefSelector(ResourceBundle b, String s) - { + public ClefSelector(ResourceBundle b, String defaultClef) { appBundle = b; - clefSymbol = s; - choosen = s; + clefSymbol = defaultClef; setLayout(null); Font arial = new Font("Arial", Font.BOLD, 15); @@ -108,15 +106,7 @@ public ClefSelector(ResourceBundle b, String s) keyList.add("F4"); keyIter = keyList.listIterator(); - if (clefSymbol == "G2") { - clefText = new JLabel(appBundle.getString("_clef.g2"), null, JLabel.CENTER); - } else if (clefSymbol == "F4") { - clefText = new JLabel(appBundle.getString("_clef.f4"), null, JLabel.CENTER); - } else if (clefSymbol == "C3") { - clefText = new JLabel(appBundle.getString("_clef.c3"), null, JLabel.CENTER); - } else if (clefSymbol == "C4") { - clefText = new JLabel(appBundle.getString("_clef.c4"), null, JLabel.CENTER); - } + initIter(clefSymbol, keyIter); selectorUp = new JLabel("\u25B2"); // \u25B2: triangle UP selectorUp.setFont(arial.deriveFont((float) 22.0)); @@ -130,6 +120,25 @@ public ClefSelector(ResourceBundle b, String s) selectorDown.setBounds(25, 160, 140, 40); selectorDown.setVisible(enabled); + clefText = new JLabel("", null, JLabel.CENTER); + arial = new Font("Arial", Font.BOLD, 15); + + if (clefSymbol == "G2") { + clefText.setText(appBundle.getString("_clef.g2")); + } else if (clefSymbol == "C1") { + clefText.setText(appBundle.getString("_clef.c1")); + } else if (clefSymbol == "C2") { + clefText.setText(appBundle.getString("_clef.c2")); + } else if (clefSymbol == "C3") { + clefText.setText(appBundle.getString("_clef.c3")); + } else if (clefSymbol == "C4") { + clefText.setText(appBundle.getString("_clef.c4")); + } else if (clefSymbol == "C5") { + clefText.setText(appBundle.getString("_clef.c5")); + } else if (clefSymbol == "F4") { + clefText.setText(appBundle.getString("_clef.f4")); + } + clefText.setFont(arial); clefText.setForeground(Color.lightGray); clefText.setPreferredSize(new Dimension(140, 40)); @@ -148,16 +157,50 @@ public ClefSelector(ResourceBundle b, String s) addMouseListener(this); } - public void setClef(String key) - { - this.choosen = key; + private void initIter(String clefSymbol, ListIterator keyIter) { + String result = "-1"; + if (clefSymbol.equals("NONE")) + result="NONE"; + while (!clefSymbol.equals(result)) { + if (!keyIter.hasNext()) { + keyIter = keyList.listIterator(); + } + result = keyIter.next(); + } } - /* (non-Javadoc) + public String getClef() { + return clefSymbol; + } + + public void setClef(String key) { + clefSymbol = key; + + if (clefSymbol == "G2") { + clefText.setText(appBundle.getString("_clef.g2")); + } else if (clefSymbol == "C1") { + clefText.setText(appBundle.getString("_clef.c1")); + } else if (clefSymbol == "C2") { + clefText.setText(appBundle.getString("_clef.c2")); + } else if (clefSymbol == "C3") { + clefText.setText(appBundle.getString("_clef.c3")); + } else if (clefSymbol == "C4") { + clefText.setText(appBundle.getString("_clef.c4")); + } else if (clefSymbol == "C5") { + clefText.setText(appBundle.getString("_clef.c5")); + } else if (clefSymbol == "F4") { + clefText.setText(appBundle.getString("_clef.f4")); + } + + repaint(); + } + + /* + * (non-Javadoc) + * * @see javax.swing.JComponent#setEnabled(boolean) */ - public void setEnabled(boolean set) - { + public void setEnabled(boolean set) { this.enabled = set; this.clefText.setVisible(!enabled); this.disabledText.setVisible(!enabled); @@ -169,21 +212,23 @@ public void setEnabled(boolean set) /** * Sets the levels. * - * @param low the low - * @param high the high + * @param low + * the low + * @param high + * the high */ - public void setLevels(int low, int high) - { + public void setLevels(int low, int high) { this.lowerLevel = low; this.higherLevel = high; repaint(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.awt.Component#isEnabled() */ - public boolean isEnabled() - { + public boolean isEnabled() { return enabled; } @@ -192,8 +237,7 @@ public boolean isEnabled() * * @return the lower level */ - public int getLowerLevel() - { + public int getLowerLevel() { return lowerLevel; } @@ -202,54 +246,46 @@ public int getLowerLevel() * * @return the higher level */ - public int getHigherLevel() - { + public int getHigherLevel() { return higherLevel; } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent) */ - public void mouseClicked(MouseEvent e) - { + public void mouseClicked(MouseEvent e) { logger.debug("Mouse clicked (# of clicks: " + e.getClickCount() + ")"); logger.debug("X pos: " + e.getX() + ", Y pos: " + e.getY()); - - if (e.getX() < 50 ) - { + + if (e.getX() < 50) { // Key selector UP - if (e.getY() < 50) - { - if (keyIter.hasNext()) - { - clefSymbol = keyIter.next(); + if (e.getY() < 50) { + + if (!keyIter.hasNext()) { + keyIter = keyList.listIterator(); } - else // iterator on end's keyList - { - keyIter=keyList.listIterator(); + clefSymbol = keyIter.next(); + if (direction == -1) { // direction changed -> double iteration clefSymbol = keyIter.next(); - } - choosen = clefSymbol; - logger.debug("Clef up : "+ choosen + "\n"); + } + direction = 1; } // Key selector DOWN - if (e.getY() > 164) - { - if (keyIter.hasPrevious()) - { - clefSymbol = keyIter.previous(); - } - else // iterator on list's begining - { + if (e.getY() > 164) { + if (!keyIter.hasPrevious()) { + direction = -1; keyIter = keyList.listIterator(keyList.size()); + } + clefSymbol = keyIter.previous(); + if (direction == 1) {// direction changed -> double iteration clefSymbol = keyIter.previous(); } - choosen = clefSymbol; - logger.debug("Clef down : "+ choosen + "\n"); + direction = -1; } - // Key un/activation - if (e.getY() > 49 && e.getY() < 165) - { + // Key un/activation + if (e.getY() > 49 && e.getY() < 165) { enabled = !enabled; clefText.setVisible(!enabled); disabledText.setVisible(!enabled); @@ -259,28 +295,22 @@ public void mouseClicked(MouseEvent e) repaint(); return; } - } - else - { + } else { if (enabled == false) return; } // levels management - if (e.getX() > 50 && e.getY() > 9 && e.getY() < 189) - { + if (e.getX() > 50 && e.getY() > 9 && e.getY() < 189) { int relYpos = e.getY() - 14; int level = (relYpos / 7); logger.debug("[ClefSelector] New level = " + level); - if (e.getX() < 90) - { + if (e.getX() < 90) { if (level < higherLevel) higherLevel = level; else lowerLevel = level; - } - else - { + } else { if (level > lowerLevel) lowerLevel = level; else @@ -290,44 +320,51 @@ public void mouseClicked(MouseEvent e) repaint(); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent) */ - public void mousePressed(MouseEvent e) - { - //logger.debug("Mouse pressed; # of clicks: " + e.getClickCount()); + public void mousePressed(MouseEvent e) { + // logger.debug("Mouse pressed; # of clicks: " + e.getClickCount()); } - /* (non-Javadoc) - * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) + /* + * (non-Javadoc) + * + * @see + * java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent) */ - public void mouseReleased(MouseEvent e) - { - //logger.debug("Mouse released; # of clicks: " + e.getClickCount()); + public void mouseReleased(MouseEvent e) { + // logger.debug("Mouse released; # of clicks: " + e.getClickCount()); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent) */ - public void mouseEntered(MouseEvent e) - { - //logger.debug("Mouse entered"); + public void mouseEntered(MouseEvent e) { + // logger.debug("Mouse entered"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent) */ - public void mouseExited(MouseEvent e) - { - //logger.debug("Mouse exited"); + public void mouseExited(MouseEvent e) { + // logger.debug("Mouse exited"); } - /* (non-Javadoc) + /* + * (non-Javadoc) + * * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ - protected void paintComponent(Graphics g) - { - ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); + protected void paintComponent(Graphics g) { + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); Color fc; if (enabled == false) { fc = Color.lightGray; @@ -337,55 +374,46 @@ protected void paintComponent(Graphics g) g.setColor(fc); g.fillRoundRect(0, 0, getWidth(), getHeight(), 25, 25); g.setColor(Color.white); - g.fillRoundRect(5, 5, getWidth()-10, getHeight()-10, 20, 20); + g.fillRoundRect(5, 5, getWidth() - 10, getHeight() - 10, 20, 20); g.setColor(fc); - if (clefSymbol == "C1") - { + if (clefSymbol.equals("C1")) { g.setFont(getFont().deriveFont(73f)); - g.drawString("" + (char)0xBF, 15, 159); - } - else if (clefSymbol == "C2") - { + g.drawString("" + (char) 0xBF, 15, 159); + } else if (clefSymbol.equals("C2")) { g.setFont(getFont().deriveFont(73f)); - g.drawString("" + (char)0xBF, 15, 145); - } - else if (clefSymbol == "C3") - { + g.drawString("" + (char) 0xBF, 15, 145); + } else if (clefSymbol.equals("C3")) { g.setFont(getFont().deriveFont(73f)); - g.drawString("" + (char)0xBF, 15, 132); - } - else if (clefSymbol == "C4") - { + g.drawString("" + (char) 0xBF, 15, 132); + } else if (clefSymbol.equals("C4")) { g.setFont(getFont().deriveFont(73f)); - g.drawString("" + (char)0xBF, 15, 118); - } - else if (clefSymbol == "C5") - { + g.drawString("" + (char) 0xBF, 15, 118); + } else if (clefSymbol.equals("C5")) { g.setFont(getFont().deriveFont(73f)); - g.drawString("" + (char)0xBF, 15, 104); + g.drawString("" + (char) 0xBF, 15, 104); } - if (clefSymbol == "G2") - { + if (clefSymbol.equals("G2")) { g.setFont(getFont().deriveFont(80f)); g.drawString("G", 15, 130); } - if (clefSymbol == "F4") - { + if (clefSymbol.equals("F4")) { g.setFont(getFont().deriveFont(80f)); - g.drawString("?", 15, 130); + g.drawString("?", 15, 130); } - if (enabled == true) - { + if (enabled) { g.setFont(getFont().deriveFont(68f)); - String ss = "" + (char)0xA9 + (char)0xA9 + (char)0xA9 + (char)0xA9; // staff symbol + String ss = "" + (char) 0xA9 + (char) 0xA9 + (char) 0xA9 + + (char) 0xA9; // staff symbol g.drawString(ss, 15, 128); int ypos = 143; - for (int i = 0; i < 4; i++, ypos+=14) // draw 3 additional lines below + for (int i = 0; i < 4; i++, ypos += 14) + // draw 3 additional lines below g.fillRect(70, ypos, 32, 2); ypos = 59; - for (int i = 0; i < 4; i++, ypos-=14) // draw 3 additional lines above + for (int i = 0; i < 4; i++, ypos -= 14) + // draw 3 additional lines above g.fillRect(100, ypos, 32, 2); g.drawString("w", 75, 25 + (lowerLevel * 7)); diff --git a/src/main/java/calao/ExercisesPanel.java b/src/main/java/calao/ExercisesPanel.java index 37cc056..30afae9 100644 --- a/src/main/java/calao/ExercisesPanel.java +++ b/src/main/java/calao/ExercisesPanel.java @@ -180,7 +180,7 @@ public ExercisesPanel(Font f, ResourceBundle b, Preferences p, MidiController mc leftPanel.setBounds(5, 10, 330, getHeight() - 25); topBar = new RoundPanel(Color.decode("0xA3C7FF"), Color.decode("0xA2DDFF")); - topBar.setBorderColor(Color.decode("0xA4D6FF")); + //topBar.setBorderColor(Color.decode("0xA4D6FF")); topBar.setBounds(10, 7, 310, 75); topBar.setLayout(null); @@ -543,7 +543,7 @@ public void valueChanged(TreeSelectionEvent e) selectedExercise.loadFromFile(nInfo.filePath); exerciseTitle.setText(selectedExercise.title); - scoreStaff.setClefs(selectedExercise.clefMask); + //scoreStaff.setClefs(selectedExercise.clefMask); scoreStaff.setAccidentals(selectedExercise.acc); timeNumerator = 4; @@ -564,7 +564,7 @@ else if (selectedExercise.timeSign == 5) scoreStaff.setMeasuresNumber((int)Math.ceil(totalDuration / (timeNumerator / (timeDenominator / 4)))); playbackSpeed = selectedExercise.speed; - notesLayer.setClefs(selectedExercise.clefMask); +// notesLayer.setClefs(selectedExercise.clefMask); notesLayer.setStaffWidth(scoreStaff.getStaffWidth()); notesLayer.setFirstNoteXPosition(scoreStaff.getFirstNoteXPosition()); notesLayer.setNotesSequence(selectedExercise.notes, selectedExercise.notes2); diff --git a/src/main/java/calao/GameBar.java b/src/main/java/calao/GameBar.java index 9a160ae..2d5e2fe 100644 --- a/src/main/java/calao/GameBar.java +++ b/src/main/java/calao/GameBar.java @@ -180,6 +180,7 @@ public void updateLanguage(ResourceBundle bundle) notesNumber.addItem("80 " + appBundle.getString("_menuNotes")); notesNumber.setSelectedIndex(2); } + logger.debug("Updated language"); } /* (non-Javadoc) diff --git a/src/main/java/calao/InlinePanel.java b/src/main/java/calao/InlinePanel.java index 096dc4b..c526983 100644 --- a/src/main/java/calao/InlinePanel.java +++ b/src/main/java/calao/InlinePanel.java @@ -14,7 +14,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; import java.awt.Color; @@ -43,7 +43,8 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * * @author Neonunux */ -public class InlinePanel extends JPanel implements ActionListener { +public class InlinePanel extends JPanel implements ActionListener, + PropertyChangeListener { private static final Logger logger = LogManager.getLogger(InlinePanel.class .getName()); @@ -123,9 +124,6 @@ public class InlinePanel extends JPanel implements ActionListener { /** The user notes. */ Vector userNotes = new Vector(); - /** The clef mask. */ - private int clefMask = 1; - /** The game type. */ private int gameType = -1; @@ -152,6 +150,9 @@ public class InlinePanel extends JPanel implements ActionListener { private Exercise currEx = null; private TimerPanel timerPanel; + Voices voices; + + private int pieSize = 70; /** * Instantiates a new inline panel. @@ -174,7 +175,11 @@ public InlinePanel(Font f, ResourceBundle b, Preferences p, appPrefs = p; appMidi = mc; - setBackground(Color.white); + voices = new Voices(f, b, p); + + String color = appPrefs + .getProperty("colors.background"); + setBackground(Color.decode(color)); setSize(d); setLayout(null); if (appPrefs.globalExerciseMode == true) { @@ -185,22 +190,25 @@ public InlinePanel(Font f, ResourceBundle b, Preferences p, } else { inlineAccidentals = new Accidentals("", 0, appPrefs); } + inlineNG = new NoteGenerator(appPrefs, inlineAccidentals, false); + inlineNG.setVoices(voices); + stats = new Statistics(); - timerPanel = new TimerPanel(); + timerPanel = new TimerPanel(appPrefs); gameType = appPrefs.GAME_STOPPED; sBar = new SmartBar(new Dimension(d.width, sBarHeight), b, f, p, true, false, false); + sBar.addPropertyChangeListener(new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName() == "updateParameters") { - logger.trace("INLINE panel update parameters !"); - refreshPanel(); - } + logger.debug("sBar property changed refreshed "); + refreshPanel(); } }); + // sBar.clefNotesDialog.okButton.addActionListener(this); sBar.playBtn.addActionListener(this); if (exerciseMode == true) @@ -216,16 +224,19 @@ public void propertyChange(PropertyChangeEvent evt) { inlineAccidentals, true, true); inlineStaff.setPreferredSize(new Dimension(panelsWidth, staffHeight)); inlineStaff.setBounds(0, 0, panelsWidth, staffHeight); - inlineStaff.setClefs(clefMask); + inlineStaff.setVoices(voices); inlineStaff.setOpaque(true); + + - notesLayer = new NotesPanel(appFont, appPrefs, gameNotes, null, true); - notesLayer.setPreferredSize(new Dimension(panelsWidth, staffHeight)); - notesLayer.setBounds(0, 0, panelsWidth, staffHeight); - notesLayer.setOpaque(false); + // notesLayer = new NotesPanel(appFont, appPrefs, gameNotes, null, + // true); + // notesLayer.setPreferredSize(new Dimension(panelsWidth, staffHeight)); + // notesLayer.setBounds(0, 0, panelsWidth, staffHeight); + // notesLayer.setOpaque(false); layers.add(inlineStaff, new Integer(1)); - layers.add(notesLayer, new Integer(2)); + // layers.add(notesLayer, new Integer(2)); int pianoKeysNum = Integer.parseInt(appPrefs .getProperty("keyboardlength")); @@ -247,7 +258,17 @@ public void mouseReleased(MouseEvent e) { } }); } - + + + + inlineStaff.addPropertyChangeListener("voice1", new PropertyChangeListener() { + + public void propertyChange(PropertyChangeEvent evt) { + // TODO Auto-generated method stub + logger.debug("allo quoi !!"); + refreshPanel(); + } + }); gameBar = new GameBar(new Dimension(d.width, gBarHeight), b, f, p, true); gameBar.setBounds(0, getHeight() - gBarHeight, getWidth(), gBarHeight); gameBar.progress.setValue(20); @@ -260,6 +281,8 @@ public void mouseReleased(MouseEvent e) { add(gameBar); add(timerPanel); refreshPanel(); + + } /** @@ -267,6 +290,10 @@ public void mouseReleased(MouseEvent e) { */ public void refreshPanel() { piano.reset(true); + inlineStaff.setVoices(inlineNG.getVoices()); + inlineStaff.repaint(); + logger.debug("[InlinePanel.refreshPanel] properti(es) changed"); + if (exerciseMode == false) { inlineNG.update(); @@ -277,24 +304,24 @@ public void refreshPanel() { higherPitch = inlineNG.getSecondHighPitch(); piano.setNewBound(lowerPitch, higherPitch); - inlineStaff.setClefs(inlineNG.getClefMask()); - notesLayer.setClefs(inlineNG.getClefMask()); + // notesLayer.setClefs(inlineNG.getVoices()); rowsDistance = inlineNG.getRowsDistance(); } else { - inlineStaff.setClefs(currEx.clefMask); - notesLayer.setClefs(currEx.clefMask); + // notesLayer.setClefs(currEx.clefMask); if (currEx.randomize == 1) inlineNG.setNotesList(currEx.notes, currEx.notes2, true); else inlineNG.setNotesList(currEx.notes, currEx.notes2, false); rowsDistance = inlineNG.getRowsDistanceFromClefs(currEx.clefMask); logger.debug("[INLINE] rowsDistance: " + rowsDistance); - } + } + rowsDistance = 160; // TODO remove this debug line sBar.tempoContainer.setEnabled(false); inlineStaff.setRowsDistance(rowsDistance); - notesLayer.setRowsDistance(rowsDistance); - notesLayer.setFirstNoteXPosition(inlineStaff.getFirstNoteXPosition()); + inlineStaff.repaint(); + // notesLayer.setRowsDistance(rowsDistance); + // notesLayer.setFirstNoteXPosition(inlineStaff.getFirstNoteXPosition()); setLearningInfo(false, -1); } @@ -815,11 +842,14 @@ protected void paintComponent(Graphics g) { - (staffHMargin * 2), staffHeight); inlineStaff.setBounds(0, 0, getWidth() - (staffHMargin * 2), staffHeight); - notesLayer - .setBounds(0, 0, getWidth() - (staffHMargin * 2), staffHeight); + inlineStaff.repaint(); + logger.debug("[InlinePanel.paintComponent] repainted"); + // notesLayer + // .setBounds(0, 0, getWidth() - (staffHMargin * 2), staffHeight); piano.setBounds(0, staffVMargin + staffHeight, getWidth(), pianoHeight); gameBar.setBounds(0, getHeight() - gBarHeight, getWidth(), gBarHeight); - timerPanel.setBounds(0, sBarHeight, staffVMargin, staffHeight); + + timerPanel.setBounds(100, 225, pieSize, pieSize); } /** @@ -834,7 +864,6 @@ private class InlineGameThread extends Thread { int noteXincrement = (currentSpeed < 121) ? 1 : 2; // above 120 the // increment is of 2 // pixels - /** The sleep val. */ int sleepVal = 0; @@ -851,9 +880,8 @@ private InlineGameThread() { sleepVal = ((200 - currentSpeed) * 10 / 80); } if (gameType == appPrefs.INLINE_MORE_NOTES) { - noteXincrement = noteXincrement - (noteXincrement * 2); // change - // sign - // here + // change sign here + noteXincrement = noteXincrement - (noteXincrement * 2); noteXStartPos = marginX; marginX = inlineStaff.getFirstNoteXPosition(); sleepVal *= 2; // slow down baby ! @@ -955,6 +983,9 @@ public void run() { } // sleep(260 - currentSpeed); notesLayer.repaint(); + inlineStaff.setVoices(voices); + inlineStaff.repaint(); + logger.debug("[InlinePanelThread] repainted"); sleep(10 + sleepVal); } catch (Exception e) { e.printStackTrace(); @@ -962,4 +993,9 @@ public void run() { } } } + + public void propertyChange(PropertyChangeEvent evt) { + logger.debug("message rec"); + this.refreshPanel(); + } } diff --git a/src/main/java/calao/NativeUtils.java b/src/main/java/calao/NativeUtils.java index d7ced0f..b9ed2db 100644 --- a/src/main/java/calao/NativeUtils.java +++ b/src/main/java/calao/NativeUtils.java @@ -14,85 +14,181 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; +import java.io.BufferedReader; import java.io.File; import java.io.IOException; +import java.io.InputStreamReader; +import java.nio.file.FileSystems; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - /** * Collection of utility methods for native code. + * * @author Neonunux */ public class NativeUtils { - - - private static final Logger logger = LogManager.getLogger(NativeUtils.class.getName()); - - /** - * Load a named library from a directory.
- * Note: Loading of a JNI library should always be done in the corresponding - * Java class or otherwise native methods may result in - * {@link UnsatisfiedLinkError}s if different {@link ClassLoader}s are - * involved. - * - * @param directory directory the library is located in - * @param name name of library - * @throws UnsatisfiedLinkError the unsatisfied link error - */ - public static void load(File directory, String name) - throws UnsatisfiedLinkError { - load(new File(directory, System.mapLibraryName(name))); - } - - /** - * Load a library from a file. - * - * @param file the library file - * @throws UnsatisfiedLinkError the unsatisfied link error - */ - public static void load(File file) throws UnsatisfiedLinkError { - try { - System.load(file.getCanonicalPath()); - logger.info(file.getCanonicalPath() + " loaded"); - } catch (IOException ex) { - UnsatisfiedLinkError error = new UnsatisfiedLinkError(); - error.initCause(ex); - throw error; - } - } - - /** - * Checks if is windows. - * - * @return true, if is windows - */ - public static boolean isWindows() { - return System.getProperty("os.name").toLowerCase().contains("win"); - } - - /** - * Checks if is mac. - * - * @return true, if is mac - */ - public static boolean isMac() { - return System.getProperty("os.name").toLowerCase().contains("mac"); - } - - /** - * Checks if is linux. - * - * @return true, if is linux - */ - public static boolean isLinux() { - String os = System.getProperty("os.name").toLowerCase(); + private static File getAppDataWindow() { + ProcessBuilder builder = new ProcessBuilder(new String[] { "cmd", + "/C echo %APPDATA%" }); + + BufferedReader br = null; + try { + Process start = builder.start(); + br = new BufferedReader(new InputStreamReader( + start.getInputStream())); + String path = br.readLine(); + // TODO HACK do not know why but I get an extra '"' at the end + if (path.endsWith("\"")) { + path = path.substring(0, path.length() - 1); + } + return new File(path.trim()); + } catch (IOException ex) { + System.out.printf("Cannot get Application Data Folder", ex); + } finally { + if (br != null) { + try { + br.close(); + } catch (IOException ex) { + System.out.printf(null, ex); + } + } + } + return null; + } + + public void getTempDir() { + try { + // create a temp file + File temp = File.createTempFile("temp-file-name", ".tmp"); + + System.out.println("Temp file : " + temp.getAbsolutePath()); + + // Get tempropary file path + String absolutePath = temp.getAbsolutePath(); + String tempFilePath = absolutePath.substring(0, + absolutePath.lastIndexOf(File.separator)); + + System.out.println("Temp file path : " + tempFilePath); + + } catch (IOException e) { + + e.printStackTrace(); + + } + } + public String getSeparator() { + /* + * // peut-être écrasé par setProperty + logger.debug("separator : " + System.getProperty("file.separator")); + + // meilleur mais dépend de Java 7 + logger.debug("separator : " + FileSystems.getDefault().getSeparator()); + + // le plus safe + logger.debug("separator : " + File.separator); //win 8 verif + */ + return File.separator; + } + + public void getAppData() { + /* + * linux XDG_DATA_HOME $HOME/.local/share// for user-data + * (saves, progress, player profile) XDG_CONFIG_HOME + * $HOME/.config// for configuration XDG_CACHE_DIR + * ($HOME/.cache/) for non-essential/temporary files + * + * win XP, 2003 %USER%\Local Settings\Application Data %USER%\Local + * Settings Win 7,8 %USER\AppData\Roaming + * + * + * mac : ~/Library/Application Support/ This kind of + * data is frequently stored in . ~/Library/Preferences// User-specific settings are frequently stored in + */ + + logger.debug("USER HOME : " + System.getProperty("user.home")); + logger.debug("LOCALAPPDATA " + System.getProperty("LOCALAPPDATA")); + logger.debug("TEMP " + System.getProperty("temp.dir")); + logger.debug("TEMP2 " + System.getProperty("java.io.tmpdir")); + + + System.out.println("other method : " + getAppDataWindow()); + + } + + private static final Logger logger = LogManager.getLogger(NativeUtils.class + .getName()); + + /** + * Load a named library from a directory.
+ * Note: Loading of a JNI library should always be done in the corresponding + * Java class or otherwise native methods may result in + * {@link UnsatisfiedLinkError}s if different {@link ClassLoader}s are + * involved. + * + * @param directory + * directory the library is located in + * @param name + * name of library + * @throws UnsatisfiedLinkError + * the unsatisfied link error + */ + public static void load(File directory, String name) + throws UnsatisfiedLinkError { + load(new File(directory, System.mapLibraryName(name))); + } + + /** + * Load a library from a file. + * + * @param file + * the library file + * @throws UnsatisfiedLinkError + * the unsatisfied link error + */ + public static void load(File file) throws UnsatisfiedLinkError { + try { + System.load(file.getCanonicalPath()); + logger.info(file.getCanonicalPath() + " loaded"); + } catch (IOException ex) { + UnsatisfiedLinkError error = new UnsatisfiedLinkError(); + error.initCause(ex); + throw error; + } + } + + /** + * Checks if is windows. + * + * @return true, if is windows + */ + public static boolean isWindows() { + return System.getProperty("os.name").toLowerCase().contains("win"); + } + + /** + * Checks if is mac. + * + * @return true, if is mac + */ + public static boolean isMac() { + return System.getProperty("os.name").toLowerCase().contains("mac"); + } + + /** + * Checks if is linux. + * + * @return true, if is linux + */ + public static boolean isLinux() { + String os = System.getProperty("os.name").toLowerCase(); // linux or unix return (os.indexOf("nix") >= 0 || os.indexOf("nux") >= 0); - } - + } + } \ No newline at end of file diff --git a/src/main/java/calao/Note.java b/src/main/java/calao/Note.java index 0d35ebe..9f0e251 100644 --- a/src/main/java/calao/Note.java +++ b/src/main/java/calao/Note.java @@ -83,10 +83,10 @@ public class Note * @param nSecondRow the n second row * @param nAlt the n alt */ - public Note(int xPos, int nClef, int nLevel, int nPitch, int nType, boolean nSecondRow, int nAlt) + public Note(int xPos, /* int nClef, */ int nLevel, int nPitch, int nType, boolean nSecondRow, int nAlt) { xpos = xPos; - clef = nClef; +// clef = nClef; altType = nAlt; level = nLevel; pitch = nPitch; @@ -109,7 +109,7 @@ public Note(int xPos, int nClef, int nLevel, int nPitch, int nType, boolean nSec case 7: duration = 1.5; break; } - logger.debug("[Note] t: " + type + ", p: " + pitch + ", l: " + level + ", dur: " + duration + ", alt: " + altType); + logger.trace("[Note] t: " + type + ", p: " + pitch + ", l: " + level + ", dur: " + duration + ", alt: " + altType); ypos = 0; // y positions are calculated by the NotesPanel } diff --git a/src/main/java/calao/NoteGenerator.java b/src/main/java/calao/NoteGenerator.java index a478b6f..00d8f94 100644 --- a/src/main/java/calao/NoteGenerator.java +++ b/src/main/java/calao/NoteGenerator.java @@ -14,9 +14,10 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; +import java.util.ArrayList; import java.util.Vector; import org.apache.logging.log4j.LogManager; @@ -78,7 +79,8 @@ public class NoteGenerator { char[] intervals = { 0, 1, 2, 4, 5, 7, 9, 11, 12 }; /** The clef mask. */ - int clefMask = -1; + // int clefMask = -1; + Voices voices; /** The single clef. */ boolean singleClef = false; @@ -199,7 +201,7 @@ else if (this.accidentals.getType().equals("b")) } pitch += 12; } - logger.debug(baseList); + logger.trace(baseList); } /** @@ -284,13 +286,19 @@ public int getRowsDistance() { */ public int getRowsDistanceFromClefs(int clMask) { int clefsNum = 0; - if ((clMask & appPrefs.CLEF_G2) > 0) + if ((clMask & appPrefs.G2_CLEF) > 0) clefsNum++; - if ((clMask & appPrefs.CLEF_F4) > 0) + if ((clMask & appPrefs.F4_CLEF) > 0) clefsNum++; - if ((clMask & appPrefs.CLEF_C3) > 0) + if ((clMask & appPrefs.C1_CLEF) > 0) clefsNum++; - if ((clMask & appPrefs.CLEF_C4) > 0) + if ((clMask & appPrefs.C2_CLEF) > 0) + clefsNum++; + if ((clMask & appPrefs.C3_CLEF) > 0) + clefsNum++; + if ((clMask & appPrefs.C4_CLEF) > 0) + clefsNum++; + if ((clMask & appPrefs.C5_CLEF) > 0) clefsNum++; return clefsNum * 90; @@ -338,68 +346,101 @@ else if (accIdx < 8) alteredList.clear(); initLists(); - clefMask = Integer.parseInt(appPrefs.getProperty("clefsMask")); - if (clefMask == -1) - clefMask = appPrefs.CLEF_G2; - if ((clefMask & appPrefs.CLEF_G2) > 0) { - int lowerPitch = Integer.parseInt(appPrefs - .getProperty("ClefG2Lower")); - int higherPitch = Integer.parseInt(appPrefs - .getProperty("ClefG2Upper")); - if (lowerPitch == -1) - lowerPitch = 64; // default, set to E3 - if (higherPitch == -1) - higherPitch = 77; // default, set to F4 - addRange(appPrefs.CLEF_G2, - alteredList.get(baseList.indexOf(lowerPitch)), - alteredList.get(baseList.indexOf(higherPitch))); - if (singleClef == true) - clefMask = appPrefs.CLEF_G2; - } - if ((clefMask & appPrefs.CLEF_F4) > 0) { - int lowerPitch = Integer.parseInt(appPrefs - .getProperty("ClefF4Lower")); - int higherPitch = Integer.parseInt(appPrefs - .getProperty("ClefF4Upper")); - if (lowerPitch == -1) - lowerPitch = 43; // default, set to G1 - if (higherPitch == -1) - higherPitch = 57; // default, set to A2 - addRange(appPrefs.CLEF_F4, - alteredList.get(baseList.indexOf(lowerPitch)), - alteredList.get(baseList.indexOf(higherPitch))); - if (singleClef == true) - clefMask = appPrefs.CLEF_F4; - } - if ((clefMask & appPrefs.CLEF_C3) > 0) { - int lowerPitch = Integer.parseInt(appPrefs - .getProperty("ClefC3Lower")); - int higherPitch = Integer.parseInt(appPrefs - .getProperty("ClefC3Upper")); - if (lowerPitch == -1) - lowerPitch = 53; // default, set to F2 - if (higherPitch == -1) - higherPitch = 67; // default, set to G3 - addRange(appPrefs.CLEF_C3, - alteredList.get(baseList.indexOf(lowerPitch)), - alteredList.get(baseList.indexOf(higherPitch))); - if (singleClef == true) - clefMask = appPrefs.CLEF_C3; - } - if ((clefMask & appPrefs.CLEF_C4) > 0) { - int lowerPitch = Integer.parseInt(appPrefs - .getProperty("ClefC4Lower")); - int higherPitch = Integer.parseInt(appPrefs - .getProperty("ClefC4Upper")); - if (lowerPitch == -1) - lowerPitch = 50; // default, set to D2 - if (higherPitch == -1) - higherPitch = 64; // default, set to E3 - addRange(appPrefs.CLEF_C4, - alteredList.get(baseList.indexOf(lowerPitch)), - alteredList.get(baseList.indexOf(higherPitch))); - if (singleClef == true) - clefMask = appPrefs.CLEF_C4; + // clefMask = Integer.parseInt(appPrefs.getProperty("clefsMask")); + + voices.setFromProperties(null); + for (int i = 0; i < 4; i++) { + if (voices.getVoice(i) == "G2") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefG2Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefG2Upper")); + if (lowerPitch == -1) + lowerPitch = 64; // default, set to E3 + if (higherPitch == -1) + higherPitch = 77; // default, set to F4 + addRange("G2", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } + if (voices.getVoice(i) == "C1") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefC1Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefC1Upper")); + if (lowerPitch == -1) + lowerPitch = 59; // default, set to ??F2 + if (higherPitch == -1) + higherPitch = 74; // default, set to ??G3 + addRange("C1", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } + if (voices.getVoice(i) == "C2") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefC2Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefC2Upper")); + if (lowerPitch == -1) + lowerPitch = 55; // default, set to ??F2 + if (higherPitch == -1) + higherPitch = 71; // default, set to ??G3 + addRange("C2", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } + if (voices.getVoice(i) == "C3") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefC3Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefC3Upper")); + if (lowerPitch == -1) + lowerPitch = 53; // default, set to F2 + if (higherPitch == -1) + higherPitch = 67; // default, set to G3 + addRange("C3", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } + if (voices.getVoice(i) == "C4") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefC4Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefC4Upper")); + if (lowerPitch == -1) + lowerPitch = 50; // default, set to D2 + if (higherPitch == -1) + higherPitch = 64; // default, set to E3 + addRange("C4", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } + if (voices.getVoice(i) == "C5") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefC5Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefC5Upper")); + if (lowerPitch == -1) + lowerPitch = 47; // default, set to ??D2 + if (higherPitch == -1) + higherPitch = 62; // default, set to ??E3 + addRange("C5", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } + if (voices.getVoice(i) == "F4") { + int lowerPitch = Integer.parseInt(appPrefs + .getProperty("ClefF4Lower")); + int higherPitch = Integer.parseInt(appPrefs + .getProperty("ClefF4Upper")); + if (lowerPitch == -1) + lowerPitch = 43; // default, set to G1 + if (higherPitch == -1) + higherPitch = 57; // default, set to A2 + addRange("F4", + alteredList.get(baseList.indexOf(lowerPitch)), + alteredList.get(baseList.indexOf(higherPitch))); + } } notesTypeList.clear(); @@ -481,7 +522,7 @@ public void setNotesList(Vector n, Vector n2, boolean random) { if (ts == -1) ts = 999999; } - logger.debug("[NG setNotesList] idx: " + idx + " (ts=" + ts + logger.trace("[NG setNotesList] idx: " + idx + " (ts=" + ts + ") idx2: " + idx2 + " (ts2=" + ts2 + ")"); if (ts <= ts2) { randomPitchList.add(n.get(idx)); @@ -496,15 +537,6 @@ public void setNotesList(Vector n, Vector n2, boolean random) { notesListIndex = 0; } - /** - * Gets the clef mask. - * - * @return the clef mask - */ - public int getClefMask() { - return clefMask; - } - /** * Gets the level from clef and pitch. * @@ -515,15 +547,20 @@ public int getClefMask() { * @return the level from clef and pitch */ private int getLevelFromClefAndPitch(int clef, int pitch) { - if (clef == appPrefs.CLEF_G2) + if (clef == appPrefs.G2_CLEF) return 24 - getIndexFromPitch(CLEF_G2_BASEPITCH, pitch, true); - else if (clef == appPrefs.CLEF_F4) - return 24 - getIndexFromPitch(CLEF_F4_BASEPITCH, pitch, true); - else if (clef == appPrefs.CLEF_C3) + else if (clef == appPrefs.C1_CLEF) + return 24 - getIndexFromPitch(CLEF_C1_BASEPITCH, pitch, true); + else if (clef == appPrefs.C2_CLEF) + return 24 - getIndexFromPitch(CLEF_C2_BASEPITCH, pitch, true); + else if (clef == appPrefs.C3_CLEF) return 24 - getIndexFromPitch(CLEF_C3_BASEPITCH, pitch, true); - else if (clef == appPrefs.CLEF_C4) + else if (clef == appPrefs.C4_CLEF) return 24 - getIndexFromPitch(CLEF_C4_BASEPITCH, pitch, true); - + else if (clef == appPrefs.C5_CLEF) + return 24 - getIndexFromPitch(CLEF_C5_BASEPITCH, pitch, true); + else if (clef == appPrefs.F4_CLEF) + return 24 - getIndexFromPitch(CLEF_F4_BASEPITCH, pitch, true); return 0; } @@ -538,15 +575,20 @@ else if (clef == appPrefs.CLEF_C4) * @return the base pitch from clef and level */ public int getPitchFromClefAndLevel(int clef, int level) { - if (clef == appPrefs.CLEF_G2) + if (clef == appPrefs.G2_CLEF) return getPitchFromLevel(CLEF_G2_BASEPITCH, 24 - level); - else if (clef == appPrefs.CLEF_F4) - return getPitchFromLevel(CLEF_F4_BASEPITCH, 24 - level); - else if (clef == appPrefs.CLEF_C3) + else if (clef == appPrefs.C1_CLEF) + return getPitchFromLevel(CLEF_C1_BASEPITCH, 24 - level); + else if (clef == appPrefs.C2_CLEF) + return getPitchFromLevel(CLEF_C2_BASEPITCH, 24 - level); + else if (clef == appPrefs.C3_CLEF) return getPitchFromLevel(CLEF_C3_BASEPITCH, 24 - level); - else if (clef == appPrefs.CLEF_C4) + else if (clef == appPrefs.C4_CLEF) return getPitchFromLevel(CLEF_C4_BASEPITCH, 24 - level); - + else if (clef == appPrefs.C5_CLEF) + return getPitchFromLevel(CLEF_C5_BASEPITCH, 24 - level); + else if (clef == appPrefs.F4_CLEF) + return getPitchFromLevel(CLEF_F4_BASEPITCH, 24 - level); return 0; } @@ -561,7 +603,7 @@ else if (clef == appPrefs.CLEF_C4) * @param upper * the upper */ - public void addRange(int clef, int lower, int upper) { + public void addRange(String clef, int lower, int upper) { // int altIndex = this.accidentals.getNumber(); // String accType = this.accidentals.getType(); int lowIdx = alteredList.indexOf(lower); @@ -572,15 +614,17 @@ public void addRange(int clef, int lower, int upper) { // notes int matrixIdx = lowIdx % 7; - logger.debug("[NG addRange] clef: " + clef + ", lower: " + lower + logger.trace("[NG addRange] clef: " + clef + ", lower: " + lower + ", upper: " + upper); if (randomPitchList.size() == 0) - baseRangeClef = clef; + baseRangeClef = 1; +// baseRangeClef = clef; TODO REGIS else { if (singleClef == true) return; - addRangeClef = clef; +// addRangeClef = clef; // TODO REGIS + addRangeClef = 1; addRangeIndex = randomPitchList.size(); secondRow = true; } @@ -589,9 +633,9 @@ public void addRange(int clef, int lower, int upper) { int pitch = alteredList.get(i); // int altType = pitch - baseList.get(i); - int level = getLevelFromClefAndPitch(clef, pitch); +int level = 10; //int level = getLevelFromClefAndPitch(clef, pitch); // TODO REGIS - Note tmpNote = new Note(0, clef, level, pitch, 0, secondRow, 0 /* altType */); + Note tmpNote = new Note(0, /* clef, */ level, pitch, 0, secondRow, 0 /* altType */); randomPitchList.add(tmpNote); if (matrixIdx == 6) @@ -601,8 +645,8 @@ public void addRange(int clef, int lower, int upper) { } for (int n = 0; n < randomPitchList.size(); n++) - logger.debug(randomPitchList.get(n).pitch + ", "); - logger.debug(""); + logger.trace(randomPitchList.get(n).pitch + ", "); + logger.trace(""); } /** @@ -696,15 +740,21 @@ public int getAlteredFromBase(int basePitch) { * the clef * @return the rhythm pitch */ - public int getRhythmPitch(int clef) { - if (clef == appPrefs.CLEF_G2) + public int getRhythmPitch(String clef) { + if (clef == "G2") return baseList.get(baseList.indexOf(CLEF_G2_BASEPITCH) + 12); - else if (clef == appPrefs.CLEF_F4) - return baseList.get(baseList.indexOf(CLEF_F4_BASEPITCH) + 12); - else if (clef == appPrefs.CLEF_C3) + else if (clef == "C1") + return baseList.get(baseList.indexOf(CLEF_C1_BASEPITCH) + 12); + else if (clef == "C2") + return baseList.get(baseList.indexOf(CLEF_C2_BASEPITCH) + 12); + else if (clef == "C3") return baseList.get(baseList.indexOf(CLEF_C3_BASEPITCH) + 12); - else if (clef == appPrefs.CLEF_C4) + else if (clef == "C4") return baseList.get(baseList.indexOf(CLEF_C4_BASEPITCH) + 12); + else if (clef == "C5") + return baseList.get(baseList.indexOf(CLEF_C5_BASEPITCH) + 12); + else if (clef == "F4") + return baseList.get(baseList.indexOf(CLEF_F4_BASEPITCH) + 12); return 71; } @@ -744,7 +794,7 @@ else if (forcedClef == 2) if (forcedType == -1) type = notesTypeList.get((int) (notesTypeList.size() * Math .random())); - Note randNote = new Note(0, tmpNote.clef, tmpNote.level, tmpNote.pitch, + Note randNote = new Note(0, /* tmpNote.clef, */ tmpNote.level, tmpNote.pitch, type, tmpNote.secondRow, tmpNote.altType); randNote.type = type; randNote.duration = randNote.getDuration(type); @@ -822,7 +872,7 @@ public Note getTripletRandomNote(int basePitch) { int randIndex = baseIndex + shift + (int) (Math.random() * delta); Note baseNote = randomPitchList.get(baseIndex); Note newNote = randomPitchList.get(randIndex); - Note randNote = new Note(0, baseNote.clef, newNote.level, + Note randNote = new Note(0, /*baseNote.clef, */ newNote.level, newNote.pitch, 4, baseNote.secondRow, newNote.altType); logger.debug("Triplet base: " + basePitch + ", baseIndex: " + baseIndex @@ -844,7 +894,6 @@ public Note getTripletRandomNote(int basePitch) { * the is rhythm * @param forcedClef * the forced clef - * @return the random sequence */ public void getRandomSequence(Vector seq, int measuresNumber, boolean isRhythm, int forcedClef) { @@ -867,7 +916,8 @@ public void getRandomSequence(Vector seq, int measuresNumber, Note thirdNote = getTripletRandomNote(tmpNote.pitch); if (isRhythm == true) { tmpNote.level = secondNote.level = thirdNote.level = 12; - tmpNote.pitch = secondNote.pitch = thirdNote.pitch = getRhythmPitch(tmpNote.clef); + //tmpNote.pitch = secondNote.pitch = thirdNote.pitch = getRhythmPitch(tmpNote.clef); // TODO REGIS + tmpNote.pitch = secondNote.pitch = thirdNote.pitch = 12; // TODO <- remove this line REGIS } int tripletLevel = tmpNote.level; @@ -932,10 +982,11 @@ public void getRandomSequence(Vector seq, int measuresNumber, if (isRhythm == true) { tmpNote.level = 12; // tmpNote.ypos = 62; - tmpNote.pitch = getRhythmPitch(tmpNote.clef); +// tmpNote.pitch = getRhythmPitch(tmpNote.clef); TODO ORIGINAL LINE + tmpNote.pitch = 12; // TODO REMOVE THIS LINE } - logger.debug("Generated note pitch: " + tmpNote.pitch + logger.trace("Generated note pitch: " + tmpNote.pitch + ", duration: " + tmpNote.duration); if (tmpNote.duration <= measureCounter) { measureCounter -= tmpNote.duration; @@ -943,13 +994,13 @@ public void getRandomSequence(Vector seq, int measuresNumber, if (tmpNote.type == 3) eighthPresent = true; tmpNote.setTimeStamp(timeCounter); - logger.debug("Random Note: #" + seq.size() + ": p: " + logger.trace("Random Note: #" + seq.size() + ": p: " + tmpNote.pitch + ", lev: " + tmpNote.level + ", type: " + tmpNote.type + ", ts: " + timeCounter); timeCounter += tmpNote.duration; } - logger.debug("tempMesCnt: " + measureCounter); + logger.trace("tempMesCnt: " + measureCounter); } } } @@ -990,7 +1041,7 @@ public int getRandomChordOrInterval(Vector seq, int xpos, int[] addNotes = { 0, 0 }; Note baseNote = getRandomNote(0, false, -1); - logger.debug("[getRandomChordorInterval] randType: " + randType); + logger.trace("[getRandomChordorInterval] randType: " + randType); baseNote.xpos = xpos; seq.add(baseNote); @@ -1017,7 +1068,7 @@ public int getRandomChordOrInterval(Vector seq, int xpos, int altOnClef = alteredList.get(addNoteIdx) - baseList.get(addNoteIdx); int altType = addNotes[i] - alteredList.get(addNoteIdx); - logger.debug("BEFORE altType: " + altType + ", altOnClef: " + logger.trace("BEFORE altType: " + altType + ", altOnClef: " + altOnClef); if (altType != 0 && altOnClef != 0) { if (altType + altOnClef == 0) @@ -1027,17 +1078,32 @@ public int getRandomChordOrInterval(Vector seq, int xpos, altType += altOnClef; } - logger.debug("addNotes: " + addNotes[i] + ", idx: " + addNoteIdx + logger.trace("addNotes: " + addNotes[i] + ", idx: " + addNoteIdx + ", lev: " + level); - logger.debug("AFTER altType: " + altType + ", altOnClef: " + logger.trace("AFTER altType: " + altType + ", altOnClef: " + altOnClef); if (chord == false && intervalDegree == 2) xpos -= 20; - Note newNote = new Note(xpos, baseNote.clef, level, addNotes[i], 0, + Note newNote = new Note(xpos, /* baseNote.clef, */ level, addNotes[i], 0, baseNote.secondRow, altType); seq.add(newNote); } return randType; } + + /** + * @return the voices + */ + public Voices getVoices() { + return voices; + } + + /** + * @param voices + * the voices to set + */ + public void setVoices(Voices voices) { + this.voices = voices; + } } diff --git a/src/main/java/calao/NotesPanel.java b/src/main/java/calao/NotesPanel.java index 3368616..362d1a5 100644 --- a/src/main/java/calao/NotesPanel.java +++ b/src/main/java/calao/NotesPanel.java @@ -35,7 +35,8 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). /** - * The Class NotesPanel. + * The Class NotesPanel instantiates Staff area where + * notes appears. * * @author Neonunux */ @@ -173,22 +174,29 @@ public int getRowsDistance() * * @param type the new clefs */ - public void setClefs(int type) - { - this.clefMask = type; + void setClefs(String clef) { + //this.clefMask = type; TODO REGIS ORIGINAL LINE + clefs.clear(); - - if ((clefMask & appPrefs.CLEF_G2) > 0) clefs.add(appPrefs.CLEF_G2); - if ((clefMask & appPrefs.CLEF_F4) > 0) clefs.add(appPrefs.CLEF_F4); - if ((clefMask & appPrefs.CLEF_C3) > 0) clefs.add(appPrefs.CLEF_C3); - if ((clefMask & appPrefs.CLEF_C4) > 0) clefs.add(appPrefs.CLEF_C4); - - Font ltf = new Font("Arial", Font.BOLD, 30); - learningText.setPreferredSize( new Dimension(200, 50)); - learningText.setBounds((getWidth() / 2) - 150, getHeight() - 60, 300, 50); - learningText.setText(""); - learningText.setFont(ltf); - + +// if ((clefMask & appPrefs.CLEF_G2) > 0) clefs.add(appPrefs.CLEF_G2); // OLD +// if ((clefMask & appPrefs.CLEF_F4) > 0) clefs.add(appPrefs.CLEF_F4); // OLD +// if ((clefMask & appPrefs.CLEF_C3) > 0) clefs.add(appPrefs.CLEF_C3); // OLD +// if ((clefMask & appPrefs.CLEF_C4) > 0) clefs.add(appPrefs.CLEF_C4); // OLD + +// clefs.add("G2"); // NEW +// clefs.add("C1"); // NEW +// clefs.add("C2"); // NEW +// clefs.add("C3"); // NEW +// clefs.add("C5"); // NEW +// clefs.add("C4"); // NEW + + Font ltf = new Font("Arial", Font.BOLD, 30); + learningText.setPreferredSize( new Dimension(200, 50)); + learningText.setBounds((getWidth() / 2) - 150, getHeight() - 60, 300, 50); + learningText.setText(""); + learningText.setFont(ltf); + repaint(); } diff --git a/src/main/java/calao/Piano.java b/src/main/java/calao/Piano.java index 9f10242..357c3e2 100644 --- a/src/main/java/calao/Piano.java +++ b/src/main/java/calao/Piano.java @@ -31,7 +31,8 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). /** - * The Class Piano. + * Piano class is used to display the virtual keyboard; + * mostly used by no midi keyboad players. * * @author Neonunux */ diff --git a/src/main/java/calao/Preferences.java b/src/main/java/calao/Preferences.java index 72dd439..8200b0a 100644 --- a/src/main/java/calao/Preferences.java +++ b/src/main/java/calao/Preferences.java @@ -20,6 +20,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; +import java.util.ArrayList; import java.util.Properties; import org.apache.logging.log4j.LogManager; @@ -31,7 +32,8 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * * language | the UI global language * - * clefsMask | the four clefs masked with logical OR (TREBLE_CLEF | BASS_CLEF | ALTO_CLEF | TENOR_CLEF); + * clefsMask | (TREBLE_CLEF|BASS_CLEF|ALTO_CLEF|TENOR_CLEF); REMOVED + * voices | Configuration clef of the 4 score voices * ClefG2Lower | pitch of the lowest note used in exercises * ClefG2Upper | pitch of the highest note used in exercises * ClefF4Lower | pitch of the lowest note used in exercises @@ -52,6 +54,11 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * 3_4_Note | 0: 3/4 notes disabled, 1: 3/4 notes enabled * 3_8_Note | 0: 3/8 notes disabled, 1: 3/8 notes enabled * + * voice0 | First voice + * voice1 | Second voice + * voice2 | Third voice + * voice4 | Forth voice + * * metromome | metronome - 0: disabled, 1: enabled * showBeats | show metronome beats - 0: disabled, 1: enabled * clickAccents | metronome accents - 0: disabled, 1: enabled @@ -87,25 +94,25 @@ public class Preferences private static final Logger logger = LogManager.getLogger(Preferences.class.getName()); /** The CLE f_ g2. */ - public int CLEF_G2 = 0x0001; + //public int CLEF_G2 = 0x0001; // OLD /** The CLE f_ f4. */ - public int CLEF_F4 = 0x0002; + //public int CLEF_F4 = 0x0002; // OLD /** The CLE f_ c3. */ - public int CLEF_C3 = 0x0004; + //public int CLEF_C3 = 0x0004; // OLD /** The CLE f_ c4. */ - public int CLEF_C4 = 0x0008; - /* - public int G2_CLEF = 0x0001; - public int C1_CLEF = 0x0002; - public int C2_CLEF = 0x0004; - public int C3_CLEF = 0x0008; - public int C4_CLEF = 0x0016; - public int C5_CLEF = 0x0032; - public int F4_CLEF = 0x0064; - */ + //public int CLEF_C4 = 0x0008; // OLD + + public int G2_CLEF = 0x0001; // ADDED + public int C1_CLEF = 0x0002; // ADDED + public int C2_CLEF = 0x0004; // ADDED + public int C3_CLEF = 0x0008; // ADDED + public int C4_CLEF = 0x0016; // ADDED + public int C5_CLEF = 0x0032; // ADDED + public int F4_CLEF = 0x0064; // ADDED + /** The game stopped. */ public int GAME_STOPPED = 0; @@ -163,7 +170,7 @@ public Preferences() { prefs.load(new FileInputStream("calao.properties")); logger.trace("language = " + prefs.getProperty("language")); - prefs.list(System.out); + //prefs.list(System.out); } catch (Exception e) { @@ -204,7 +211,7 @@ public void storeProperties() try { prefs.store(new FileOutputStream("calao.properties"), null); - prefs.list(System.out); + //prefs.list(System.out); } catch (IOException e) { } } diff --git a/src/main/java/calao/RoundedButton.java b/src/main/java/calao/RoundedButton.java index ddb42ae..874490a 100644 --- a/src/main/java/calao/RoundedButton.java +++ b/src/main/java/calao/RoundedButton.java @@ -88,6 +88,10 @@ public class RoundedButton extends JButton { private boolean gradientPaint = false; + private Color labelColor = Color.black; + private Color buttonMouseOverColor = Color.decode("0xB8D8FF"); + + private int borderWidth = 3; /** @@ -240,6 +244,7 @@ protected void paintComponent(Graphics g) { else if (getModel().isRollover()) // rollover effect { bgColor = Color.decode("0xB8D8FF"); + bgColor = buttonMouseOverColor; tmpColor = Color.decode("0x667BBD"); } else { bgColor = getBackground(); // normal state @@ -361,22 +366,26 @@ private void setContentButton(Graphics g, String ImageName, AttributedString as = new AttributedString(titleContent); as.addAttribute(TextAttribute.FONT, serifFont); - as.addAttribute(TextAttribute.FOREGROUND, Color.red); + as.addAttribute(TextAttribute.FOREGROUND, labelColor); - textWidth = (int)Math.floor( getWidthOfAttributedString((Graphics2D) g, as) + 0.5d); + textWidth = (int) Math.floor(getWidthOfAttributedString((Graphics2D) g, + as) + 0.5d); g.drawString(as.getIterator(), (getSize().width - textWidth) / 2, OffsetContentPositionText); } - - double getWidthOfAttributedString(Graphics2D graphics2D, AttributedString attributedString) { - AttributedCharacterIterator characterIterator = attributedString.getIterator(); - FontRenderContext fontRenderContext = graphics2D.getFontRenderContext(); - LineBreakMeasurer lbm = new LineBreakMeasurer(characterIterator, fontRenderContext); - TextLayout textLayout = lbm.nextLayout(Integer.MAX_VALUE); - return textLayout.getBounds().getWidth(); + + double getWidthOfAttributedString(Graphics2D graphics2D, + AttributedString attributedString) { + AttributedCharacterIterator characterIterator = attributedString + .getIterator(); + FontRenderContext fontRenderContext = graphics2D.getFontRenderContext(); + LineBreakMeasurer lbm = new LineBreakMeasurer(characterIterator, + fontRenderContext); + TextLayout textLayout = lbm.nextLayout(Integer.MAX_VALUE); + return textLayout.getBounds().getWidth(); } - + public int getBorderWidth() { return borderWidth; } @@ -385,4 +394,19 @@ public void setBorderWidth(int borderWidth) { this.borderWidth = borderWidth; } + public Color getLabelColor() { + return labelColor; + } + + public void setLabelColor(Color labelColor) { + this.labelColor = labelColor; + } + public Color getButtonMouseOverColor() { + return buttonMouseOverColor; + } + + public void setButtonMouseOverColor(Color buttonMouseOverColor) { + this.buttonMouseOverColor = buttonMouseOverColor; + } + } diff --git a/src/main/java/calao/ScorePanel.java b/src/main/java/calao/ScorePanel.java index 38b8783..5342555 100644 --- a/src/main/java/calao/ScorePanel.java +++ b/src/main/java/calao/ScorePanel.java @@ -308,15 +308,15 @@ public void refreshPanel() rowsDistance = 90; staffLayer.setRowsDistance(rowsDistance); notesLayer.setRowsDistance(rowsDistance); - staffLayer.setClefs(scoreNG.getClefMask()); - notesLayer.setClefs(scoreNG.getClefMask()); +// staffLayer.setClefs(scoreNG.getClefMask()); +// notesLayer.setClefs(scoreNG.getClefMask()); logger.debug("[ScorePanel] Staff width: " + staffLayer.getStaffWidth() + ", rowsDistance: " + rowsDistance); tsIdx = Integer.parseInt(appPrefs.getProperty("timeSignature")); } else { - staffLayer.setClefs(currEx.clefMask); - notesLayer.setClefs(currEx.clefMask); +// staffLayer.setClefs(currEx.clefMask); +// notesLayer.setClefs(currEx.clefMask); tsIdx = currEx.timeSign; } diff --git a/src/main/java/calao/SmartBar.java b/src/main/java/calao/SmartBar.java index 1c0a699..701f823 100644 --- a/src/main/java/calao/SmartBar.java +++ b/src/main/java/calao/SmartBar.java @@ -14,7 +14,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; import java.awt.Color; @@ -126,11 +126,13 @@ public class SmartBar extends JPanel implements ActionListener, ChangeListener { private boolean isTraining = false; /** The clef notes dialog. */ - private ClefNotesOptionDialog clefNotesDialog; + public ClefNotesOptionDialog clefNotesDialog; /** The comp color. */ private Color compColor = Color.decode("0x749CC5"); + private Voices voices; + /** * Instantiates a new smart bar. * @@ -150,7 +152,7 @@ public class SmartBar extends JPanel implements ActionListener, ChangeListener { * the training */ public SmartBar(Dimension d, ResourceBundle b, Font f, Preferences p, - boolean inline, boolean earTraining, boolean training) { + boolean inline, boolean earTraining, boolean training, Voices v) { appBundle = b; appFont = f; appPrefs = p; @@ -160,6 +162,11 @@ public SmartBar(Dimension d, ResourceBundle b, Font f, Preferences p, setSize(d); setLayout(null); + if (v == null) + voices = new Voices(f, b, p); + else + voices = v; + if (inline == false) { totalObjWidth = 700; upperMargin = 15; @@ -388,6 +395,11 @@ public void updateLanguage(ResourceBundle bundle) { } } + public SmartBar(Dimension d, ResourceBundle b, Font f, Preferences p, + boolean inline, boolean earTraining, boolean training) { + this(d, b, f, p, inline, earTraining, training, null); + } + /* * (non-Javadoc) * @@ -399,7 +411,7 @@ public void actionPerformed(ActionEvent ae) { logger.debug("SmartBar Event received !! (" + ae.getActionCommand() + ")"); clefNotesDialog = new ClefNotesOptionDialog(appFont, appBundle, - appPrefs); + appPrefs, voices); clefNotesDialog.setVisible(true); clefNotesDialog .addPropertyChangeListener(new PropertyChangeListener() { @@ -421,6 +433,14 @@ public void propertyChange(PropertyChangeEvent evt) { } } + public Voices getVoices() { + return voices; + } + + public void setVoices(Voices voices) { + this.voices = voices; + } + /* * (non-Javadoc) * diff --git a/src/main/java/calao/Staff.java b/src/main/java/calao/Staff.java index 0045656..c648e61 100644 --- a/src/main/java/calao/Staff.java +++ b/src/main/java/calao/Staff.java @@ -14,7 +14,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). You should have received a copy of the GNU General Public License along with Calao. If not, see . -**********************************************/ + **********************************************/ package calao; import java.awt.Color; @@ -22,6 +22,9 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.ArrayList; import java.util.ResourceBundle; import java.util.Vector; @@ -30,477 +33,563 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; - /** * The Class Staff. * * @author Neonunux * @author Massimo Callegari */ -public class Staff extends JPanel -{ - - - private static final Logger logger = LogManager.getLogger(Staff.class.getName()); - +public class Staff extends JPanel implements PropertyChangeListener { + + private static final Logger logger = LogManager.getLogger(Staff.class + .getName()); + /** The Constant serialVersionUID. */ private static final long serialVersionUID = 7759085255881441116L; /** The app font. */ Font appFont; - + /** The app bundle. */ - private ResourceBundle appBundle; // reference to languages bundle just to display tonality - - + private ResourceBundle appBundle; // reference to languages bundle just to + // display tonality + Preferences appPrefs; - // ************************************** SCORE LAYOUT *********** // * - // * | window |clefWidth|alteration|timeSign| noteDistance - // * | Margin | | Width | Width | /------\ - // * | | | | | | | - // * | ----GG------#---------------------|------|---------- - // * | -----G----------#-------4---------|-----O----------- - // * | ---GG---------#---------4--------O------------------ - // * | ---G-G---------------------------------------------- - // * | ----G----------------------------------------------- + // * | window |clefWidth|alteration|timeSign| noteDistance + // * | Margin | | Width | Width | /------\ + // * | | | | | | | + // * | ----GG------#---------------------|------|---------- + // * | -----G----------#-------4---------|-----O----------- + // * | ---GG---------#---------4--------O------------------ + // * | ---G-G---------------------------------------------- + // * | ----G----------------------------------------------- // * // *************************************************************** - - - /** The clef width. */ + /** The clef width. */ private int clefWidth = 32; // width of score clefs - - /** The alteration width. */ - private int alterationWidth = 0; // width of alterations symbols. None by default - - /** The time sign width. */ - private int timeSignWidth = 30; // width of current score time signature symbol. This includes also the first note margin - - /** The time sign numerator. */ - private int timeSignNumerator = 4; - - /** The time sign denominator. */ - private int timeSignDenominator = 4; - - /** The time division. */ - private int timeDivision = 1; // ratio between time signature denominator and quarters - - /** The score ypos. */ - private int scoreYpos = 45; // Y coordinate of the first row of the score - - /** The rows distance. */ - private int rowsDistance = 90; // distance in pixel between staff rows - - /** The number of measures per row. */ - private int numberOfMeasuresPerRow = 2; // number of measures in a single row - - /** The number of rows. */ - private int numberOfRows = 4; // number of score rows - - /** The notes shift. */ - private int notesShift = 10; // space in pixel to align notes to the score layout - - /** The note distance. */ - private int noteDistance = 72; // distance in pixel between 1/4 notes - - /** The first note x pos. */ - private int firstNoteXPos = clefWidth + alterationWidth + alterationWidth + timeSignWidth + notesShift; - - /** The score line width. */ - private int scoreLineWidth; - - /** The inline mode. */ - private boolean inlineMode = false; - - /** The forced number of measures. */ - private int forcedNumberOfMeasures = -1; - - /** The clef mask. */ - private int clefMask = 1; - - /** The clefs. */ - private Vector clefs = new Vector(); - - /** The acc. */ - private Accidentals accidentals; // accidentals reference used for drawing - - /** The global scale. */ - private double globalScale = 1.0; - - /** - * Instantiates a new staff. - * - * @param f the f - * @param b the b - * @param p the p - * @param a the a - * @param inline the inline - * @param singlePage the single page - */ - public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, boolean inline, boolean singlePage) - { - appFont = f; - appBundle = b; - appPrefs = p; - accidentals = a; - globalScale = 1.0; - - if (inline == true) - { - inlineMode = true; - numberOfRows = 1; - numberOfMeasuresPerRow = 0; - } - setBackground(Color.white); - } - - /** - * Sets the rows distance. - * - * @param dist the new rows distance - */ - public void setRowsDistance(int dist) - { - this.rowsDistance = dist; - } - - /** - * Sets the clefs. - * - * @param type the new clefs - */ - public void setClefs(int type) - { - this.clefMask = type; - this.clefs.clear(); - - if ((clefMask & appPrefs.CLEF_G2) > 0) this.clefs.add(appPrefs.CLEF_G2); - if ((clefMask & appPrefs.CLEF_F4) > 0) this.clefs.add(appPrefs.CLEF_F4); - if ((clefMask & appPrefs.CLEF_C3) > 0) this.clefs.add(appPrefs.CLEF_C3); - if ((clefMask & appPrefs.CLEF_C4) > 0) this.clefs.add(appPrefs.CLEF_C4); - - repaint(); - } - - /** - * Sets the accidentals. - * - * @param a the new accidentals - */ - public void setAccidentals(Accidentals a) - { - this.accidentals = new Accidentals(a.getType(), a.getNumber(), appPrefs); - } - - /** - * Sets the time signature. - * - * @param num the num - * @param denom the denom - */ - public void setTimeSignature(int num, int denom) - { - this.timeSignNumerator = num; - this.timeSignDenominator = denom; - this.timeDivision = timeSignDenominator / 4; - repaint(); - } - - /** - * Gets the measures number. - * - * @return the measures number - */ - public int getMeasuresNumber() - { - if (forcedNumberOfMeasures == -1) - { - if (accidentals != null) - alterationWidth = accidentals.getNumber() * 12; - int scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; - int tmpMeas = (getWidth() - scoreLineWidth) / ((int)((double)timeSignNumerator/timeDivision) * noteDistance); - int tmpRows = getHeight() / rowsDistance; - - return tmpMeas * tmpRows; - } - else - return forcedNumberOfMeasures; - } - - /** - * Sets the measures number. - * - * @param num the new measures number - */ - public void setMeasuresNumber(int num) - { - this.forcedNumberOfMeasures = num; - } - - /** - * Gets the notes distance. - * - * @return the notes distance - */ - public int getNotesDistance() - { - return noteDistance; - } - - /** - * Gets the rows number. - * - * @return the rows number - */ - public int getRowsNumber() - { - return numberOfRows; - } - - /** - * Gets the first note x position. - * - * @return the first note x position - */ - public int getFirstNoteXPosition() - { - if (accidentals != null) - alterationWidth = accidentals.getNumber() * 12; - firstNoteXPos = clefWidth + alterationWidth + timeSignWidth + notesShift; - return firstNoteXPos; - } - - /** - * Gets the staff width. - * - * @return the staff width - */ - public int getStaffWidth() - { - if (inlineMode == false) - { - if (accidentals != null) - alterationWidth = accidentals.getNumber() * 12; - scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; - int beatW = (int)(((double)timeSignNumerator/timeDivision) * noteDistance); - numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; - scoreLineWidth += (numberOfMeasuresPerRow * beatW); - } - else - scoreLineWidth = getWidth(); - - //logger.debug("[getStaffWidth] staff width: " + scoreLineWidth); - return scoreLineWidth; - } - - /** - * Gets the staff height. - * - * @return the staff height - */ - public int getStaffHeight() - { - calculateSize(); - return (numberOfRows * rowsDistance) + scoreYpos; - } - - /** - * Sets the scale. - * - * @param factor the new scale - */ - public void setScale(double factor) - { - this.globalScale = factor; - } - - /** - * Calculate size. - * - * @return the int - */ - private int calculateSize() - { - if ( accidentals != null) { + + /** The alteration width. */ + private int alterationWidth = 0; // width of alterations symbols. None by + // default + + /** The time sign width. */ + private int timeSignWidth = 30; // width of current score time signature + // symbol. This includes also the first note + // margin + + /** The time sign numerator. */ + private int timeSignNumerator = 4; + + /** The time sign denominator. */ + private int timeSignDenominator = 4; + + /** The time division. */ + private int timeDivision = 1; // ratio between time signature denominator + // and quarters + + /** The score ypos. */ + private int scoreYpos = 45; // Y coordinate of the first row of the score + + /** The rows distance. */ + private int rowsDistance = 90; // distance in pixel between staff rows + + /** The number of measures per row. */ + private int numberOfMeasuresPerRow = 2; // number of measures in a single + // row + + /** The number of rows. */ + private int numberOfRows = 4; // number of score rows + + /** The notes shift. */ + private int notesShift = 10; // space in pixel to align notes to the score + // layout + + /** The note distance. */ + private int noteDistance = 72; // distance in pixel between 1/4 notes + + /** The first note x pos. */ + private int firstNoteXPos = clefWidth + alterationWidth + alterationWidth + + timeSignWidth + notesShift; + + /** The score line width. */ + private int scoreLineWidth; + + /** The inline mode. */ + private boolean inlineMode = false; + + /** The forced number of measures. */ + private int forcedNumberOfMeasures = -1; + + /** The voices. */ + private Voices voices; + + /** The acc. */ + private Accidentals accidentals; // accidentals reference used for drawing + + /** The global scale. */ + private double globalScale = 1.0; + + private String background; + private String foreground; + + private String menu; + + /** + * Instantiates a new staff. + * + * @param f + * the f + * @param b + * the b + * @param p + * the p + * @param a + * the a + * @param inline + * the inline + * @param singlePage + * the single page + */ + public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, + boolean inline, boolean singlePage, Voices v) { + appFont = f; + appBundle = b; + appPrefs = p; + accidentals = a; + globalScale = 1.0; + + if (v == null) + voices = new Voices(f, b, p); + else + voices = v; + + if (inline == true) { + inlineMode = true; + numberOfRows = 1; + numberOfMeasuresPerRow = 0; + } + this.addPropertyChangeListener(new PropertyChangeListener() { + public void propertyChange(PropertyChangeEvent evt) { + logger.debug("Staff a écouté et entendu !!!!!!!!!!"); + } + }); + background = appPrefs.getProperty("colors.background"); + foreground = appPrefs.getProperty("colors.foreground"); + menu = appPrefs.getProperty("colors.menutitle"); + setBackground(Color.decode(background)); + + } + + public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, + boolean inline, boolean singlePage) { + this(f, b, p, a, inline, singlePage, null); + } + + /** + * Sets the rows distance. + * + * @param dist + * the new rows distance + */ + public void setRowsDistance(int dist) { + this.rowsDistance = dist; + } + + /** + * Sets the clefs. + * + * @param type + * the new clefs + */ + public void setVoices(Voices v) { + this.voices = v; + repaint(); + logger.debug("[Voices.setVoices] Repainted !"); + } + + /** + * Sets the accidentals. + * + * @param a + * the new accidentals + */ + public void setAccidentals(Accidentals a) { + this.accidentals = new Accidentals(a.getType(), a.getNumber(), appPrefs); + } + + /** + * Sets the time signature. + * + * @param num + * the num + * @param denom + * the denom + */ + public void setTimeSignature(int num, int denom) { + this.timeSignNumerator = num; + this.timeSignDenominator = denom; + this.timeDivision = timeSignDenominator / 4; + repaint(); + } + + /** + * Gets the measures number. + * + * @return the measures number + */ + public int getMeasuresNumber() { + if (forcedNumberOfMeasures == -1) { + if (accidentals != null) + alterationWidth = accidentals.getNumber() * 12; + int scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; + int tmpMeas = (getWidth() - scoreLineWidth) + / ((int) ((double) timeSignNumerator / timeDivision) * noteDistance); + int tmpRows = getHeight() / rowsDistance; + + return tmpMeas * tmpRows; + } else + return forcedNumberOfMeasures; + } + + /** + * Sets the measures number. + * + * @param num + * the new measures number + */ + public void setMeasuresNumber(int num) { + this.forcedNumberOfMeasures = num; + } + + /** + * Gets the notes distance. + * + * @return the notes distance + */ + public int getNotesDistance() { + return noteDistance; + } + + /** + * Gets the rows number. + * + * @return the rows number + */ + public int getRowsNumber() { + return numberOfRows; + } + + /** + * Gets the first note x position. + * + * @return the first note x position + */ + public int getFirstNoteXPosition() { + if (accidentals != null) + alterationWidth = accidentals.getNumber() * 12; + firstNoteXPos = clefWidth + alterationWidth + timeSignWidth + + notesShift; + return firstNoteXPos; + } + + /** + * Gets the staff width. + * + * @return the staff width + */ + public int getStaffWidth() { + if (inlineMode == false) { + if (accidentals != null) + alterationWidth = accidentals.getNumber() * 12; + scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; + int beatW = (int) (((double) timeSignNumerator / timeDivision) * noteDistance); + numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; + scoreLineWidth += (numberOfMeasuresPerRow * beatW); + } else + scoreLineWidth = getWidth(); + + logger.trace("[getStaffWidth] staff width: " + scoreLineWidth); + return scoreLineWidth; + } + + /** + * Gets the staff height. + * + * @return the staff height + */ + public int getStaffHeight() { + calculateSize(); + return (numberOfRows * rowsDistance) + scoreYpos; + } + + /** + * Sets the scale. + * + * @param factor + * the new scale + */ + public void setScale(double factor) { + this.globalScale = factor; + } + + /** + * Calculate size. + * + * @return the int + */ + private int calculateSize() { + if (accidentals != null) { alterationWidth = accidentals.getNumber() * 12; } else { alterationWidth = 0; } - firstNoteXPos = clefWidth + alterationWidth + alterationWidth + timeSignWidth + notesShift; - - scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; - - int beatW = (int)(((double)timeSignNumerator/timeDivision) * noteDistance); - int vxPos = scoreLineWidth + beatW; - - if (inlineMode == false) - { - if (forcedNumberOfMeasures == -1) - { - numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; - numberOfRows = getHeight() / rowsDistance; - } - else - { - numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; - numberOfRows = (int)Math.ceil((double)forcedNumberOfMeasures / (double)numberOfMeasuresPerRow); - logger.debug("[Staff] numberOfMeasuresPerRow: " + numberOfMeasuresPerRow + ", numberOfRows: " + numberOfRows); - } - - scoreLineWidth += (numberOfMeasuresPerRow * beatW); - } - else - { - scoreLineWidth = getWidth(); - } - return vxPos; - } - - // Draw staff. Includes clefs, alterations, time signature - /* (non-Javadoc) - * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) - */ - protected void paintComponent(Graphics g) - { - ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - super.paintComponent(g); - if (globalScale != 1.0) + firstNoteXPos = clefWidth + alterationWidth + alterationWidth + + timeSignWidth + notesShift; + + scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; + + int beatW = (int) (((double) timeSignNumerator / timeDivision) * noteDistance); + int vxPos = scoreLineWidth + beatW; + + if (inlineMode == false) { + if (forcedNumberOfMeasures == -1) { + numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; + numberOfRows = getHeight() / rowsDistance; + } else { + numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; + numberOfRows = (int) Math.ceil((double) forcedNumberOfMeasures + / (double) numberOfMeasuresPerRow); + logger.trace("[Staff] numberOfMeasuresPerRow: " + + numberOfMeasuresPerRow + ", numberOfRows: " + + numberOfRows); + } + + scoreLineWidth += (numberOfMeasuresPerRow * beatW); + } else { + scoreLineWidth = getWidth(); + } + return vxPos; + } + + // Draw staff. Includes clefs, alterations, time signature + /* + * (non-Javadoc) + * + * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) + */ + protected void paintComponent(Graphics g) { + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, + RenderingHints.VALUE_ANTIALIAS_ON); + super.paintComponent(g); + if (globalScale != 1.0) ((Graphics2D) g).scale(globalScale, globalScale); - - g.setColor(Color.white); - g.fillRect(0, 0, getWidth(), getHeight()); - g.setColor(Color.black); - - logger.debug("[Staff - paintComponent] w = " + getWidth()); - - int yPos = scoreYpos; - int vXPos = calculateSize(); - - for (int r = 0; r < numberOfRows; r++) - { - // draw vertical separators first - for (int v = 0; v < numberOfMeasuresPerRow; v++) - g.drawLine(vXPos + v * (int)(((double)timeSignNumerator/timeDivision) * noteDistance), yPos, vXPos + v * (int)(((double)timeSignNumerator/timeDivision) * noteDistance), yPos+40); - // draw the staff 5 lines - for (int l = 0; l < 5; l++) - g.drawLine(0, yPos + (l * 10), scoreLineWidth, yPos + (l * 10)); - - // 1 - Draw clef - if ((clefMask & appPrefs.CLEF_G2) > 0) - { - g.setFont(appFont.deriveFont(70f)); - g.drawString("G", 0, yPos + 42); - } - else if ((clefMask & appPrefs.CLEF_F4) > 0) - { - g.setFont(appFont.deriveFont(60f)); - g.drawString("?", 0, yPos + 40); - } - else if ((clefMask & appPrefs.CLEF_C3) > 0) - { - g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char)0xBF, 0, yPos + 43); - } - else if ((clefMask & appPrefs.CLEF_C4) > 0) - { - g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char)0xBF, 0, yPos + 33); - } - - // 2 - Draw accidentals - if (accidentals != null && clefs.size() > 0) { - accidentals.paint(g, appFont, clefWidth, yPos, clefs.get(0)); + + g.setColor(Color.decode(background)); + g.fillRect(0, 0, getWidth(), getHeight()); + g.setColor(Color.decode(foreground)); + + logger.trace("[Staff - paintComponent] w = " + getWidth()); + + int yPos = scoreYpos; + int vXPos = calculateSize(); + + for (int r = 0; r < numberOfRows; r++) { + // draw vertical separators first + for (int v = 0; v < numberOfMeasuresPerRow; v++) + g.drawLine( + vXPos + + v + * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), + yPos, + vXPos + + v + * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), + yPos + 40); + // draw the staff 5 lines + for (int l = 0; l < 5; l++) + g.drawLine(0, yPos + (l * 10), scoreLineWidth, yPos + (l * 10)); + + // 1 - Draw clef // OLD + // if ((clefMask & appPrefs.CLEF_G2) > 0) // OLD + // { // OLD + // g.setFont(appFont.deriveFont(70f)); // OLD + // g.drawString("G", 0, yPos + 42); // OLD + // } // OLD + // else if ((clefMask & appPrefs.CLEF_F4) > 0) // OLD + // { // OLD + // g.setFont(appFont.deriveFont(60f)); // OLD + // g.drawString("?", 0, yPos + 40); // OLD + // } // OLD + // else if ((clefMask & appPrefs.CLEF_C3) > 0) // OLD + // { // OLD + // g.setFont(appFont.deriveFont(55f)); // OLD + // g.drawString("" + (char)0xBF, 0, yPos + 43); // OLD + // } // OLD + // else if ((clefMask & appPrefs.CLEF_C4) > 0) // OLD + // { // OLD + // g.setFont(appFont.deriveFont(55f)); // OLD + // g.drawString("" + (char)0xBF, 0, yPos + 33); // OLD + // } + + logger.debug("[Staff] Clef1 " + voices.getVoice(0)); + logger.debug("[Staff] Clef2 " + voices.getVoice(1)); + + String clef; + + clef = appPrefs.getProperty("voice0"); + + if (clef.equals("G2")) // NEW + { // NEW + g.setFont(appFont.deriveFont(70f)); // NEW + g.drawString("G", 0, yPos + 42); // NEW + } // NEW + else if (clef.equals("F4")) // NEW + { // NEW + g.setFont(appFont.deriveFont(60f)); // NEW + g.drawString("?", 0, yPos + 40); // NEW + } // NEW + else if (clef.equals("C1")) // NEW + { // NEW + g.setFont(appFont.deriveFont(55f)); // NEW + g.drawString("" + (char) 0xBF, 0, yPos + 63); // NEW + } // NEW + else if (clef.equals("C2")) // NEW + { // NEW + g.setFont(appFont.deriveFont(55f)); // NEW + g.drawString("" + (char) 0xBF, 0, yPos + 53); // NEW + } // NEW + else if (clef.equals("C3")) // NEW + { // NEW + g.setFont(appFont.deriveFont(55f)); // NEW + g.drawString("" + (char) 0xBF, 0, yPos + 43); // NEW + } // NEW + else if (clef.equals("C4")) // NEW + { // NEW + g.setFont(appFont.deriveFont(55f)); // NEW + g.drawString("" + (char) 0xBF, 0, yPos + 33); // NEW + } // NEW + else if (clef.equals("C5")) // NEW + { // NEW + g.setFont(appFont.deriveFont(55f)); // NEW + g.drawString("" + (char) 0xBF, 0, yPos + 23); // NEW + } // NEW + + // 2 - Draw accidentals + if (accidentals != null && voices.size() > 0) { + // accidentals.paint(g, appFont, clefWidth, yPos, + // voices.getVoice(0)); TODO REGIS } - - // 3 - Draw tonality (only on the first row) - if (r == 0 && accidentals != null) - { - g.setColor(Color.gray); - g.setFont(new Font("LucidaSans", Font.PLAIN, 11)); - g.drawString(accidentals.getTonality(appBundle), 0, yPos - 20); - g.setColor(Color.black); - } - - // 4 - Draw time signature - String t = ""; - if (inlineMode == false) - { - if (timeSignNumerator == 4 && timeSignDenominator == 4) { + + // 3 - Draw tonality (only on the first row) + if (r == 0 && accidentals != null) { + //g.setColor(Color.gray); + g.setColor(Color.decode(menu)); + g.setFont(new Font("LucidaSans", Font.PLAIN, 11)); + g.drawString(accidentals.getTonality(appBundle), 0, yPos - 20); + g.setColor(Color.decode(foreground)); + } + + // 4 - Draw time signature + String t = ""; + if (inlineMode == false) { + if (timeSignNumerator == 4 && timeSignDenominator == 4) { t = "$"; } - if (timeSignNumerator == 3 && timeSignDenominator == 4) { + if (timeSignNumerator == 3 && timeSignDenominator == 4) { t = "#"; } - if (timeSignNumerator == 2 && timeSignDenominator == 4) { + if (timeSignNumerator == 2 && timeSignDenominator == 4) { t = "@"; } - if (timeSignNumerator == 6 && timeSignDenominator == 8) { + if (timeSignNumerator == 6 && timeSignDenominator == 8) { t = "P"; } - if (timeSignNumerator == 6 && timeSignDenominator == 4) { + if (timeSignNumerator == 6 && timeSignDenominator == 4) { t = "^"; } - if (timeSignNumerator == 3 && timeSignDenominator == 8) { + if (timeSignNumerator == 3 && timeSignDenominator == 8) { t = ")"; } - g.setFont(appFont.deriveFont(58f)); - g.drawString(t, clefWidth + alterationWidth, yPos+41); - } + g.setFont(appFont.deriveFont(58f)); + g.drawString(t, clefWidth + alterationWidth, yPos + 41); + } - // 5 - Draw double clef elements - if (clefs.size() > 1) - { - for (int v = 0; v < numberOfMeasuresPerRow; v++) { - g.drawLine(vXPos + v * (int)(((double)timeSignNumerator/timeDivision) * noteDistance), yPos + (rowsDistance / 2), vXPos + v * (int)(((double)timeSignNumerator/timeDivision) * noteDistance), yPos + (rowsDistance / 2) + 40); + // 5 - Draw double clef elements + if (voices.size() > 1) { + for (int v = 0; v < numberOfMeasuresPerRow; v++) { + g.drawLine( + vXPos + + v + * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), + yPos + (rowsDistance / 2), + vXPos + + v + * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), + yPos + (rowsDistance / 2) + 40); + } + for (int l = 0; l < 5; l++) { + g.drawLine(0, yPos + (rowsDistance / 2) + (l * 10), + scoreLineWidth, yPos + (rowsDistance / 2) + + (l * 10)); + } + clef = appPrefs.getProperty("voice1"); + // draw second clef + if (clef.equals("G2")) { + g.setFont(appFont.deriveFont(70f)); + g.drawString("G", 0, yPos + (rowsDistance / 2) + 42); + } else if (clef.equals("C1")) { + g.setFont(appFont.deriveFont(55f)); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + + 63); + } else if (clef.equals("C2")) { + g.setFont(appFont.deriveFont(55f)); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + + 53); + } else if (clef.equals("C3")) { + g.setFont(appFont.deriveFont(55f)); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + + 43); + } else if (clef.equals("C4")) { + g.setFont(appFont.deriveFont(55f)); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + + 33); + } else if (clef.equals("C5")) { + g.setFont(appFont.deriveFont(55f)); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + + 23); + } else if (clef.equals("F4")) { + g.setFont(appFont.deriveFont(60f)); + g.drawString("?", 0, yPos + (rowsDistance / 2) + 40); } - for (int l = 0; l < 5; l++) { - g.drawLine(0, yPos + (rowsDistance / 2) + (l * 10), scoreLineWidth, yPos + (rowsDistance / 2) + (l * 10)); + + // draw accidentals + // accidentals.paint(g, appFont, clefWidth, yPos + // + (rowsDistance / 2), voices.getVoice(1)); TODO REGIS + + // draw tonality + g.setColor(Color.gray); + g.setFont(new Font("LucidaSans", Font.PLAIN, 11)); + g.drawString(accidentals.getTonality(appBundle), 0, yPos + + (rowsDistance / 2) - 20); + g.setColor(Color.black); + // draw time signature + if (inlineMode == false) { + g.setFont(appFont.deriveFont(58f)); + g.drawString(t, clefWidth + alterationWidth, yPos + + (rowsDistance / 2) + 41); } + } + + yPos += rowsDistance; + } + } + + public void propertyChange(PropertyChangeEvent evt) { - // draw second clef - if (clefs.get(1) == appPrefs.CLEF_G2) - { - g.setFont(appFont.deriveFont(70f)); - g.drawString("G", 0, yPos + (rowsDistance / 2) + 42); - } - else if (clefs.get(1) == appPrefs.CLEF_F4) - { - g.setFont(appFont.deriveFont(60f)); - g.drawString("?", 0, yPos + (rowsDistance / 2) + 40); - } - else if (clefs.get(1) == appPrefs.CLEF_C3) - { - g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char)0xBF, 0, yPos + (rowsDistance / 2) + 43); - } - else if (clefs.get(1) == appPrefs.CLEF_C4) - { - g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char)0xBF, 0, yPos + (rowsDistance / 2) + 33); - } - - // draw accidentals - accidentals.paint(g, appFont, clefWidth, yPos + (rowsDistance / 2), clefs.get(1)); - - // draw tonality - g.setColor(Color.gray); - g.setFont(new Font("LucidaSans", Font.PLAIN, 11)); - g.drawString(accidentals.getTonality(appBundle), 0, yPos + (rowsDistance / 2) - 20); - g.setColor(Color.black); - // draw time signature - if (inlineMode == false) - { - g.setFont(appFont.deriveFont(58f)); - g.drawString(t, clefWidth + alterationWidth, yPos+ + (rowsDistance / 2) + 41); - } - } - - yPos += rowsDistance; - } - } + } } diff --git a/src/main/java/calao/TimerPanel.java b/src/main/java/calao/TimerPanel.java index f6d50e8..e5f037b 100644 --- a/src/main/java/calao/TimerPanel.java +++ b/src/main/java/calao/TimerPanel.java @@ -31,7 +31,15 @@ public class TimerPanel extends JPanel implements Runnable { private int xmiddle; private int ymiddle; private int pie; - public TimerPanel() { + + private Preferences appPrefs; + + private String color = "#000000"; + + public TimerPanel(Preferences p) { + appPrefs = p; + color = appPrefs + .getProperty("colors.background"); // startChrono(); Timer timer = new Timer(200, new ActionListener() { @@ -48,6 +56,7 @@ public void actionPerformed(ActionEvent ae) { timer.start(); } + long chrono = 0; void startChrono() { @@ -63,7 +72,7 @@ void checkChrono() { protected void paintComponent(Graphics g) { ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g.setColor(Color.white); + g.setColor(Color.decode(color)); g.fillRect(0, 0, getWidth(), getHeight()); // clear background & // graphicBuffer pie = (int) Math.round(((angle - 1) / 359.0) * 255.0); From 1a546aab8c2e1f6c3971da577c70f6cf17713ac1 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Mon, 29 Feb 2016 00:13:18 +0100 Subject: [PATCH 26/35] Plugin system added for futur integration in gitignore --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index cfd8336..5ab2ba7 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /logs/ /calao.properties /*.kls +/src/main/java/plugins /src/main/java/slider/ /src/main/resources/calao/old/ /src/main/resources/calao/svg/ @@ -12,4 +13,3 @@ /src/main/resources/calao/libs/ /src/main/resources/calao/MusiSyncForCalao.ttf /src/main/resources/calao/*.sf2 - From 57c32fe7bcd1690d45fcf2f0c2506232258c9dfb Mon Sep 17 00:00:00 2001 From: Neonunux Date: Fri, 18 Mar 2016 21:31:22 +0100 Subject: [PATCH 27/35] clefNoteOptionDialog instancied in smartBar constructor to be listened by InlinePanel --- src/main/java/calao/InlinePanel.java | 134 ++++++++++----------------- src/main/java/calao/SmartBar.java | 25 +++-- 2 files changed, 62 insertions(+), 97 deletions(-) diff --git a/src/main/java/calao/InlinePanel.java b/src/main/java/calao/InlinePanel.java index c526983..96dbc92 100644 --- a/src/main/java/calao/InlinePanel.java +++ b/src/main/java/calao/InlinePanel.java @@ -43,11 +43,9 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * * @author Neonunux */ -public class InlinePanel extends JPanel implements ActionListener, - PropertyChangeListener { +public class InlinePanel extends JPanel implements ActionListener, PropertyChangeListener { - private static final Logger logger = LogManager.getLogger(InlinePanel.class - .getName()); + private static final Logger logger = LogManager.getLogger(InlinePanel.class.getName()); /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; @@ -168,25 +166,22 @@ public class InlinePanel extends JPanel implements ActionListener, * @param d * the d */ - public InlinePanel(Font f, ResourceBundle b, Preferences p, - MidiController mc, Dimension d) { + public InlinePanel(Font f, ResourceBundle b, Preferences p, MidiController mc, Dimension d) { appFont = f; appBundle = b; appPrefs = p; appMidi = mc; voices = new Voices(f, b, p); - - String color = appPrefs - .getProperty("colors.background"); + + String color = appPrefs.getProperty("colors.background"); setBackground(Color.decode(color)); setSize(d); setLayout(null); if (appPrefs.globalExerciseMode == true) { exerciseMode = true; currEx = appPrefs.currentExercise; - inlineAccidentals = new Accidentals(currEx.acc.getType(), - currEx.acc.getNumber(), appPrefs); + inlineAccidentals = new Accidentals(currEx.acc.getType(), currEx.acc.getNumber(), appPrefs); } else { inlineAccidentals = new Accidentals("", 0, appPrefs); } @@ -199,17 +194,12 @@ public InlinePanel(Font f, ResourceBundle b, Preferences p, gameType = appPrefs.GAME_STOPPED; - sBar = new SmartBar(new Dimension(d.width, sBarHeight), b, f, p, true, - false, false); + sBar = new SmartBar(new Dimension(d.width, sBarHeight), b, f, p, true, false, false); - sBar.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - logger.debug("sBar property changed refreshed "); - refreshPanel(); - } - }); + sBar.clefNotesDialog.addPropertyChangeListener(this); // sBar.clefNotesDialog.okButton.addActionListener(this); + sBar.clefNoteBtn.addActionListener(this); sBar.playBtn.addActionListener(this); if (exerciseMode == true) sBar.tempoSlider.setValue(currEx.speed); @@ -220,14 +210,11 @@ public void propertyChange(PropertyChangeEvent evt) { layers.setPreferredSize(new Dimension(panelsWidth, staffHeight)); layers.setBounds(staffHMargin, staffVMargin, panelsWidth, staffHeight); - inlineStaff = new Staff(appFont, appBundle, appPrefs, - inlineAccidentals, true, true); + inlineStaff = new Staff(appFont, appBundle, appPrefs, inlineAccidentals, true, true); inlineStaff.setPreferredSize(new Dimension(panelsWidth, staffHeight)); inlineStaff.setBounds(0, 0, panelsWidth, staffHeight); inlineStaff.setVoices(voices); inlineStaff.setOpaque(true); - - // notesLayer = new NotesPanel(appFont, appPrefs, gameNotes, null, // true); @@ -238,8 +225,7 @@ public void propertyChange(PropertyChangeEvent evt) { layers.add(inlineStaff, new Integer(1)); // layers.add(notesLayer, new Integer(2)); - int pianoKeysNum = Integer.parseInt(appPrefs - .getProperty("keyboardlength")); + int pianoKeysNum = Integer.parseInt(appPrefs.getProperty("keyboardlength")); if (pianoKeysNum == -1) pianoKeysNum = 73; piano = new Piano(pianoKeysNum); @@ -258,17 +244,7 @@ public void mouseReleased(MouseEvent e) { } }); } - - - - inlineStaff.addPropertyChangeListener("voice1", new PropertyChangeListener() { - - public void propertyChange(PropertyChangeEvent evt) { - // TODO Auto-generated method stub - logger.debug("allo quoi !!"); - refreshPanel(); - } - }); + gameBar = new GameBar(new Dimension(d.width, gBarHeight), b, f, p, true); gameBar.setBounds(0, getHeight() - gBarHeight, getWidth(), gBarHeight); gameBar.progress.setValue(20); @@ -282,17 +258,15 @@ public void propertyChange(PropertyChangeEvent evt) { add(timerPanel); refreshPanel(); - } /** * Refresh panel. */ public void refreshPanel() { + this.repaint(); piano.reset(true); inlineStaff.setVoices(inlineNG.getVoices()); - inlineStaff.repaint(); - logger.debug("[InlinePanel.refreshPanel] properti(es) changed"); if (exerciseMode == false) { inlineNG.update(); @@ -320,6 +294,7 @@ public void refreshPanel() { sBar.tempoContainer.setEnabled(false); inlineStaff.setRowsDistance(rowsDistance); inlineStaff.repaint(); + // notesLayer.setRowsDistance(rowsDistance); // notesLayer.setFirstNoteXPosition(inlineStaff.getFirstNoteXPosition()); setLearningInfo(false, -1); @@ -432,9 +407,12 @@ public void setLearningInfo(boolean enable, int chordType) { altType = inlineNG.getAlteration(gameNotes.get(0).pitch); if (altType == 1) { - if (noteIdx != 2 && noteIdx != 6 - && piano.isSelectedBlack() == true) // E and B are - // already OK + if (noteIdx != 2 && noteIdx != 6 && piano.isSelectedBlack() == true) // E + // and + // B + // are + // already + // OK altInfo = "#"; } else if (gameNotes.get(0).altType == -1) { altInfo = "b"; @@ -521,8 +499,7 @@ public void setLearningInfo(boolean enable, int chordType) { keyStr += "min"; break; case 0: - if (intervalType == 4 || intervalType == 5 - || intervalType == 8) + if (intervalType == 4 || intervalType == 5 || intervalType == 8) keyStr += "per"; else keyStr += "maj"; @@ -557,8 +534,7 @@ public void startGame() { gameThread = new InlineGameThread(); gameStarted = true; gameThread.start(); - sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource( - "stop.png")).getImage()); + sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource("stop.png")).getImage()); sBar.playBtn.repaint(); } @@ -572,8 +548,7 @@ public void stopGame() { if (gameThread != null && gameThread.isAlive() == true) { /* ************** STOP CURRENT GAME ***************** */ gameStarted = false; - sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource( - "playback.png")).getImage()); + sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource("playback.png")).getImage()); for (int i = 0; i < gameNotes.size(); i++) appMidi.stopNote(gameNotes.get(i).pitch, 0); gameNotes.clear(); @@ -656,8 +631,7 @@ public void noteEvent(int pitch, int velocity, boolean fromPiano) { if (velocity == 0) { appMidi.stopNote(pitch, 0); piano.keyPressed(pitch, false); - if (fromPiano == true && gameSubType != appPrefs.NOTE_CHORDS - && gameSubType != appPrefs.NOTE_INTERVALS + if (fromPiano == true && gameSubType != appPrefs.NOTE_CHORDS && gameSubType != appPrefs.NOTE_INTERVALS && userNotes.size() != 0) { int idx = userNotes.indexOf(pitch); if (idx != -1) @@ -689,8 +663,7 @@ public void noteEvent(int pitch, int velocity, boolean fromPiano) { gameThread.needNewNote = true; } else { appMidi.playNote(pitch, 90); - if ((gameSubType == appPrefs.NOTE_CHORDS && userNotes - .size() == 3) + if ((gameSubType == appPrefs.NOTE_CHORDS && userNotes.size() == 3) || gameSubType != appPrefs.NOTE_CHORDS) updateGameStats(0); piano.keyPressed(pitch, true); @@ -769,13 +742,11 @@ private void updateGameStats(int answType) { } stats.notePlayed(answType, score); - gameBar.precisionCnt.setText(Integer.toString(stats - .getAveragePrecision()) + "%"); + gameBar.precisionCnt.setText(Integer.toString(stats.getAveragePrecision()) + "%"); gameBar.scoreCnt.setText(Integer.toString(stats.getTotalScore())); if (gameType != appPrefs.INLINE_LEARN_NOTES) { if (answType == 1) { - gameBar.progress.setValue(gameBar.progress.getValue() - + progressStep); + gameBar.progress.setValue(gameBar.progress.getValue() + progressStep); } else { gameBar.progress.setValue(gameBar.progress.getValue() - 4); } @@ -795,8 +766,7 @@ private void updateGameStats(int answType) { */ private void gameFinished(boolean win) { gameStarted = false; - sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource( - "playback.png")).getImage()); + sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource("playback.png")).getImage()); refreshPanel(); for (int i = 0; i < gameNotes.size(); i++) { appMidi.stopNote(gameNotes.get(i).pitch, 0); @@ -817,12 +787,11 @@ private void gameFinished(boolean win) { type = JOptionPane.ERROR_MESSAGE; } - JOptionPane.showMessageDialog( - this.getParent(), - " " + stats.getCorrectNumber() + " " - + appBundle.getString("_correct") + " / " - + stats.getWrongNumber() + " " - + appBundle.getString("_wrong") + " ", title, type); + JOptionPane + .showMessageDialog( + this.getParent(), " " + stats.getCorrectNumber() + " " + appBundle.getString("_correct") + + " / " + stats.getWrongNumber() + " " + appBundle.getString("_wrong") + " ", + title, type); if (Integer.parseInt(appPrefs.getProperty("saveStats")) == 1) { stats.storeData(0); @@ -838,10 +807,8 @@ protected void paintComponent(Graphics g) { g.setColor(this.getBackground()); g.fillRect(0, 0, getWidth(), getHeight()); sBar.setSize(getWidth(), sBarHeight); - layers.setBounds(staffHMargin, staffVMargin, getWidth() - - (staffHMargin * 2), staffHeight); - inlineStaff.setBounds(0, 0, getWidth() - (staffHMargin * 2), - staffHeight); + layers.setBounds(staffHMargin, staffVMargin, getWidth() - (staffHMargin * 2), staffHeight); + inlineStaff.setBounds(0, 0, getWidth() - (staffHMargin * 2), staffHeight); inlineStaff.repaint(); logger.debug("[InlinePanel.paintComponent] repainted"); // notesLayer @@ -886,8 +853,7 @@ private InlineGameThread() { marginX = inlineStaff.getFirstNoteXPosition(); sleepVal *= 2; // slow down baby ! } - logger.debug("Thread increment: " + noteXincrement + ", sleep: " - + sleepVal); + logger.debug("Thread increment: " + noteXincrement + ", sleep: " + sleepVal); } /* @@ -905,8 +871,7 @@ public void run() { } needNewNote = false; if (gameSubType == appPrefs.NOTE_CHORDS) { - int chordType = inlineNG.getRandomChordOrInterval( - gameNotes, noteXStartPos, true, -1); + int chordType = inlineNG.getRandomChordOrInterval(gameNotes, noteXStartPos, true, -1); if (gameType == appPrefs.INLINE_LEARN_NOTES) { setLearningInfo(true, chordType); } @@ -916,9 +881,8 @@ public void run() { } } } else if (gameSubType == appPrefs.NOTE_INTERVALS) { - int intervalType = inlineNG - .getRandomChordOrInterval(gameNotes, - noteXStartPos, false, gameInterval); + int intervalType = inlineNG.getRandomChordOrInterval(gameNotes, noteXStartPos, false, + gameInterval); if (gameType == appPrefs.INLINE_LEARN_NOTES) { setLearningInfo(true, intervalType); } @@ -941,9 +905,7 @@ public void run() { if (gameType == appPrefs.INLINE_LEARN_NOTES) { setLearningInfo(true, -1); } - logger.trace("Got note with pitch: " - + newNote.pitch + " (level:" - + newNote.level + ")"); + logger.trace("Got note with pitch: " + newNote.pitch + " (level:" + newNote.level + ")"); if (gameType != appPrefs.INLINE_MORE_NOTES) { appMidi.playNote(newNote.pitch, 90); } @@ -955,10 +917,9 @@ public void run() { gameNotes.get(i).xpos += noteXincrement; } - if ((gameType != appPrefs.INLINE_MORE_NOTES && gameNotes - .get(i).xpos > marginX) - || (gameType == appPrefs.INLINE_MORE_NOTES - && i == 0 && gameNotes.get(i).xpos < marginX)) { + if ((gameType != appPrefs.INLINE_MORE_NOTES && gameNotes.get(i).xpos > marginX) + || (gameType == appPrefs.INLINE_MORE_NOTES && i == 0 + && gameNotes.get(i).xpos < marginX)) { if (gameType != appPrefs.INLINE_MORE_NOTES) { appMidi.stopNote(gameNotes.get(i).pitch, 0); } @@ -995,7 +956,12 @@ public void run() { } public void propertyChange(PropertyChangeEvent evt) { - logger.debug("message rec"); - this.refreshPanel(); + + if (evt.getPropertyName() == "updateParameters") { + logger.debug("updated ! allo quoi"); + refreshPanel(); + } + } + } diff --git a/src/main/java/calao/SmartBar.java b/src/main/java/calao/SmartBar.java index 701f823..225901f 100644 --- a/src/main/java/calao/SmartBar.java +++ b/src/main/java/calao/SmartBar.java @@ -315,7 +315,9 @@ public SmartBar(Dimension d, ResourceBundle b, Font f, Preferences p, listenBtn.setButtonImage(new ImageIcon(getClass().getResource( "listen.png")).getImage()); } - + clefNotesDialog = new ClefNotesOptionDialog(appFont, appBundle, + appPrefs, voices); + updateLanguage(appBundle); this.add(homeBtn); @@ -410,19 +412,8 @@ public void actionPerformed(ActionEvent ae) { if (ae.getSource() == clefNoteBtn) { logger.debug("SmartBar Event received !! (" + ae.getActionCommand() + ")"); - clefNotesDialog = new ClefNotesOptionDialog(appFont, appBundle, - appPrefs, voices); + clefNotesDialog.setVisible(true); - clefNotesDialog - .addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getPropertyName() == "updateParameters") { - logger.debug("ClefNotesOptionDialog update parameters."); - firePropertyChange("updateParameters", false, - true); - } - } - }); } else if (ae.getSource() == metronomeCheckBox) { if (metronomeCheckBox.isSelected() == true) { appPrefs.setProperty("metronome", "1"); @@ -512,4 +503,12 @@ protected void paintComponent(Graphics g) { public void setTraining(boolean state) { this.isTraining = state; } + + public ClefNotesOptionDialog getClefNotesDialog() { + return clefNotesDialog; + } + + public void setClefNotesDialog(ClefNotesOptionDialog clefNotesDialog) { + this.clefNotesDialog = clefNotesDialog; + } } \ No newline at end of file From 3e1cdfede6394bcd57325c742ee99efdc1003096 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Fri, 18 Mar 2016 21:32:21 +0100 Subject: [PATCH 28/35] Button titles moved to be nicer --- src/main/java/calao/RoundedButton.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/calao/RoundedButton.java b/src/main/java/calao/RoundedButton.java index 874490a..fdcc101 100644 --- a/src/main/java/calao/RoundedButton.java +++ b/src/main/java/calao/RoundedButton.java @@ -266,8 +266,8 @@ else if (getModel().isRollover()) // rollover effect int textWidth = 0; int vOffset = getHeight() / 2; int hOffset = getWidth() / 2; - int OffsetContentPositionImage = 50; - int OffsetContentPositionText = 50; + int OffsetContentPositionImage = 35; + int OffsetContentPositionText = 35; /* * lecture de notes // rythmes // partition // statistiques // Exercices * // Ear Training From f48db35432f5892c3d86119de34c21f4e94ba338 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Sat, 19 Mar 2016 10:39:22 +0100 Subject: [PATCH 29/35] TimerPanel is started in Inline mode only if game is started --- src/main/java/calao/InlinePanel.java | 20 ++++++-------- src/main/java/calao/TimerPanel.java | 39 +++++++++++++++------------- 2 files changed, 29 insertions(+), 30 deletions(-) diff --git a/src/main/java/calao/InlinePanel.java b/src/main/java/calao/InlinePanel.java index 96dbc92..4330ad3 100644 --- a/src/main/java/calao/InlinePanel.java +++ b/src/main/java/calao/InlinePanel.java @@ -294,7 +294,7 @@ public void refreshPanel() { sBar.tempoContainer.setEnabled(false); inlineStaff.setRowsDistance(rowsDistance); inlineStaff.repaint(); - + // notesLayer.setRowsDistance(rowsDistance); // notesLayer.setFirstNoteXPosition(inlineStaff.getFirstNoteXPosition()); setLearningInfo(false, -1); @@ -527,8 +527,8 @@ public void startGame() { gameBar.progress.setValue(20); setGameType(); noteXStartPos = inlineStaff.getFirstNoteXPosition(); - notesLayer.setFirstNoteXPosition(noteXStartPos); - notesLayer.setStaffWidth(inlineStaff.getStaffWidth()); + // notesLayer.setFirstNoteXPosition(noteXStartPos); + // notesLayer.setStaffWidth(inlineStaff.getStaffWidth()); stats.reset(); stats.setGameSpeed(currentSpeed); gameThread = new InlineGameThread(); @@ -536,6 +536,7 @@ public void startGame() { gameThread.start(); sBar.playBtn.setButtonImage(new ImageIcon(getClass().getResource("stop.png")).getImage()); sBar.playBtn.repaint(); + timerPanel.start(); } /** @@ -554,6 +555,7 @@ public void stopGame() { gameNotes.clear(); gameType = appPrefs.GAME_STOPPED; } + timerPanel.stop(); } /* @@ -726,13 +728,8 @@ private void updateGameStats(int answType) { int score = 0; if (gameType != appPrefs.INLINE_LEARN_NOTES) { int xdelta = gameNotes.get(0).xpos - noteXStartPos; - score = (xdelta * 100) / (getWidth() - (staffHMargin * 2)); // find - // linear - // score - // based - // on - // note - // position + // find linear score based on note position + score = (xdelta * 100) / (getWidth() - (staffHMargin * 2)); score = 100 - score; // invert it to scale from 0 to 100 score *= (currentSpeed / 40); // multiply by speed factor } @@ -958,10 +955,9 @@ public void run() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName() == "updateParameters") { - logger.debug("updated ! allo quoi"); + logger.debug("[InlinePanelProperty] repainted"); refreshPanel(); } - } } diff --git a/src/main/java/calao/TimerPanel.java b/src/main/java/calao/TimerPanel.java index e5f037b..0dfbe1f 100644 --- a/src/main/java/calao/TimerPanel.java +++ b/src/main/java/calao/TimerPanel.java @@ -14,35 +14,36 @@ import org.apache.logging.log4j.Logger; /** - * TimerPanel is used to set a maximum time - * to answer. + * TimerPanel is used to set a maximum time to answer. */ public class TimerPanel extends JPanel implements Runnable { private static final long serialVersionUID = 6396633037556341891L; - private static final Logger logger = LogManager.getLogger(TimerPanel.class - .getName()); + private static final Logger logger = LogManager.getLogger(TimerPanel.class.getName()); private int angle = 20; - + private int R = 70; private int startAngle = 90; - + private int xmiddle; private int ymiddle; private int pie; private Preferences appPrefs; - + private String color = "#000000"; + long chrono = 0; + + private Timer timer; + public TimerPanel(Preferences p) { appPrefs = p; - color = appPrefs - .getProperty("colors.background"); + color = appPrefs.getProperty("colors.background"); // startChrono(); - Timer timer = new Timer(200, new ActionListener() { + timer = new Timer(200, new ActionListener() { public void actionPerformed(ActionEvent ae) { repaint(); angle = angle + 2; @@ -53,12 +54,8 @@ public void actionPerformed(ActionEvent ae) { } }); timer.setRepeats(true); - timer.start(); } - - long chrono = 0; - void startChrono() { chrono = java.lang.System.currentTimeMillis(); } @@ -70,11 +67,9 @@ void checkChrono() { } protected void paintComponent(Graphics g) { - ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); g.setColor(Color.decode(color)); - g.fillRect(0, 0, getWidth(), getHeight()); // clear background & - // graphicBuffer + g.fillRect(0, 0, getWidth(), getHeight()); pie = (int) Math.round(((angle - 1) / 359.0) * 255.0); Color colorCircle = new Color(0 + pie, 0, 255 - pie); @@ -88,4 +83,12 @@ protected void paintComponent(Graphics g) { public void run() { } + + public void start() { + timer.start(); + } + + public void stop() { + timer.stop(); + } } \ No newline at end of file From 6f7c3fc0b299593035ba123b918eff31c69a5f7c Mon Sep 17 00:00:00 2001 From: Neonunux Date: Sat, 19 Mar 2016 10:43:04 +0100 Subject: [PATCH 30/35] Format & trivial commit --- TODO.md | 2 +- calao.properties | 39 +++++++++++++++--------------- pom.xml | 44 +++++++++++++++++++++++++++++++++- src/main/java/calao/Calao.java | 2 +- 4 files changed, 64 insertions(+), 23 deletions(-) diff --git a/TODO.md b/TODO.md index a021c51..091e4e7 100644 --- a/TODO.md +++ b/TODO.md @@ -11,7 +11,7 @@ Learning features Technical features -------- - * Import other format in Exercice + * Import other musical format in Exercice Debug features -------- diff --git a/calao.properties b/calao.properties index 4ae24d7..2a10e87 100644 --- a/calao.properties +++ b/calao.properties @@ -1,43 +1,44 @@ -#Sat Feb 20 12:51:58 CET 2016 -inputDevice=MIDI,0 +#Fri Mar 18 23:57:19 CET 2016 ClefC3Lower=47 ClefC5Lower=47 -ClefG2Upper=77 +inputDevice=MIDI,0 +ClefG2Upper=65 ClefC2Upper=71 -ClefF4Upper=57 +ClefF4Upper=52 ClefC4Upper=64 colors.button.label=\#000000 -colors.button.background=\#b77128 -colors.button.mouseover=\#d28331 -colors.foreground=\#000080 -colors.background=\#b3a88f -colors.menutitle=\#999999 3_4_Note=1 -3_8_Note=0 timeSignature=0 quarterNote=1 +colors.foreground=\#000080 +3_8_Note=0 +colors.button.mouseover=\#d28331 +colors.background=\#b3a88f language=fr +colors.menutitle=\#999999 halfNote=1 wholeNote=1 -accidentals=6 +calao.debug=true +ClefG2Lower=60 outputDevice=Java -ClefG2Lower=55 ClefC2Lower=55 -ClefF4Lower=43 +accidentals=6 +ClefF4Lower=47 ClefC4Lower=50 saveStats=0 -voice3=NONE -voice2=G2 +voice3=C3 +voice2=C3 clickAccents=0 transposition=0 eighthNote=0 -voice1=C3 -voice0=G2 -instrument=0 +voice1=C2 +voice0=C2 +instrument=-1 latency=0 tripletNote=0 ClefC1Upper=67 keyboardlength=73 +colors.button.background=\#b77128 clefsMask=127 ClefC3Upper=67 ClefC5Upper=62 @@ -45,5 +46,3 @@ silenceNote=1 showBeats=0 ClefC1Lower=59 keyboardsound=1 -calao.debug=true -# B8D8FF \ No newline at end of file diff --git a/pom.xml b/pom.xml index 25a885a..29a45c4 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 Calao Calao - 3.3.3061 + 3.3.3156 @@ -21,6 +21,42 @@ + + org.apache.maven.plugins + maven-jar-plugin + 2.4 + + + + true + calao.Calao + dependency-jars/ + + + + + + + org.apache.maven.plugins + maven-dependency-plugin + 2.5.1 + + + copy-dependencies + package + + copy-dependencies + + + + ${project.build.directory}/dependency-jars/ + + + + + + + org.codehaus.mojo autoincrement-versions-maven-plugin @@ -40,11 +76,13 @@ + org.apache.maven.plugins maven-compiler-plugin 3.3 + org.codehaus.mojo exec-maven-plugin @@ -62,6 +100,7 @@ + org.apache.maven.plugins maven-javadoc-plugin @@ -75,6 +114,7 @@ 2.10.3 + org.codehaus.mojo nsis-maven-plugin @@ -128,6 +168,7 @@ ${project.artifactId}-${project.version} target/test-classes + autoincrement-versions-maven-plugin @@ -235,6 +276,7 @@ + true diff --git a/src/main/java/calao/Calao.java b/src/main/java/calao/Calao.java index eb0b8ad..a3ba7ee 100644 --- a/src/main/java/calao/Calao.java +++ b/src/main/java/calao/Calao.java @@ -259,7 +259,7 @@ public Calao() { MusiSync = Font.createFont(Font.PLAIN, fInput); logger.debug("MusiSync font loaded."); } catch (Exception e) { - logger.error("Cannot load MusiSync font !!"); + logger.error("Cannot load MusiSync font !! "); System.exit(0); } From 69301259e9cba3d9ff4b53c278bd1f79047fae8b Mon Sep 17 00:00:00 2001 From: Neonunux Date: Sat, 19 Mar 2016 10:44:08 +0100 Subject: [PATCH 31/35] HomePanel color management possibility on picture (todo) --- src/main/java/calao/HomePanel.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/calao/HomePanel.java b/src/main/java/calao/HomePanel.java index f7aa263..bd6e7c3 100644 --- a/src/main/java/calao/HomePanel.java +++ b/src/main/java/calao/HomePanel.java @@ -173,6 +173,8 @@ protected void paintComponent(Graphics g) { int prefWidth = 800; int btnHeight = 163; int margin = 10; + //Color newColor = new Color(0, 0, 1, 0 /* alpha needs to be zero */); + //g.setXORMode(newColor); g.drawImage(MainPic, (this.getWidth() / 2) - 300, 0, null); homeButtons.setBounds(((this.getWidth() - prefWidth) / 2) + margin, logoHeight, prefWidth - (margin * 2), margin + btnHeight * 2); From ba5b5ab625330147ad476a5ff190a20ef91c9423 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Sat, 19 Mar 2016 11:22:40 +0100 Subject: [PATCH 32/35] Staff documentation formated to support eclipse auto format --- src/main/java/calao/Staff.java | 121 +++++++++++---------------------- 1 file changed, 39 insertions(+), 82 deletions(-) diff --git a/src/main/java/calao/Staff.java b/src/main/java/calao/Staff.java index c648e61..701129a 100644 --- a/src/main/java/calao/Staff.java +++ b/src/main/java/calao/Staff.java @@ -22,11 +22,7 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.ArrayList; import java.util.ResourceBundle; -import java.util.Vector; import javax.swing.JPanel; @@ -39,10 +35,9 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). * @author Neonunux * @author Massimo Callegari */ -public class Staff extends JPanel implements PropertyChangeListener { +public class Staff extends JPanel { - private static final Logger logger = LogManager.getLogger(Staff.class - .getName()); + private static final Logger logger = LogManager.getLogger(Staff.class.getName()); /** The Constant serialVersionUID. */ private static final long serialVersionUID = 7759085255881441116L; @@ -50,25 +45,22 @@ public class Staff extends JPanel implements PropertyChangeListener { /** The app font. */ Font appFont; - /** The app bundle. */ - private ResourceBundle appBundle; // reference to languages bundle just to - // display tonality + /** appBundle reference to languages bundle just to display tonality */ + private ResourceBundle appBundle; Preferences appPrefs; - - // ************************************** SCORE LAYOUT *********** - // * - // * | window |clefWidth|alteration|timeSign| noteDistance - // * | Margin | | Width | Width | /------\ - // * | | | | | | | - // * | ----GG------#---------------------|------|---------- - // * | -----G----------#-------4---------|-----O----------- - // * | ---GG---------#---------4--------O------------------ - // * | ---G-G---------------------------------------------- - // * | ----G----------------------------------------------- - // * - // *************************************************************** - + /* + * ************************************** SCORE LAYOUT ******************** + * |_____Window____|__Clef___|_Alteration_|_timeSignature_|_noteDistance__| + * |_____Margin____|__Width__|___Width____|_____Width_____|_______________| + * |_________________________________________________________<------>_____| + * |_______________|-----GG------#---------------------------|------|-----| + * |_______________|------G----------#-------------4---------|-----O------| + * |_______________|----GG---------#---------------4--------O-------------| + * |_______________|----G-G-----------------------------------------------| + * |_______________|-----G------------------------------------------------| + * ************************************************************************ + */ /** The clef width. */ private int clefWidth = 32; // width of score clefs @@ -112,8 +104,7 @@ public class Staff extends JPanel implements PropertyChangeListener { private int noteDistance = 72; // distance in pixel between 1/4 notes /** The first note x pos. */ - private int firstNoteXPos = clefWidth + alterationWidth + alterationWidth - + timeSignWidth + notesShift; + private int firstNoteXPos = clefWidth + alterationWidth + alterationWidth + timeSignWidth + notesShift; /** The score line width. */ private int scoreLineWidth; @@ -154,8 +145,7 @@ public class Staff extends JPanel implements PropertyChangeListener { * @param singlePage * the single page */ - public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, - boolean inline, boolean singlePage, Voices v) { + public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, boolean inline, boolean singlePage, Voices v) { appFont = f; appBundle = b; appPrefs = p; @@ -172,11 +162,7 @@ public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, numberOfRows = 1; numberOfMeasuresPerRow = 0; } - this.addPropertyChangeListener(new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - logger.debug("Staff a écouté et entendu !!!!!!!!!!"); - } - }); + background = appPrefs.getProperty("colors.background"); foreground = appPrefs.getProperty("colors.foreground"); menu = appPrefs.getProperty("colors.menutitle"); @@ -184,8 +170,7 @@ public void propertyChange(PropertyChangeEvent evt) { } - public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, - boolean inline, boolean singlePage) { + public Staff(Font f, ResourceBundle b, Preferences p, Accidentals a, boolean inline, boolean singlePage) { this(f, b, p, a, inline, singlePage, null); } @@ -291,8 +276,7 @@ public int getRowsNumber() { public int getFirstNoteXPosition() { if (accidentals != null) alterationWidth = accidentals.getNumber() * 12; - firstNoteXPos = clefWidth + alterationWidth + timeSignWidth - + notesShift; + firstNoteXPos = clefWidth + alterationWidth + timeSignWidth + notesShift; return firstNoteXPos; } @@ -347,8 +331,7 @@ private int calculateSize() { } else { alterationWidth = 0; } - firstNoteXPos = clefWidth + alterationWidth + alterationWidth - + timeSignWidth + notesShift; + firstNoteXPos = clefWidth + alterationWidth + alterationWidth + timeSignWidth + notesShift; scoreLineWidth = clefWidth + alterationWidth + timeSignWidth; @@ -361,10 +344,8 @@ private int calculateSize() { numberOfRows = getHeight() / rowsDistance; } else { numberOfMeasuresPerRow = (getWidth() - scoreLineWidth) / beatW; - numberOfRows = (int) Math.ceil((double) forcedNumberOfMeasures - / (double) numberOfMeasuresPerRow); - logger.trace("[Staff] numberOfMeasuresPerRow: " - + numberOfMeasuresPerRow + ", numberOfRows: " + numberOfRows = (int) Math.ceil((double) forcedNumberOfMeasures / (double) numberOfMeasuresPerRow); + logger.trace("[Staff] numberOfMeasuresPerRow: " + numberOfMeasuresPerRow + ", numberOfRows: " + numberOfRows); } @@ -382,8 +363,7 @@ private int calculateSize() { * @see javax.swing.JComponent#paintComponent(java.awt.Graphics) */ protected void paintComponent(Graphics g) { - ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, - RenderingHints.VALUE_ANTIALIAS_ON); + ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); super.paintComponent(g); if (globalScale != 1.0) ((Graphics2D) g).scale(globalScale, globalScale); @@ -400,15 +380,8 @@ protected void paintComponent(Graphics g) { for (int r = 0; r < numberOfRows; r++) { // draw vertical separators first for (int v = 0; v < numberOfMeasuresPerRow; v++) - g.drawLine( - vXPos - + v - * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), - yPos, - vXPos - + v - * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), - yPos + 40); + g.drawLine(vXPos + v * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), yPos, + vXPos + v * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), yPos + 40); // draw the staff 5 lines for (int l = 0; l < 5; l++) g.drawLine(0, yPos + (l * 10), scoreLineWidth, yPos + (l * 10)); @@ -486,7 +459,7 @@ else if (clef.equals("C5")) // NEW // 3 - Draw tonality (only on the first row) if (r == 0 && accidentals != null) { - //g.setColor(Color.gray); + // g.setColor(Color.gray); g.setColor(Color.decode(menu)); g.setFont(new Font("LucidaSans", Font.PLAIN, 11)); g.drawString(accidentals.getTonality(appBundle), 0, yPos - 20); @@ -522,20 +495,14 @@ else if (clef.equals("C5")) // NEW // 5 - Draw double clef elements if (voices.size() > 1) { for (int v = 0; v < numberOfMeasuresPerRow; v++) { - g.drawLine( - vXPos - + v - * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), + g.drawLine(vXPos + v * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), yPos + (rowsDistance / 2), - vXPos - + v - * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), + vXPos + v * (int) (((double) timeSignNumerator / timeDivision) * noteDistance), yPos + (rowsDistance / 2) + 40); } for (int l = 0; l < 5; l++) { - g.drawLine(0, yPos + (rowsDistance / 2) + (l * 10), - scoreLineWidth, yPos + (rowsDistance / 2) - + (l * 10)); + g.drawLine(0, yPos + (rowsDistance / 2) + (l * 10), scoreLineWidth, + yPos + (rowsDistance / 2) + (l * 10)); } clef = appPrefs.getProperty("voice1"); // draw second clef @@ -544,24 +511,19 @@ else if (clef.equals("C5")) // NEW g.drawString("G", 0, yPos + (rowsDistance / 2) + 42); } else if (clef.equals("C1")) { g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) - + 63); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + 63); } else if (clef.equals("C2")) { g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) - + 53); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + 53); } else if (clef.equals("C3")) { g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) - + 43); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + 43); } else if (clef.equals("C4")) { g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) - + 33); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + 33); } else if (clef.equals("C5")) { g.setFont(appFont.deriveFont(55f)); - g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) - + 23); + g.drawString("" + (char) 0xBF, 0, yPos + (rowsDistance / 2) + 23); } else if (clef.equals("F4")) { g.setFont(appFont.deriveFont(60f)); g.drawString("?", 0, yPos + (rowsDistance / 2) + 40); @@ -574,14 +536,12 @@ else if (clef.equals("C5")) // NEW // draw tonality g.setColor(Color.gray); g.setFont(new Font("LucidaSans", Font.PLAIN, 11)); - g.drawString(accidentals.getTonality(appBundle), 0, yPos - + (rowsDistance / 2) - 20); + g.drawString(accidentals.getTonality(appBundle), 0, yPos + (rowsDistance / 2) - 20); g.setColor(Color.black); // draw time signature if (inlineMode == false) { g.setFont(appFont.deriveFont(58f)); - g.drawString(t, clefWidth + alterationWidth, yPos - + (rowsDistance / 2) + 41); + g.drawString(t, clefWidth + alterationWidth, yPos + (rowsDistance / 2) + 41); } } @@ -589,7 +549,4 @@ else if (clef.equals("C5")) // NEW } } - public void propertyChange(PropertyChangeEvent evt) { - - } } From d7980b9c97010b8309f7c8cc4860d0563ceb5e45 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Sat, 19 Mar 2016 11:24:40 +0100 Subject: [PATCH 33/35] Gradient bar logged --- src/main/java/calao/GradientBar.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/calao/GradientBar.java b/src/main/java/calao/GradientBar.java index aaa7bbd..57dd026 100644 --- a/src/main/java/calao/GradientBar.java +++ b/src/main/java/calao/GradientBar.java @@ -23,7 +23,6 @@ This file is part of the Calao project (https://github.com/Neonunux/calao/wiki). import java.awt.Graphics2D; //import java.awt.RenderingHints; - import javax.swing.JProgressBar; import org.apache.logging.log4j.LogManager; @@ -53,7 +52,7 @@ public class GradientBar extends JProgressBar public GradientBar(int min, int max) { super(min, max); - + logger.debug("Gradient bar init"); } /* (non-Javadoc) From b3f06bc4c86bc715c49ec663e6995d0cd8d47361 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Mon, 21 Mar 2016 00:10:01 +0100 Subject: [PATCH 34/35] Staff documentation --- src/main/java/calao/Staff.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/calao/Staff.java b/src/main/java/calao/Staff.java index 701129a..79fc3e6 100644 --- a/src/main/java/calao/Staff.java +++ b/src/main/java/calao/Staff.java @@ -52,8 +52,8 @@ public class Staff extends JPanel { /* * ************************************** SCORE LAYOUT ******************** * |_____Window____|__Clef___|_Alteration_|_timeSignature_|_noteDistance__| - * |_____Margin____|__Width__|___Width____|_____Width_____|_______________| - * |_________________________________________________________<------>_____| + * |_____Margin____|__Width__|___Width____|_____Width_____|__<------>_____| + * |_________________________________________________________|______|_____| * |_______________|-----GG------#---------------------------|------|-----| * |_______________|------G----------#-------------4---------|-----O------| * |_______________|----GG---------#---------------4--------O-------------| From 6a37d8ed847fc94bc56232ca2c891076b76994a3 Mon Sep 17 00:00:00 2001 From: Neonunux Date: Tue, 5 Apr 2016 20:55:16 +0200 Subject: [PATCH 35/35] LMenuBar renamed in MenuBar --- src/main/java/calao/{LMenuBar.java => MenuBar.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/main/java/calao/{LMenuBar.java => MenuBar.java} (99%) diff --git a/src/main/java/calao/LMenuBar.java b/src/main/java/calao/MenuBar.java similarity index 99% rename from src/main/java/calao/LMenuBar.java rename to src/main/java/calao/MenuBar.java index 1cdf2ac..f147aa1 100644 --- a/src/main/java/calao/LMenuBar.java +++ b/src/main/java/calao/MenuBar.java @@ -49,7 +49,7 @@ * * @author Neonunux */ -public class LMenuBar extends JMenuBar implements ActionListener { +public class MenuBar extends JMenuBar implements ActionListener { private static final Logger logger = LogManager.getLogger(MidiController.class.getName()); @@ -193,7 +193,7 @@ public class LMenuBar extends JMenuBar implements ActionListener { * @param p the p * @param v */ - public LMenuBar(ResourceBundle b, Preferences p, Version v) { + public MenuBar(ResourceBundle b, Preferences p, Version v) { appBundle = b; appPrefs = p; appVersion = v;